我正在维护一个最初用Delphi 7编写并移植到Delphi XE的应用程序。
使用Windows 7,我们遇到了一些问题,比如主窗口下出现的模态窗口以及最终无法与程序交互,因为用户需要与模态窗体进行交互,这是不可能的,因为它位于主窗口下面。
为了避免这个问题,我将项目的MainFormOnTaskBar属性更改为True(旧项目没有此属性),现在我继续使用相同的项目。阅读文档我找到了新的Form属性PopupParent。如果我将MainFormOnTaskBar设置为True,是否必须使用此属性?还有另一个解决这个问题的方法吗?
答案 0 :(得分:6)
是的,对于“pop-under”的模式表单,您必须使用PopupParent或PopupMode来修正Z顺序,正如Allen Bauer在他的博文PopupMode and PopupParent中所解释的那样{ {3}}
MainFormOnTaskBar文档说它与pop-under几乎没有关系:它用于选择从(Application或MainForm获取任务栏上标题/图标信息的位置)。
然而,MainFormOnTaskBar := True
做得更多,this article by Steve Trefethen(前Delphi团队成员)更详细地解释了更多细节。
这个“更多”有涉及z次序的后果。有些你可能想要更多或更少,所以这里有一些例子:
MainFormOnTaskBar := False
)请注意,解决Vista引入的问题并非易事,因为微软推出了更多功能,但也带走了一些自由应用程序。阅读Nathanial Woolls的these两个articles,以获得更好的印象。