加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

表单 – Delphi应用程序窗口的z顺序和MainFormOnTaskBar属性

发布时间:2020-12-14 18:36:25 所属栏目:资源 来源:网络整理
导读:我正在维护一个最初用Delphi 7编写并移植到Delphi XE的应用程序. 使用Windows 7,我们遇到了一些问题,比如主窗口下出现的模态窗口以及最终无法与程序交互,因为用户需要与模态窗体进行交互,这是不可能的,因为它位于主窗口下面. 为了避免这个问题,我将项目的Mai
我正在维护一个最初用Delphi 7编写并移植到Delphi XE的应用程序.

使用Windows 7,我们遇到了一些问题,比如主窗口下出现的模态窗口以及最终无法与程序交互,因为用户需要与模态窗体进行交互,这是不可能的,因为它位于主窗口下面.

为了避免这个问题,我将项目的MainFormOnTaskBar属性更改为True(旧项目没有此属性),现在我继续使用相同的项目.阅读文档我找到了新的Form属性PopupParent.如果我将MainFormOnTaskBar设置为True,是否必须使用此属性?还有另一个解决这个问题的方法吗?

解决方法

是的,对于“弹出式”的模式形式,您必须使用 PopupParent或 PopupMode修复Z顺序,如 Allen Bauer在他的博客文章 PopupMode and PopupParent中所解释的那样.

MainFormOnTaskBar文档说它与pop-under几乎没有关系:它用于选择从(Application或MainForm)获取任务栏上的标题/图标信息的位置.

但是,MainFormOnTaskBar:= True做得更多,this article by Steve Trefethen(前Delphi团队成员)更详细地解释了更多细节.

这种“更多”具有涉及z次序的后果.有些你可能想要更多或更少,所以这里有一些例子:

> MainForm will be parent of new child windows makes the Z-order of the MainForm always less than the child windows
>就像你观察到的那样,它修复了Delphi< = 8版本中的大多数z排序问题(如果你想要它们包括可能出现在main-form下的模态对话框,那么设置MainFormOnTaskBar:= False)
>它可以实现某些形式的对接like in the LMD components

请注意,解决Vista引入的问题并不是一件容易的事,因为微软推出了更多的功能,但也带走了一些自由应用程序.阅读Nathanial Woolls的these两张articles以获得更好的印象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读