您可以在不创建自定义对话框的情况下更改默认的 messageDlg 选项吗?

Jsk*_*Jsk 0 delphi user-interface

我正在显示带有 Yes 和 No 按钮的 messageDlg 确认屏幕。反转代码中的按钮没有任何影响。

 answer := messageDlg('Are you sure?', mtConfirmation, [mbYes, mbNO], 0);
Run Code Online (Sandbox Code Playgroud)

有没有办法在不创建自定义对话框的情况下将默认选项更改为否,例如此处演示的Delphi 中显示自定义消息对话框的最佳方法是什么?

And*_*and 5

MessageDlg函数已经支持指定默认按钮:

MessageDlg('Are you sure?', mtConfirmation, [mbYes, mbNo], 0, mbNo);
                                                              ^^^^
Run Code Online (Sandbox Code Playgroud)

(反转的顺序mbYesmbNo不可能有任何影响,因为[mbYes, mbNo]是一,并设置有没有顺序。)

  • (提示:如果您在 IDE 中的“MessageDlg”函数名称内按 F1 并插入插入符号,您可能会自己发现这一点。这将打开该函数的文档。) (4认同)
  • 我对 Delphi 比较陌生,并且正在使用 [Delphi Basics](http://www.delphibasics.co.uk/RTL.asp?Name=messageslg) 网站,到目前为止该网站对我很有帮助。我想我将来必须交叉参考更多来源。 (2认同)
  • @Jsk:很公平。但恕我直言,当您使用任何 API 或其他系统或产品时,官方文档应该“始终”是第一个也是主要来源。(在本例中为 Embarcadero 文档。) (2认同)
  • @Jsk Delphi Basics 网站非常过时,其中缺少很多现代功能。举个例子,它只显示 `MessageDlg()` 的 1 个版本,但实际上有 [2 个版本](http://docwiki.embarcadero.com/Libraries/en/Vcl.Dialogs.MessageDlg) 可用。`MessageDlgPos()` 是 [Delphi Basics 显示的内容](http://www.delphibasics.co.uk/RTL.asp?Name=MessageDlgPos) (1 版本) 和 [Embarcadero 的 DocWiki 显示的内容]之间的差异的更好示例](http://docwiki.embarcadero.com/Libraries/en/Vcl.Dialogs.MessageDlgPos)(4 个版本)。 (2认同)