|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.11.2012, 11:35 | #1 |
Андрей
Форумчанин
Регистрация: 21.11.2006
Сообщений: 457
|
События колеса мыши без фокуса
Добрый день. Столкнулся со следующей проблемой:
На форме лежит ScrollBox, на котором динамически создаются экземпляры самописного компонента на основе TCustomPanel. Собственно проблема заключается в том, что их много, и было бы неплохо прокручивать их колесом мыши, но панель не имеет фокуса и поэтому ни отлов WM_MouseWheel ни какой-либо другой способ не применим. Как прокрутить скроллбокс когда мышь находиться над этими компонентами? Заранее спасибо.
ICQ: 5311314
[SIGPIC][/SIGPIC] Последний раз редактировалось AVer; 15.11.2012 в 11:39. |
15.11.2012, 12:10 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
ActiveControl:=ScrollBox; например в OnFormCreate и ScrollBox.OnMouseWheel уже работает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
15.11.2012, 12:22 | #3 |
Андрей
Форумчанин
Регистрация: 21.11.2006
Сообщений: 457
|
Повесил на OnMouseMove этих панелек - не помогло. Есть еще какие то мысли?
ICQ: 5311314
[SIGPIC][/SIGPIC] |
15.11.2012, 12:26 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А зачем на панели? Фокус на ScrollBox и его OnMouseWheel будет работать даже если курсор на панели. Скролинг то всего нужен, а не конкретной панели. А в событии определить к какому ControlScrollBar ближе курсор и делать вертикальный или горизонтальный скролинг
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 15.11.2012 в 12:29. |
15.11.2012, 12:29 | #5 |
Андрей
Форумчанин
Регистрация: 21.11.2006
Сообщений: 457
|
Возникло недопонимание. =) Я повесил ActiveControl:=ScrollBox на OnMouseMove панелей, то есть фокус на скроллбокс переводится постоянно когда мышь над панелями, так, для надежности. Но это не сработало.
ICQ: 5311314
[SIGPIC][/SIGPIC] |
15.11.2012, 12:32 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Тогда в ScrollBox.OnMouseMove делать при необходимости ActiveControl:=ScrollBox.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
15.11.2012, 12:35 | #7 |
Андрей
Форумчанин
Регистрация: 21.11.2006
Сообщений: 457
|
Зачем? Он практически не виден из-за этих панелей, а там где виден скролл работает всегда, то есть он всегда в фокусе, но когда мышь над панелями скролл не обрабатывается.
Попробуйте кинуть на форму ScrollBox, а на него панель, выходящую за границы, так чтобы появилась полоса прокрутки и запустите. Покрутив скроллом поймете мою проблему. =)
ICQ: 5311314
[SIGPIC][/SIGPIC] Последний раз редактировалось AVer; 15.11.2012 в 12:40. |
15.11.2012, 12:44 | #8 |
Форумчанин
Регистрация: 11.04.2012
Сообщений: 212
|
Обрабатываешь Application.OnMessage, ловишь там WM_MOUSEWHEEL.
lParam тебе даст абсолютные экранные координаты мышиного курсора. Вызовом WindowFromPoint получаешь хендл окна под курсором. Вызовом FindControl ищешь соответствующий винконтрол . Если он найден и является твоим скроллбоксом, то крутишь его программно используя параметры, переданные в wparam. |
15.11.2012, 12:46 | #9 |
Андрей
Форумчанин
Регистрация: 21.11.2006
Сообщений: 457
|
Пробовал и так, но когда курсор над панелью приложение как будто вообще не получает сообщения WM_MOUSEWHEEL.
ICQ: 5311314
[SIGPIC][/SIGPIC] |
15.11.2012, 12:53 | #10 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
пере- мещении колеса мыши и вывод информации об этом событии | akhtamar | Помощь студентам | 1 | 21.02.2012 08:44 |
fsStayOnTop без фокуса | Deight | Общие вопросы Delphi | 4 | 04.03.2011 19:36 |
Обработка колеса мыши в TScrollBox | mutabor | Общие вопросы Delphi | 6 | 01.04.2010 10:17 |
использование колеса мыши | Bayazet | Общие вопросы Delphi | 8 | 27.01.2009 14:39 |
Окно без фокуса | Олвин | Общие вопросы Delphi | 4 | 13.10.2008 23:36 |