应用程序窗口检测它是不是在 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 属性OnActivateOnDeactivate 可能容易出错。 OTOH,事件已经说明了退出后的状态。

在这些事件之外,Active 属性正确地指示了实际状态。

【讨论】:

以上是关于应用程序窗口检测它是不是在 FMX Delphi Windows 和 Macintosh 的后台的主要内容,如果未能解决你的问题,请参考以下文章

delphi xe10 FMX 启动参数

delphicef4多开

delphi 窗口透明

delphi 点击cxgrid选中的行,打开form窗口是怎样弄的

delphi 多线程 loading界面

delphi 7 的问题!