关闭delphi firemonkey移动应用程序(Android)中的模式对话框

时间:2014-03-06 16:19:57

标签: android delphi firemonkey delphi-xe5

我正在寻找最简单的时间来弄清楚为什么我的模态形式不会关闭! 使用Delphi XE-5和FireMonkey移动应用程序(Android),我按照信息“ShowModal Dialogs in FireMonkey Mobile Apps

为了演示目的,我创建了一个新的Firemonkey Mobile delphi应用程序并添加了一个二级firemonkey移动表单。从主表单中,我使用文章中的代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  Form2: TForm2;
begin
  Form2 := TForm2.Create(nil);

  Form2.ShowModal(procedure(ModalResult: TModalResult)
    begin
      if ModalResult = mrOK then
      begin
        //
      end;
      Form2.DisposeOf;
    end);

end;

在辅助表单上,我将“Ok”和“Cancel”按钮modalresult属性分别分配给“mrCancel”和“mrOK”。但是,当显示模态对话框时,两个按钮都不会使对话框关闭。我甚至尝试添加onClick事件并通过代码分配modalresult。为什么表格不接近?我想我需要保证我能够正确地使用我的电话(设备)吗?

1 个答案:

答案 0 :(得分:5)

要关闭模态对话框,请使用以下模式:

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := TCloseAction.caFree;
end;

并移除您的电话Form2.DisposeOf;,因为ModalResult设置者需要对有效对象进行操作。

文档已在XE7中更新,请参阅Using FireMonkey Modal Dialog Boxes

另请参阅ShowModal on Android了解DisposeOf错误的详细信息。