我在Delphi 10 Seattle有一个Firemonkey多设备项目,用户可以在应用程序启动时获得一个屏幕。这里用户需要填写2个字段。但是,当我单击编辑字段时,不会显示虚拟键盘。如果我在开始时跳过此屏幕并稍后调用它,则会显示虚拟键盘。这也是以同样的方式完成的。
我发现了一种解决方案: 当我点击编辑字段时,我自己调用show VirtualKeyboard。唯一的问题是光标没有显示在编辑字段中。
有没有办法自己放置光标?或者有谁知道如何解决虚拟键盘没有以其他方式显示问题?
Android和iOS都存在问题
在下面的代码中,您可以看到初始表单创建。问题是在ConnectFromProfile方法中调用actCreateNewProfileExecute。在那里,它将调用一个新的表格。在该形式(TfrmProfile)中,未显示虚拟键盘。我也用另一个动作调用这个表单然后它工作正常。
handshakefailed
答案 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设置为帧变量)此框架。