Фокус не продвигается нажатием кнопки «Далее» (delphi) - PullRequest
0 голосов
/ 11 июля 2019

У меня есть 4 Tedit в моей форме, все отформатированы с порядком табуляции 0 на 3 (как показано на прикрепленном изображении). enter image description here

Но, когда я нажимаю на следующую кнопку в моем мобильном телефоне, фокус не меняется ...

И если я наберу какой-нибудь текст, нажмите кнопку «Далее» (которая ничего не делает), а затем вручную переключите фокус с одного на другой и продолжите вводить текст, он скопирует весь текст из Tedit1 и вставит его в Tedit2, как если бы он дополнял тот же Тедит.

Я уже искал похожие проблемы, но не нашел никого с этой проблемой ...

У кого-нибудь есть догадки, что может пойти не так? Я использую Delphi Tokyo и разрабатываю для устройства Android.

Obs: Я уже пытался проверить «KillFocusByReturn» и включить функцию «onExit» Tedit1, поставить «Tedit2.SetFocus», но это тоже не работает.

Ответы [ 2 ]

3 голосов
/ 11 июля 2019

Но, когда я нажимаю на следующую кнопку в моем мобильном телефоне, фокус не меняется ...

Согласно документации ReturnKeyType:

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

Значение ReturnKeyType не влияет на фактическое действие, которое выполняет элемент управления для редактирования при нажатии клавиши возврата. Чтобы определить это действие, используйте событие OnKeyUp.

Итак, вам нужно назначить обработчик событий OnKeyUp для Edit1, и когда он указывает, что нажата клавиша Return , вызовите его Edit2.SetFocus(). И затем сделайте то же самое для Edit2 для следующего элемента управления. И так далее по мере необходимости.

1 голос
/ 11 июля 2019

Если вы хотите, чтобы клавиша Return переместила фокус на следующий элемент управления, вы можете попробовать что-то вроде этого:

procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word;
  var KeyChar: Char; Shift: TShiftState);
begin
  if Key = vkReturn then
  begin
    Key := vkTab;
    KeyDown(Key, KeyChar, Shift);
  end;
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...