При разработке Android приложения иногда возникает необходимость отслеживать и изменять состояние клавиатуры устройства. Для этого был добавлен сервис IFMXVirtualKeyboardService.
Внимание! Старая версия заметки более не актуальна, т.к. была написана для Delphi XE5/XE6. Это новая версия заметки, актуальна для Delphi 10.3.* и выше. Если вы всё ещё используете версию Delphi ниже 10.3, то рекомендую обновиться на последнюю версию!
Обновление от 16.11.19.
Методы:
HideVirtualKeyboard – скрыть клавиатуру
ShowVirtualKeyboard – показать клавиатуру
Свойства:
VirtualKeyboardState – отражает текущее состояние клавиатуры
События формы:
OnVirtualKeyboardShown – происходит, когда клавиатура появляется на экране
OnVirtualKeyboardHidden – происходит, когда клавиатура исчезает с экрана
Примеры:
Внимание! Старая версия заметки более не актуальна, т.к. была написана для Delphi XE5/XE6. Это новая версия заметки, актуальна для Delphi 10.3.* и выше. Если вы всё ещё используете версию Delphi ниже 10.3, то рекомендую обновиться на последнюю версию!
Обновление от 16.11.19.
Методы:
HideVirtualKeyboard – скрыть клавиатуру
ShowVirtualKeyboard – показать клавиатуру
Свойства:
VirtualKeyboardState – отражает текущее состояние клавиатуры
События формы:
OnVirtualKeyboardShown – происходит, когда клавиатура появляется на экране
OnVirtualKeyboardHidden – происходит, когда клавиатура исчезает с экрана
Примеры:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
uses | |
FMX.Platform, FMX.VirtualKeyboard; | |
// Пример проверки состояния клавиатуры | |
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); | |
var | |
KeyboardService: IFMXVirtualKeyboardService; | |
begin | |
if Key = vkHardwareBack then | |
if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(KeyboardService)) then | |
if TVirtualKeyBoardState.Visible in KeyboardService.VirtualKeyboardState then | |
Key := 0 | |
end; | |
// Пример закрытия клавиатуры | |
procedure TForm2.sbHideKeyboardClick(Sender: TObject); | |
var | |
KeyboardService: IFMXVirtualKeyboardService; | |
begin | |
if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(KeyboardService)) then | |
KeyboardService.HideVirtualKeyboard; | |
end; | |
// Пример открытия клавиатуры | |
procedure TForm2.sbShowKeyboardClick(Sender: TObject); | |
var | |
KeyboardService: IFMXVirtualKeyboardService; | |
begin | |
if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(KeyboardService)) then | |
KeyboardService.ShowVirtualKeyboard(Memo1); | |
end; |