Вниз
Скачать: CL | DM;

Компонент не ловит WM_KEYDOWN :(   Найти похожие ветки 

 
ancara ©   (2005-03-02 11:26) [0]

Доброго времени суток, господа! Такая проблема, пишу свой компонент, табличка с ячецками, типа Grid. Наследовал его от TWinControl, положил на форму, рядом лежат StringGrid, кнопки там и пр... Тыкаю, значит, мышой на свой компонент, вроде как поставил на него фокус, нажимаю кнопку "ВНИЗ" фокус переходит к кнопке согласно TabOrder"у. Почему? Главное, когда фокус таким макаром доходит до StringGriв он на нем и остается, там внутри ячейки подсвечиваются. Как это так? Он же тоже от TWinControl!
Первым делом я тупо написал, типа, при сообщении WM_KEYDOWN оставить фокус на себе - фиг там, он это сообщение от стрелок не ловит. От всех других кнопок ловит а от стреклок нет, чем они хуже? Вообщем я уже замучался шастать по исходникам TStringGrid и его родителей, проясните мне ситуацию, пожалуйста, хоть в двух словах, как мне в своем компоненте  обработать сообщение WM_KEYDOWN (и др.)?
Заранее очень благодарен.


 
Юрий Зотов ©   (2005-03-02 13:08) [1]

Посмотрите обработку сообщения WM_GETDLGCODE в TCustomGrid. Вам нужно сделать примерно то же. Как минимум, результат должен содержать DLGC_WANTARROWS - тогда компонент сможет ловить и обрабатывать нажатия стрелок.

А вообще, вряд ли TWinControl - удачный предок для такого компонента. Есть ведь уже готовые заготовки таблиц (TCustomGrid и др.).


 
ancara ©   (2005-03-02 13:27) [2]

Урра! Юрий Зотов, огромное спасибо, все как надо!
М-да, до этого сообщения я бы сам не додумался, я вообще копал в сторону всяких там стилей контролов и пр.


> вряд ли TWinControl - удачный предок для такого компонента.

да, с этим я согласен, отдаю себе отчет, что делаю... Просто лень было разбираться как там в них(TCustomGrid) все это работает, да и вообще хотца свое от начала до конца сделать (точнее от WinControl до конца :))
 Спасибо еще раз!


 
Юрий Зотов ©   (2005-03-02 13:47) [3]

> ancara ©   (02.03.05 13:27) [2]

> хотца свое от начала до конца сделать

Для учебной задачи - очень полезно. Но для рабочего компонента плохо - ведь придется частично продублировать код, который уже есть в VCL. Получится раздувание конечной программы.


 
tunguss ©   (2005-05-30 12:15) [4]

У кого есть похожие проблемы с некоторыми компонентами - прошу сюда - http://delphimaster.net/view/5-1116597900/. А вообще наверное разумно саккумулировать всю важную информацию и создать новую ветку, а эти почистить - если конечно никто не против.


 
tunguss ©   (2005-05-30 12:28) [5]

Да. предложенное здесь - полностью подходящее решение если наследовать от TCustom.* (выражаясь регулярными выражениями :) ), (еще, кроме того как здесь, оно рассмотрено здесь http://delphimaster.net/view/5-1116597900/), но если заказчик требует наследовать имеенно от наследника TWinControl :( каков тогда выход?


 
tunguss ©   (2005-05-30 14:18) [6]

Молчу. Если родитель TWinControl - то делаем именно так как сказано. Если нет - то ничего не делаем - все и так работает :). Все :).



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
2-1133112155
DArk_ELf
2005-11-27 20:22
2005.12.18
работа с архивами


14-1132723017
Джо
2005-11-23 08:16
2005.12.18
Google Base


3-1130995880
Dreamse
2005-11-03 08:31
2005.12.18
Как узнать существует ли столбец ?


6-1126253760
mandarin
2005-09-09 12:16
2005.12.18
подскажите как подсоиденится к ftp серверу через прокси (http pro


4-1128742619
Sergey7
2005-10-08 07:36
2005.12.18
Обработка сообщений, когда программа в трэе




   Наверх