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

Переход по нажатию кнопки "Enter"


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

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

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

  • 0
  • Модераторы

есть два способа

1) выставить правильные TabStop'ы (TabOrder) контролам и ReturnType = Next

2) самому присваивать фокус следующему компоненту, при нажатии на VK_RETURN

Изменено пользователем ZuBy
Ссылка на комментарий
  • 0

Попробовал 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

Код подменяет событие нажатия кнопки  VK_RETURN  на  VK_TAB

В виндовых приложениях работает без нареканий.

Вы предлагаете указывать в каждом edite фокус следующего? А если их на форме пара десятков? Или юзать FindComponent?

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

Windows общается через сообщения, и тем кодом вы эмулировали нажатие на кнопку TAB. Это все верно, но другие платформы не используют такой же механизм общения. Поэтому решение было дано выше, а какой способ лучше вам решать

Ссылка на комментарий
  • 0
В 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
В 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);

 

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

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

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

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

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

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

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

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

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

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

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