组件在屏幕上的Y位置,该组件在其他组件的上方

问题描述 投票:0回答:1

我想获得所有活动,尤其是重点位置。我编写这样的代码,但是如果该组件位于其他组件之上,则获得的结果将得到不正确的值。以下代码中有什么不正确?

procedure TForm1.FormFocusChanged(Sender: TObject);
var
  LFocused : TControl;
  LFocusRect: TRectF;
  P: TPointF;
begin
  if Assigned(Focused) then
  begin
    LFocused := TControl(Focused.GetObject);
    LFocusRect := LFocused.AbsoluteRect;//to get height,top,etc
    P := ClientToScreen(LFocused.Position.Point);

    Text1.Text := 'Y '+ P.Y.ToString;
  end;
end;

这是界面

enter image description here

delphi firemonkey
1个回答
0
投票

只需更改此行:

P := ClientToScreen(LFocused.Position.Point);

to

P := LFocused.LocalToAbsolute(PointF(0,0));
© www.soinside.com 2019 - 2024. All rights reserved.