Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.03;
Скачать: CL | DM;

Вниз

Реакция на клавиши в главной форме.   Найти похожие ветки 

 
Duce ©   (2002-05-22 14:57) [0]

Привет коллеги!
Нуждаюсь в Ваших знаниях и опыте, будьте снисходительны
Задача - главная форма должна откликаться на нажатие клавиш
стрелок. На форме разложе ДиБиГрид и прочие вещи. Какой бы
элемент не был активным, реакция на клавиши стрелок должна обра-
батываться главной формой. Но ведь каждый элемент - сам себе окно! И при нажатии кнопы в ДБ Гриде главная форма и не знает,
что была нажата отслеживаемая кнопка.
Как действовать, чтобы это решить?
Не приписывать же к каждому эл-ту код уведомления гл. формы...
Заранее благодарен за консалтинг.


 
Внук ©   (2002-05-22 15:02) [1]

А TForm.KeyPrevie:=True не помогает?


 
Внук ©   (2002-05-22 15:02) [2]

А TForm.KeyPreview:=True не помогает?


 
MBo ©   (2002-05-22 15:04) [3]

KeyPreview:=true;


 
Duce ©   (2002-05-22 15:10) [4]

Да, вроде работает...
Главное проперть я нашел, но прочел, что меня смутило:

Navigation keys (Tab, BackTab, the arrow keys, and so on) are unaffected by KeyPreview because they do not generate keyboard events
А я вообще-то стрелки ловлю...

Как понимать?


 
Song ©   (2002-05-22 15:13) [5]

onMouseDown ловятся хорошо, но если Вы их нажимаете в каком-либо визуальном компонента и там есть обработчик на них то на TForm.onMouseDown оболомится.
Tab - это отдельная тема. Для него другое решение.


 
Duce ©   (2002-05-22 15:19) [6]

Как следствие сабжа - нужно ведь как-то подавить реакцию
собственно элемента, где месаг о нажатии кнопки родился.
Т.е. перехватил и зажал(типа в null).
Что сделать?


 
Song ©   (2002-05-22 15:21) [7]

В onKeyDown передватываете и возвращаете Key:=0;


 
xGrey ©   (2002-05-22 16:01) [8]

А можно попробовать сделать так:

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 16:06) [9]

2xGrey © (22.05.02 16:01)
Вот как раз одно из решений для TAB



Страницы: 1 вся ветка

Текущий архив: 2002.06.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
6-7147
Romanew
2002-03-22 18:48
2002.06.03
КАК разобрать HTML и выудить из него только ссылки?


1-6993
antonyo
2002-05-23 09:08
2002.06.03
Как использовать ShellExecute?


14-7204
Doom
2002-04-24 23:21
2002.06.03
Что - D6 под NT4 не рассчитаны?


1-7072
RDA
2002-05-21 20:15
2002.06.03
Оператор выбора Case


3-6950
Григорий
2002-05-11 17:22
2002.06.03
Почему BDE на клиенте Win98 не работает с серв.Win2000,Linux?