Перейти к содержанию
Fire Monkey от А до Я
  • 0

TEdit, виртуальная клавиатура на планшете с Windows 10


Palych

Вопрос

Разрабатываю FM-приложение в Delphi 10.1 Upd2 для планшета с Win 10.

Выставляю Edit1.KeyboardType := NumberPad. Но при отключенной от планшета физической клавиатуре виртуальная не появляется. В Винде в настройках ввода активировал пункт "Автоматическое отображение сенсорной клавиатуры к оконных приложениях при отсутствии подключенной ...", но это не помогает.

Получилось вызвать экранную клаву по onEnter:

...
if Sender is FMX.Types.TFmxObject then
  if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(KeyboardService)) then
    KeyboardService.ShowVirtualKeyboard(Sender as FMX.Types.TFmxObject);

Но там много лишних кнопок (кнопка Win, наличие букв в полях только для цифр, начальное положение по центру экрана и т.п.).

Можно ли под Win 10 как-то отображать и скрывать именно сенсорную клавиатуру нужного типа (с буквами и цифрами, только буквы, для ввода email и URL и т.п.)? Или единственный выход - изобретение собственного велосипеда? Важно, что к устройству в будущем предполагается неоднократное подключение/отключение сканера штрих-кода в режиме эмуляции ввода с клавиатуры и нужно, чтобы клавиатура вызывалась даже после этого. Буду крайне признателен за советы!

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
7 минут назад, enatechno сказал:

FCurVKType := Edit1.KeyboardType;

каким образом приватная переменная класса(или что это за переменная) может повлиять на тип отображаемой клавиатуры?

Ссылка на комментарий
  • 0

Ярослав, спасибо за совет!

Добавил в OnCreate главной формы:

FMX.Types.VKAutoShowMode := TVKAutoShowMode.Always;

Стала вызываться экранная клавиатура и без добавления обработчиков OnEnter и OnExit для каждого контрола, уже лучше. Естественно, возникло желание заменить экранную клавиатуру сенсорной, почитал соседнюю тему, заменил 3 строчки в FMX.Platform.Win.pas от D10.1 Upd2:

constructor TVirtualKeyboardWin.Create;
...
  {FPath := S;
  FExeName := 'osk.exe';
  FWndClassName := 'OSKMainClass';}
  FPath := 'C:\Program Files\Common Files\Microsoft Shared\ink\';
  FExeName := 'TabTip.exe';
  FWndClassName := 'IPTip_Main_Window';
  ...

Файл скинул в папку проекта. Но при активации едитов клавиатура ен показывается. Если убрать из папки FMX.Platform.Win.pas, то снова отображается экранная клава. ЧЯДНТ?

Тестовый проект прикрепляю.

sens_keyb.zip

Ссылка на комментарий
  • 0

С исправленным модулем сенсорная клавиатура заработала на десктопе со всеми последними обновлениями при переключении в режим планшета. А на самом планшете, где не стоят обновления и используется предыдущий релиз десятки, не работает., хотя для Блокнота клава появляется. Копаю в сторону:

ShellExecute(0, 'OPEN', PWideChar('C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe'), '', '', 1);

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...