Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 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
14-1132921585
Pave/\
2005-11-25 15:26
2005.12.18
VMWare workstation. Проблема с сетью


2-1132729216
irishka001
2005-11-23 10:00
2005.12.18
Заблокировать запуск программы


3-1130503241
Брат
2005-10-28 16:40
2005.12.18
Передача параметра


2-1133766692
RealMan
2005-12-05 10:11
2005.12.18
Проблема с Media Player -ом. При открытии *.AVI файлов.


14-1133005560
Хинт
2005-11-26 14:46
2005.12.18
P-Cad и K155





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский