У меня машина И не ней установлена
Можно ли сформировать нестандартное меню
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Можно ли сформировать нестандартное меню
Вообщем доберусь но объекта поэкперементирую..
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Можно ли сформировать нестандартное меню
Относительно Origin'а позиционируется. Другое дело, что у саб-панели может быть свой Origin (навскидку не помню, но вроде бы так), и если меню вставлено в саб-панель, то оно будет позиционироваться относительно него, а не относительно родительского. В общем, надо смотреть, как в конкретном случае сделано.
И ещё, оба объекта одновременно перемещаете? И кнопку и Menu Strip?
Когда запускаешь программу, 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
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Можно ли сформировать нестандартное меню
Вы дали мне идею. Поскольку кнопка находится всегда в одном положении, решила привязать меню именно к кнопке.
Причем значения Top и Left MenuStrip оставались одинаковыми и не менялись после каждого щелчка мышью (смотрела Probe)
Эффект довольно забавный.Причем значения Top и Left MenuStrip оставались одинаковыми и не менялись после каждого щелчка мышью (смотрела Probe)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Можно ли сформировать нестандартное меню
jane_wild
Вы случайно не перепутали позицию .NET контейнера и позицию .NET объекта внутри контейнера? Это маленько разные вещи. Как объект размещён в контейнере, не так важно (и не так нужно). Чтобы было чуть понятнее: у объекта MenuStrip есть свойства Top/Left, но и у контейнера также есть такие же свойства (и вот они-то как раз относительно origin'а и работают).
Вы случайно не перепутали позицию .NET контейнера и позицию .NET объекта внутри контейнера? Это маленько разные вещи. Как объект размещён в контейнере, не так важно (и не так нужно). Чтобы было чуть понятнее: у объекта MenuStrip есть свойства Top/Left, но и у контейнера также есть такие же свойства (и вот они-то как раз относительно origin'а и работают).
- Вложения
-
- 2021-04-22_21-34-12.jpg (41 КБ) 2877 просмотров
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Можно ли сформировать нестандартное меню
Хотела поинтересоваться, возможно ли в приведенном примере добавить еще один уровень. В приведенном примере главное меню и субменю, а хотелось чтобы в субменю было еще одно меню.... Но видимо "хотеть не вредно"
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Можно ли сформировать нестандартное меню
Да, это можно сделать. Остальные брать отсюда. Очень сырой пример: нажимаете кнопку Add new и в первый выпадающий элемент (индекс 0) первого пункта меню (индекс 0) вставляется новое под-меню. По хорошему, надо это встроить внутрь Create subMenu.vi и оформить по-человечески: чтобы список элементов задавался массивом или кластером и чтобы для них также регистрировался обработчик нажатия. У меня сейчас нет на это времени и особого желания. Там вроде не сложно, думаю сможете допилить как хочется.
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Можно ли сформировать нестандартное меню
Спасибо большое, есть от чего отталкиватьсяПо хорошему, надо это встроить внутрь Create subMenu.vi и оформить по-человечески: чтобы список элементов задавался массивом или кластером и чтобы для них также регистрировался обработчик нажатия. У меня сейчас нет на это времени и особого желания. Там вроде не сложно, думаю сможете допилить как хочется.
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Можно ли сформировать нестандартное меню
dadreamer Извините за назойливотсь,
Как делать активными или неактивными кнопки меню разобралась. Но это всё делается ДО создания меню, а возможно ли после его создания, в процессе работы программы, иметь возможноть включать/выключать пункты меню (делать их серыми и неактивными) ? Спасибо
Как делать активными или неактивными кнопки меню разобралась. Но это всё делается ДО создания меню, а возможно ли после его создания, в процессе работы программы, иметь возможноть включать/выключать пункты меню (делать их серыми и неактивными) ? Спасибо
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Можно ли сформировать нестандартное меню
jane_wild, это вообще просто - How to: Disable ToolStripMenuItems
Код: Выделить всё
menuItem1.Enabled = false;
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Можно ли сформировать нестандартное меню
Понимаю что надоела, но... Как во время работы программы добавить/удалить пункт меню? Добавляю в массив строк новый элемент, снова создаю меню, но ничего не меняется и ошибки никакой не возникает. Может нужно сначала удалить существующее меню, а потом с нуля создать новое (обновленное), но как не знаю. Не подскажете?
UPD. Разобралась. Нужно было перед созданием вызвать метод clear
UPD. Разобралась. Нужно было перед созданием вызвать метод clear
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Можно ли сформировать нестандартное меню
Добавление я выше уже показывал. Удаление - аналогично. Там есть моменты, на которые нужно обратить внимание.
1. Если удалить новый пункт меню и потом попробовать удалить снова, то возникнет ошибка. Думаю, понятно, почему такое происходит - когда коллекция объектов пуста, то удалять нечего.
2. Получается, что на каждый выпадающий список нужно регистрировать свой обработчик. Все обработчики надо где-то хранить, в сдвиговом регистре, локалке или ещё где. При вставке нового пункта в выпадающий список имеющийся обработчик (если есть) перерегистрировать с помощью Reg Event Callback. Сейчас обработчик нового списка нигде не сохраняется. Чем это чревато, можно узнать, добавив сразу 2 или более пунктов в список и нажать на любой. :)
У автора, похоже, тоже есть косяк. Добавляет пункты меню в цикле, но почему-то выводит наружу только один callback. Я проверил, там создаётся 4 обработчика, по одному на каждый пункт. По-хорошему надо выводить массив обработчиков и при завершении работы программы их все уничтожать.