Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > TCustomControl и KeyDown


Автор: Proxin 9.10.2011, 17:36
Проблема. Пишу компонент, наследуюсь от tcustomcontrol, нужно делать определённую вещь по зажимании клавиши. Пишу procedure KeyPress(...); override;, но она не срабатывает. Более того - не ловится даже WM_KEYPRESS. Почитал по интернету - у многих такая проблема. Как её решить? Если что, пишу в delphi 2010.

Автор: Ne1tr1n0 14.10.2011, 13:02
А в родителе перехватывать WM_KEYDOWN и пересылать это сообщение компоненту?
У меня например меню со скроллбаром тоже наследуется от TCustomControl, я в форме обрабатываю WM_MOUSEWHEEL, WM_KEYDOWN, а в обработчиках формы делаю:
Код

  inherited;
    with TMessage(Msg) do
      SendMessage(menu.Handle, Msg, WParam, LParam);

Автор: Proxin 21.10.2011, 00:53
это извращение и костыль. неужели никто не знает, почему такая хрень случается? 

Автор: northener 21.10.2011, 01:11
Цитата(Proxin @  9.10.2011,  17:36 Найти цитируемый пост)
Пишу procedure KeyPress(...); override;, но она не срабатывает. Более того - не ловится даже WM_KEYPRESS.

А что пишешь, конечно секрет!

Текст программы(код), который не работает привести тут религия не позволяет?

Автор: CROTishka 21.10.2011, 18:16
ставьте бряк в TApplication.WndProc и дебажьте дальше. отловить куда оно дальше уходит - это и ребёнок сможет.

беглый телепат-mode даёт подозрение, что у вас шорткат есть(про который вы забыли, или не знали - они хитрые бывают. например - подчёркивание первой буквы в кэпшэне задаёт шорткат) на ваш мессадж, который вы ловите, тогда он не дойдёт никуда дальше, а прямо на верхнем уровне отловится.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)