Вверх ↑
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
#1: 2016-09-06 16:29:40 ЛС | профиль | цитата
Добрый день!
При попытке получить событие при перемещении ползунка у компонента TrackBar получаю странность.
Вроде, событие должно произойти после того как я переместил ползунок, но по факту событие
происходит как только я схватил (тыкнул на нем ЛКМ) ползунок.
Мне кажется так не должно быть.
В моем примере я не могу переместить ползунок, т.к. событие происходит раньше его перемещения.

Add(MainForm,2953706,63,112)
{
}
Add(TrackBar,11478859,133,112)
{
Left=130
Top=110
link(onPosition,13107994:doMessage,[])
}
Add(Message,13107994,182,112)
{
}

карма: 1

0
Ответов: 8926
Рейтинг: 823
#2: 2016-09-06 16:37:30 ЛС | профиль | цитата
-= DriveR =-, за столько лет можно было увидеть точку onStop
карма: 19

0
Ответов: 817
Рейтинг: 52
#3: 2016-09-06 16:42:34 ЛС | профиль | цитата
Леонид, Не спорю, можно и даже увидел, но тогда где неправда, в описании или это ошибка компонента?
Описание на точке onPosition читается и трактуется однозначно.
Безымянный.png

--- Добавлено в 2016-09-06 16:50:45

А вот и еще непонятность

Add(MainForm,2953706,21,105)
{
}
Add(TrackBar,12002941,140,147)
{
Left=140
Top=145
Point(onStop)
link(onStop,621709:doMessage,[(184,160)(184,153)])
}
Add(Message,621709,196,147)
{
}

После отпускания ползунка, событие происходит два раза
Как мне кажется, должно быть одно событие

Редактировалось 3 раз(а), последний 2016-09-06 16:50:45
карма: 1

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#4: 2016-09-06 16:53:26 ЛС | профиль | цитата
-= DriveR =- писал(а):
Как мне кажется, должно быть одно событие

Сколько система выдала сообщений TB_ENDTRACK, столько компонент и выдал событий onStop. Все вопросы к ОС

Редактировалось 1 раз(а), последний 2016-09-06 16:53:55
карма: 22

0
Ответов: 817
Рейтинг: 52
#5: 2016-09-06 16:56:57 ЛС | профиль | цитата
nesco, Хорошо, спрошу по другому
Не зависимо от того сколько было TB_ENDTRACK, мне необходимо получить одно событие
Я хочу ползунок перетащить туда-сюда-обратно, отпустить его и на выходе получить одно событие.
Как сказано в описании к точке onPosition, там должно быть именно так как я думаю
карма: 1

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#6: 2016-09-06 17:00:02 ЛС | профиль | цитата
-= DriveR =- писал(а):
отпустить его и на выходе получить одно событие

С точкой onStop, разберемся, над бы действительно заблокировать второе событие. А вот onPosition будет выдавать столько событий, сколько ему пошлет система, есть смысл отключить только первое, вместо него должна сработать точка onStart

--- Добавлено в 2016-09-06 17:01:29

-= DriveR =- писал(а):
Я хочу ползунок перетащить туда-сюда-обратно, отпустить его и на выходе получить одно событие.

Кстати, тебе нужно только одно, а вот мне недавно надо было получить все, чтобы синхронно с ползунком менялись данные.

Редактировалось 1 раз(а), последний 2016-09-06 17:01:29
карма: 22

0
Ответов: 817
Рейтинг: 52
#7: 2016-09-06 17:02:43 ЛС | профиль | цитата
nesco писал(а):
чтобы синхронно с ползунком менялись данные.

Ну или так, переместил ползунок на одно деление, получил одно событие, а по факту получается два
карма: 1

0
Ответов: 8926
Рейтинг: 823
#8: 2016-09-06 17:41:20 ЛС | профиль | цитата
-= DriveR =- писал(а):
..туда-сюда-обратно..

