首页 > 解决方案 > Android 上 Delphi Firemonkey 中的模态弹出窗口

问题描述

我正在开发一个 Android 应用程序,但我需要一个弹出窗口,我可以在代码中调用它来创建模态弹出窗口,因此在代码中设置一个变量。我试图将它分布在不同的函数中,并且它起作用了,但是当从一个 Funktion 跳转到另一个 Funktion 时,遵循代码变得非常糟糕......

我想要做的就像函数一样MessageDlg(),但它没有在Android上实现。

我已经尝试过MessageDlg()使用匿名函数,但是在我按下按钮之前它也会运行下面的代码。

我需要类似的东西,但在 Android 上,if 语句将在我输入输入之前执行。

MyInt: Integer;
begin

  MessageDlg('You want to Continue?', System.UITypes.TMsgDlgType.mtInformation,
  [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], 0,
  procedure(const AResult: TModalResult) begin
    case AResult of
      mrYes:
        MyInt := 0;
      mrNo:
        MyInt := 1;
    end;
  end);

  if MyInt = 0 then
    //Do Something
  else
    //Do Something
end;

我需要它来处理“单击按钮以继续事件”之类的东西

标签: androiddelphimodal-dialogpopup

解决方案


您必须将您的逻辑移动到匿名方法中。这将在用户单击适当的按钮后执行。在这种情况下,您也不需要MyInt变量。

begin

  MessageDlg('You want to Continue?', System.UITypes.TMsgDlgType.mtInformation,
  [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], 0,
  procedure(const AResult: TModalResult) begin
    case AResult of
      mrYes:
        begin
          //Do Something (MyInt = 0 branch)
        end;
      mrNo:
        begin
          //Do Something (MyInt = 1 branch)
        end;
    end;
  end);

end;

推荐阅读