Главная страница
    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.014 c
1-1132470667
Илья Бобров
2005-11-20 10:11
2005.12.18
Исчезают модальные формы


14-1132584437
ychenick
2005-11-21 17:47
2005.12.18
Огромный WinAPI справочник?


6-1125857565
kivadim
2005-09-04 22:12
2005.12.18
Отправка данных от ServerSocket к множеству ClientSocket


6-1126192068
integery
2005-09-08 19:07
2005.12.18
помогите разобратса из TcpServer TcpClient


11-1114177052
Ал
2005-04-22 17:37
2005.12.18
Утечка памяти KOLOpenSaveDialog





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский