Pet*_*háč 3 delphi default modal-dialog event-handling onkeypress
在我的Delphi应用程序中,我有一个自定义的Yes,No,Cancel对话框,它将从主窗体中调用,以确认保存对当前编辑的文件所做的更改.这通常可以通过messageDlg()实现,但我希望这个对话具有自定义外观,所以我试图通过以下方式实现此功能:
case myDialogue.showModal of
mrYes: <<save changes>>;
mrNo: <<quit application without saving changes>>
mrCancel: <<set the closeAction to caNone and do nothing>>
end;
Run Code Online (Sandbox Code Playgroud)
问题是,默认情况下,表单通过返回mrNo来响应 按Escape键TModalResult
.你可以看到BAAAD是怎么回事,因为你的直觉告诉你,Esc-aping模态对话将取消预期的Quit应用程序进程,但实际上你会发出一个不保存任何更改命令和应用程序退出的情况.
直到我以这种方式失去了一个小时的工作,我才注意到这种行为.没有FormKeyPressed事件处理程序或任何响应按键的内容被放入myModalDialogue代码中.它只是这样工作,按下使用的表格中的Esc showModal
将返回mrNo
.如何覆盖此默认行为?
归档时间: |
|
查看次数: |
5094 次 |
最近记录: |