windows - 使用 Delphi XE 的多模态对话框问题

标签 windows delphi modal-dialog ribbon delphi-xe

这是我的问题。

我让主应用程序运行并打开模式对话框 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/

相关文章:

c++ - 从树莓派到Windows平台

windows - 在 Windows 上禁用或刷新页面缓存

delphi - 如何将子树从一个 TTreeView 复制到另一个 TTreeView?

ios - 适用于 iOS 的 Delphi Google Maps SDK

delphi - 将Delphi代码片段转换为C++ Builder

cocoa - 如何强制 NSToolBar 验证?

javascript - 如何在 Redux 中显示一个执行异步操作的模态对话框?

angular - 使用 NGX 和状态管理打开模式

c++ - 网络编程基础知识,需要帮助才能理解 addrinfo/sockaddr_in 结构用法等

windows - 用于查看可执行镜像加载了哪些文件/dll 的实用程序