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

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

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

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

Сообщение McLion » 16.10.2015 22:43:57

Всем привет,

вот такая проблема... на форме есть 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 вообще не затрагивалась?

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

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

Сообщение vitaly_l » 16.10.2015 23:48:13

ListBoxKeyDown тоже сделать Key := 0;, если KeyPreview не работает
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

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

Сообщение скалогрыз » 17.10.2015 00:05:11

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-у можно передвигатся, а по другим нет?!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение zub » 17.10.2015 22:06:10

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

Добавлено спустя 1 минуту 21 секунду:
>>Хочу нажатием на латинскую букву "j" вызвать одну функцию.
как собственно и для подобных функций
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 249

Рейтинг@Mail.ru