| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > как в TPanel ловить прокрутку колеса мыши |
| Автор: arankar 29.12.2010, 06:58 | ||||
вот такой код не ловить. что у меня неправильно или это сообщение перекрыто у родителя? Как это можно реализовать???
|
| Автор: Snowy 29.12.2010, 12:04 |
| Будет получать, если будет фокус на данном компоненте. Т.к. Panel обычно фокус не получает, поставь ей TabStop = true, чтобы получала. Или кинь на неё компонент, который поймает фокус (например кнопку) |
| Автор: CROTishka 29.12.2010, 12:11 |
| TPanel не может получать фокус. WM_MOUSEWHEEL получает активный(под фокусом ввода) контрол |
| Автор: Snowy 29.12.2010, 12:14 |
| Если этот контрол будет лежать на панели, то получать он будет после того, как панель ему сообщение отдаст. То есть сначала это сообщение получит панель, а потом уже дочерний компонент. Если же панель имеет TabStop = true, то сама может получить фокус и являться конечным получателем. |
| Автор: CROTishka 29.12.2010, 13:12 |
| Snowy, ответьте лучше на мой вопрос в этом разделе |
| Автор: kami 29.12.2010, 13:12 |
| Может быть глупый вопрос, но тем не более: на форме/фрейме лежит TPanel или TWheelPanel? |
| Автор: arankar 29.12.2010, 14:55 |
| Snowy, спасибо за идею получилось, только TabStop true не делаю а при вхождении курсора если фокуса нету вызываю SetFocus. Теперь когда курсор покидает панель как можно убрать фокус, или другому оконному элементу надо фокус отдать? kami, экземпляр класса TWheelPanel на форме |
| Автор: CROTishka 29.12.2010, 15:20 |
| лучше сделайте так чтобы форма ловила WM_MOUSEWHEEL и слала его контролу под мышкой. (возможно ещё сообщения почистить придётся, чтобы фокусу не приходило). Хотя вообще странный у вас функционал какой-то |
| Автор: Snowy 29.12.2010, 15:24 |
| Перед тем, как забрать у кого-нибудь фокус, запомни ActiveControl, а потом верни фокус ему. А про табстоп я упоминул, как альтернативу. Например, если на панели нет никаких контролов, способных получить фокус... Добавлено через 2 минуты и 34 секунды CROTishka, ты не поверишь, но у него свой компонент - наследник панели. И он не умеет приказывать форме ловить сообщения. |
| Автор: arankar 30.12.2010, 06:17 |
| Snowy, внутри моего класса, ActiveControl как можно узнать или как свойство форму передать надо??? если setFocus делаю работает даже если на панели нету никаких контролов это нормально? CROTishka почему странный? в чем странность? просто хочу чтобы все осталось внутри класса |
| Автор: Snowy 30.12.2010, 13:57 | ||
Если тебя бросили на форму, то форма - твой владелец. А у формы можно спросит, кто сейчас активный.
|
| Автор: CROTishka 30.12.2010, 14:02 | ||
я просто предположил, что у него задача не сделать контрол, а реализовать некую фичу, которую можно реализовать по-другому. http://www.gunsmoker.ru/2008/10/x-y-z.html |