delphi – 为什么MessageDlg在windows下只显示“OK”按钮?

前端之家收集整理的这篇文章主要介绍了delphi – 为什么MessageDlg在windows下只显示“OK”按钮?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用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);

然后在弹出对话框中只显示一个“OK”按钮(没有“取消”也没有“是”).这是正常还是我错过了什么?

解决方法

这是因为Delphi检查有效的按钮组合,并且对于Yes和Cancel的组合,Windows平台上没有相应的 dialog box type.您只需使用“确定”按钮进行对话,因为传递给Windows API函数的结构在开头归零,而uType参数MB_OK的值仅为0.

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

猜你在找的Delphi相关文章