使用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/