我已经找到了很多关于这个问题的参考资料,但还没有找到解决办法。
我使用下面的代码来隐藏虚拟键盘,但是它不起作用。
FService: IFMXVirtualKeyboardService;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));
if FService = nil then ShowMessage('xxxxx');
end;
.....
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
//ShowMessage(IntToStr(Key) + '~' + KeyChar + '~');
//Application.ProcessMessages;
if (Key = vkHardwareBack) then
begin
// this code is executed
Application.Terminate;
Key := 0;
end
else
if Key in [vkRETURN, vkACCEPT] then begin
// this code never executed
if (FService <> nil) then begin // FService isn't nil
FService.HideVirtualKeyboard;
end;
end;
end;
当按下“Accept”或“Enter”时,Key
的值始终为零,因此键盘代码不执行。为什么?
4条答案
按热度按时间f5emj3cl1#
这是我的Android应用程序中的代码,该应用程序一直在10.0至10.3.1中运行
daupos2t2#
我目前在10.1柏林工作,所以我认为它应该可以工作,我调用了一个过程
当我想打开我调用的虚拟键盘时:
如果我想关闭键盘,我调用:
s6fujrry3#
使用
FormkeyUp
事件行程常式:这段代码还模拟了你在很多Android应用中看到的“再次按下退出”功能。要使其正常工作,你还必须这样做:
yacmzcpb4#
只需将此用于 Delphi Alexandria,FMX:
对不起,伙计们,我不知道如何格式化这个。但是只要复制过去,自己格式化就行了。