在 Delphi 10.1.2 Berlin 中,在 Vcl.Dialogs.MessageDlg
函数中,DlgType
常量 mtInformation
和 mtConfirmation
创建相同的对话框图标。例如:
if Vcl.Dialogs.MessageDlg('Do you really want to remove the selected item?', mtConfirmation, mbOKCancel, 0) = mrOk then
begin
RemoveTheSelectedItem;
end;
if Vcl.Dialogs.MessageDlg('Do you really want to remove the selected item?', mtInformation, mbOKCancel, 0) = mrOk then
begin
RemoveTheSelectedItem;
end;
但是 DlgType
常量 mtConfirmation
不应该显示一个问号 图标(与其他 DlgType
一样)常量 mtWarning
和 mtError
创建各自不同的图标)?
如何使用 DlgType
常量 mtConfirmation
获得问号图标?
最佳答案
help中说:
Having mtConfirmation Show a Question Mark
Dialog boxes of TMsgDlgType.mtConfirmation type show an information icon.
In the past, they used to show a question mark instead, but Microsoft removed the question mark symbol from the Windows API function that the VCL uses to display TMsgDlgType.mtConfirmation dialog boxes. Quoting Microsoft: "The question-mark message icon is no longer recommended because it does not clearly represent a specific type of message and because the phrasing of a message as a question could apply to any message type. In addition, users can confuse the message symbol question mark with Help information." To use the previous dialog box appearance, you must set the UseLatestCommonDialogs variable of the Vcl.Dialogs unit to False.
所以这段代码:
Vcl.Dialogs.UseLatestCommonDialogs := False;
if Vcl.Dialogs.MessageDlg('Do you really want to remove the selected item?', mtConfirmation, mbOKCancel, 0) = mrOk then
begin
RemoveTheSelectedItem;
end;
产生这个结果:
关于delphi - DlgType mtConfirmation 常量的 MessageDlg 图标错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46724943/