Главная страница
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.014 c
14-7228
mimino
2002-04-29 10:06
2002.06.03
Где?


3-6943
Rub
2002-05-14 12:00
2002.06.03
Показ JPEG-ов средствами TDBImage...


4-7262
hvs-md
2002-03-31 21:22
2002.06.03
PrinScreen c окна на неактивном рабочем столе.


6-7158
tovSuhov
2002-03-21 10:47
2002.06.03
gethostbyaddr возвращает ошибку...


7-7243
VARVAR
2002-03-08 10:41
2002.06.03
Как составить список переменных в ветке реестра даже если они имеют значение