Wie bekomme ich die Koordinaten der Maus, wenn ein Steuerelement angeklickt wird?
In ein TImage OnClick-Ereignis, würde ich gerne extrahieren Sie die x -, y-Koordinaten der Maus. Ich würde es vorziehen, Sie in Bezug auf die Bild, aber in Bezug auf die form oder ein Fenster ist nur so gut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Maus.CursorPos enthält die TPoint, die wiederum enthält die X-und Y-position. Dieser Wert ist in globalen Koordinaten, so kann man übersetzen, um Ihre form mit der ScreenToClient-routine, die übersetzt die Bildschirm-Koordinaten in fensterkoordinaten.
Laut Delphi-Hilfe-Datei, Windows.GetCursorPos kann fehlschlagen, Maus.CursorPos wickelt diese um eine EOsException, wenn es fehlschlägt.
Den
Mouse.CursorPos
Eigenschaft wird Ihnen sagen, die aktuellen position der Maus. Wenn der computer läuft schleppend, oder wenn Ihr Programm langsam reagieren auf Nachrichten, dann ist es vielleicht nicht die gleiche wie die position der Maus hatte, als dieOnClick
Ereignis zum ersten mal aufgetreten ist. Um die position der Maus an der Zeit, dem Maus-Knopf wurde angeklickt, verwenden SieGetMessagePos
. Es berichten Bildschirm-Koordinaten; übersetzen, um client-Koordinaten mitTImage.ScreenToClient
.Ist die alternative zu behandeln das
OnMouseDown
undOnMouseUp
Veranstaltungen selbst; Ihre Parameter sind die Koordinaten. Denken Sie daran, dass beide Ereignisse auftreten müssen, um für eine klicken Sie auf auftreten. Möglicherweise möchten Sie auch zu erkennen ziehen Operationen, da Sie wahrscheinlich würde nicht wollen, zu berücksichtigen, ziehen Sie zu zählen, wie ein Klick.Wie schon andere gesagt haben, können Sie mit der Maus.CursorPos oder die GetCursorPos-Funktion, aber du kannst auch einfach handhaben OnMouseDown oder OnMouseUp-Ereignis anstelle von OnClick. Auf diese Weise erhalten Sie Ihre X-und Y-Werte als Parameter an die Ereignisprozedur wird ohne jegliche zusätzliche Funktionsaufrufe.
Wie über dieses?
Fand diese online irgendwo einmal und speicherte es in meinem codesnippet DB 🙂
Auf dieser Seite wird wahrscheinlich lösen alle Ihre Fragen, aber... anscheinend gibt Es Funktionen, um zu gehen von client-Bildschirm-Koordinaten und zurück usw.
Glück!