• 0
Adm123

не поймать KeyUp, KeyDown

Вопросы

XE10 проект под андроид.

 

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

 

Собственно, тестовый проект - форма и один edit и одна лэйба на ней...

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  Label1.Text:= 'KeyUp';
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  Label1.Text:= 'KeyDn';
end;

И ничего! Ввод буковок-цифирок происходит, а метка не меняется...

 

Отрабатывает KeyDown на аппаратную кнопку сворачивания клавиатуры. А нажатие клавиш не ловится...

Изменено пользователем Adm123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 ответов на этот вопрос

  • 0
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls, FMX.TabControl, FMX.Layouts, FMX.Ani,
  System.UIConsts, System.DateUtils, FMX.Edit, IdBaseComponent, System.JSON,
  IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, FMX.Objects, System.IOUtils;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    procedure Edit1KeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
  if Key = vkReturn then Label1.Text:= inttostr(Key);
end;

end.

И так работает? На каждое нажатие виртуальной клавиши (во время редактирования Edit-а) пишет ее код? Под андроидом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Звеняй, я тупанул чуток. Еще раз проверил, все так же как у тебя.

Надо лезть в дебри и искать как захендлить ивенты виртуальной клавиатуры.

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

Изменено пользователем umkes

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Суть такая. На форме лежит TabControl. В нем на вкладках VertScrollBar-ы, в них - Edit-ы.

Как водится, вылезающая клавиатура закрывает часть полей для ввода. На событии вылезния клавиатуры я меняю Margins.Bottom у TabControla и все в порядке... но при убирании клавиатуры есть грабли. Если ее убирать аппаратной кнопкой - все нормально, обнуляю Margin и снова все красиво. А вот если клавиатура не "родная" и имеет свою кнопку сворачивания (у меня, например, Hitap Keyboard), то событие формы OnKeyboardHidden при нажатии на эту свою кнопку сворачивания не возникает.

Вот и хотел я отловить нажатие кнопки на виртуальной клавиатуре...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

В общем, решения толком нет. Нашел большущий костылище - http://codeverge.com/embarcadero.delphi.firemonkey/-android-onkeydown/1056646, но использовать такое рука не поднимается. Буду искать более тривиальное решение задачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Цитата

Как водится, вылезающая клавиатура закрывает часть полей для ввода. На событии вылезния клавиатуры я меняю Margins.Bottom у TabControla и все в порядке...

Есть же такая штука, которую нужно всего лишь вписать в uses проекта  https://github.com/rzaripov1990/vkbdhelper

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

столкнулся с такой же проблемой: если вводить цифры, то событие срабатывает, а если точку или запятую, то не срабатывает.

Изменено пользователем x11

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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