ScrollBar нет события на onMouseUp по левой кнопке мыши
добавьте в свойства опцию для перемещения в позицию мыши при клике по полоске
а то только с зажатым Shift так перемещается
code_12913.txt
Этот топик читают: Гость
Ответов: 373
Рейтинг: 108
|
|||
карма: 0 |
| ||
файлы: 1 | code_12913.txt [797B] [529] |
Ответов: 1304
Рейтинг: 405
|
|||
Vlad.- писал(а): ScrollBar нет события на onMouseUpесть, правая=1 и средняя кнопка(скроллер)=2. |
|||
карма: 3 |
|
Ответов: 373
Рейтинг: 108
|
|||
MAV писал(а): есть, правая=1 и средняя кнопка(скроллер)=2.а по левой нет. |
|||
карма: 0 |
|
Ответов: 1304
Рейтинг: 405
|
|||
Vlad.- писал(а): а по левой нет.Согласен, нет . Выхода два или воспользоваться TrackBar, или нарисовать свой ScrollBar. Вопрос к Dilmaа, можно-ли отрубить нерабочие точки, а то получается все проходят этап спотыкания через ScrollBar. Хотя можно предположить обратное, что возникнет хор голосов с просьбами добавить функции соответствующие данным точкам . |
|||
карма: 3 |
|
Ответов: 4641
Рейтинг: 334
|
|||
MAV писал(а): Выхода два или воспользоваться TrackBar, или нарисовать свой ScrollBar.или ScrollBarEx |
|||
карма: 1 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
карма: 27 |
| ||
файлы: 1 | code_12915.txt [173B] [532] |
Ответов: 1926
Рейтинг: 172
|
|||
Самое интересное, что если Max=0, то onMouseUp ЛКМ работает! Почему так?
------------ Дoбавленo в 23.38: И ещё. Если нажать ЛКМ на форме, потом подвести к ScrollBar и на нём отпустить, то событие выдаётся при любом max! ------------ Дoбавленo в 23.40: Выяснил, что при нажатии ЛКМ на компоненте запускается непрерывная очередь сообщений, которая и не даёт пробиться сообщению wm_LButtonUp. Это внутри самой винды. ------------ Дoбавленo в 23.47: А нельзя ли цепануть onMouseUp в данном компоненте на SB_ENDSCROLL? |
|||
карма: 9 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
3042 писал(а): А нельзя ли цепануть onMouseUp в данном компоненте на SB_ENDSCROLL?А нельзя ли использовать вот этот компонент Ravilr писал(а): ScrollBarEx |
|||
карма: 22 |
|
Ответов: 1926
Рейтинг: 172
|
|||
nesco писал(а): А нельзя ли использовать вот этот компонентПростой ScrollBar симпатичнее К тому же Ex не имеет контекстного меню и не перемещается, когда нажимаешь на полосу (не на сам ползунок, а рядом). |
|||
карма: 9 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Ну, если никто тут ничего нормального (даже Dilma отписался) не придумал с 2009 года, то я даже не знаю чем помочь. Кстати, я так и не понял, чем может помочь SB_ENDSCROLL
------------ Дoбавленo в 17.04: Кажется я понял, что ты хочешь. Но это какая-то неправильная заплатка получится. К тому же мы не получим код клавиши ------------ Дoбавленo в 17.11: Да, кстати, а кто мешает использовать onPosition для отлова отпускания мыша. Это же и есть реакция на событие SB_ENDSCROLL, номер клавиши все равно никак не получишь |
|||
карма: 22 |
|
Ответов: 1926
Рейтинг: 172
|
|||
nesco писал(а): onPosition для отлова отпускания мышаЭто только при ScrollMode=Up работает, а при Move OnPosition при каждом перетаскивании возникает. nesco писал(а): К тому же мы не получим код клавишиnesco писал(а): Но это какая-то неправильная заплатка получится.Абсолютно согласен. Только сейчас подумал, что если мы нажмём ЛКМ на форме, перенесёмся на ScrollBar и на нём отпустим, SB_ENDSCROLL не произойдёт, а onMouseUp должен быть! И наоборот: зажимаем ЛКМ на ScrollBar, тажим зажатую мышь на форму и отпускаем над формой - SB_ENDSCROLL произойдёт, а onMouseUp для ScrollBar в этом случае происходить не должен! Так что цеплять onMouseUp на SB_ENDSCROLL, пожалуй, нельзя. Иными словами, SB_ENDSCROLL происходит при отпускании ЛКМ (причём необязательно на ScrollBar'е) только если перед этим было нажатие ЛКМ на ScrollBar'е. Вставил видео во вложении, где показал мой опыт. Но можно сделать для ScrollBar новую точку-событие (типа onEndScroll), которое будет происходить, когда скроллинг закончен. Это не всегда onMouseUp на скролле (как я уже говорил, зажатую мышь со скролла можно перенести на форму и там отпустить, тогда никакого onMouseUp для скролла быть не должно, а вот окончание скроллинга - должно). |
|||
карма: 9 |
| ||
файлы: 1 | scrollbar.rar [430.2KB] [497] |
Ответов: 1926
Рейтинг: 172
|
|||
nesco, что насчёт:
3042 писал(а): сделать для ScrollBar новую точку-событие (типа onEndScroll), которое будет происходить, когда скроллинг закончен.Через SB_ENDSCROLL, конечно. |
|||
карма: 9 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
3042 писал(а): Через SB_ENDSCROLL, конечно.А теперь встает другой вопрос -- выдавать перед событием onPosition или после |
|||
карма: 22 |
|
Ответов: 1926
Рейтинг: 172
|
|||
nesco писал(а): выдавать перед событием onPosition или послеПо логике, сначала происходит передвижение ползунка, а потом - окончание передвижения, значит, сначала onPosition, а затем - onEndScroll. При ScrollMode=Move, само собой, onPosition будет происходить регулярно, а в конце должно быть onEndScroll. При ScrollMode=Up onPosition происходит после отпускания мышака, после чего сразу onEndScroll. Только надо в описании к точке указать, что последовательность именно такова. |
|||
карма: 9 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Добавил
|
|||
карма: 22 |
| ||
Голосовали: | 3042 |