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

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

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

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

Сообщение dadreamer »

jane_wild писал(а):Далее инициализируется меню и прячется подачей нуля на вход упомянутого метода.
Просмотрел весь код и нигде не нашёл установки параметра Height в 0. Мы точно об одном и том же примере говорим? У меня сейчас открыт Easily Create a .NET Menu LV2012 NIverified.
jane_wild писал(а):При нажатии на кнопочку, циклом for, добавляя по 10 пикселей к высоте, начиная с нуля, меню выдвигается.
По 20. Выдвигается - 15 раз по +20 пкс, задвигается - 15 раз по -20.
jane_wild писал(а):После выбора необходимого подпункта, оно снова задвигается.
Такого нету - после выбора подпункта появляется Message Box и на этом всё.
jane_wild писал(а):Закрывая программу меню спрятано и его высота равна нулю.
В моём примере при остановке программы (нажатие Stop) высота становится 300 пкс.
2017-12-08_10-26-47.jpg
jane_wild писал(а):При повторном запуске, LabVIEW "помнит" этот ноль, меню проходит всю инициализацию без ошибок, но оно просто не показывается
Ну, даже если я меняю 300 на 0, при следующем запуске мне всё равно удаётся раскрыть меню, несколько раз кликнув по кнопке >>. Да и сам :labview: не должен ничего "запоминать", это же внешний компонент, у него своя программная начинка и окно своё. Если и есть какое-то "запоминание", то только во внутренностях компонента. Но тогда встаёт вопрос о том, почему у меня работает, а у вас нет. Возможно, у вас в системе установлена какая-то другая версия этого компонента. Попробуйте обновить .NET Framework. Нынче последняя версия 4.7.1, совместимость от Win 10 до 7.
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

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

Сообщение jane_wild »

Да, пример этот, только я его использую не в оригинальном виде, а адаптированным под мой проект и мои хотелки. Естественно и размеры в пикселях разные и message box-а никакого нет. Я хотела в целом разобраться что к чему, как это работает и почему "висел" callback. И Вы мне в этом очень сильно помогли, за что еще раз спасибо :thank:
Теперь все работает так как хочется мне :dance: Как говорит мой отец: "не пытайся исправить то, что исправно работает", кстати он иногда появляется на этом форуме. Еще раз спасибо
Аватара пользователя
dadreamer

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

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

Сообщение dadreamer »

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

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

Сообщение jane_wild »

jane_wild писал(а):Согласна, что странно. Как то не полностью освобождаюстя ресурсы
Вот так выклядят кусочек окна проекта после остановки программы. Несмотря на замочки, можно редактировать любые VI за исключением callback
Lock.png
Вот так, после запуска Collect.vi (в котором единственный метод CG.Collect) Замочки пропадают и можно редактировать все, включая callback
UnLock.png
Но при повторном запуске всего проекта StartUp-ом Все запускается и работает, только strip Menu не выпадает. Жму на кнопку и ничего не происходит. Закрыла - Открыла проект - все гуд.
Перенесла проект на LV2018, замочки с библиотек не пропадают, в LV2016 все ок, почему то в новой версии метод CG.Collect не работает. :thank:
Аватара пользователя
dadreamer

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

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

Сообщение dadreamer »

jane_wild писал(а):Перенесла проект на LV2018, замочки с библиотек не пропадают, в LV2016 все ок, почему то в новой версии метод CG.Collect не работает. :thank:
Мне нечем вас обрадовать. :cry:
.NET Callback Event VI keeps the Callback VI reserved even GC.Collect() is used in Labview 2018
NI R&D писал(а):The GC.Collect() method not releasing the reference is being tracked by CAR 712176.

Our dev team is aware of both and working to resolve those as soon as we're able. ... For the GC.Collect(), the only suggestion I have is to consider placing the callback into a library. Libraries are easier to unload without closing out of LabVIEW. But, that's not really that much more friendly than your current state.
Аватара пользователя
dadreamer

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

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

Сообщение dadreamer »

jane_wild, NI поправили этот баг в патче f2:
Issues Fixed in LabVIEW 2018 f2 Patch
...
712176 .NET Callback VIs are not released from memory when you request garbage collection.
http://www.ni.com/product-documentation/54795/en/
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

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

Сообщение jane_wild »

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

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

Сообщение jane_wild »

Ребята и снова прошу совета. В рабочей среде все работает - лучше и не нужно. В исполняемом файле меню сдвигается примерно на 50 пикселей вправо. Как принудитльно установить его верхний левый угол в определенные координаты? От чего берется отсчет координат позиции меню? Oт верхнего левого угла родительского Pane? Я пробовала, но даже если установить 0,0 все равно меню сдвигается на 50 пиклселей ...
Аватара пользователя
dadreamer

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

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

Сообщение dadreamer »

