![]() |
Mauposition auf beweglichem Image ermitteln
Hallo Delphi-PRAXIS,
ich versuche die aktuelle Klick Position auf einem Image, das sich verschieben lässt zu ermitteln. Wenn man über Mouse.Cursor.Pos.Y des Images (Y-Koordinate) ermittelt, ist dies aber immer auf den gesamten sichtbaren Bereich des Fensters bezogen. Da man das Image auch nur zum Teil sehen kann, in dem man es über den unteren Rand rutschen lässt, ist es aber schwierig rauszubekommen, wo man auf dem Image hingeklickt hat, da egal wo das Objekt ist, wenn die Maus sich nicht bewegt, aber das Objekt, liefert Mouse.Cursor.Pos.Y immer das gleiche. Gibt es eine Möglichkeit Koordinaten auf einem Objekt abzufragen, so wie es mit der Form ist? (Links oben 1:1, rechts unten z.B. 100:100) FG Dunkelbunt |
AW: Mauposition auf beweglichem Image ermitteln
Mouse.CursorPos gibt Dir die Bildschirmkoordinaten zurück. Die kannst Du aber mit ScreenToClient umrechnen, oder Du verwendest ein Ereignis des Images, das Dir die relativen Koordinaten liefert (OnMouseDown).
|
AW: Mauposition auf beweglichem Image ermitteln
Liefert mir das OnMouseDown des Images auch mittels Mouse.Cursor.Pos die Koordinaten zurück? Oder was muss ich nehmen?
EDIT: Ich wollte die Koordinaten testweise mal auf einem Label ausgeben:
Delphi-Quellcode:
Es passiert beim klicken aber nichts...
Testlabel.Caption := 'Y: '+IntToStr(Y)+' X: '+IntToStr(X);
|
AW: Mauposition auf beweglichem Image ermitteln
PointToStr darfst Du AFAIK selbst programieren,
OnMouseXXXX liefert Dir in X und Y die Koordinaten innerhalb Deines Controls zurück. |
AW: Mauposition auf beweglichem Image ermitteln
PointToStr hab ich
Delphi-Quellcode:
ScreenToClient hilft mir anscheinend noch nicht weiter. Ich denke OnMouseDown wird funktionieren.
function PointToStr(aPoint: TPoint): string; //Point in String umwandeln
begin Result := Format('X: %d | Y: %d',[aPoint.X, aPoint.Y]); // Format wandelt um // %d = Dezimal, Standardgerüst: %[Index:][-][Width][.Precision]Type end; |
AW: Mauposition auf beweglichem Image ermitteln
Könnte mir jemand spontan einen Grund nennen, wieso mein zur Laufzeit erstelltes Image auf meine eigene OnMouseDown Prozedur nicht richtig auf das klicken reagiert?
Wenn ich ein neues Image einfüge und dann die vordefinierte OnMouseDown nehme, funktioniert alles.... Edit: Sorry für Doppelpost |
AW: Mauposition auf beweglichem Image ermitteln
weist Du Deinem zur Laufzeit erzeigten Image eine OnMouseDown - Methode zu?
|
AW: Mauposition auf beweglichem Image ermitteln
Also, ich hab es so gemacht:
Delphi-Quellcode:
Ist doch richtig, oder?
public
procedure ImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); ... procedure TProjekt.ImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Testlabel.Caption := 'X: '+ IntToStr(X)+ 'Y: '+IntToStr(Y); end; |
AW: Mauposition auf beweglichem Image ermitteln
ich meinte etwas in der Art ....
Delphi-Quellcode:
with TImage.Create(self) do
begin Parent := Form1; Left := 10; Top := 20; OnMouseDown := ImageMouseDown; .... end; |
AW: Mauposition auf beweglichem Image ermitteln
Ja sowas in der Art habe ich.
Nur das
Code:
fehlt
OnMouseDown := ImageMouseDown;
Danke... mal schauen obs klappt EDIT: Ja, jetzt funktionierts. Danke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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