|
|
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
Есть форма F1, которая лежит на форме F2. На форме F2 есть грид, который имеет фокус. На форме F1 лежит скроллбокс, внутри которого несколько TChart-ов. И чарты и скроллбокс имеют свойство TabStop = true. Но как не кликай по чартам, при вращении колесика мышки скролится грид. Событие OnMouseWheel для скроллбокса не возникает. А мне нужно скролить скроллбокс, когда мышка над ним. Как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 13:33 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
minvaСобытие OnMouseWheel для скроллбокса не возникает. Может скролллбокс и не подозревает о колесе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 13:36 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
wadman, может, а надо, чтоб подозревал:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 13:40 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
minvaЕсть форма F1, которая лежит на форме F2. На форме F2 есть грид, который имеет фокус. На форме F1 лежит скроллбокс, внутри которого несколько TChart-ов. И чарты и скроллбокс имеют свойство TabStop = true. Но как не кликай по чартам, при вращении колесика мышки скролится грид. Событие OnMouseWheel для скроллбокса не возникает. А мне нужно скролить скроллбокс, когда мышка над ним. Как это сделать?Гриды - они бывают разные... Если DBGrid -то это известный глюк Борланда... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 13:52 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
minva, Один из вариантов Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 13:57 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
Gerasimenko, спасибо, но, наверное, немного не так. У меня форма F1 абсолютно независима. И надо обеспечить скрол мышкой вне зависимости от того, куда она, форма, ляжет потом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:11 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
minvaGerasimenko, спасибо, но, наверное, немного не так. У меня форма F1 абсолютно независима. И надо обеспечить скрол мышкой вне зависимости от того, куда она, форма, ляжет потом.Ну так переделай, как тебе надо... Делов-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:14 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
Подниму эту тему, так как ответа тут не дали. Есть форма, на ней панель. У панели прописаны обработчики OnMouseWheel. В системе на которой программирую и компилируют фокус нормально переносится на панель и всё прекрасно работает. При запуске программы на другую систему (где, во имя безопасности, отключено всё, что можно и выглядит она как 98я винда, хотя стоит 10ка). В этой системе фокус всегда остаётся на форме или последних выбранных компонентах, но не на панели, соответственно событие OnMouseWheel панели не срабатывает. Вопрос - почему? Естественно можно накостылить десяток способов вызова события (самый банальный - при нахождении мыши над формой события панели вызываются из событий панели), но не хочется, так как недавно узнал красивое слово "инкапсуляция" и панель у меня - мой собственный наследный класс со всеми нужными мне параметрами и процедурами, и который могу нарисовать где угодно (рисование графики в OpenGL) и хотелось бы чтоб всё сразу работало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2020, 13:43 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич самый банальный - при нахождении мыши над формой события панели вызываются из событий панели),. *при нахождении над панелью вызываются события панели из событий формы... (о блин написал фигню в первый раз). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2020, 14:49 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
авторВ системе на которой программирую и компилируют фокус нормально переносится на панель и всё прекрасно работает. Панель не имеет фокуса. Вы не можете перенести фокус с TEdit на TPanel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2020, 15:32 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
DimaBr авторВ системе на которой программирую и компилируют фокус нормально переносится на панель и всё прекрасно работает. Панель не имеет фокуса. Вы не можете перенести фокус с TEdit на TPanel У меня работает... - постоянно колесом "скролю", как видно, фокус прекрасно переходит между всем (и трекбары, и эдиты), если "скролить" над панелью -происходит маштабирование. Но на другой системе это не работает. Если надо делать костыль - как бы его сделать, чтоб он был включен в мой класс, а не в родителя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2020, 16:34 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич, в Windows 10, в системе есть настройка, отвечающая за передачу событий колеса мыши в контрол под курсором. В зависимости от неё и будет разное поведение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2020, 00:34 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
white_nigger Андрей Игоревич, в Windows 10, в системе есть настройка, отвечающая за передачу событий колеса мыши в контрол под курсором. В зависимости от неё и будет разное поведение. В общем на MouseMove панели сделал self.SetFocus, вроде всё работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2020, 12:24 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич В общем на MouseMove панели сделал self.SetFocus, вроде всё работает. 1. Проверить текущую настройку системы через SPI_GETMOUSEWHEELROUTING 2. Перекрыть DoMouseWheel, если wheel routing отключен - то определять контрол под мышью и перенаправлять текущее действие ему. PS: Есть ещё конечно вариант принудительно включить этот режим в системе через SPI_SETMOUSEWHEELROUTING, но за это можно (и нужно) схлопотать люлей от пользователя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2020, 13:12 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
Application.OnMessage. Можно, даже, через компонент TApplicationEvents обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2020, 13:29 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
white_nigger Андрей Игоревич В общем на MouseMove панели сделал self.SetFocus, вроде всё работает. 1. Проверить текущую настройку системы через SPI_GETMOUSEWHEELROUTING 2. Перекрыть DoMouseWheel, если wheel routing отключен - то определять контрол под мышью и перенаправлять текущее действие ему. PS: Есть ещё конечно вариант принудительно включить этот режим в системе через SPI_SETMOUSEWHEELROUTING, но за это можно (и нужно) схлопотать люлей от пользователя Перекрывать DoMouseWheel как-то спорно, а если мой класс разместить на панели, которая находиться на панели и та опять на панели (когда делаешь аккуратную разметку такое постоянно) и уже (parent as TWinControl).DoMouseWheel не даст результата. Сверху идти как-то тоже костыльно. Или есть пути попроще? Kazantsev Alexey Application.OnMessage. Можно, даже, через компонент TApplicationEvents обрабатывать. А это не стрельба в муху с пушки? У меня в MouseWhee всё таки чуть математики считается (всякие масштабирования и прочее), не приведет ли к подтормаживаниям? Но можно попробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2020, 22:05 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич А это не стрельба в муху с пушки? У меня в MouseWhee всё таки чуть математики считается (всякие масштабирования и прочее), не приведет ли к подтормаживаниям? Если оно сейчас не тормозит, с чего должно начать-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2020, 22:14 |
|
||
|
MouseWheel перехватить
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич Перекрывать DoMouseWheel как-то спорно, а если мой класс разместить на панели, которая находиться на панели и та опять на панели (когда делаешь аккуратную разметку такое постоянно) и уже (parent as TWinControl).DoMouseWheel не даст результата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 11:04 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39927433&tid=2038588]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 262ms |
| total: | 566ms |

| 0 / 0 |
