Можно ли сформировать нестандартное меню

Простейшие вопросы в области инженерной разработки
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение jane_wild »

Вообщем доберусь но объекта поэкперементирую..
Artem.spb писал(а): 22 апр 2021, 18:15 у меня такой штуки вообще нет, видимо, это нововведение 19+
У меня машина
System.JPG
System.JPG (14.31 КБ) 2889 просмотров
И не ней установлена
LV Version.JPG
LV Version.JPG (12.89 КБ) 2889 просмотров
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение dadreamer »

jane_wild писал(а): 22 апр 2021, 16:37только я не совсем понимаю откуда берется их отсчет
Относительно Origin'а позиционируется.
2021-04-22_20-17-22.jpg
Другое дело, что у саб-панели может быть свой Origin (навскидку не помню, но вроде бы так), и если меню вставлено в саб-панель, то оно будет позиционироваться относительно него, а не относительно родительского. В общем, надо смотреть, как в конкретном случае сделано.

И ещё, оба объекта одновременно перемещаете? И кнопку и Menu Strip?
2021-04-22_20-26-08.jpg
2021-04-22_20-26-08.jpg (22.75 КБ) 2887 просмотров
jane_wild писал(а): 22 апр 2021, 16:37Хотела еще спросить, а что это за настройка?
Когда запускаешь программу, Origin панели автоматически переводится в левый верхний угол. После остановки программы возвращается в состояние до запуска.
Scroll panes to origin at run time — Sets the front panel to scroll to the pane origin at run time. When the VI stops running, the front panel restores to the original pane position. Enable this option to view the run-time front panel bounds while you modify the front panel in edit mode. If you use splitter bars to separate the front panel into multiple panes, enabling this option scrolls all the panes to the origin at run time.
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение jane_wild »

Вы дали мне идею. Поскольку кнопка находится всегда в одном положении, решила привязать меню именно к кнопке.
Position.JPG
Position.JPG (18 КБ) 2880 просмотров
Эффект довольно забавный.

Причем значения Top и Left MenuStrip оставались одинаковыми и не менялись после каждого щелчка мышью (смотрела Probe)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение dadreamer »

jane_wild
Вы случайно не перепутали позицию .NET контейнера и позицию .NET объекта внутри контейнера? Это маленько разные вещи. Как объект размещён в контейнере, не так важно (и не так нужно). Чтобы было чуть понятнее: у объекта MenuStrip есть свойства Top/Left, но и у контейнера также есть такие же свойства (и вот они-то как раз относительно origin'а и работают).
Вложения
2021-04-22_21-34-12.jpg
2021-04-22_21-34-12.jpg (41 КБ) 2877 просмотров
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение jane_wild »

dadreamer писал(а): 22 апр 2021, 19:38 у объекта MenuStrip есть свойства Top/Left, но и у контейнера также есть такие же свойства (и вот они-то как раз относительно origin'а и работают).
Спасибо! В этом и была причина :thank:
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение jane_wild »

Хотела поинтересоваться, возможно ли в приведенном примере добавить еще один уровень. В приведенном примере главное меню и субменю, а хотелось чтобы в субменю было еще одно меню.... Но видимо "хотеть не вредно" :D
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение dadreamer »

jane_wild писал(а): 25 май 2021, 14:33Хотела поинтересоваться, возможно ли в приведенном примере добавить еще один уровень. В приведенном примере главное меню и субменю, а хотелось чтобы в субменю было еще одно меню.... Но видимо "хотеть не вредно" :D
Да, это можно сделать.
Example.vi
lv2020
(30.89 КБ) 109 скачиваний
Остальные :vi: брать отсюда. Очень сырой пример: нажимаете кнопку Add new и в первый выпадающий элемент (индекс 0) первого пункта меню (индекс 0) вставляется новое под-меню. По хорошему, надо это встроить внутрь Create subMenu.vi и оформить по-человечески: чтобы список элементов задавался массивом или кластером и чтобы для них также регистрировался обработчик нажатия. У меня сейчас нет на это времени и особого желания. Там вроде не сложно, думаю сможете допилить как хочется. :wink:
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение jane_wild »

По хорошему, надо это встроить внутрь Create subMenu.vi и оформить по-человечески: чтобы список элементов задавался массивом или кластером и чтобы для них также регистрировался обработчик нажатия. У меня сейчас нет на это времени и особого желания. Там вроде не сложно, думаю сможете допилить как хочется. :wink:
Спасибо большое, есть от чего отталкиваться :thank:
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение jane_wild »

dadreamer Извините за назойливотсь,
Как делать активными или неактивными кнопки меню разобралась. Но это всё делается ДО создания меню, а возможно ли после его создания, в процессе работы программы, иметь возможноть включать/выключать пункты меню (делать их серыми и неактивными) ? Спасибо
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение dadreamer »

jane_wild, это вообще просто - How to: Disable ToolStripMenuItems

Код: Выделить всё

menuItem1.Enabled = false;
Вложения
2021-06-01_21-46-26.jpg
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение jane_wild »

Что бы я без Вас делала. :thank: Спасибо огромное, получилось :dance:
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение jane_wild »

Понимаю что надоела, но... Как во время работы программы добавить/удалить пункт меню? Добавляю в массив строк новый элемент, снова создаю меню, но ничего не меняется и ошибки никакой не возникает. Может нужно сначала удалить существующее меню, а потом с нуля создать новое (обновленное), но как не знаю. Не подскажете?

UPD. Разобралась. Нужно было перед созданием вызвать метод clear
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Можно ли сформировать нестандартное меню

Сообщение dadreamer »

jane_wild писал(а): 07 июн 2021, 15:59Как во время работы программы добавить/удалить пункт меню?
Добавление я выше уже показывал. Удаление - аналогично.
Example.vi
lv2020
(35.76 КБ) 104 скачивания
Там есть моменты, на которые нужно обратить внимание.
1. Если удалить новый пункт меню и потом попробовать удалить снова, то возникнет ошибка. Думаю, понятно, почему такое происходит - когда коллекция объектов пуста, то удалять нечего.
2. Получается, что на каждый выпадающий список нужно регистрировать свой обработчик. Все обработчики надо где-то хранить, в сдвиговом регистре, локалке или ещё где. При вставке нового пункта в выпадающий список имеющийся обработчик (если есть) перерегистрировать с помощью Reg Event Callback. Сейчас обработчик нового списка нигде не сохраняется. Чем это чревато, можно узнать, добавив сразу 2 или более пунктов в список и нажать на любой. :)

У автора, похоже, тоже есть косяк.
2021-06-07_20-24-33.jpg
Добавляет пункты меню в цикле, но почему-то выводит наружу только один callback. Я проверил, там создаётся 4 обработчика, по одному на каждый пункт. По-хорошему надо выводить массив обработчиков и при завершении работы программы их все уничтожать.
Ответить

Вернуться в «Для чайников»