Ну поставьте после onStop компонент ChangeMon (в инструментах) и будет счастье
карма: 19

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#9: 2016-09-06 19:01:50 ЛС | профиль | цитата
Исправил
карма: 22

1
Голосовали:Konst
Ответов: 817
Рейтинг: 52
#10: 2016-09-06 20:03:48 ЛС | профиль | цитата
Леонид писал(а):
Ну поставьте после onStop компонент ChangeMon (в инструментах) и будет счастье

Ну так с ChangeMon каждый сможет, вот
nesco писал(а):
Исправил

не каждый сможет, но счастье всем (nesco, спасибо большое)

А если серьезно, мужики я частенько заглядываю на форум и просто читаю что пишут.
У меня складывается стойкое впечатление, что костыли стали очень модны. (Если я не прав, буду благодарен если поправите)
Вот если посмотреть сообщения 3-5 летней давности, так вы (старожилы) совсем по другому себя вели,
требовали от людей думать, делать все правильно, красиво, ругали когда кто то предлагал костыли,
пытались доказывать друг другу как и что правильнее, а сейчас...
Леонид, я не совсем понимаю ваше последнее сообщение. Если вы написали это серьезно, то мне не понятно почему, ведь явно есть ошибка в компоненте, если шутка, думаю надо было бы написать, что это шутка, а то в будущем такие же как я (здравствуй дерево) прочитают и примут это за чистую монету.
Я сто лет не программист и даже не думал спорить с вами, просто крик души.

Редактировалось 1 раз(а), последний 2016-09-06 20:04:12
карма: 1

0
Ответов: 8926
Рейтинг: 823
#11: 2016-09-06 21:04:25 ЛС | профиль | цитата
-= DriveR =-, на полном серьёзе.

Add(MainForm,2953706,154,28)
{
}
Add(TrackBar,6867302,49,21)
{
Left=45
Top=20
Point(onStop)
link(onStop,5855202:doNext,[])
}
Add(Counter,5855202,105,28)
{
link(onNext,2953706:doCaption,[])
}

А вы попробуйте вот эту схемку, будут-ли двойные срабатывания? (естественно на "не исправленном" TrackBar)
карма: 19

0
Ответов: 817
Рейтинг: 52
#12: 2016-09-06 21:16:53 ЛС | профиль | цитата
Леонид, Я проверяю чуть другим способом, вот так
Add(MainForm,11615642,322,77)
{
}
Add(TrackBar,6867302,322,133)
{
Left=45
Top=20
Point(onStop)
link(onStop,5855202:doNext,[(366,146)(366,139)])
}
Add(Counter,5855202,378,133)
{
link(onNext,10334606:doMessage,[])
}
Add(Message,10334606,427,133)
{
}


И двойное срабатывание осталось, Message появляется два раза

Редактировалось 1 раз(а), последний 2016-09-06 21:17:04
карма: 1

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#13: 2016-09-06 22:14:12 ЛС | профиль | цитата
-= DriveR =- писал(а):
У меня складывается стойкое впечатление, что костыли стали очень модны

Это как бы костыль на системные сообщения, точнее на их избыток. Мне это знакомо еще со времен DatePicker-a. И то, что onStop выдается два раза, тк это явный баг, и его надо убирать.
карма: 22

0
Ответов: 8926
Рейтинг: 823
#14: 2016-09-06 22:46:10 ЛС | профиль | цитата
-= DriveR =-, при отсутствии Message дубля нет, значит дело не в TrackBar, а в их связке, вот и nesco про это толкует более грамотно
карма: 19

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#15: 2016-09-06 22:49:37 ЛС | профиль | цитата
Леонид писал(а):
при отсутствии Message дубля нет

Есть. Может у тебя в системе его нет, но у меня в 7-ке он точно есть. Я бы не стал править компонент, если бы его не было. И я пользуюсь, кстати, дебагером, а он точно ловит количество пришедших событий.

Редактировалось 1 раз(а), последний 2016-09-06 22:51:36
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)