Курсор графика. Отследить нажатие.

Простейшие вопросы в области инженерной разработки

Курсор графика. Отследить нажатие.

Postby Юрий on 16 Mar 2017, 17:05

Есть XY график и в нём курсор. При нажатии на график требуется отследить было ли нажатие на свободном месте графика или нажатие произведено когда курсор был захвачен (общий курсор изменил свою картинку, появился или крестик или параллельные отрезки). В свойствах курсора не нашёл параметра, указывающего на захват курсора. Вариант с использованием события Cursor Grab не очень привлекает, поскольку это событие идёт с некой задержкой по отношению к событию нажатия на график и требует анализа тайм аута. Захотел попробовать отследить в каком состоянии курсор, но что то не смог этого сделать просто по не знанию. У кого какие идеи, поделитесь, пожалуйста.
Юрий
developer
developer
 
Posts: 256
Joined: 28 Feb 2010, 18:04
LabVIEW Version: LV2015
Karma: 52

Re: Курсор графика. Отследить нажатие.

Postby Artem.spb on 16 Mar 2017, 18:08

Attachments
cursor.jpg
Artem.spb
expert
expert
 
Posts: 1248
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: Курсор графика. Отследить нажатие.

Postby Юрий on 16 Mar 2017, 18:40

Artem.spb, не важно какая задержка, главное, что она есть и события Mouse Down и Cursor Grab разнесены. А нужно то что? Если есть только Mouse Down а Cursor Grab нет, то производиться некое действие, например, в приложенном примере вызывается палитра выбора цветов. Если есть Mouse Down и Cursor Grab, то ничего не делается, вернее производится стандартная работа с курсором графика. Как я уже упоминал, этот вариант мне не нравится, хотя он и работает, см. вложение.
Курсор+.png
Курсор+.png (8.2 KiB) Viewed 1870 times
Attachments
Курсор+.vi
(21.37 KiB) Downloaded 27 times
Юрий
developer
developer
 
Posts: 256
Joined: 28 Feb 2010, 18:04
LabVIEW Version: LV2015
Karma: 52

Re: Курсор графика. Отследить нажатие.

Postby Artem.spb on 16 Mar 2017, 18:46

выбор цвета чего?
Artem.spb
expert
expert
 
Posts: 1248
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: Курсор графика. Отследить нажатие.

Postby Юрий on 16 Mar 2017, 18:55

Artem.spb, Ну, пусть будет галстука. При чём тут это? Вопрос не в том, какое действие производится - это же пример. А вопрос в том как сформировать вызов этого действия. Даже использование события Cursor Grab лишнее, не очень хорошо и т.д., поскольку оно возникает только по нажатию мыши, а необходимая информация для принятия решения уже есть до нажатия, это то, что общий курсор принял иное значение, а именно: крестик или параллельные отрезки.
Last edited by Юрий on 16 Mar 2017, 19:06, edited 1 time in total.
Юрий
developer
developer
 
Posts: 256
Joined: 28 Feb 2010, 18:04
LabVIEW Version: LV2015
Karma: 52

Re: Курсор графика. Отследить нажатие.

Postby Artem.spb on 16 Mar 2017, 19:05

При том, что может существовать другой путь определения необходимости выполнить действие
Artem.spb
expert
expert
 
Posts: 1248
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: Курсор графика. Отследить нажатие.

Postby Юрий on 16 Mar 2017, 19:11

Юрий
developer
developer
 
Posts: 256
Joined: 28 Feb 2010, 18:04
LabVIEW Version: LV2015
Karma: 52

Re: Курсор графика. Отследить нажатие.

Postby Artem.spb on 16 Mar 2017, 19:25

А задача-от в чём? с какой целью пользователь будет тыркать в график, если ему не надо курсор перетянуть?
Artem.spb
expert
expert
 
Posts: 1248
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: Курсор графика. Отследить нажатие.

Postby Юрий on 16 Mar 2017, 19:45

Юрий
developer
developer
 
Posts: 256
Joined: 28 Feb 2010, 18:04
LabVIEW Version: LV2015
Karma: 52

Re: Курсор графика. Отследить нажатие.

Postby Artem.spb on 16 Mar 2017, 22:07

Задачи интересные, но я не знаю варианта без ожидания.
В одном из проектов отлавливаю одно/два нажатия по listbox (как раз нужна разная реакция). Приходится ставить флаги и таймауты.
да, подождать, а потом делать или нет.
Можно поиграть с динамическими событиями и обрабатывать mouse up, а не нажатие. И при грабе курсора выключать ожидание
m_up.png

ну и я бы не стал делать две event-структуры в одном цикле. лучше менять таймаут в одной.
Artem.spb
expert
expert
 
Posts: 1248
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: Курсор графика. Отследить нажатие.

Postby Юрий on 16 Mar 2017, 23:35

Artem.spb, Спасибо за вариант. Действительно, если действие формировать по UP, то всё ложиться более логично, правда использование динамических событий мне показалось вычурным. Всё то же самое, только без них см. во вложении. С другой стороны увидел в Вашем примере нечто для себя новенькое.
На счёт "но я не знаю варианта без ожидания" можно повториться. Если в событии Mouse Down анализировать картинку курсора, то тут же можно принять решение будет он захвачен или нет. Только вот как это делать - не знаю.
Attachments
Курсор++.vi
(22.44 KiB) Downloaded 27 times
Юрий
developer
developer
 
Posts: 256
Joined: 28 Feb 2010, 18:04
LabVIEW Version: LV2015
Karma: 52

Re: Курсор графика. Отследить нажатие.

Postby Artem.spb on 17 Mar 2017, 00:18

Можно и локальной переменной, но минус этого в том, что событие всё равно происходит. Да и переменная где-то висит. А с динамическими событиями холостого хода нет, впрочем, дело вкуса.
Как определить тип курсора я не знаю, единственно извращённый вариант, приходящий на ум - определять позицию курсора мыши и курсора графика и пытаться понять, попал ли пользователь. Но тут будет ещё препятствие в виде типа инструмента графика - зум, позиционирование, курсор.
Artem.spb
expert
expert
 
Posts: 1248
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: Курсор графика. Отследить нажатие.

Postby Vitekkz88 on 17 Mar 2017, 06:11

Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 945
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: Курсор графика. Отследить нажатие.

Postby Юрий on 17 Mar 2017, 11:11

Vitekkz88, Всё это так. И мысли эти крутились в голове, но, как всегда, больная голова - ногам спокоя не даёт. Хочется, ведь, попроще, покрасивее, покомпактнее и т.д..
Юрий
developer
developer
 
Posts: 256
Joined: 28 Feb 2010, 18:04
LabVIEW Version: LV2015
Karma: 52

Re: Курсор графика. Отследить нажатие.

Postby dadreamer on 17 Mar 2017, 21:00

Attachments
Захват курсора.vi
lv2011
(9.49 KiB) Downloaded 29 times
Get Mouse Cursor Icon.vi
lv2011
(59.11 KiB) Downloaded 26 times
Last edited by dadreamer on 18 Mar 2017, 14:10, edited 1 time in total.
User avatar
dadreamer
doctor
doctor
 
Posts: 2938
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 716
I/O VIP vision internet

Next

Return to Для чайников

Who is online

Users browsing this forum: Yandex and 9 guests

cron