TComboBox и его глючная реакция OnKeyDown...

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
leo_bsv
постоялец
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола
Контактная информация:

TComboBox и его глючная реакция OnKeyDown...

Сообщение leo_bsv »

Не хочу чтобы пользователь что-то писал в комбо, пишу так

Код: Выделить всё

procedure TMainForm.ComboBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
  );
begin
  Key:=0;
end;

результат: если встать в комбо и тыкать медленно - не пишется :), а если тыкать в клаву быстро обеими руками и всё подряд - пишется :shock: Это глюк такой или что :?:
свойство ReadOnly не предлагать - ComboBox.Style изменяется на csDropDownList после чего программно невозможно указать свойство ComboBox.Text или даже ComboBox.ItemIndex... или я ошибаюсь?
Владимир
постоялец
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Владимир »

У меня не пишется, что быстро, что медленно жать кнопки...
Вообще-то для Ваших целей следует использовать OnKeyPress с указанием, например key:=#27
В свойство .text писАть - не вижу особого смысла, т.к. это элемент отображения одного из Items[ItemIndex]. Другое дело, если необходимо реализовать расширение списка с добавлением новой строки с содержимым .text - тогда используем метод Add (например, в обработчике OnKeyDown).
Как-то так.
Ответить