Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите отловить нажатие стрелок

17K
11 декабря 2007 года
jack marked
20 / / 12.11.2006
Привет всем. Вопрос следующий. На форме у меня находится потомок класса TCustomControl. Я передаю ему фокус ввода и хочу поймать нажатия стрелок на клавиатуре. Если для формы достаточно создать метод
procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;
и всё работает, то для TCustomControl это не прокатывает, перехватываются не все клавиши в частности клавиши со стрелками не перехватываются.
Подскажите как перехватить нажатия клавишь со стрелками в TCustomControl, который я помещаю на форме.
397
11 декабря 2007 года
SergPas
527 / / 03.02.2007
О каком компоненте идёт речь?
17K
11 декабря 2007 года
jack marked
20 / / 12.11.2006
Не о каком. Я сам создаю потомка от TCustomControl, скажем - белый квадрат. Передаю ему фокус ввода. Так вот при отлове сообщений WM_KEYDOWN для него клавиши со стрелками не отлавливаютс, буквенно-цифровые - нормально отлавливаются. KeyPreview у формы установлено в False.
397
11 декабря 2007 года
SergPas
527 / / 03.02.2007
Пример неработающего кода можете выложить?
17K
13 декабря 2007 года
jack marked
20 / / 12.11.2006
Ладно. Уже нашёл решение. Надо сообщение WM_GetDlgCode обрабатывать так
в объявлении класса:
 
Код:
procedure WMGetDlgCode(var Message: TMessage); message WM_GetDlgCode;

в реализации:
 
Код:
procedure TCustomGuiEngine.WMGetDlgCode(var Message: TMessage);
begin
  Message.Result := DlgCode;
end;

где
 
Код:
DlgCode := DLGC_WANTARROWS or DLGC_WANTTAB or DLGC_WANTCHARS;
Тогда потомку TCustomControl отправляются сообщения о всех нажатых клавишах.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог