当焦点在Firemonkey项目中编辑字段时,VirtualKeyboard不显示

时间:2016-02-08 15:04:38

标签: focus edit firemonkey virtual-keyboard delphi-10-seattle

我在Delphi 10 Seattle有一个Firemonkey多设备项目,用户可以在应用程序启动时获得一个屏幕。这里用户需要填写2个字段。但是,当我单击编辑字段时,不会显示虚拟键盘。如果我在开始时跳过此屏幕并稍后调用它,则会显示虚拟键盘。这也是以同样的方式完成的。

我发现了一种解决方案: 当我点击编辑字段时,我自己调用show VirtualKeyboard。唯一的问题是光标没有显示在编辑字段中。

有没有办法自己放置光标?或者有谁知道如何解决虚拟键盘没有以其他方式显示问题?

Android和iOS都存在问题

在下面的代码中,您可以看到初始表单创建。问题是在ConnectFromProfile方法中调用actCreateNewProfileExecute。在那里,它将调用一个新的表格。在该形式(TfrmProfile)中,未显示虚拟键盘。我也用另一个动作调用这个表单然后它工作正常。

handshakefailed

1 个答案:

答案 0 :(得分:2)

请勿在{{1​​}}中显示任何其他表单。在iOS 9.2上尝试使用“启动屏幕”冻结应用程序。

而不是这样,以异步方式显示新表单,如下所示:

MainForm.OnCreate/OnShow

的cource,您可以将此代码分离到外部程序:

procedure TForm4.FormShow(Sender: TObject);
begin
  TTask.Run(procedure
    begin
      TThread.Synchronize(nil, procedure // work with visual controls - only throught Synchronize or Queue
        begin
          Form5:=TForm5.Create(Application);
          Form5.ShowModal;
        end)
    end);
end;

======

另一种方式 - 不要使用任何其他形式。创建框架并将其(在运行时)放在具有procedure ShowMyForm; begin Form5:=TForm5.Create(Application); Form5.ShowModal; end; procedure TaskProc; begin TThread.Synchronize(nil, ShowMyForm); end; procedure TForm4.FormShow(Sender: TObject); begin TTask.Run(TaskProc); end; 的MainForm上。在完成所有需要的操作之后 - 隐藏或释放(由于ARC不会忘记将nil设置为帧变量)此框架。