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

时间:2017-08-17 04:10:13

标签: forms delphi delphi-7

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

if not Assigned(FPerHist) then
begin
    Application.CreateForm(TFPerHist,FPerHist);
end;
FPerHist.Show;

我将FPerHist的FormStyle设置为StayOnTop。

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

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

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

1 个答案:

答案 0 :(得分:6)

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

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