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

start [/forum/topic.php?fid=58&gotonew=1&tid=2039978]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
157ms |
get topic data: |
6ms |
get first new msg: |
3ms |
get forum data: |
4ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 274ms |
| total: | 489ms |

| 0 / 0 |
