Вверх ↑
Этот топик читают: Гость
Ответов: 373
Рейтинг: 108
#1: 2009-04-20 22:46:57 ЛС | профиль | цитата
ScrollBar нет события на onMouseUp по левой кнопке мыши
добавьте в свойства опцию для перемещения в позицию мыши при клике по полоске
а то только с зажатым Shift так перемещается
code_12913.txt
карма: 0

0
файлы: 1code_12913.txt [797B] [469]
vip
#1.1контекстная реклама от партнеров
Ответов: 1304
Рейтинг: 405
#2: 2009-04-20 23:08:12 ЛС | профиль | цитата
Vlad.- писал(а):
ScrollBar нет события на onMouseUp

есть, правая=1 и средняя кнопка(скроллер)=2.

карма: 3

0
Ответов: 373
Рейтинг: 108
#3: 2009-04-20 23:23:47 ЛС | профиль | цитата
MAV писал(а):
есть, правая=1 и средняя кнопка(скроллер)=2.

а по левой нет.
карма: 0

0
Ответов: 1304
Рейтинг: 405
#4: 2009-04-20 23:42:33 ЛС | профиль | цитата
Vlad.- писал(а):
а по левой нет.

Согласен, нет . Выхода два или воспользоваться TrackBar, или нарисовать свой ScrollBar.
Вопрос к Dilmaа, можно-ли отрубить нерабочие точки, а то получается все проходят этап спотыкания через ScrollBar. Хотя можно предположить обратное, что возникнет хор голосов с просьбами добавить функции соответствующие данным точкам .

карма: 3

0
Ответов: 4641
Рейтинг: 334
#5: 2009-04-21 00:01:19 ЛС | профиль | цитата
MAV писал(а):
Выхода два или воспользоваться TrackBar, или нарисовать свой ScrollBar.

или ScrollBarEx
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Администрация
Ответов: 15294
Рейтинг: 1518
#6: 2009-04-21 00:09:07 ЛС | профиль | цитата
Ravilr писал(а):
или ScrollBarEx

code_12915.txt
карма: 26
0
файлы: 1code_12915.txt [173B] [476]
Ответов: 1924
Рейтинг: 172
#7: 2015-04-06 23:47:29 ЛС | профиль | цитата
Самое интересное, что если Max=0, то onMouseUp ЛКМ работает! Почему так?
------------ Дoбавленo в 23.38:
И ещё. Если нажать ЛКМ на форме, потом подвести к ScrollBar и на нём отпустить, то событие выдаётся при любом max!
------------ Дoбавленo в 23.40:
Выяснил, что при нажатии ЛКМ на компоненте запускается непрерывная очередь сообщений, которая и не даёт пробиться сообщению wm_LButtonUp. Это внутри самой винды.
------------ Дoбавленo в 23.47:
А нельзя ли цепануть onMouseUp в данном компоненте на SB_ENDSCROLL?
карма: 9
0
Разработчик
Ответов: 26061
Рейтинг: 2120
#8: 2015-04-07 11:06:14 ЛС | профиль | цитата
3042 писал(а):
А нельзя ли цепануть onMouseUp в данном компоненте на SB_ENDSCROLL?

А нельзя ли использовать вот этот компонент
Ravilr писал(а):
ScrollBarEx

карма: 22

0
Ответов: 1924
Рейтинг: 172
#9: 2015-04-07 14:37:29 ЛС | профиль | цитата
nesco писал(а):
А нельзя ли использовать вот этот компонент

Простой ScrollBar симпатичнее К тому же Ex не имеет контекстного меню и не перемещается, когда нажимаешь на полосу (не на сам ползунок, а рядом).

карма: 9
0
Разработчик
Ответов: 26061
Рейтинг: 2120
#10: 2015-04-07 17:11:48 ЛС | профиль | цитата
Ну, если никто тут ничего нормального (даже Dilma отписался) не придумал с 2009 года, то я даже не знаю чем помочь. Кстати, я так и не понял, чем может помочь SB_ENDSCROLL
------------ Дoбавленo в 17.04:
Кажется я понял, что ты хочешь. Но это какая-то неправильная заплатка получится. К тому же мы не получим код клавиши
------------ Дoбавленo в 17.11:
Да, кстати, а кто мешает использовать onPosition для отлова отпускания мыша. Это же и есть реакция на событие SB_ENDSCROLL, номер клавиши все равно никак не получишь
карма: 22

0
Ответов: 1924
Рейтинг: 172
#11: 2015-04-07 20:07:42 ЛС | профиль | цитата
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
0
файлы: 1scrollbar.rar [430.2KB] [427]
Ответов: 1924
Рейтинг: 172
#12: 2015-04-09 06:24:40 ЛС | профиль | цитата
nesco, что насчёт:

3042 писал(а):
сделать для ScrollBar новую точку-событие (типа onEndScroll), которое будет происходить, когда скроллинг закончен.

Через SB_ENDSCROLL, конечно.
карма: 9
0
Разработчик
Ответов: 26061
Рейтинг: 2120
#13: 2015-04-09 09:28:29 ЛС | профиль | цитата
3042 писал(а):
Через SB_ENDSCROLL, конечно.

А теперь встает другой вопрос -- выдавать перед событием onPosition или после
карма: 22

0
Ответов: 1924
Рейтинг: 172
#14: 2015-04-10 11:50:39 ЛС | профиль | цитата
nesco писал(а):
выдавать перед событием onPosition или после

По логике, сначала происходит передвижение ползунка, а потом - окончание передвижения, значит, сначала onPosition, а затем - onEndScroll. При ScrollMode=Move, само собой, onPosition будет происходить регулярно, а в конце должно быть onEndScroll. При ScrollMode=Up onPosition происходит после отпускания мышака, после чего сразу onEndScroll. Только надо в описании к точке указать, что последовательность именно такова.
карма: 9
0
Разработчик
Ответов: 26061
Рейтинг: 2120
#15: 2015-04-10 14:55:10 ЛС | профиль | цитата
Добавил
карма: 22

1
Голосовали:3042
Сообщение
...
Прикрепленные файлы
(файлы не залиты)