Wie bekomme ich die Koordinaten der Maus, wenn ein Steuerelement angeklickt wird?

8

In einem OnClick-Ereignis von TImage möchte ich die x, y-Koordinaten der Maus extrahieren. Ich würde sie in Bezug auf das Bild bevorzugen, aber in Bezug auf die Form oder das Fenster ist genauso gut.

    
Arthur 05.05.2009, 21:09
quelle

4 Antworten

19

Mouse.CursorPos enthält den TPoint, der wiederum die X- und Y-Position enthält. Dieser Wert befindet sich in globalen Koordinaten. Sie können also mithilfe der ScreenToClient-Routine, die Bildschirmkoordinaten in Fensterkoordinaten übersetzt, in Ihr Formular übersetzen.

Laut der Delphi-Hilfedatei kann Windows.GetCursorPos fehlschlagen, Mouse.CursorPos umschließt dies, um eine EOsException auszulösen, falls sie fehlschlägt.

%Vor%     
skamradt 05.05.2009, 21:19
quelle
5

Die Eigenschaft Mouse.CursorPos teilt Ihnen die aktuelle Position der Maus mit. Wenn der Computer träge läuft oder wenn Ihr Programm nur langsam auf Nachrichten reagiert, ist es möglicherweise nicht mit der Position identisch, die die Maus beim ersten Auftreten des Ereignisses OnClick hatte. Um die Position der Maus zu dem Zeitpunkt zu erhalten, an dem die Maustaste geklickt wurde , verwenden Sie GetMessagePos . Es meldet Bildschirmkoordinaten ; übersetzt in Clientkoordinaten mit TImage.ScreenToClient .

Die Alternative besteht darin, die Ereignisse OnMouseDown und OnMouseUp selbst zu behandeln; ihre Parameter enthalten die Koordinaten. Denken Sie daran, dass beide Ereignisse auftreten müssen, damit ein Klick erfolgt. Möglicherweise möchten Sie auch Drag -Operationen erkennen, da Sie wahrscheinlich nicht davon ausgehen, dass ein Ziehen als Klick zählt.

    
Rob Kennedy 06.05.2009 13:30
quelle
4

Wie andere bereits gesagt haben, können Sie Mouse.CursorPos oder die GetCursorPos-Funktion verwenden, aber Sie können auch das OnMouseDown- oder OnMouseUp-Ereignis statt OnClick behandeln. Auf diese Weise erhalten Sie Ihre X- und Y-Werte als Parameter für Ihren Event-Handler, ohne dass Sie zusätzliche Funktionsaufrufe ausführen müssen.

    
Kevin 05.05.2009 21:22
quelle
3

Wie wäre es damit?

%Vor%

Habe das einmal irgendwo online gefunden und in meiner Code-nippet DB gespeichert:)

Diese Seite wird wahrscheinlich alle Ihre Fragen lösen, aber ... Es scheint Funktionen zu geben von Client zu Bildschirm Koordinaten und zurück usw. gehen.

Viel Glück!

    
Kris 05.05.2009 21:18
quelle

Tags und Links