33.3.OrangeUI控件使用说明(虚拟键盘控制-防止Edit遮挡)(隐藏虚拟键盘)

 

先准备一个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;

 

 

 

 

 

 

 

 

发表评论