确定控件是否正在显示
Determine if a control is showing
假设我有一个带有两个选项卡的页面控件sheet。第一个 sheet 上有一个按钮,但第二个 sheet 是活动的。在这种情况下,我如何确定该按钮是否显示(例如对用户可见)?
我尝试了按钮的显示 属性,但由于某种原因它总是 True。
更新: 澄清一下,我不介意控件是否在桌面的可见区域之外或被任何其他应用程序的 window.
您可以简单地在 VCL 树中向上移动,直到找到一个不可见的元素,或者您没有其他父元素可供检查。
function IsVisible(Obj:TWinControl):boolean;
begin
Result:=Obj.Visible;
if not Obj.Visible then Exit;
while Obj.HasParent do
begin
Obj:=Obj.Parent;
Result:=Obj.Visible;
if not Result then Exit;
end;
end;
假设我有一个带有两个选项卡的页面控件sheet。第一个 sheet 上有一个按钮,但第二个 sheet 是活动的。在这种情况下,我如何确定该按钮是否显示(例如对用户可见)? 我尝试了按钮的显示 属性,但由于某种原因它总是 True。
更新: 澄清一下,我不介意控件是否在桌面的可见区域之外或被任何其他应用程序的 window.
您可以简单地在 VCL 树中向上移动,直到找到一个不可见的元素,或者您没有其他父元素可供检查。
function IsVisible(Obj:TWinControl):boolean;
begin
Result:=Obj.Visible;
if not Obj.Visible then Exit;
while Obj.HasParent do
begin
Obj:=Obj.Parent;
Result:=Obj.Visible;
if not Result then Exit;
end;
end;