Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Grafische Darstellung eines Bereichs (https://www.delphipraxis.net/135713-grafische-darstellung-eines-bereichs.html)

Johannes013 16. Jun 2009 14:02


Grafische Darstellung eines Bereichs
 
Hallo, :-D

wie kann ich Delphi sagen, dass, wenn Shape1 über Shape2 "fährt", ein Event ausgelöst wird?


Egal wo sie sind.

SimStar001 16. Jun 2009 14:05

Re: Grafische Darstellung eines Bereichs
 
machs doch mit drag over

wicht 16. Jun 2009 14:30

Re: Grafische Darstellung eines Bereichs
 
Was heißt denn "fährt"? Programmatisches bewegen über Left/Top?
Das wirst du dann wohl selbst berechnen müssen, ob die Shapes sich schneiden.

Tyrael Y. 16. Jun 2009 14:44

Re: Grafische Darstellung eines Bereichs
 
Wenn die beiden Shapes programmtechnisch bewegt werden kannst du ein überschneiden mit der folgenden Funktion prüfen.


Delphi-Quellcode:
function IntersectRect(out Rect: TRect; const R1, R2: TRect): Boolean;
Rect ist der Bereich in dem sich die beiden anderen TRect´s sich überschneiden.
R1 und R2 sind die "Rechtecke" um die beiden Bereiche, die du prüfen möchtest.

Wenn die Shapes nicht rechteckig sind wird diese Funktion schon früher ein True zurückgeben.

Johannes013 16. Jun 2009 19:30

Re: Grafische Darstellung eines Bereichs
 
Das geht nicht:

Delphi-Quellcode:
if IntersectRect(out Shape3; Shape1, Shape2)=true then
   begin
      // Anweisungen
   end;

:wiejetzt:

quendolineDD 16. Jun 2009 19:36

Re: Grafische Darstellung eines Bereichs
 
Du rufst es auch falsch auf.
Delphi-Quellcode:
var
  IntersectShape : TShape;
begin
if IntersectRect(IntersectShape, Shape1, Shape2) then
begin
  //Anweisung
end;
Eventuell solltest du dich parallel mal mit den Grundlagen über die Benutzung von Funktionen und Prozeduren, Parametern usw. beschäftigen.

Johannes013 16. Jun 2009 19:48

Re: Grafische Darstellung eines Bereichs
 
Dann meldet er Fehler:

[Fehler] Unit1.pas(34): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
[Fehler] Unit1.pas(34): Inkompatible Typen: 'TRect' und 'TShape'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

unter dem Quelltext:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
    Shape1: TShape;
    Shape2: TShape;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Timer1Timer(Sender: TObject);
var
  IntersectShape : TShape;
begin
   if IntersectRect(IntersectShape, Shape1, Shape2) then
      begin
         //Anweisung
         halt;
      end;
   Shape1.Left:=Shape1.Left+2;
end;

end.




Ich bin extrem neu...... :oops:

:wall:

quendolineDD 16. Jun 2009 19:54

Re: Grafische Darstellung eines Bereichs
 
Ach, da hab ich selber nicht hingeschaut. War ja nur so im Browser getipselt :D
Es wird ein TRect erwartet, kein TShape. Daher, wir brauchen nur das Rect des Shapes (Wört sind englisch. Falls unklar nutze Wörterbuch :-)).

Delphi-Quellcode:
IntersectRect(r, Shape1.BoundsRect, Shape2.BoundsRect) ...
Manchmal hilft es, die Methoden einer Klasse sich anzuschauen.

Zitat:

Ich bin extrem neu
Gerade da solltest du dich nicht scheuen, dir die Grundlagen anzueignen.

Johannes013 16. Jun 2009 20:07

Re: Grafische Darstellung eines Bereichs
 
Danke, :!:


wo kann cih mir das denn anschauen?

Die Tutorails sind für Enterprise gemacht.

mfg Johannes013

wicht 16. Jun 2009 21:00

Re: Grafische Darstellung eines Bereichs
 
Welche Tutorials?
Grundsätzlich kann man glaube ich sagen, dass es bei den Dingen, mit denen du dich beschäftigen solltest, egal ist, für welche Version die geschrieben sind. Die Sprache ist überall (weitestgehend) die selbe, nur der Umfang der Komponenten/IDE/Installations-CD variiert zwischen den Versionen (grob gesagt).


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:43 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz