我正在尝试将我的多设备应用程序从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操作也不起作用。