我试图在 TWinControl 中显示自定义提示,但我不知道如何获取它的位置。
使用位置 0,0 显示屏幕顶部(窗口外)的提示,所以我猜它一定是屏幕上控件的位置。
编辑:
我发现 TControl 属性 ClientOrigin 返回了我所期望的内容,使用 ClientOrigin.X 和 ClientOrigin.Y 是否正确?
TControl.ClientToScreen 为您提供控件内给定点的屏幕坐标。
lPoint := Panel1.ClientToScreen(Point(0,0));
Label1.Caption := Format('Screen: %d, %d', [lPoint.X, lPoint.Y]);
如果您的 TControl 有一个或多个父级(例如 TPanel),这将为您提供相对于 TForm 的左上角点:
function TControl.GePos: TPoint;
var
tc: TControl;
rp: TPoint;
begin
tc := self;
Result.X := tc.Left;
Result.Y := tc.top;
while tc <> nil do
begin
tc := tc.parent;
if (tc <> nil) and tc.HasParent then
begin
Inc(Result.X, tc.Left);
Inc(Result.Y, tc.top);
end
else
break;
end;
end;