Перехват нажатия клавиши?

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

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

Ответить
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Перехват нажатия клавиши?

Сообщение McLion »

Всем привет,

вот такая проблема... на форме есть ListBox. KeyPreview стоит на True. Хочу нажатием на латинскую букву "j" вызвать одну функцию. Вот мой код:

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

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = 74 then
  begin
    MumOnClick(Self);
    Key := 0;
  end;
end;


Вот теперь проблема, нажимаю на "j", да функция вызывается но в тоже время в ListBox Select прыгает на строчку с первой буквой "j". Как сделать, что бы ListBox вообще не затрагивалась?

Пасиб!
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

ListBoxKeyDown тоже сделать Key := 0;, если KeyPreview не работает
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

listbox можно не трогать а перехватывать на форме KeyPress
таким вот способом

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

const
  hotkeys: set of char = ['j','J'];

procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
begin
  if (Key in hotkeys) and (ActiveControl is TListBox) then
    Key:=#0;
end;

только всё-равно функционал странный получается. По одним буквам по listbox-у можно передвигатся, а по другим нет?!
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Для шорткатов лучше использовать экшены

Добавлено спустя 1 минуту 21 секунду:
>>Хочу нажатием на латинскую букву "j" вызвать одну функцию.
как собственно и для подобных функций
Ответить