Программное позиционирование элементов

Обсуждение, связанное с разработкой ПО верхнего уровня
Ответить
CTAXAH0B
interested
interested
Сообщения: 4
Зарегистрирован: 01 июл 2011, 10:25
Версия LabVIEW: 9.0.1
Контактная информация:

Программное позиционирование элементов

Сообщение CTAXAH0B »

Добрый День.
Может быть уже кто то сталкивался уже с этим. Во время работы программы, считываются сигналы с множества каналов. Взависимости от колличества каналов, я хотел бы создавать соотвественное колличество напрмиер CheckBox и каждой из них задавать координаты позиционирования на главной панели. Я пробывал создать сначало массив для CheckBox и удаётся изменят размеры массива во время работы программы, но к сожалению не удаётся задавать им координаты в поле массива, что бы они имели определённое расстояние к друг другу. Пробывал так же со Scripting работать и создавать CheckBoxes через for i=0... и соотвественно позиционировать их по желанию, но если программа уже работает, то Scripting отказывается что то изменять.
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Программное позиционирование элементов

Сообщение FireFly »

Можете создать на FP заранее чекбоксы для максимального количества каналов. Затем просто делать их видимыми/невидимыми.
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
CTAXAH0B
interested
interested
Сообщения: 4
Зарегистрирован: 01 июл 2011, 10:25
Версия LabVIEW: 9.0.1
Контактная информация:

Re: Программное позиционирование элементов

Сообщение CTAXAH0B »

Я тоже думал об этом. Но мне кажется это не особо красивое решение...
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Программное позиционирование элементов

Сообщение FireFly »

Скриптинг это вообще не вариант.
Массив можно сделать, и равное расстояние между элементами можно организовать, но на FP растянуть массив до максимального количества элементов всё-равно придется. В ходе работы программы все лишние элементы массива будут серыми.
Не вижу ничего плохого в варианте с невидимыми элементами. Можно всё красиво организовать через массив Reference.
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
CTAXAH0B
interested
interested
Сообщения: 4
Зарегистрирован: 01 июл 2011, 10:25
Версия LabVIEW: 9.0.1
Контактная информация:

Re: Программное позиционирование элементов

Сообщение CTAXAH0B »

Скриптинг мне казался вариантом, так как больше возможностей предлагает. Но как уже выяснил он не хочет что то изменять елси vi уже работает. Про массив с References не совсем понял, можно пожалуйста по подробнее :drink: .
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Программное позиционирование элементов

Сообщение FireFly »

Допустим у вас есть на FP 32 чекбокса (максимальное кол-во каналов).
Вы даете им Label:
CH1, CH2, CH3 и т.д. От пользователя эти Label можно скрыть.
Берете массив Reference на все элементы FP. Можно сделать попроще если у вас нет Tab панелей и прочего.
Затем делаете поиск в массиве всех Controls, у которых Label начинается с CH. Собираете их в массив по номеру следующему за CH. А также делаете To More Specific Class.
Получается ИМХО несколько красивее чем собирать References в массив вручную.
Ну и дальше с этим массивом работаете. Стало N каналов -> Все элементы из массива с 0 до N-1 делаете Visible через Property Node.
Помимо прочего данный подход легко масштабируется. Если вдруг каналов станет больше - создадите ещё несколько чекбоксов с нужными Label.
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
CTAXAH0B
interested
interested
Сообщения: 4
Зарегистрирован: 01 июл 2011, 10:25
Версия LabVIEW: 9.0.1
Контактная информация:

Re: Программное позиционирование элементов

Сообщение CTAXAH0B »

Хорошо, спасбио, щас спробую!
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Программное позиционирование элементов

Сообщение mzu2006 »

Вариант: соберите константу references на все нужные элементы FP с помошью скриптинга и вставьте её в блок диаграмму. Своего рода препроцессор. Можно добавить в pre-build step. Со скриптингом есть очень удобная функция: Traverse for GObjects - не надо делать рекурсии.

Достоинство: программа быстрее стартует, занимает чуть меньше места
Недостаток: компиляция осуществляется дольше, при изменении нужных индикаторов на FP и до компиляции придётся запускать "препроцессор" вручную.

Имелось в виду что-то такое (перед окончательным употреблением обработать напильником)
Вложения
CreateArrayOfReferences.vi
(44.71 КБ) 206 скачиваний
BD withChekboxes.vi
(7.17 КБ) 192 скачивания
Lem500
interested
interested
Сообщения: 2
Зарегистрирован: 04 окт 2009, 19:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Программное позиционирование элементов

Сообщение Lem500 »

Программное размещение компонентов по моему скромному мнению имеет смысл, только если количество индикаторов приближается или превышает 100. Это могут быть информационные панели, многоканальные измерители и т.д. При разработке такой панели пришлось разработать алгоритм размещения элементов. Кому интересно пользуйтесь.
Вложения
Размещение идикаторов+ Folder.rar
LV 8.5
(125.08 КБ) 154 скачивания
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Программное позиционирование элементов

Сообщение mzu2006 »

Я бы отключил обновление FP во время изменения совокупности индикаторов.
Lem500
interested
interested
Сообщения: 2
Зарегистрирован: 04 окт 2009, 19:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Программное позиционирование элементов

Сообщение Lem500 »

В реальной системе отключение FP не будет заметно т.к ВСЕ измеренные параметры не изменяют своего значения (и не должны) за каждую итерацию
Ответить

Вернуться в «Лицевая панель»