![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Реакция на клавиши в главной форме.
Duce © (2002-05-22 14:57:00)Привет коллеги!
Нуждаюсь в Ваших знаниях и опыте, будьте снисходительны
Задача - главная форма должна откликаться на нажатие клавиш
стрелок. На форме разложе ДиБиГрид и прочие вещи. Какой бы
элемент не был активным, реакция на клавиши стрелок должна обра-
батываться главной формой. Но ведь каждый элемент - сам себе окно! И при нажатии кнопы в ДБ Гриде главная форма и не знает,
что была нажата отслеживаемая кнопка.
Как действовать, чтобы это решить?
Не приписывать же к каждому эл-ту код уведомления гл. формы...
Заранее благодарен за консалтинг.
Song (2002-05-22 16:06:00) [1]2xGrey © (22.05.02 16:01)
Вот как раз одно из решений для TAB
xGrey (2002-05-22 16:01:00) [2]А можно попробовать сделать так:
Application.OnMessage:=WinMsgHanter;
............................................................
procedure WinMsgHanter(var Msg: TMsg; var Handled: Boolean);
begin
if (Msg.message=WM_CHAR) or (Msg.message=WM_KEYDOWN)
then
begin
if Msg.wParam in [коды нужных кнопок]
then действия
end;
end;
............................................................
Application.OnMessage:=nil;
Song (2002-05-22 15:21:00) [3]В onKeyDown передватываете и возвращаете Key:=0;
Duce (2002-05-22 15:19:00) [4]Как следствие сабжа - нужно ведь как-то подавить реакцию
собственно элемента, где месаг о нажатии кнопки родился.
Т.е. перехватил и зажал(типа в null).
Что сделать?
Song (2002-05-22 15:13:00) [5]onMouseDown ловятся хорошо, но если Вы их нажимаете в каком-либо визуальном компонента и там есть обработчик на них то на TForm.onMouseDown оболомится.
Tab - это отдельная тема. Для него другое решение.
Duce (2002-05-22 15:10:00) [6]Да, вроде работает...
Главное проперть я нашел, но прочел, что меня смутило:
Navigation keys (Tab, BackTab, the arrow keys, and so on) are unaffected by KeyPreview because they do not generate keyboard events
А я вообще-то стрелки ловлю...
Как понимать?
MBo (2002-05-22 15:04:00) [7]KeyPreview:=true;
Внук (2002-05-22 15:02:00) [8]А TForm.KeyPrevie:=True не помогает?
Внук (2002-05-22 15:02:00) [9]А TForm.KeyPreview:=True не помогает?