我正在维护一个最初用 Delphi 7 编写并移植到 Delphi XE 的应用程序。
使用 Windows 7,我们遇到了一些问题,例如模态窗口出现在主窗口下方,以及最终无法与程序交互,因为用户需要与模态窗体交互,而这是不可能的,因为它位于主窗口下方。
为了避免这个问题我改变了任务栏上的主窗体 http://docwiki.embarcadero.com/Libraries/en/Vcl.Forms.TApplication.MainFormOnTaskBar将项目的属性设置为 True(较旧的项目没有此属性),现在我继续相同的项目。阅读文档我发现了新的 Form 属性弹出父窗口 http://docwiki.embarcadero.com/Libraries/en/Vcl.Forms.TForm.PopupParent。如果我将 MainFormOnTaskBar 设置为 True,是否必须使用此属性?这个问题还有其他解决方案吗?
是的,对于“弹出”的模态形式,您必须使用以下命令修复 Z 顺序弹出父窗口 http://docwiki.embarcadero.com/Libraries/en/Vcl.Forms.TForm.PopupParent or 弹出模式 http://docwiki.embarcadero.com/Libraries/en/Vcl.Forms.TCustomForm.PopupMode,正如所解释的艾伦·鲍尔 https://stackoverflow.com/users/20552/allen-bauer在他的博客文章中PopupMode 和 PopupParent http://blogs.embarcadero.com/abauer/2004/02/10/295.
任务栏上的主窗体 http://docwiki.embarcadero.com/Libraries/en/Vcl.Forms.TApplication.MainFormOnTaskBar文档说它与弹出窗口关系不大:它用于选择从何处获取任务栏上的标题/图标信息(您的应用 http://docwiki.embarcadero.com/Libraries/en/Vcl.Forms.Application or MainForm http://docwiki.embarcadero.com/Libraries/en/Vcl.Forms.TApplication.MainForm).
然而,MainFormOnTaskBar := True
做更多并且史蒂夫·特雷芬森的这篇文章 http://www.stevetrefethen.com/blog/the-new-vcl-property-tapplication-mainformontaskbar-in-delphi-2007(前德尔福团队成员)更详细地解释了更多细节。
这个“更多”会产生涉及 z 顺序的后果。有些你可能会更喜欢或不太喜欢,所以这里有一些例子:
- the MainForm 将成为新子窗口的父窗口 http://www.cybelesoft.com/blog/index.php/keep-child-windows-in-front/ which 使 MainForm 的 Z 顺序始终小于子窗口 http://borland.newsgroups.archived.at/public.delphi.ide.general/200705/0705109235.html
- 就像您观察到的那样,它修复了 Delphi MainFormOnTaskBar := False)
- 它支持某种形式的对接就像 LMD 组件一样 http://forum.lmd.de/discussion/205/application-mainformontaskbar-must-be-true-for-conjoined-docking-to-work-while-over-the-main-form
请注意,解决 Vista 带来的问题并不是一件容易的事,因为微软引入了更多的功能,但也剥夺了一些应用程序曾经拥有的自由。读these http://web.archive.org/web/20121016073000/http://www.installationexcellence.com/articles/VistaWithDelphi/Original/Index.html two articles http://web.archive.org/web/20121016071202/http://www.installationexcellence.com/articles/VistaWithDelphi/Index.html纳撒尼尔·伍尔斯 (Nathanial Woolls) 的作品,以获得更好的印象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)