2009-05-05 21 views

Antwort

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.

var 
    pt : tPoint; 
begin 
    pt := Mouse.CursorPos; 
    // now have SCREEN position 
    Label1.Caption := 'X = '+IntToStr(pt.x)+', Y = '+IntToStr(pt.y); 
    pt := ScreenToClient(pt); 
    // now have FORM position 
    Label2.Caption := 'X = '+IntToStr(pt.x)+', Y = '+IntToStr(pt.y); 
end; 
3

Wie wäre es damit?

procedure TForm1.Button1Click(Sender: TObject); 
var 
MausPos: TPoint; 
begin 
    GetCursorPos(MausPos); 
    label1.Caption := IntToStr(MausPos.x); 
    label2.Caption := IntToStr(MausPos.y); 
end; 


procedure TForm1.Button2Click(Sender: TObject); 
begin 
    SetCursorPos(600, 600); 
end; 

Fand dieses irgendwo einmal online und gespeichert es in meinem CodeSnippet :) DB

This page wird wahrscheinlich jedoch alle Ihre Fragen lösen ... Es erscheinen Funktionen vom Client an den Bildschirmkoordinaten zu gehen und zurück usw.

Viel Glück!

4

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

5

Die Mouse.CursorPos Eigenschaft wird Ihnen die aktuelle Position der Maus mitteilen. 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 hatte. Um die Position der Maus zu erhalten, als die Maustaste geklickt wurde, verwenden Sie GetMessagePos. Es meldet Bildschirmkoordinaten; übersetzen in Kundenkoordinaten mit TImage.ScreenToClient.

Die Alternative besteht darin, die Ereignisse OnMouseDown und OnMouseUp selbst zu behandeln; ihre Parameter enthalten die Koordinaten. Denken Sie daran, dass sowohl Ereignisse auftreten müssen, damit ein klicken auftritt. Möglicherweise möchten Sie auch Drag Operationen erkennen, da Sie wahrscheinlich nicht einen Ziehvorgang als Klick zählen möchten.