【问题标题】:Closing modal dialog in delphi firemonkey mobile application (Android)在delphi firemonkey移动应用程序(Android)中关闭模式对话框
【发布时间】:2014-03-06 16:19:56
【问题描述】:

我正花时间试图弄清楚为什么我的模态表单不会关闭! 使用 Delphi XE-5 和 FireMonkey Mobile App (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 事件并通过代码分配模态结果。为什么表格不会关闭?我想我需要确保我所做的一切都是正确的,并且可能是我的手机(设备)?

【问题讨论】:

  • 问题似乎不在发布的代码中。看看别处。
  • @KenWhite 我已经阅读了那篇文章,正如你所看到的,我的代码来自它。我在文章中是否缺少与使用“确定”或“取消”按钮实际关闭表单相关的内容?
  • @MarcusAdams 你有什么建议。我将编译后的 APK 文件发送给我儿子,他在 Nexus 设备上对其进行了测试,结果完全相同,因此它位于代码或运行时代码中。
  • @Marcus 是正确的。如果您的模态对话框不会关闭,则它不在您在此处发布的代码中。 (我之前提到过的文章讨论了模态窗口在 Android 上的不同之处——我相信“单独的活动”是 Marco 使用的短语。)ShowModal 确实不是 Windows 意义上的模态窗口。
  • @KenWhite 这篇文章我看了两遍,我问你“文章的哪一部分是指模态对话框方面(即单击按钮关闭对话框?)?你只是只需将按钮 modalresult 属性设置为“mrOK”和“mrCancel”,或者您是否还有其他操作。使用上面的代码并设置按钮 modalresult 属性不会关闭模式对话框。请解释一下。

标签: android delphi firemonkey delphi-xe5


【解决方案1】:

为了关闭你的模式对话框,使用这个模式:

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

并删除您的调用 Form2.DisposeOf;,因为 ModalResult 设置器需要对有效对象进行操作。

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

有关DisposeOf 错误的详细信息,另请参阅ShowModal on Android

【讨论】:

  • 使用 Delphi 10.2 Tokyo 和 Android 6.0.1 Action := TCloseAction.caFree; 防止表单关闭...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 2015-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多