Создание и работа с МЕНЮ
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Создание и работа с МЕНЮ
Здравствуйте! С Новым годом! Появился вопрос: как создать МЕНЮ и потом работать с ним? По форуму вопросов относительно МЕНЮ много, но они все сильно продвинутые ...
Во ВЛОЖЕНИИ оригинал. При нажатии на кнопку Menu на нижнем индикаторе появляется вот такое главное меню с подсветкой первой позиции. Кнопками со стрелками можно двигаться по пунктам; соответственно и подсветка передвигается. При нажатии на ОК выбранный пункт открывается на другой уровень или что-то выполняется, если он конечный. Справа на ВЛОЖЕНИИ отрезаны цифровые кнопки. Если нажимать на кнопку, соответствующую цифре меню, то так же открывается этот пункт. Кнопка Menu со стрелкой влево - возврат на один уровень назад, повторное нажатие на Menu - выход из меню. По-моему, МЕНЮ самое обычное, типовое.
Скорее всего, в есть готовые модули типа ListBox, ComboBox ... Есть они? Где? С чего начать, чтобы не изобретать велосипед? Все позиции меню - текстовые. Возможно, в есть какой-то шаблон под формирование МЕНЮ. Смотрел и книги, и форум, но ничего практического для формирования МЕНЮ не встретил. Хорошо бы посмотреть на пример близкой реализации, если такой имеется. Спасибо!
Во ВЛОЖЕНИИ оригинал. При нажатии на кнопку Menu на нижнем индикаторе появляется вот такое главное меню с подсветкой первой позиции. Кнопками со стрелками можно двигаться по пунктам; соответственно и подсветка передвигается. При нажатии на ОК выбранный пункт открывается на другой уровень или что-то выполняется, если он конечный. Справа на ВЛОЖЕНИИ отрезаны цифровые кнопки. Если нажимать на кнопку, соответствующую цифре меню, то так же открывается этот пункт. Кнопка Menu со стрелкой влево - возврат на один уровень назад, повторное нажатие на Menu - выход из меню. По-моему, МЕНЮ самое обычное, типовое.
Скорее всего, в есть готовые модули типа ListBox, ComboBox ... Есть они? Где? С чего начать, чтобы не изобретать велосипед? Все позиции меню - текстовые. Возможно, в есть какой-то шаблон под формирование МЕНЮ. Смотрел и книги, и форум, но ничего практического для формирования МЕНЮ не встретил. Хорошо бы посмотреть на пример близкой реализации, если такой имеется. Спасибо!
- Вложения
-
- Меню.PNG (55.47 КБ) 9762 просмотра
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Re: Создание и работа с МЕНЮ
Нашёл: Programming-Dialod & User Interface-Menu. Уже хорошо!. Разбираюсь, как создать нужное меню и как его привязать к конкретному индикатору. Ищу похожий пример ...
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Создание и работа с МЕНЮ
И Вас с Новым годом!
Это не готовые модули, это тип контролов - и на каждый из них можно найти пример в Find Examples...
Подсказываю - на Вашем месте, я бы не парился, и использовал простой Listbox или Multicolumn Listbox в качестве меню, то бишь - обычного списка. Если меню вложенное, и если это не спец. требование, не заморачивался бы с отображением с уровнями вложенности. Скажем так: верхний уровень меню - один список, если переходите на уровень ниже - просто "стираете" отображаемое меню, и показываете уже список нижнего, и т.д. (в принципе, как Вы и описывали). Обычная работа с массивами; определения активного/выбранного рядка, и все.
Если хотите контекстное меню, то ищите инфу о "labview custom run-time menu". Но с ним работа будет немного иная...
Скорее всего? Прямо загадка века ))) А если проклацать набор контроллов-индикаторов?LEO_NIK писал(а):Скорее всего, в есть готовые модули типа ListBox, ComboBox ... Есть они? Где?
Это не готовые модули, это тип контролов - и на каждый из них можно найти пример в Find Examples...
Извините, но плохо искали - или неправильно формулировали поисковый запрос. Вся инфа есть, нужно только знать, что искать.LEO_NIK писал(а):Смотрел и книги, и форум, но ничего практического для формирования МЕНЮ не встретил.
Подсказываю - на Вашем месте, я бы не парился, и использовал простой Listbox или Multicolumn Listbox в качестве меню, то бишь - обычного списка. Если меню вложенное, и если это не спец. требование, не заморачивался бы с отображением с уровнями вложенности. Скажем так: верхний уровень меню - один список, если переходите на уровень ниже - просто "стираете" отображаемое меню, и показываете уже список нижнего, и т.д. (в принципе, как Вы и описывали). Обычная работа с массивами; определения активного/выбранного рядка, и все.
Если хотите контекстное меню, то ищите инфу о "labview custom run-time menu". Но с ним работа будет немного иная...
Мы делили апельсин - много наших полегло...
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Re: Создание и работа с МЕНЮ
Спасибо, так, наверное, и сделаю. Упускаю, что есть help, встроенная в . Ищу где угодно, но только не под носом ...Kosist писал(а): я бы не парился, и использовал простой Listbox или Multicolumn Listbox в качестве меню
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Re: Создание и работа с МЕНЮ
Так и сделал. Создал нужные Listbox, наложил их друг на друга и программно в соответствии с алгоритмом делаю их видимыми/невидимыми. Всё управление Listbox (по сути Меню) должно осуществляться только нажатием кнопок на лицевой панели прибора (см. выше ВЛОЖЕНИЕ): вверх, вниз, ОК... Это всё работает. Одно НО. Обнаружил, что помимо программного управления Listbox-ом, ещё и мышкой можно щёлкнуть прямо по любой строке списка (нижний дисплей на ВЛОЖЕНИИ) и она становится активной (можно и стрелками на клавиатуре). А это недопустимо. Никак не могу отключить мышку с клавиатурой (но только для Listbox, а для нажатия на кнопки на приборе она должна функционировать). Использовал event для ListBox. Перепробовал все события для мышки (UP, DOWN ...), для Key, для панели. Перепробовал массу свойств Listbox ... Мышь как вкопанная, не отключается, а если отключается, то и мышка, и весь Listbox (устанавливал Disabled), но это перебор.Kosist писал(а): я бы не парился, и использовал простой Listbox или Multicolumn Listbox в качестве меню
Я недавно осваиваю (до этого работал только с текстовым программированием), смотрю, что у меня вопросы примитивные, но тем не менее, не могу найти на них ответ. Хотя, когда ответ получен, то программирую с использованием и циклов, и Case, и Event, причём они выстроены в несколько уровней. Всё получается довольно быстро. Вот и на этот вопрос, чувствую, что ответ будет простым, на поверхности. Целый день бьюсь и не могу отключить управление Listbox-ом мышкой. Прошу помощи.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Создание и работа с МЕНЮ
Добавьте обработчик в Event -> Mouse Down? (http://zone.ni.com/reference/en-XX/help ... use_downq/)LEO_NIK писал(а):Целый день бьюсь и не могу отключить управление Listbox-ом мышкой. Прошу помощи.
Если необходимо игнорировать все события, то достаточно сделать как на скрине Аналогично можно обработать и события от клавиатуры.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Re: Создание и работа с МЕНЮ
Спасибо за помощь. Надо же, перебрал в обработчике событий по мышке всё, кроме событий со знаком вопроса. Посчитал, что это мне будет задан вопрос при работе прибора о том, желаю ли я выполнить действие или нет. А это мне не нужно.IvanLis писал(а): Добавьте обработчик в Event -> Mouse Down?
Проверил. 15 сек и всё работает как надо! Ещё раз спасибо!
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Создание и работа с МЕНЮ
Если Вы не делаете никаких эффектов типа "выезжание" меню, эффект наложения друг на друга; то можно обойтись и одним контролом; просто меняя текст в нем... Так ведь легче будет, наверное...LEO_NIK писал(а):Так и сделал. Создал нужные Listbox, наложил их друг на друга и программно в соответствии с алгоритмом делаю их видимыми/невидимыми
Мы делили апельсин - много наших полегло...
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Re: Создание и работа с МЕНЮ
Спасибо за совет. Никаких эффектов нет, простое меню. Я уже создал под каждый пункт МЕНЮ свой listbox, пронумеровал каждый, сделал исходно их все невидимыми свойством Visible и наложил друг на друга на одно и тоже место прибора. Для вызова создал цифровой одномерный массив, индексами и элементами которого которого являются номера listbox. Извлечённый список делаю видимым. Алгоритм работает. Но возник другой вопрос: при закрытии элементы массива стираются, не сохраняются. Как сохранить массив?Kosist писал(а): можно обойтись и одним контролом; просто меняя текст в нем...
Зашел на форум, чтобы поискать ответ на этот вопрос, но увидел непрочитанный ответ на предыдущий вопрос и решил задать этот.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Создание и работа с МЕНЮ
Используйте функцию Write to Spreadsheet file (в 2015 эта функция называется немного иначе). Для чтения - Read from Spreadsheet file. Ну, или можете сделать парсер в ini файл. Тогда в одном файле можно хранить разные меню, в разных секциях.LEO_NIK писал(а):Как сохранить массив?
Зашел на форум, чтобы поискать ответ на этот вопрос, но увидел непрочитанный ответ на предыдущий вопрос и решил задать этот.
Мы делили апельсин - много наших полегло...
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Re: Создание и работа с МЕНЮ
Наверное, я неправильно создал массив, слишком просто. Поместил на переднюю панель массив: Modern-Array,Matrix & Cluster-Array и в левую часть появившегося изображения ввожу индекс (число), а в правую часть поместил Numeric Control, куда ввожу соответствующий элемент, тоже число. Для простоты я их делаю одинаковыми, привязанными к нужному пункту меню или, что то же самое, к номеру listbox.Kosist писал(а):Используйте функцию Write to Spreadsheet file Для чтения - Read from Spreadsheet file
Для считывания устанавливаю на блок-схеме Index Array. Входы соединяю с массивом и схемой формирования индекса, на выходе получаю номер listbox, который делаю видимым. Всё, работает, но только до выключения.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Создание и работа с МЕНЮ
-ку в студию =)LEO_NIK писал(а):Наверное, я неправильно создал массив, слишком просто. Поместил на переднюю панель массив: Modern-Array,Matrix & Cluster-Array и в левую часть появившегося изображения ввожу индекс (число), а в правую часть поместил Numeric Control, куда ввожу соответствующий элемент, тоже число. Для простоты я их делаю одинаковыми, привязанными к нужному пункту меню или, что то же самое, к номеру listbox.
Для считывания устанавливаю на блок-схеме Index Array. Входы соединяю с массивом и схемой формирования индекса, на выходе получаю номер listbox, который делаю видимым. Всё, работает, но только до выключения.
Что именно не работает? Сохраняйте в файл массив с эл-тами меню, считывайте в тот же массив + отображайте дефолтное меню в листбоксе.
Выкладывайте код, будем смотреть
Мы делили апельсин - много наших полегло...
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Re: Создание и работа с МЕНЮ
Да сложно это ... МЕНЮ - небольшая часть прибора. Фрагменты его уже отладил, что-то конфликтует, отложил, к чему-то ещё не приступал... Даже когда сам запускаю, то забываю, на какие кнопки можно, а на какие пока нельзя нажимать. Как такое выкладывать? Старался выкроить работоспособный фрагмент, упрощал его и тогда выкладывал с появляющемся вопросом. Так и сейчас. Если не разберусь и если смогу вырезать неработающий код, то выложу. В любом случае, спасибо за помощь.Kosist писал(а): -ку в студию =)
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Создание и работа с МЕНЮ
После создания и задания значений массива на FP - выделить его Левой Кнопкой Мышки -> выбрать пункт меню: Edit -> Make Selected Values Default.
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Re: Создание и работа с МЕНЮ
Оказалось, что мой вопрос, как и предыдущие, сводится к простому. Я на лицевую панель установил только 2 массива: элементы из контролов и из строк. Именно такой массив я использую в программе. Можно ввести пару-тройку элементов, а потом "сохранить" и выйти из . При входе все элементы массивов будут отсутствовать. Всё, что мы заносим в строки или контролы таких массивов, при выключении стирается. Тогда вопрос: что за тип данных должен быть элементом массива, чтобы введённые данные сохранялись? Мне же нужно хранить простой одномерный массив из цифр (можно из букв).LEO_NIK писал(а): Да сложно это ...
- Вложения
-
- Массив.vi
- (6.53 КБ) 133 скачивания
Последний раз редактировалось LEO_NIK 08 янв 2017, 22:51, всего редактировалось 1 раз.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 9 Ответы
- 814 Просмотры
-
Последнее сообщение ujin1
-
- 10 Ответы
- 2373 Просмотры
-
Последнее сообщение PAG
-
- 16 Ответы
- 3265 Просмотры
-
Последнее сообщение Artem.spb
-
- 4 Ответы
- 224 Просмотры
-
Последнее сообщение Andrew Lunev