Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi onMouseMove bei Image ShowMessage (https://www.delphipraxis.net/67950-onmousemove-bei-image-showmessage.html)

Christian18 22. Apr 2006 12:34


onMouseMove bei Image ShowMessage
 
Hallo,

ich habe eine Access DB in der habe ich eine Tabelle Positionen! In der Tabelle Positionen sind folgende Felder enthalten:

1. Idx
2. Pfad
3. x
4. y

wenn ich mein Programm starte, dann werden aus der tabelle die daten geladen und in ein Image eingezeichnet. Also es werden kreise gezeichnet

x1=x-3
y1=x-3
x2=x2+3
y2=y2+3

wenn ich mit der Mouse über den Punkt fahre, dann soll ein ShowMessage ausgelöst werden. Die Informationen für das ShowMessage sollen sein:

x und y koordinaten.

Hier mein Code den ich bis jetzt habe:
Delphi-Quellcode:
procedure TFPositionen.Image1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
  var j : Integer; // Schleifenvariable
      x1, x2, y1, y2 : Integer;
begin
  DM.TPositionen.First; // DM ist ein Datenmodul
  for j:=1 to DM.TPositionen.RecordCount do
    begin
      // Parameter setzen
      x1:=DM.TPositionen.FieldByName('X').AsInteger - 3;
      y1:=DM.TPositionen.FieldByName('Y').AsInteger - 3;
      x2:=DM.TPositionen.FieldByName('X').AsInteger + 3;
      y2:=DM.TPositionen.FieldByName('Y').AsInteger + 3;

      if (x >= x1) and (y >= y1) and (x <= x2) and (y <= y2) then
        begin
          ShowMessage('X: ' + DM.TPositionen.FieldByName('X').AsString + 'Y: ' + DM.TPositionen.FieldByName('X').AsString);
        end;

      DM.TPositionen.Next;
    end;
end;
Kann mir jemand bei meinem Problem helfen???


MFG Christian18

Nogge 23. Apr 2006 10:13

Re: onMouseMove bei Image ShowMessage
 
Hallo Christian18,
Hast Du schon mal mithilfe von Breakpoints nachgeschaut, ob die Koordinaten, die in deiner Datenbank enthalten sind, innerhalb des Images sind bzw. ob überhaupt etwas in Deiner Datenbank steht? Ich kann sonst jedenfalls nichts Auffälliges am Code entdecken.
Delphi-Quellcode:
procedure TFPositionen.Image1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
  var j : Integer; // Schleifenvariable
      x1, x2, y1, y2 : Integer;
begin
  DM.TPositionen.First;
  for j:=1 to DM.TPositionen.RecordCount do // Wozu 'ne for-schleife, wenn Du die Variable j nicht benötigst? Benutz ne while- oder repeat-schleife ;-)
    begin
      x1:=DM.TPositionen.FieldByName('X').AsInteger - 3;
      y1:=DM.TPositionen.FieldByName('Y').AsInteger - 3;
      x2:=x1 + 6; // performancesteigernd
      y2:=y1 + 6; // performancesteigernd

      if (x >= x1) and (y >= y1) and (x <= x2) and (y <= y2) then
        begin
          ShowMessage('X: ' + DM.TPositionen.FieldByName('X').AsString + 'Y: ' + DM.TPositionen.FieldByName('Y').AsString); // Y anstatt X
        end;

      DM.TPositionen.Next;
    end;
end;
mfg Nogge


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:39 Uhr.

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