delphi - 为什么MessageDlg在Windows下只显示 "OK"按钮?

标签 delphi firemonkey

使用delphi 10.2.2 firemonkey,在windows下,当我这样做时:

MessageDlg('Are you sure you want to undo the last operation ?', // const AMessage: string;
             TMsgDlgType.mtConfirmation, // const ADialogType: TMsgDlgType;
             [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbCancel], // const AButtons: TMsgDlgButtons;
             0, // const AHelpContext: THelpContext;
             TMsgDlgBtn.mbCancel, // const ADefaultButton: TMsgDlgBtn;
             procedure(const AResult: TModalResult)
             begin
               if AResult = mrYes then begin
               end;
             end); // const ACloseDialogProc: TInputCloseDialogProc);

然后弹出对话框中只显示“确定”按钮(没有“取消”或“”)。这是正常现象还是我错过了什么?

最佳答案

发生这种情况是因为 Delphi 检查有效的按钮组合,而对于 取消 组合,没有相应的 dialog box type在Windows平台上。您只得到带有OK按钮的对话框是因为传递给Windows API函数的结构在开始时被清零,并且uType参数的值MB_OK 只是 0。

此功能的 Windows 实现位于 FMX.Dialogs.Win 模块内的 TFMXDialogService.MessageDialog 方法内。

关于delphi - 为什么MessageDlg在Windows下只显示 "OK"按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51306705/

相关文章:

delphi - 将 Delphi 构造函数作为普通方法调用 - 任何隐藏的副作用?

delphi - 只有最后添加的 Delphi 组件才会执行操作

delphi - 使用TIBDatabase连接到Delphi XE3上的Firebird 2.1数据库

delphi - 在图像列表上显示辅助底层图像?

delphi - Delphi XE6可以为Windows Phone编译吗?

delphi - 如何创建一个类似对话框的组件,允许在其中放置其他控件?

delphi - 嵌入式表单控件不刷新(Delphi、Firemonkey)

macos - 如何将其他文件复制到 OSX

xml - Delphi 有一个简单的文本差异单元吗?

performance - 填充大量 3D 形状时 FMX ViewPort3D 性能下降