我还没有找到最佳解决方案。我有一个非模态对话框,可以通过应用程序中的热键在无限制实例中打开。甚至对话框本身也可以打开一个新实例。我希望这些对话框始终位于主应用程序窗口的前面。我尝试过几件事。
任何其他建议: - )
答案 0 :(得分:7)
来自TCustomForm.PopupParent Property;
如果PopupMode属性设置为 pmExplicit和PopupParent为零, 那么Application.MainForm就是 隐式用作PopupParent
答案 1 :(得分:2)
AFAIK Delphi 2007支持MainFormOnTaskbar功能。与
Application.MainFormOnTaskbar := True;
项目源中的任何申请表格(默认父窗口)显示在主窗体上方。
如果您不确定主表格是什么表格,请转到项目/选项/表格并设置正确的主表格。 另一个可能的原因是您正在从之前的Delphi版本升级项目,因此项目源不包含上面的代码行 - 手动添加此行。
答案 2 :(得分:0)
我认为你的第一次努力,fsstayontop,是最好的选择。 在其他应用程序前显示的问题可能无法避免,因为您实际上使用的是Windows函数而不是Delphi独有的东西。
我记得可以手动设置Z顺序,但在大多数应用程序中这是不可能的。
如果您的对话框没有隐藏其他应用程序那么大,则可以移动它,用户仍然可以访问其他应用程序,而无需先与对话框进行交互。似乎并不太糟糕。
答案 3 :(得分:-1)
您可以尝试观看OnHide事件并立即将Visible标志设置为TRUE。这可能会导致闪烁。