Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.049 c
3-1130898365
antoxa2005
2005-11-02 05:26
2005.12.18
Подскажите, а можно ли изменять схему данных Access из программы


1-1132738006
BURN
2005-11-23 12:26
2005.12.18
Excel ==> DB


1-1132519311
x.pro
2005-11-20 23:41
2005.12.18
Проявите человечность!


14-1132792870
Джо
2005-11-24 03:41
2005.12.18
Правильная реклама ПО


2-1133344518
Piero
2005-11-30 12:55
2005.12.18
алгоритм поиска элемента в массиве