android - 在Delphi XE7 Android中的Messagedlg

标签 android delphi firemonkey delphi-xe7

我只是想执行在Android平台上安装Delphi xe7(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发行说明中对此进行了解释:

Dialog Box Methods Support Anonymous Methods to Handle Their Closing


在XE6中,对对话框方法(InputBox,InputQuery,MessageDlg,ShowMessage)的调用始终处于阻塞状态。在对话框关闭之前,不会调用这些方法之一。 Android不允许阻止对话框,因此您不能在Android上使用这些方法。

在XE7上,InputBox,InputQuery和MessageDlg支持新的可选参数ACloseDialogProc。包含此新参数的调用可在包括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;

关于android - 在Delphi XE7 Android中的Messagedlg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34389997/

相关文章:

delphi - 如何在 FireMonkey 中制作圆形按钮?

delphi - 如何创建自定义形状更改对话框表单

java - 如何在 Java Android Studio 中更改 EditText 的自动焦点?

delphi - D5 中的 TFlowPanel 类似

android - Home 键锁定时键盘不工作

delphi - 有什么方法可以加快 TPNGImage 上的 SaveToStream 速度吗?

delphi - 如何更改 DCEF3 中的用户代理字符串

delphi - 如何在系统启动时启动android服务?

安卓广播接收器

android - 如何在 firebase 中访问 "flag"用户?