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

Как запретить ввод с клавиатуры?


brunnengi

Вопрос

Здравствуйте.

Подскажите пожалуйста, как можно запретить (а затем восстановить) обработку ввода данных в FMX приложение под Windows?

 

На форме имеется поле ввода (edit). Я ввожу туда номер, нажимаю Enter. Если по указанному номеру отсутствует информация, то вывожу Layout (с размещенным на нем текстом и кнопкой по которой этот layout скрывается) информацию о том что по данному номеру ничего не найдено. Но поле ввода все может принимать данные.

И такие поля встречаются часто. Хочу как то временно запретить работу с клавиатурой, (а мышь должна работать) пока не нажмут кнопку "OK".

 

Подскажите пожалуйста как это сделать.

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

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

  • 0
  • Администраторы

Добрый день,

 

Есть несколько способов реализовать это:

1. Свойство TEdit.ReadOnly. Когда появляется Layout, мы устанавливаем свойство ReadOnly в True

Edit.ReadOnly := True

По скрытию Layout, обратно сбрасываем свойство ReadOnly:

Edit.ReadOnly := False

Дополнительно можно скрыть каретку в TEdit путем сброса фокуса:

Edit.ResetFocus;

Такой способ хорош, когда нужно запретить ввод только в контролы, построенные на базе TEdit. Потому что не все контролы имеют свойство ReadOnly.

 

2. Вручную поставить фильтр на вводимые символы в любой контрол. Для этого определяем обработчик для TControl.OnKeyDown, который вещаем на все контролы, в которые вы хотите запретить ввод. В обработчике сбрасываем коды символов, если текущий режим не разрешает ввод. В моем примере я обозначил это переменной InputAllowed

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  if not InputAllowed then
  begin
    Key := 0;
    KeyChar := #0;
  end;
end;

Этот способ лучше тем, что этот обработчик можно повесить на любой контрол и тем самым разом полностью заблокировать ввод символов. Однако, если вам нужно в некоторых контролах выполнять дополнительные действия, то придется создавать отдельные обработчики. Все зависит от вашей задачи.

 

Более простых решений в одну-две строчки нет.

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

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