Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-6944
Vladimir N.
2002-05-08 15:25
2002.06.03
Привязка программы с БД к BDE


1-6979
ga3
2002-05-22 22:43
2002.06.03
Возведение в степень


14-7171
Pat
2002-04-23 12:53
2002.06.03
Виснут игрушки :-(((


14-7169
blackweber
2002-04-23 21:25
2002.06.03
Раз все предлагают задачи, попробую и я.


1-7006
s-gorbachev
2002-05-23 12:42
2002.06.03
Как программно изменить ширину столбца StringGrid?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский