forms - 如何在 Delphi 7 中使多个表单位于主表单之上,但不位于其他应用程序之上

标签 forms delphi delphi-7

这是我在主窗体中使用的代码:

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/

相关文章:

sql - 有没有一个工具可以从Delphi表单文件中提取所有SQL命令字符串?

delphi - Delphi 7 的 "Search for Usages"?

delphi - 删除具有特定条件的adotable中的记录

php - 将 "new"形式转换为 "edit"形式的最简单方法

delphi - 为什么在组件创建或流传输期间不应该使用句柄?

c# - 防止在窗体标题栏上单击鼠标右键显示系统上下文菜单

c++ - 本地 WideString 变量调试错误 "Int3 DbgBreakPoint"

delphi - 在主机中添加单元时类型不兼容

php - CodeIgniter 中的可选表单字段和更新

javascript - 从表单中获取 ID