这是我在主窗体中使用的代码:
if not Assigned(FPerHist) then
begin
Application.CreateForm(TFPerHist,FPerHist);
end;
FPerHist.Show;
我将 FPerHist 的 FormStyle 设置为 StayOnTop。
这适用于允许打开多个表单,同时将所有子表单保持在主表单之上。但是,当表单正在加载某些内容或在调试时到达检查点时,表单会停留在其他应用程序之上。
用户觉得这很烦人,因为在加载此表单时他们无法处理其他事情,并且在调试时我无法切换到 Delphi 7 窗口,直到我将此应用程序移动到另一个桌面(我使用的是 Windows 10) .
还有其他方法可以让它在 Delphi 7 上工作吗?
最佳答案
在后来的 Delphi 版本中,通过引入 TForm.PopupParent
属性解决了这个问题。您只需删除 fsStayOnTop
样式,并将 MainForm 设置为辅助窗体的 PopupParent
。
但是,PopupParent
在 Delphi 7 中不存在,因此您必须手动模拟它,通过重写辅助表单的虚拟 CreateParams()
方法来分配MainForm.Handle
作为 TCreateParams.WndParent
。
关于forms - 如何在 Delphi 7 中使多个表单位于主表单之上,但不位于其他应用程序之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45726442/