先准备一个Frame:

Frame实现IframeVirtualKeyboardAutoProcessEvent接口,

在上面放一个ScrollBox,ScrollBoxContent,EditButton,

如下图所示:

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;