![]() |
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:
Kann mir jemand bei meinem Problem helfen???
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; MFG Christian18 |
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:
mfg Nogge
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz