Форум: "Компоненты";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
ВнизКомпонент не ловит 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.015 c