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

Вниз

Обработка клавиш на форме   Найти похожие ветки 

 
Переяслов Григорий ©   (2002-12-20 10:54) [0]

Уважаемые мастера! Проблема вот в чем. Я для некоторой формы определяю обработчики событий onKeyPress и onKeyDown. Потом присваиваю эти обработчики всем контролам, получающим фокус ввода, на форме:
. . .
btnPrint.OnKeyDown := FormKeyDown;
btnCancel.OnKeyDown := FormKeyDown;
btnPrint.OnKeyPress := FormKeyPress;
btnCancel.OnKeyPress := FormKeyPress;
. . .
Но есть некоторые контролы, получающие фокус ввода, но не имеющие событий onKeyDown и onKeyPress, например TTabControl. Как обойти эту ситуацию? Или ее необходимо решать по другому?


 
myor   (2002-12-20 11:00) [1]

по-другому, ведь такого события для них нет.


 
Song ©   (2002-12-20 11:01) [2]

Может в этом случае легче TForm.onKeyPress или TApplication.onMessage


 
Переяслов Григорий ©   (2002-12-20 11:06) [3]

> Song
Когда фокус находится на таком контроле, он перехватывает клавиатуру и сообщение не доходти до TForm.onKeyPress, которое у меня описано


 
LongIsland ©   (2002-12-20 11:07) [4]

TabControl - наследник TWinControl. Значит, по идее для него должны быть определены сообщения WM_KEYDOWN и WM_KEYUP. А что если попробовать их ловить?


 
Delirium^.Tremens ©   (2002-12-20 11:18) [5]

2 Переяслов Григорий ©>
Как насчет твоего вопроса?
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1040131334&n=0


 
Переяслов Григорий ©   (2002-12-20 11:25) [6]

> Delirium^.Tremens. SetFocus проблему решил, а вот с использованием MessageBox(...., MB_DEFAULT_DESKTOP_ONLY)сообщение вообще не появлялось. Я использую именно Application.MessageBox именно из за того, что оно принадлежит моему приложению и, когда оно на экране, нельзя выполнять какие -либо действия, предварительно не закрыв MessageBox.




 
Delirium^.Tremens ©   (2002-12-20 11:29) [7]

А MB_SYSTEMMODAL или типа того? Важно на каком из мониторов оно будет показано, где активная форма или где форма-владелец?


 
Переяслов Григорий ©   (2002-12-20 11:46) [8]

> Delirium^.Tremens Важно там, где форма - владелец. Для форм есть свойство DefaultMonitor, оно должно быть dmMainForm, хотя по умолчанию dmActiveForm. Но это для форм, а для MessageBox непонятно.

А по настоящему вопросу проблему снимает установка свойства формы KeyPreview в True. ;-)



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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
1-1775
delta
2002-12-20 10:00
2003.01.02
Ситуативное изменение интерфейса програмы


4-1939
turonix
2002-11-15 22:40
2003.01.02
Какой API функцией можно изменить курсор мыши?


3-1765
BorisUK
2002-12-11 15:23
2003.01.02
как в DBGride и StringGride установить фокус ввода на ячейку


14-1882
Дремучий
2002-12-13 19:13
2003.01.02
С праздником всех Андреев!


1-1771
stone
2002-12-20 09:43
2003.01.02
Время выполнения потока (TThread)