应用程序窗口检测它是不是在 FMX Delphi Windows 和 Macintosh 的后台
Posted
技术标签:
【中文标题】应用程序窗口检测它是不是在 FMX Delphi Windows 和 Macintosh 的后台【英文标题】:app window detect whether it is in the background in FMX Delphi Windows and Macintosh应用程序窗口检测它是否在 FMX Delphi Windows 和 Macintosh 的后台 【发布时间】:2021-12-26 19:58:55 【问题描述】:我的 Delphi 11 FMX 项目有多个文档窗口。
如何在代码中检测窗口是否在后台? (Windows 和 Macintosh)
【问题讨论】:
我已经求助于存储在 FormActivate() 和 FormDeactivate() 中设置的标志 fWindowIsInBackground 但必须有一种更直接的方法来判断窗口是否在后台。 至少在 Windows 上,Active:boolean
属性表示表单是否有焦点。
@TomBrunberg Active 属性显然直到 FormDeactivate() 完成后才更新。那可能是设计。
是的,迈克,我也注意到了,但还没有仔细调查。我明天去看看。
【参考方案1】:
Active: Boolean
属性表示表单是否有焦点。
但是请注意:
在过程TCommonCustomForm.Activate;
中,Active
属性被设置True
在 OnActivate
被调用。
在过程 TCommonCustomForm.Deactivate;
中,Active
属性设置为 False
在调用 OnDeactivate
之后。
因此,在这些事件中引用Active
属性(OnActivate
和OnDeactivate
) 可能容易出错。 OTOH,事件已经说明了退出后的状态。
在这些事件之外,Active
属性正确地指示了实际状态。
【讨论】:
以上是关于应用程序窗口检测它是不是在 FMX Delphi Windows 和 Macintosh 的后台的主要内容,如果未能解决你的问题,请参考以下文章