• 0
Palych

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

Вопросы

Разрабатываю 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 и т.п.)? Или единственный выход - изобретение собственного велосипеда? Важно, что к устройству в будущем предполагается неоднократное подключение/отключение сканера штрих-кода в режиме эмуляции ввода с клавиатуры и нужно, чтобы клавиатура вызывалась даже после этого. Буду крайне признателен за советы!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 ответов на этот вопрос

  • 0

UPD. удалил свое сообщение. Совет был не по теме вопроса

 

 

Изменено пользователем enatechno

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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