OrangeUI

 
先准备一个Frame:
Frame实现IframeVirtualKeyboardAutoProcessEvent接口,
在上面放一个ScrollBox,ScrollBoxContent,Edit和Button,
如下图所示:

当Edit获得焦点,系统弹出虚拟键盘,

当用户完成输入后就需要隐藏键盘,有两种方式:
第一种方式是调用系统提供的键盘接口中提供的方法,
在FMX.VirtualKeyboard单元中的IFMXVirtualKeyboardService,
代码如下:
 
var
VKbSvc: IFMXVirtualKeyboardService;
 
//关闭虚拟键盘
if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, VKbSvc) then
begin
VKbSvc.HideVirtualKeyboard;
end;
 
我们把它封装成一个方法供程序中使用:
procedure HideVirtualKeyboard;
var
VKbSvc: IFMXVirtualKeyboardService;
begin
//关闭虚拟键盘
if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, VKbSvc) then
begin
VKbSvc.HideVirtualKeyboard;
end;
end;
在OrangeUI中的uUIFunction.pas已经存在此方法,可以直接使用。
 
我们在蓝色的按钮点击事件中调用它,代码如下:

procedure TFrameHideVKboard.btnHideVKboardByMethodClick(Sender: TObject);
begin
uUIFunction.HideVirtualKeyboard;
end;
 
 
第二种方式是使用焦点转移,
点击按钮的时候,把按钮的CanFocus设置为True,
表示允许让按钮获得焦点,
然后在代码用调用按钮的SetFocus方法,让按钮得到焦点,
我们在红色按钮事件中写如下代码:

procedure TFrameHideVKboard.btnHideVKBoardBySetFocusClick(Sender: TObject);
begin
btnHideVKBoardBySetFocus.CanFocus:=True;
btnHideVKBoardBySetFocus.SetFocus;
end;