當我呼叫背景關系選單來創建一個新控制元件時,如何捕捉滑鼠游標(IDE Delphi)的坐標?
我想通過背景關系選單在呼叫背景關系選單的相同坐標處創建一個新控制元件。
我正在創建我自己的組件編輯器來做到這一點,然后我需要滑鼠的坐標來創建控制元件。
uj5u.com熱心網友回復:
我不知道我是否理解您的問題,但是有一些方法可以捕獲滑鼠的位置:
方法 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;
您可以在影像中看到結果;第一行是方法一的結果,第二行是方法二,第三行是方法三:

uj5u.com熱心網友回復:
通過將此 cod 添加到FormContextPopup可以獲得滑鼠位置
uses FMX.Forms;
...
...
procedure TForm88.FormContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
Label1.Caption:=FMX.Forms.Screen.MousePos.X.ToString '
' FMX.Forms.Screen.MousePos.Y.ToString;
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/389672.html
下一篇:如何從貓鼬結果中排除_id?
