Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Реакция на клавиши в главной форме.


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 не помогает?


Наверх

Титульная страница Поиск, карта сайта Написать письмо