这是我的问题。
我让主应用程序运行并打开模式对话框 1,此时主应用程序屏幕已禁用,所有焦点都集中在新对话框 1 上。
我从这个对话框 1 打开另一个模态对话框 2。所以现在主屏幕和 dialog1 被禁用,这个 dialog2 拥有所有焦点。到目前为止完美。
现在,当我关闭这个顶部 dialog2 时,我希望它只是跳回到 dialog1。它专注于 dialog1,但它现在启用了主应用程序,您可以单击任何发送 dialog1 的地方,但保持打开状态。这会导致 1% 的问题,即用户不会立即关闭 dialog1 而是继续点击。你可以想象 QA 不喜欢这样 ;o)
看起来 Windows 变得有点困惑,因为主应用程序似乎知道它仍然打开了 dialog1,因为功能区上的按钮仍然处于关闭状态。
有什么想法吗?
到目前为止,我最好的办法是明确设置:
dialog1.PopupMode := pmExplicit;
dialog1.PopupParent := MainFrm;
这似乎使 dialog1 在您关闭 dialog2 时位于主应用程序之上,即使您单击主应用程序也是如此。所以这会鼓励用户关闭它,但不是 100% 正确。
编辑:此后我创建了一个独立的应用程序,它按预期运行。当您关闭窗口时,控制和焦点从 dialog2 返回到 dialog1,然后在 dialog1 关闭时返回到主应用程序。这表明我们的功能区代码中还有其他我找不到的东西。哼!
最佳答案
这是一个已知错误。看一份11年前的报告http://borland.public.delphi.ide.narkive.com/fVG9CSwl/big-problem-in-delphi-with-modal-forms-please-help 我也有。我有一个链接到 embarcadero QA 中的错误报告。您无能为力。
关于windows - 使用 Delphi XE 的多模态对话框问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6262915/