在Delphi 7中,如何使多个表单保持在主表单之上,但不在其他应用程序之上

Red*_*nov 2 forms delphi delphi-7

这是我在我的主要表单中使用的代码:

if not Assigned(FPerHist) then
begin
    Application.CreateForm(TFPerHist,FPerHist);
end;
FPerHist.Show;
Run Code Online (Sandbox Code Playgroud)

我将FPerHist的FormStyle设置为StayOnTop.

这适用于允许打开多个表单,同时将所有子表单保留在主表单的顶部.但是当表单处于加载某些内容的中间,或者在调试时到达检查点时,表单仍然位于其他应用程序之上.

用户发现这很烦人,因为在加载这个表单时他们无法处理其他事情,而在调试时我无法切换到Delphi 7窗口,直到我将此应用程序移动到另一个桌面(我使用的是Windows 10).

还有其他方法可以在Delphi 7上运行吗?

Rem*_*eau 6

这在后来的Delphi版本中通过引入TForm.PopupParent属性得到了解决.您只需删除fsStayOnTop样式,并将MainForm设置为PopupParent辅助表单.

但是,PopupParent在Delphi 7中不存在,因此您必须手动模拟它,通过覆盖CreateParams()辅助表单的虚拟方法来指定MainForm.HandleTCreateParams.WndParent.