我有一个Delphi 7 应用程序,它有一个文档的两个视图(例如,所见即所得的HTML 编辑可能有一个所见即所得的视图和一个源视图——不是我真正的应用程序)。它们可以在单独的窗口中打开,也可以停靠在主窗口的选项卡中。
如果我从其中一个单独的窗体打开一个模式对话框,主窗体将被带到前面,并在 Windows 任务栏中显示为选定的窗口。说主要形式是WYSIWYG视图,弹出源视图。您转到源视图中的特定点并插入图像标签。将出现一个对话框,允许您选择并输入图像所需的属性。如果 WYSIWYG 视图和源视图重叠,则 WYSIWYG 视图将被置于前面,源视图被隐藏。一旦对话框被关闭,源视图就会重新出现。
我尝试将所有者和 ParentWindow 属性设置为与之相关的表单:
dialog := TDialogForm.Create( parentForm );
dialog.ParentWindow := parentForm.Handle;
我该如何解决这个问题?我还应该尝试什么?
鉴于人们似乎在我的示例上磕磕绊绊,也许我可以尝试一个更好的示例:一个允许您同时打开多个文件的文本编辑器。您打开的文件要么在选项卡中(如在 Delphi IDE 中),要么在它自己的窗口中。假设用户打开拼写检查对话框或查找对话框。发生的情况是,如果文件正在其自己的窗口中进行编辑,则当显示模式对话框时,该窗口将发送到 z 顺序中的主窗体下方;一旦对话框关闭,它就会返回到原来的 z 顺序。
注意:如果您正在使用 Delphi 7 并寻找解决此问题的方法,请在页面下方查看我的答案,以了解我最终做了什么。