返回showmodal表单后停止编辑

时间:2015-01-08 10:20:43

标签: android delphi edit firemonkey delphi-xe7

我正在使用Android v4.4.4中的XE7。

我在form1上有一个TEdit和一个TButton。 以下是我的步骤:

  1. 点击TButton以使用ShowModal(...)或Show;
  2. 显示另一个表单(Form2)
  3. 通过ModalResult关闭form2:= mrOK或关闭;
  4. 在我返回到form1之后,当我点击它时,TEdit无法编辑而且没有插入符号。 我的意思是当我点击它时没有显示VirtualKeyboard。

    任何人都有这种问题或者它有什么问题。

2 个答案:

答案 0 :(得分:0)

你没有说明你如何调用模态表格。 我只能假设你在代码中遗漏了一些东西。

在XE7中更新documentation以正确调用模态表单并在使用后将其关闭。

从文档中,如何显示模态表单:

procedure MyCurrentForm.MyButtonClick(Sender: TObject);
var
  dlg: TMyModalForm;
begin
  // Create an instance of a form.
  dlg := TMyModalForm.Create(nil);

  // Configure the form. For example, give it a display name.
  dlg.Caption := 'My Modal Dialog Box';

  // Show your dialog box and provide an anonymous method that handles the closing of your dialog box.
  dlg.ShowModal(
    procedure(ModalResult: TModalResult)
    begin
      // Do something.
    end
  );
end;

从文档中,如何释放模态对话框:

  

您无法释放在方法中为模式对话框窗体分配的内存,而不是处理关闭模式对话框窗体。要释放模式对话框表单,必须按如下方式处理其OnClose事件:

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

答案 1 :(得分:0)

用这个关闭Form2:

Form2.hide;

当你返回form1时,很可能焦点仍在Form2上。

当显示不同的表格时,我总是这样做:

将此添加到应该转到Form2的按钮

Form1.hide;
Form2.show;

将此添加到form2的OnClose事件:

Form2.hide;
form1.show;

这在我之前从未失败