使用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方法内.