MaratBest Опубликовано 9 февраля, 2017 Поделиться Опубликовано 9 февраля, 2017 Задача получить нажатый символ (или код символа) на виртуальной клавиатуре! D10, android. Для примера. есть форма, есть кнопка , при нажатии выводим виртуальную клавиатуру, указываем вывод на form1 (или edit, memo) Keyboard.ShowVirtualKeyboard(memo1); как получить нажатый символ ? или я туплю..... или ...хз всю голову сломал думал через Edit сделать Edit1KeyDown, но там Key всегда 0 если цифры, коды если только служебные клавиши, на символы вообще не реагирует думаю сеть простой способ ? Цитата Ссылка на комментарий
0 chaplin.u@gmail.com Опубликовано 13 февраля, 2017 Поделиться Опубликовано 13 февраля, 2017 я сделал так :http://docwiki.embarcadero.com/Libraries/Seattle/en/FMX.Dialogs.InputQuery Цитата Ссылка на комментарий
0 MaratBest Опубликовано 14 февраля, 2017 Автор Поделиться Опубликовано 14 февраля, 2017 6 часов назад, chaplin.u@gmail.com сказал: я сделал так :http://docwiki.embarcadero.com/Libraries/Seattle/en/FMX.Dialogs.InputQuery InputQuery подразумевает всегда какой-то диалог , мне нужно без него Цитата Ссылка на комментарий
0 enatechno Опубликовано 14 февраля, 2017 Поделиться Опубликовано 14 февраля, 2017 Цитата Ссылка на комментарий
0 AlexShaman Опубликовано 15 февраля, 2017 Поделиться Опубликовано 15 февраля, 2017 У меня виртуальная клавиатура передает в программу только Enter(13) и Backspace(08) Открываю так TPlatformServices.Current.SupportsPlatformService( IFMXVirtualKeyboardService, IInterface(aVirtualKeyboardService)); if (aVirtualKeyboardService <> nil) then aVirtualKeyboardService.ShowVirtualKeyboard(fMain); Обработчик нажатий кнопок procedure TfMain.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); var i:integer; s:string; aVirtualKeyboardService: IFMXVirtualKeyboardService; begin //tCursor.Visible := false; if Key=27 then begin sInputBox := ''; iCurrentPos := 1; end; if Key=37 then begin if iCurrentPos > 0 then iCurrentPos := iCurrentPos-1; end; end; Почему не срабатывает события при вводе текста? Berlin+ android , под win работает как надо. Цитата Ссылка на комментарий
0 RoschinSpb Опубликовано 15 февраля, 2017 Поделиться Опубликовано 15 февраля, 2017 8 часов назад, AlexShaman сказал: Berlin+ android , под win работает как надо. Да, таким способом на мобильных платформах работать не получится. Там всё хуже, т.к. ввод может быть очень замысловатым, включая голосом. Тут я посоветую смотреть исходники, какие там интерфейсы реализованы и как. Цитата Ссылка на комментарий
0 AlexShaman Опубликовано 15 февраля, 2017 Поделиться Опубликовано 15 февраля, 2017 (изменено) Нашел готовое решение, переделал немного (Berlin). Используя это решение можно получать символы от вирт клавиатуры. Регистрация клавиатуры SetMyVirtualKeyboard(const AControl: TFmxObject), где AControl - компонент обрабатывающий события OnKeyUp procedure SetMyVirtualKeyboard(const AControl: TFmxObject); begin {$IFDEF ANDROID} if FNativeVKService <> nil then Exit; if not Assigned(FMyVirtualKeyboardAndroid) then begin FMyVirtualKeyboardAndroid := TVirtualKeyboardAndroidEx.Create; FMyVirtualKeyboardAndroid.OnKeyUp := TForm(AControl).OnKeyUp; end; FNativeVKService := IFMXVirtualKeyboardService(TPlatformServices.Current.GetPlatformService(IFMXVirtualKeyboardService)); if FNativeVKService <> nil then begin TPlatformServices.Current.RemovePlatformService(IFMXVirtualKeyboardService); end; TPlatformServices.Current.AddPlatformService(IFMXVirtualKeyboardService, FMyVirtualKeyboardAndroid); {$ENDIF} end; Вызов клавиатуры стандартно TPlatformServices.Current.SupportsPlatformService( IFMXVirtualKeyboardService, IInterface(aVirtualKeyboardService)); if (aVirtualKeyboardService <> nil) then aVirtualKeyboardService.ShowVirtualKeyboard(fMain); Скрытие, тоже стандартно if (key=13) then begin //если нажата клавиша enter if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(aVirtualKeyboardService)) then aVirtualKeyboardService.HideVirtualKeyboard; end; MyFMX.VirtualKeyboard.Android.rar Изменено 15 февраля, 2017 пользователем AlexShaman Добавлен тег "Код" neo и Rusland 2 Цитата Ссылка на комментарий
Вопрос
MaratBest
Задача получить нажатый символ (или код символа) на виртуальной клавиатуре!
D10, android.
Для примера. есть форма, есть кнопка , при нажатии выводим виртуальную клавиатуру, указываем вывод на form1 (или edit, memo)
Keyboard.ShowVirtualKeyboard(memo1);
как получить нажатый символ ? или я туплю..... или ...хз
всю голову сломал
думал через Edit сделать Edit1KeyDown, но там Key всегда 0 если цифры, коды если только служебные клавиши, на символы вообще не реагирует
думаю сеть простой способ ?
Ссылка на комментарий
6 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.