kolobokk Опубликовано 14 апреля, 2016 Поделиться Опубликовано 14 апреля, 2016 Добрый день, форумчане! Подскажите в какое событие и что надо вставить, чтобы в приложении под Android срабатывал переход между контроллами Tedit расположенными на одной форме по нажатии кнопки "Enter" на экранной клавиатуре девайса? Под Win32 работал такой код: if(Key == VK_RETURN) { keybd_event(VK_TAB, 0, 0, 0); keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0); } в обработчике события OnKeyDown Edit-a Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 14 апреля, 2016 Модераторы Поделиться Опубликовано 14 апреля, 2016 (изменено) есть два способа 1) выставить правильные TabStop'ы (TabOrder) контролам и ReturnType = Next 2) самому присваивать фокус следующему компоненту, при нажатии на VK_RETURN Изменено 14 апреля, 2016 пользователем ZuBy Kitty и enatechno 2 Цитата Ссылка на комментарий
0 kolobokk Опубликовано 14 апреля, 2016 Автор Поделиться Опубликовано 14 апреля, 2016 Попробовал 1-й способ: не работает на устройстве (TabStop=true, TabOrder по порядку с 0), причем пробовал ReturnKeyType = Next, Done, Go 2-й способ: if(Key == VK_RETURN) { keybd_event(VK_TAB, 0, 0, 0); keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0); } в обработчике события OnKeyDown Edit-a при компиляции под платформу Android выдает ошибку [bccaarm Error] autorizaciya.cpp(103): expected expression хотя этот же код при компиляции под Win32 проходит Что в нем надо поправить? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 14 апреля, 2016 Модераторы Поделиться Опубликовано 14 апреля, 2016 я ведь дал выше ответ! вы понимаете что делает код который используете? Цитата Ссылка на комментарий
0 kolobokk Опубликовано 14 апреля, 2016 Автор Поделиться Опубликовано 14 апреля, 2016 Код подменяет событие нажатия кнопки VK_RETURN на VK_TAB В виндовых приложениях работает без нареканий. Вы предлагаете указывать в каждом edite фокус следующего? А если их на форме пара десятков? Или юзать FindComponent? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 14 апреля, 2016 Модераторы Поделиться Опубликовано 14 апреля, 2016 Windows общается через сообщения, и тем кодом вы эмулировали нажатие на кнопку TAB. Это все верно, но другие платформы не используют такой же механизм общения. Поэтому решение было дано выше, а какой способ лучше вам решать Цитата Ссылка на комментарий
0 Pax Beach Опубликовано 9 июня, 2016 Поделиться Опубликовано 9 июня, 2016 В 14.04.2016 в 11:59, ZuBy сказал: есть два способа 1) выставить правильные TabStop'ы (TabOrder) контролам и ReturnType = Next 2) самому присваивать фокус следующему компоненту, при нажатии на VK_RETURN 1) В том же примере MyDialogs присваиваю TEdit'ам TabOrder по-порядку создания. А vkNext не переводит на следующий контрол. 2) А как узнать следующий, все контролы на форме перебирать? Может в FMX есть соответствующий метод, как в VCL SelectNext или FindNextControl? За пример перевода контрола по KeyUp тоже благодарность безмерная. Цитата Ссылка на комментарий
0 Amigo86 Опубликовано 8 декабря, 2016 Поделиться Опубликовано 8 декабря, 2016 В EDIT выбираем ( ReturnType = Next) В событии EDIT (OnKeyDown) if Key = vkReturn then begin Key := vkTab; KeyDown(Key, KeyChar, Shift); end; Цитата Ссылка на комментарий
0 POV Опубликовано 11 июля, 2017 Поделиться Опубликовано 11 июля, 2017 В 14.04.2016 в 13:53, Равиль Зарипов (ZuBy) сказал: я ведь дал выше ответ! вы понимаете что делает код который используете? А чем вынь32 вариант не нравится FMX? Я таким образом раскрывам майнменю в нужном месте. А под FMX хоть скомпилилось, но не заработало как я того хочу. keybd_event(VK_MENU, 0, 0 ,0); keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP,0); keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_DOWN, 0, 0, 0); keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_DOWN, 0, 0, 0); keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_DOWN, 0, 0, 0); keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_DOWN, 0, 0, 0); keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_DOWN, 0, 0, 0); keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0); Цитата Ссылка на комментарий
Вопрос
kolobokk
Добрый день, форумчане!
Подскажите в какое событие и что надо вставить, чтобы в приложении под Android срабатывал переход между контроллами Tedit расположенными на одной форме по нажатии кнопки "Enter" на экранной клавиатуре девайса?
Под Win32 работал такой код:
if(Key == VK_RETURN)
{
keybd_event(VK_TAB, 0, 0, 0);
keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
}
в обработчике события OnKeyDown Edit-a
Ссылка на комментарий
8 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.