为什么MessageDlg在Windows下仅显示“确定”按钮?

时间:2018-07-12 13:15:39

标签: 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);

然后在弹出对话框中仅显示一个“ 确定”按钮(没有“ 取消”或“ ”)。是正常的还是我错过了什么?

1 个答案:

答案 0 :(得分:7)

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

Windows的实现在 FMX.Dialogs.Win 模块内的 TFMXDialogService.MessageDialog 方法内。