Delphi 10.2东京Firemonkey多设备项目ShowModal不关闭Android中的表单

时间:2017-05-02 14:43:16

标签: android delphi modal-dialog firemonkey delphi-10.2-tokyo

我正在尝试将我的多设备应用程序从Delphi 10 Seattle升级到 德尔福10.2东京。

直到现在我才在Android上遇到一些奇怪的行为 ShowModal表单。表单确实得到了模态结果,但没有关闭showmodal表单。我该如何解决这个问题?

下面的代码示例:

procedure TForm1.Button1Click(Sender: TObject);
var
  frm_Test: Tfrm_Test;
begin
  inherited;
  frm_Test := Tfrm_Test.Create(nil);
  frm_Test.ShowModal(
    procedure(ModalResult: TModalResult)
    begin
      if ModalResult = mrOk then
      begin
        ShowMessage('Ok'); // This message is shown on top of the form frm_Test
      end;
    end);
end;

procedure Tfrm_Test.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ShowMessage('frm_Test close'); // This message also get's shown on top of frm_test form
  Action := TCloseAction.caFree; // This does not free the form, form will stay on top of Form1
end;

我是否需要以不同的方式释放/关闭表单,还是需要设置某些表单属性或其他内容?

更新

我已经完成了一些其他测试,现在看起来像是在使用 TCloseAction.caFree在Android上不起作用以释放表单。

我的测试:

procedure TForm1.Button1Click(Sender: TObject);
var
  frm_Test: Tfrm_Test;
begin
  inherited;
  frm_Test := Tfrm_Test.Create(nil);
  frm_Test.Show;
  {*
   * I've also tried using a try finally here and freeing the form inside the finally. This also did not have any effect.
   *}
end;

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

procedure Tfrm_Test.Button1Click(Sender: TObject);
begin
  Close;
end;

那么我应该如何关闭和释放Delphi 10.2表格?奇怪的是 使用Android硬件后退按钮确实关闭表单,并且还调用Form.Close事件。 使用标准的WindowClose操作也不起作用。

0 个答案:

没有答案