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% 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.
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.
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!