Автор
|
Тема: Нажатие клавиш
|
BigBalls |
опубликован 11-12-2001 17:21 MSK
Пожалуйста подскажите как в программе на Билдере перехватить нажатие клавиш? Какое сообщение ловить и т.д.
|
tonik
|
опубликован 11-12-2001 22:24 MSK
Если имеется в виду, как получать нажатия клавиш в формах, то нужно обрабатывать события OnKeyDown, OnKeyUp или OnKeyPress (см. хелп, чтоб узнать разницу, или обращайся ко мне). |
BigBalls
|
опубликован 12-12-2001 00:34 MSK
А если фокус не в форме или нажата функциональная клавиша? |
Susik
|
опубликован 12-12-2001 15:39 MSK
Смотря какое нажатие ты хочешь поймать: если для какого-то компонента в своей форме (типа ТЕдит и др.), то чел Тоник прально сказал. А если хочешь поймать нажатия из других окон, то я бы лучше использовал системную ловушку. |
BigBalls
|
опубликован 13-12-2001 08:41 MSK
На форме одна кнопка. Пишу: void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { MessageBox(NULL, "Key Down", "MB", MB_OK); } void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key) { MessageBox(NULL, "Key Press", "MB", MB_OK); } void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift) { MessageBox(NULL, "Key Up", "MB", MB_OK); } Фокус ввода в кнопке. Нажимаю клавиши - никаких месажбоксов. Если обрабатывать соответствующие события кнопки, то все ОК. Так неужели прописывать обработчик для каждого эл-та формы? |
rodion
|
опубликован 13-12-2001 11:06 MSK
Можно повесить один обработчик на все элементы Формы. Что у каждого элемента может быть свой обработчик - сильно упрощает жизнь. |