我不知道我是否理解你的问题,但是有一些方法可以捕捉到你的鼠标位置:
方法 1 - 捕捉屏幕上的鼠标位置:
在这里你可以像这样使用TMouse 类:
var
m: TMouse;
begin
lbl_cordinate_screen.Caption := format('Mouse cordinate on screen: x:%d, y:%d',
[m.CursorPos.X, m.CursorPos.y]);
end;
方法 2 - 捕获控件上的鼠标位置:
在这里您可以使用GetCursorPos,我声明了一个名为cursorCordinate 的函数,它将接收一个控件名称(我使用名为frm_main 的表单作为给定控件,但它可以是任何其他控件,如按钮、标签或其他任何东西) 并且它将返回一个TPoint 值,其中包含鼠标在给定控件上的位置:
//function to capture mouse position on a control
function cursorCordinate(myCtrl: TWinControl): TPoint;
var
mouse_p: TPoint;
begin
GetCursorPos(mouse_p);
ScreenToClient(myCtrl.Handle, mouse_p );
result := mouse_p;
end;
用法示例:
begin
lbl_cordinate_form_1.Caption := format('Mouse cordinate on form: x:%d, y:%d',
[cursorCordinate(frm_main).X, cursorCordinate(frm_main).y]);
end;
方法 3 - 在控件上捕获鼠标位置的另一种方法:
在这里您可以使用控件的OnMouseMove 事件及其X 和Y 参数,只需将您的代码块放在该事件中即可。我用它在我的表单 (frm_main) 上的标签 (lbl_cordinate_form_2) 中显示鼠标位置,但您可以使用任何其他控件的 OnMouseMove 事件:
procedure Tfrm_main.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
lbl_cordinate_form_2.Caption := format('Mouse cordinate on form: x:%d, y:%d', [x, y]);
end;
您可以在图像中看到结果;第一行是方法1的结果,第二行是方法2的结果,第三行是方法3的结果: