8

我正在维护一个最初用 Delphi 7 编写并移植到 Delphi XE 的应用程序。

在使用 Windows 7 时,我们遇到了一些问题,例如模态窗口出现在主窗口下,最终无法与程序交互,因为用户希望与模态表单交互,而这是不可能的,因为它在主窗口下。

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

4

1 回答 1

8

是的,对于“弹出”的模态表单,您必须使用PopupParentPopupMode来修复 Z 顺序,正如Allen Bauer在他的博客文章PopupMode 和 PopupParent中所解释的那样。

MainFormOnTaskBar文档说它与 pop-under 几乎没有关系:它用于选择从哪里获取任务栏上的 Title/Icon 信息(您的ApplicationMainForm)。

然而,Steve Trefethen(前 Delphi 团队成员)的这篇文章MainFormOnTaskBar := True做得更多,更详细地解释了更多细节。

这个“更多”具有涉及 z 顺序的后果。有些你可能更喜欢或更少,所以这里有几个例子:

请注意,与 Vista 引入的问题作斗争并非易事,因为微软引入了更多功能,但也剥夺了一些曾经拥有的自由应用程序。阅读Nathanial Woolls 的两篇文章,以获得更好的印象。

于 2013-08-06T09:40:54.573 回答