Форум: "Основная";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];
ВнизРеакция на клавиши в главной форме. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c