
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
21.12.2018, 19:56
|
|||
|---|---|---|---|
|
|||
прокрутка TScrollBox колесом мыши |
|||
|
#18+
Слева список форм (TVirtualDrawTree), справа TNotebook. На каждую страницу TNotebook помещаю формы (без рамки, как фреймы) В некоторых формах используется TScrollBox и, чтобы его можно было прокручивать колесом мыши, такой код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Проблема в том, что обработчик ScrollBoxMouseWheelHandler не выполняется, пока форма не получит фокус. Можно ли в данном случае сделать так, чтобы крутилось то, что находится под указателем мыши независимо от фокуса ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2018, 20:35
|
|||
|---|---|---|---|
|
|||
прокрутка TScrollBox колесом мыши |
|||
|
#18+
Ghost WriterМожно ли в данном случае сделать так, чтобы крутилось то, что находится под указателем мыши независимо от фокуса ?По идее, обработчик WM_MOUSEWHEEL должна иметь основная форма, которая будет определять над каким скроллбоксом находится мышь и перенаправлять обработчик туда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2018, 21:32
|
|||
|---|---|---|---|
|
|||
прокрутка TScrollBox колесом мыши |
|||
|
#18+
почти работает, но когда фокус на списке (TVirtualDrawTree), то ScrollBoxMouseWheelHandler не выполняется Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2018, 21:35
|
|||
|---|---|---|---|
|
|||
прокрутка TScrollBox колесом мыши |
|||
|
#18+
_Vasilisk_По идее, обработчик WM_MOUSEWHEEL должна иметь основная форма, которая будет определять над каким скроллбоксом находится мышь и перенаправлять обработчик тудав предыдущем сообщении забыл пояснить, что ScrollBoxMouseWheelHandler в главной форме как посоветовали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.12.2018, 13:22
|
|||
|---|---|---|---|
|
|||
прокрутка TScrollBox колесом мыши |
|||
|
#18+
Ghost Writerкогда фокус на списке (TVirtualDrawTree), то ScrollBoxMouseWheelHandler не выполняется значит компонент сам обрабатывает это сообщение. Поэтому оно не доходит до родителя. Я бы поискал по исходникам этот обработчик и посмотрел, что можно сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2018, 02:01
|
|||
|---|---|---|---|
|
|||
прокрутка TScrollBox колесом мыши |
|||
|
#18+
Если говорить о TScrollBox то это определённо onMouseWheel с wheelDelta = 120 это dec(VertScrollBar.position, X) а для else то inc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2018, 09:52
|
|||
|---|---|---|---|
прокрутка TScrollBox колесом мыши |
|||
|
#18+
Я просто на onMouseEnter скроллбокса вешал SetFocus, в моих случаях это вполне допустимо. Логика понятна, приложение не знает, что именно вы хотите прокручивать, но если у вас все просто, и вы как раз не хотите, чтобы скроллбокс ждал клика мыши и т. п., то передаст фокус, то вам это тоже должно подойти. На крайняк, что мешает запоминать, кто был с фокусом до входа мыши, и потом восстанавливать в onMouseLeave? И зачем вам обработчик сообщения? Не знаю, что за версия, но onMouseWheelUp\Down у скроллбокса есть встроенные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2018, 11:35
|
|||
|---|---|---|---|
прокрутка TScrollBox колесом мыши |
|||
|
#18+
Недосуг проверять, но Form.KeyPreview=True не все ли сообщения перехватывает? В таком случае можно сделать один обработчик и внутри него уже переправлять событие контролу под курсором ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&mobile=1&tid=2039978]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
147ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 448ms |

| 0 / 0 |