jane_wild писал(а): 19 апр 2021, 16:28В исполняемом файле меню сдвигается примерно на 50 пикселей вправо.
У меня ничего подобного не происходит. Видимо, что-то не так делаю. :dntknw:
Вложения
2021-04-19_22-57-47.jpg
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

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

Сообщение jane_wild »

Так всетаки к чему привязываются координаты меню (от чего начинается отсчет)? И как установить меню в определенные координаты относительно угла фронтальной панели, на которой оно расположено? Посмотрите на скриншоты, что бы понятнее было, что я имею ввиду.
По нажанию на эту кнопку выпадает меню
По нажанию на эту кнопку выпадает меню
Кнопка нажата, все так и должно быть - меню рядом с кнопкой (кнопка в левом верхнем углу)
Все нормально
Все нормально
Юзер максимизировал окно и меню съехало в сторону. А кнопочка осталось на месте.
Уже не нормально, нужно как в предыдущей картинке
Уже не нормально, нужно как в предыдущей картинке
Как эту "сладкую парочку" заставить не разлучатся? :brows:
Спасибо.
Аватара пользователя
dadreamer

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

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

Сообщение dadreamer »

jane_wild писал(а): 21 апр 2021, 14:28Юзер максимизировал окно и меню съехало в сторону. А кнопочка осталось на месте.
Выложите, пожалуйста, самый базовый пример, где эта проблема воспроизводится. Потому что у меня этот эффект так и не проявился. Я использовал пример с форумов NI, исходник и exe во вложении.
Вложения
Easily Create a .NET Menu LV2012 NIverified.rar
lv2020
(684.72 КБ) 116 скачиваний
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

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

Сообщение jane_wild »

Когда появится время, попробую выковырять из проекта. Спасибо за готовноть помочь.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

jane_wild писал(а): 21 апр 2021, 14:28 Юзер максимизировал окно и меню съехало в сторону. А кнопочка осталось на месте.
Я, как водится в интернете, влезу в середину разговора не сильно вникая в суть :brows:
Я просто сейчас при масштабировании чекбокс на место возвращаю, очень похожие симптомы.
"Юзер максимизировал окно ". А настройки масштабирования есть? Тогда это сползание из-за этого.
Вариант первый - выключить масштабирование.
Второй, менее радикальный - выделить зону с меню сплиттером в отдельную область, где масштибирование отключено.
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

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

Сообщение jane_wild »

Artem.spb писал(а): 21 апр 2021, 22:01 "Юзер максимизировал окно ". А настройки масштабирования есть? Тогда это сползание из-за этого.
Вариант первый - выключить масштабирование.
Второй, менее радикальный - выделить зону с меню сплиттером в отдельную область, где масштибирование отключено.
Если Вы про это, то отключено
Если Вы про это, то отключено
Хотела еще спросить, а что это за настройка? Просто сейчас нет возможности проверить на RTE
Scroll.JPG
В меню есть свойства Top и Left , записывая значения в которые, можно устанавливать меню в определенные координаты, только я не совсем понимаю откуда берется их отсчет. Пробовала от Pane и если я устанавливаю скажем Top = 0 и Left = 50, то я ожидаю что меню установится в левый верхний угол, отступив влево на 50 пикселей. Но так не происходит. Оно отступает пикселей на 100. К тому же а в чем разница максимизировано окно или нет? 50 пикселей с левой стороны остаются теми же 50-ю пикселями, тогда почему меню сползает?
Общая организация такая. Имеется главное окно, на котором в левом верхнем углу кнопка , нажав на которую всплывает net menu. На этой же главной форме присутствует прозрачная SubPanel развернутое на все окно (Fit to Pane), но кнопка поверх этой суб панели. При выборе определенного пункта меню в эту панель вставляется выбранный User Interface. Все как бы работает, только вот меню уползает, и как его привязать - не знаю.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

jane_wild писал(а): 22 апр 2021, 16:37 только я не совсем понимаю откуда берется их отсчет.
А эксперименты что дают? Если окно не на максимум, а частично, и его подвигать?
если ввести не 50? Если ввести не 0 по второй оси?

Варианта позиционирования всего два (ну или 3, если это что-то совсем внешнее):
- origin окна - точка, обычно в левом верхнем углу окна - (0;0), при скроле левый верхний угол уже не 0;0,
- абсолютная координата в осях всего экрана
- координаты в окне относительно left-top, т.е. не важно, был ли скрол.
Пару лет назад обнаружил, что win10+LabVIEW дают странную координату left-top экрана. Из-за того, что рамок у окно теперь нет, координата угла вовсе не 0;0, так что разные версии винды тоже могут давать разные эффекты.
Хотела еще спросить, а что это за настройка? Просто сейчас нет возможности проверить на RTE
у меня такой штуки вообще нет, видимо, это нововведение 19+
Ответить

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