我有一个Delphi 6应用程序与多种forms。 编译器选项中select的窗体的一个重要特征是当它被最小化时,应用程序中的所有其他窗体(窗口)被最小化,相反,当它被恢复时,所有其他可见的窗体被恢复。
我希望在运行时将主窗体的特性切换为另一种forms的应用程序,因此它就像这种意义上的主窗体(最小化/恢复领导)一样。 有一个delphi的技术,或Windows API调用,这将允许我这样做? 如果没有,是否有办法让一个二级表单模拟这种行为,不会导致更多的问题比它的价值?
事实上,你所描述的行为决定了窗户的拥有者 。 请注意,我使用Windows术语而不是VCL术语。 在Windows中, 所有者的含义与VCL的含义不同。
MSDN有这样的说窗口所有权:
重叠窗口或弹出窗口可以由另一个重叠窗口或弹出窗口拥有。 被拥有的地方在窗口上放置了几个限制。
- 拥有的窗口始终在z所有者的上方。
- 当拥有者被毁时,系统会自动销毁拥有的窗口。
- 当拥有者被最小化时,拥有的窗口被隐藏。
所以你想要控制的是形式的所有者,而不是主要的形式。 VCL允许你指定哪个表单是其他表单的所有者。
为了控制VCL表单的所有者,您需要使用PopupMode
和PopupParent
属性。
MySecondaryForm.PopupMode := pmExplicit; MySecondaryForm.PopupParent := MyOtherSecondaryForm;
目前,您的代码可能使用PopupMode
的默认pmAuto
。 在这种模式下,活动表单被用作表单所有者,通常意味着主表单是所有二级表单的最终拥有者。