【问题标题】:Changing the default modal result of a form.showModal更改 form.showModal 的默认模态结果
【发布时间】:2009-04-18 09:35:00
【问题描述】:

在我的 Delphi 应用程序中,我有一个自定义是、否、取消对话框,将从主窗体调用该对话框,以确认保存对当前编辑的文件所做的更改。这通常可以通过 messageDlg() 来实现,但我希望这个对话具有自定义外观,所以我试图通过

来实现这个功能
case myDialogue.showModal of
  mrYes: <<save changes>>;
  mrNo: <<quit application without saving changes>>
  mrCancel: <<set the closeAction to caNone and do nothing>>
end;

问题在于,默认情况下,表单通过返回 mrNo TModalResult 来响应按 Escape 键。而且您可以看到这是多么糟糕,因为您的直觉告诉您,退出模态对话将取消预期的退出应用程序过程,但实际上发生的是您发出 不保存任何更改 命令和应用程序退出。

直到我以这种方式失去了一个小时的工作,我才注意到这种行为。没有 FormKeyPressed 事件处理程序或响应按键的任何东西被放入 myModalDialogue 代码中。在使用showModal 显示的表单中按Esc 键将返回mrNo,它的工作原理就是如此。如何覆盖此默认行为?

【问题讨论】:

    标签: delphi event-handling modal-dialog default onkeypress


    【解决方案1】:

    您需要确保“否”按钮的 Cancel 属性为 False,并且“取消”按钮的 Cancel 属性为 True。

    【讨论】:

      【解决方案2】:

      设置对话框中按钮的取消和默认属性。

      【讨论】:

      • +1 以获得正确答案。谢谢,我不敢相信它是如此简单......我正在努力解决这个问题......
      猜你喜欢
      • 2015-12-11
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多