Событие Click в event структуре

Обсуждение, связанное с разработкой ПО верхнего уровня
Ответить
Аватара пользователя
Mifodiy1977
beginner
beginner
Сообщения: 47
Зарегистрирован: 10 янв 2012, 14:00
Версия LabVIEW: 11
Контактная информация:

Событие Click в event структуре

Сообщение Mifodiy1977 »

Есть какой-нибудь грамотный способ обработать событие Click (mouse up после mouse down) на элементе управления в Event структуре? Например есть встроенный модификатор для duble click, а вот для простого клика модификатор не сделали (и че не сделали, фиг их знает). Так вот можно ли в event структуре без промежуточных переменных и нескольких событий (mouse down затем mouse up и чтоб не было leave) обработать данное событие? Где-то писали про использование шифт регистра, но я не совсем понимаю, как его тут можно применить. Чтобы заранее отсечь отсыл к использованию кнопок с событием по заднему фронту совместно с Case структурой, скажу сразу, что элемент, событие которого нужно получить, не обязательно булева.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Событие Click в event структуре

Сообщение IvanLis »

Сложновато вечером 8 марта воспринимать информацию.
Mifodiy1977 писал(а):Например есть встроенный модификатор для duble click, а вот для простого клика модификатор не сделали (и че не сделали, фиг их знает). Так вот можно ли в event структуре
без промежуточных переменных и нескольких событий (mouse down затем mouse up и чтоб не было leave) обработать данное событие?
Как я понял, Вам необходимо, что то вроде OnClick?
Т.е. необходимым условием является, что для объекта было инициированы события mouse down, а потом в течении определенного времени mouse up. Проверку, что подобных событий не было между ними над другими объектами делать при малом интервале времени, мне кажется не надо.

Накидал пример...
OnClick.vi
lv2010
(12.29 КБ) 166 скачиваний
Наверняка проще можно сделать, но пока так :crazy:
Аватара пользователя
Mifodiy1977
beginner
beginner
Сообщения: 47
Зарегистрирован: 10 янв 2012, 14:00
Версия LabVIEW: 11
Контактная информация:

Re: Событие Click в event структуре

Сообщение Mifodiy1977 »

Немного не то, прям скажем. Насколько я могу догадываться, событие One Click не имеет никакого отношения к длительности нажатого состояния кнопки. В любом приложении винды кнопку можно держать хоть весь день, а потом отпустить и будет клик. Тут если таймаут прошел, то клика не будет. Если сделать длительность ожидания события Mouse Up достаточно длинным, то может возникнуть глюк. Нажал на кнопку, вывел мышку, нажал на другую кнопку (ну, предположим если бы она была), и не отпуская мыши снова ведем в област первой кнопки и уже там отпускаем мышь. И получаем событие Click, которое не имеет отношения к настоящему клику. И в любом случае получается громоздко и неудобно. Если уж делать по вашему, то сбрасывать шифт регистр не по таймауту, а по событию Mouse Up на объекте Pane. Таймаут тогда не нужен был бы вообще. Но прикол в том, что событие Pane Mouse Up имеет полный приоритет над Mouse Up любого другого объекта на этом pane и в одном цикле они не обрабатываются, не смотря на то, что происходят одновременно. Никакие манипуляции с сортировкой эвентов в структуре не меняет приоритета.
Вложения
OnClick my 8_0.vi
(14.79 КБ) 119 скачиваний
Аватара пользователя
Mifodiy1977
beginner
beginner
Сообщения: 47
Зарегистрирован: 10 янв 2012, 14:00
Версия LabVIEW: 11
Контактная информация:

Re: Событие Click в event структуре

Сообщение Mifodiy1977 »

Всетаки выкрутился, но мне такого решения не надо. В смысле обойдусь без клика, такой кривой он мне не нужен. Можно, конечно шифты заменить на переменные, тогда веревок будет меньше, но зато в три раза больше переменных. Вот такая фигня. А ведь можно же сделать модификатор. NI, сделайте, пожалуйста модификатор OneClick для события MouseUp :help: help: :) (вдруг услышит)
Вложения
OnClick my_2_8_0.vi
(13.53 КБ) 113 скачиваний
Аватара пользователя
Mifodiy1977
beginner
beginner
Сообщения: 47
Зарегистрирован: 10 янв 2012, 14:00
Версия LabVIEW: 11
Контактная информация:

Re: Событие Click в event структуре

Сообщение Mifodiy1977 »

Кстати, обмануть можно даже мой последний вариант. Если нажать на текстовом поле, не отпуская мыши вывести за пределы текстового поля, отпустить, затем навести мышь и нажать в поле инструментов окна лабвью (там где пуск, стоп и прочие) на свободное от кнопок место и не отпуская кнопку мыши завести курсор в поле текстового индикатора и там отпустить и оппа - клик :) Объясняется просто. Не возникает события Pane Mouse Down. Конечно, надо еще смотреть, какая именно кнопка нажата и отпущена, в примере не фильтровал. Ладно. Хватит на сегодня экспериментов.
Аватара пользователя
Mifodiy1977
beginner
beginner
Сообщения: 47
Зарегистрирован: 10 янв 2012, 14:00
Версия LabVIEW: 11
Контактная информация:

Re: Событие Click в event структуре

Сообщение Mifodiy1977 »

Ладно, самый последний пример. Он же самый правильный. Как я и говорил раньше (в самом начале) нужна одна переменная (триггер), в данном случае шифт регистр и три события: Mouse Down - взводит регистр, Mouse Leave сбрасывает регистр, Mouse Up генерит событие при условии наличия триггера и тоже сбрасывает регистр. Никаких пауз и таймаута. С такой схемой глюков точно не будет никаких. Но мне все равно так не хочется. По шифту на каждое событие - вервками зарастешь или лишними переменными. Пусть Национальный инструмент сделает модификатор :)
Вложения
OnClick my_3_8_0.vi
(12.72 КБ) 134 скачивания
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Лицевая панель»