Windows 我能换一下吗;主表格“;在Delphi6应用程序运行时?

Windows 我能换一下吗;主表格“;在Delphi6应用程序运行时?,windows,delphi,winapi,Windows,Delphi,Winapi,我有一个Delphi6应用程序,有多个表单。在编译器选项中选择作为主窗体的窗体的一个重要特征是,当它被最小化时,应用程序中的所有其他窗体(窗口)都被最小化,反之,当它被还原时,所有可见的其他窗体都被还原 我希望在运行时将主窗体的这一特性切换到应用程序的另一种形式,使其在这个意义上与主窗体类似(最小化/恢复)。是否有一种德尔福技术或Windows API调用允许我这样做?如果没有,是否有一种方法可以让二级表单模拟这种行为,而这种行为不会造成太多问题?事实上,决定您描述的行为的是窗口。请注意,我使用

我有一个Delphi6应用程序,有多个表单。在编译器选项中选择作为主窗体的窗体的一个重要特征是,当它被最小化时,应用程序中的所有其他窗体(窗口)都被最小化,反之,当它被还原时,所有可见的其他窗体都被还原


我希望在运行时将主窗体的这一特性切换到应用程序的另一种形式,使其在这个意义上与主窗体类似(最小化/恢复)。是否有一种德尔福技术或Windows API调用允许我这样做?如果没有,是否有一种方法可以让二级表单模拟这种行为,而这种行为不会造成太多问题?

事实上,决定您描述的行为的是窗口。请注意,我使用的是Windows术语,而不是VCL术语。在Windows术语中,所有者的含义不同于VCL的含义

关于窗口所有权有这样的说法:

重叠或弹出窗口可以由另一个重叠或弹出窗口拥有。被拥有会在窗口上放置多个约束

  • 拥有的窗口在z顺序中始终高于其所有者
  • 当所有者被销毁时,系统会自动销毁其拥有的窗口
  • 当所有者最小化时,拥有的窗口将隐藏
因此,您希望能够控制的是表单所有者,而不是主表单。VCL允许您指定哪个表单是任何其他表单的所有者

为了控制VCL表单的所有者,您需要使用和属性

MySecondaryForm.PopupMode := pmExplicit;
MySecondaryForm.PopupParent := MyOtherSecondaryForm;

目前,您的代码可能正在使用
pmAuto
的默认
PopupMode
。在此模式下,活动表单被用作表单所有者,这通常意味着主表单是所有辅助表单的最终所有者。

请参阅和相关问题。@DavidHeffernam-再次感谢您的帮助。我将按照您的建议仔细查看我的表单设置。