【发布时间】:2015-04-30 06:42:24
【问题描述】:
当我第一次打开我的表单时,我没有发现违规,但是当我第一次选择 TEdit 字段然后关闭表单,然后重新创建表单并打开它时,我得到了违规。
创建表单的代码:
procedure TfrmNocoreDKS.actConfigExecute(Sender: TObject);
var
confForm: TConfiguratie;
begin
confForm := TConfiguratie.Create(nil);
confForm.ShowModal(
procedure(ModalResult: TModalResult)
begin
confForm.DisposeOf;//Also tried confForm.Free;
end);
end;
我也试过这个来创建表单:
procedure TfrmNocoreDKS.actConfigExecute(Sender: TObject);
var
confForm: TConfiguratie;
begin
confForm := TConfiguratie.Create(nil);
try
confForm.ShowModal(
procedure(ModalResult: TModalResult)
begin
end);
finally
confForm.free;
end;
end;
关闭表单的代码:
procedure TConfiguratie.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := TCloseAction.caFree;
end;
因为仅当您单击任何 TEdit 然后关闭表单时才会出现违规行为,我认为它与虚拟键盘有关,但我不确定。我没有任何使用虚拟键盘本身的方法。
【问题讨论】:
-
尝试完全删除 FormClose。您要发布两次表单。
-
@DalijaPrasnikar 是的,谢谢。好像解决了!奇怪的是,在 embarcadero 网站上,它说你必须使用它。
-
@DalijaPrasnikar,这是不能使用
DisposeOf()的情况。详情请见ShowModal on Android。 -
@LURD 我还找到了 Android 上 showModal 的教程,但在这种情况下它不正确。
-
在不支持模态对话框的移动平台上使用
ShowModal时,您观察到的任何情况都算作the documentation 警告的“意外行为”吗?
标签: android forms delphi firemonkey delphi-xe7