这是受OK-Cancel或Cancel-OK问题的启发?.
我记得在某些情况下阅读有关切换OK-Cancel/Cancel-OK的概念,以防止用户在不阅读其内容的情况下点击信息弹出窗口或对话框.据我记忆,这还包括移动OK按钮的位置(水平,从左到右),以防止用户只记住点击的位置.
这真的有意义吗?这是强制用户"先思考/先读,然后点击"的好方法吗?还有其他概念适用于这种情况吗?
我特别想到一个与安全相关的应用程序,在这种应用程序中,不加思索地按下习惯会导致潜在的危险情况,而取消则会导致安全状态.
我知道这个问题从那时起就已经存在(例如,显示自定义消息对话框的最佳方式),但我仍然找不到我想要的东西.
我开始是这样的:
class function TAttracsForm.MessageDlg(const aMsg: string; aDlgType: TMsgDlgType; Buttons: TMsgDlgButtons; aCaptions: array of String; aDefault: TMsgDlgBtn): TModalResult;
var
vDlg: TForm;
i: Integer;
begin
if aButtons.Count = aCaptions.Count then
begin
vDlg := CreateMessageDialog(aMsg, aDlgType, Buttons);
try
for i := 0 aCaptions.Count - 1 do
TButton(vDlg.FindComponent(Buttons[i].Caption)).Caption := aCaptions[i];
vDlg.Position := poDefaultPosOnly;
Result := vDlg.ShowModal;
finally
vDlg.Free;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
电话会看起来像:
if (MessageDlg('Really quit application ?', mtWarning,
[mbNo, mbCancel, mbYes], {'No save', 'Cancel', 'Save'}) = mrYes) then
Run Code Online (Sandbox Code Playgroud)
但上面的代码当然不编译.我不知道如何在循环中获取一个集合中的一个项目以及如何在开始时获取它的总计数.
使用VCL,您可以使用CreateMessageDialog自定义按钮标题生成消息对话框.
随着FMX CreateMessageDialog似乎不再存在(自XE3以来).
除了从头开始重建消息对话框之外,有没有办法使用FireMonkey自定义按钮标题?
我希望能够调用这里描述的函数:
MessageDlg(
'Really quit application ?', mtWarning,
[ButtonInfo(mbNo, 'Do&n''t save'),
ButtonInfo(mbCancel, '&Cancel'),
ButtonInfo(mbYes,'&Save')],
mbYes
);
Run Code Online (Sandbox Code Playgroud) 我正在显示带有 Yes 和 No 按钮的 messageDlg 确认屏幕。反转代码中的按钮没有任何影响。
answer := messageDlg('Are you sure?', mtConfirmation, [mbYes, mbNO], 0);
Run Code Online (Sandbox Code Playgroud)
有没有办法在不创建自定义对话框的情况下将默认选项更改为否,例如此处演示的Delphi 中显示自定义消息对话框的最佳方法是什么?