我只是想执行在安装Delphi xe7期间给出的示例,即Android平台上的MessageAlerts,不幸的是它不起作用,它给出了以下错误消息:
该平台未实现阻止对话框
procedure TMessageAlertsForm.btnMultiButtonAlertClick(Sender: TObject);
begin
{ Show a multiple-button alert that triggers different code blocks according to
your input }
case MessageDlg('Choose a button:', System.UITypes.TMsgDlgType.mtInformation,
[
System.UITypes.TMsgDlgBtn.mbYes,
System.UITypes.TMsgDlgBtn.mbNo,
System.UITypes.TMsgDlgBtn.mbCancel
], 0) of
{ Detect which button was pushed and show a different message }
mrYES:
ShowMessage('You chose Yes');
mrNo:
ShowMessage('You chose No');
mrCancel:
ShowMessage('You chose Cancel');
end;
end;
知道如何解决吗?
XE7 发行说明中对此进行了解释:
对话框方法支持匿名方法来处理其关闭
在 XE6 中,对对话框方法(InputBox、InputQuery、MessageDlg、ShowMessage)的调用始终是阻塞的。调用这些方法之一后的任何代码在对话框关闭之前都不会执行。Android 不允许阻止对话框,因此您无法在 Android 上使用这些方法。
在 XE7 上,InputBox、InputQuery 和 MessageDlg 支持新的可选参数,A关闭对话框过程。包含此新参数的调用适用于所有平台,包括 Android。这个新的可选参数允许您提供在对话框关闭时调用的匿名方法。当您使用此新参数调用这些方法时,您的调用在桌面平台中是阻塞的,而在移动平台中是非阻塞的。如果您需要在对话框关闭后执行代码,请使用此新参数来确保您的应用程序在所有支持的平台上按预期工作。
...
ShowMessage还在XE7中获得了对Android的支持,对ShowMessage的调用在桌面平台上是阻塞的,在移动平台上是非阻塞的。但是,ShowMessage 不提供任何新参数来处理其关闭。如果需要在 ShowMessage 显示的对话框关闭后执行代码,请使用 MessageDlg 而不是 ShowMessage。
例如:
procedure TMessageAlertsForm.btnMultiButtonAlertClick(Sender: TObject);
begin
MessageDlg('Choose a button:', System.UITypes.TMsgDlgType.mtInformation,
[
System.UITypes.TMsgDlgBtn.mbYes,
System.UITypes.TMsgDlgBtn.mbNo,
System.UITypes.TMsgDlgBtn.mbCancel
], 0,
procedure(const AResult: System.UITypes.TModalResult)
begin
case AResult of
mrYES:
ShowMessage('You chose Yes');
mrNo:
ShowMessage('You chose No');
mrCancel:
ShowMessage('You chose Cancel');
end;
end);
end;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)