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

google клавиатура


walexw

Вопрос

Приложение FireMonkey, пишу на rad studio 10 seattle.

На форме 7 полей Tedit один под другим, заполняются с клавиатуры, внизу кнопка "сохранить".
Что-бы скакать от поля к полю ловлю в KeyDown нажатие Enter и пробрасываю фокус на следующий Edit, так до конца.
По другому я не умею, поэтому пока было так, нормально работало. Сегодня поставил на устройство (android 4.4.2) GOOGLE-клавиатуру.
Все круто, удобно, но теперь текстовые Едиты превратились в многострочные, Enter больше не ловится, а вводит вторую строчку, 3-ю, 4-ю...
Помогите, кто знает, что делать в такой ситуации.
И вообще как правильно делать обход полей по очереди при вводе, чтобы не пальцем выбирать.
В виндах клавиша табуляции помогала, а как здесь?

Спасибо.

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

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

  • 0

У edit есть свойство ReturnKeyType

нужно установить его в Next

но некоторые клавиатуры косячат и могут игнорить эту установку

гугл вроде норм. работает

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

Я использую сочетание свойств TEdit:

*.KillFocusByReturn := false;
*.ReturnKeyType := TReturnKeyType.Next;

 

Соответственно на последнем компоненте

*.KillFocusByReturn := true;
 

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

 

Ссылка на комментарий
  • 0
17 часов назад, Pax Beach сказал:

Я использую сочетание свойств TEdit:

*.KillFocusByReturn := false;
*.ReturnKeyType := TReturnKeyType.Next;

 

Соответственно на последнем компоненте

*.KillFocusByReturn := true;
 

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

 

Я делаю абсолютно также. Выставил правильный порядок TabOrder и обход полей происходит так, как мне надо.
К сожалению буфер клавиатуры помнит значение предыдущего поля и переносит его в следующее.
Еще бы с этим на учиться бороться.

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

А... так это просто решается.

procedure TfmSettings.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
var
  FService: IFMXVirtualKeyboardService;
begin
  if (Key = vkHardwareBack) then begin
    Key := 0; // <=== вот здесь очищается буфер клавиатуры

    TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));

    if (FService <> nil) and (TVirtualKeyboardState.Visible in FService.VirtualKeyBoardState) then begin
      FService.HideVirtualKeyboard;
      exit;
    end else begin
      Close;
    end;
  end;
end;

 

Ссылка на комментарий
  • 0
4 часа назад, Pax Beach сказал:

А... так это просто решается.


procedure TfmSettings.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
var
  FService: IFMXVirtualKeyboardService;
begin
  if (Key = vkHardwareBack) then begin
    Key := 0; // <=== вот здесь очищается буфер клавиатуры

    TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));

    if (FService <> nil) and (TVirtualKeyboardState.Visible in FService.VirtualKeyBoardState) then begin
      FService.HideVirtualKeyboard;
      exit;
    end else begin
      Close;
    end;
  end;
end;

 

Спасибо за подсказку! Буду пробовать.

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

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

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

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

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

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

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

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

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

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

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