Собственный элемент для размещения на фронтальной панеле

Простейшие вопросы в области инженерной разработки
Ответить
engineer_7
beginner
beginner
Сообщения: 27
Зарегистрирован: 20 июл 2017, 12:35
Версия LabVIEW: 14
Контактная информация:

Собственный элемент для размещения на фронтальной панеле

Сообщение engineer_7 »

Добрый день! Подскажите, пожалуйста.

Есть несколько tabcontrol по две страницы. Каждую страницу нужно переключать в зависимости от нажатия кнопок. Сам код для переключения страниц очень маленький, но когда размещаешь в главной программе порядка 10 контролов, код получается плохо читаемым. Есть какой нибудь вариант реализовать что то вроде cluster'a в :labview: для подобных случаев, то есть создать свой элемент(в данном случае tabcontrol с двумя страницами, индикатором а так же кнопкой переключения), чтобы при добавлении в основую программу на front panel не загромождать все кодом элемента, а получать только свойства.
Вложения
Тот самый код
Тот самый код
А так выглядит элемент на front panel
А так выглядит элемент на front panel
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Собственный элемент для размещения на фронтальной панеле

Сообщение Borjomy_1 »

Три варианта
1. вы создаете массив Refoв ваших табов (ПКМ на контроле->Create->Reference, далее обращаетесь к их свойствам по индексу
2. вы берете текущий список Refов на вашей панели и в них ищете нужный вам (например поиском по Label)
3. вы кидаете на прозрачный таб ваши маленькие табы и обращаетесь к текущему списку Refов на вкладке, в отличие от п.2 в этом списке будут только ваши табы и к ним можно обращаться по индексу.
Но первый контролировать лучше всего и неожиданностей (в виде подвисания из-за некорректного поиска в массивах) не будет
и да, динамически создать контрол и поместить его на переднюю панель штатными средствами нельзя.
Вложения
Методы доступа к множеству контролов.png
engineer_7
beginner
beginner
Сообщения: 27
Зарегистрирован: 20 июл 2017, 12:35
Версия LabVIEW: 14
Контактная информация:

Re: Собственный элемент для размещения на фронтальной панеле

Сообщение engineer_7 »

Borjomy_1 писал(а):Три варианта
1. вы создаете массив Refoв ваших табов (ПКМ на контроле->Create->Reference, далее обращаетесь к их свойствам по индексу
2. вы берете текущий список Refов на вашей панели и в них ищете нужный вам (например поиском по Label)
3. вы кидаете на прозрачный таб ваши маленькие табы и обращаетесь к текущему списку Refов на вкладке, в отличие от п.2 в этом списке будут только ваши табы и к ним можно обращаться по индексу.
Но первый контролировать лучше всего и неожиданностей (в виде подвисания из-за некорректного поиска в массивах) не будет
и да, динамически создать контрол и поместить его на переднюю панель штатными средствами нельзя.
Попробовал реализовать вашу идею но немного в другой форме, вместо создания массива ссылок создал кластер ссылок всех tabControl. После чего попытался через функцию unbundle by name по имени выбрать нужный ref, и через свойство value выбрать нужную page. Но во время выполнения этой части кода возникает ошибка "object reference is invalid". Не могу понять с чем это может быть связанно?
Artem.spb

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

Re: Собственный элемент для размещения на фронтальной панеле

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

engineer_7 писал(а):
Borjomy_1 писал(а):ссылок создал кластер ссылок всех tabControl. После чего попытался через функцию unbundle by name по имени выбрать нужный ref, и через свойство value выбрать нужную page. Но во время выполнения этой части кода возникает ошибка "object reference is invalid". Не могу понять с чем это может быть связанно?
а как создаётся кластер?
engineer_7
beginner
beginner
Сообщения: 27
Зарегистрирован: 20 июл 2017, 12:35
Версия LabVIEW: 14
Контактная информация:

Re: Собственный элемент для размещения на фронтальной панеле

Сообщение engineer_7 »

В общем, вероятнее всего ошибки были с именами переменных в кластере, сейчас реализовал все в отдельной программе, все работает.
Вложения
Главный VI
Главный VI
Так выглядит подприбор куда мы отправляем команду управления
Так выглядит подприбор куда мы отправляем команду управления
engineer_7
beginner
beginner
Сообщения: 27
Зарегистрирован: 20 июл 2017, 12:35
Версия LabVIEW: 14
Контактная информация:

Re: Собственный элемент для размещения на фронтальной панеле

Сообщение engineer_7 »

Но вот проблема, при добавлении такого же кода в мой проект, при нажатии на кнопку при выполнении команды смены значения индикатора, а так же страницы tabControl, выскакивает окно подприбора(того самого куда я отправляю значение из Enum), и открывшаяся программа ждет нажатия кнопки "Run" для продолжения, но после нажатия на данную кнопку, никаких изменений с моими элементами в главной программе не происходит. Какие причины могут быть данной ошибки?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Собственный элемент для размещения на фронтальной панеле

Сообщение Borjomy_1 »

Ну она скорее всего уже выполнилась один раз. Проверьте свойства VI Properties/Window Appearance/Show Front Panel When Called, если галка стоит, то при каждом вызове будет показываться это окно.
engineer_7
beginner
beginner
Сообщения: 27
Зарегистрирован: 20 июл 2017, 12:35
Версия LabVIEW: 14
Контактная информация:

Re: Собственный элемент для размещения на фронтальной панеле

Сообщение engineer_7 »

Не выполняется, просто сразу открывается, и все, кликаешь "Run", срабатывает, после чего снова переходит в режим ожидания..
Вложения
temp44.jpg
temp44.jpg (9.91 КБ) 7748 просмотров
engineer_7
beginner
beginner
Сообщения: 27
Зарегистрирован: 20 июл 2017, 12:35
Версия LabVIEW: 14
Контактная информация:

Re: Собственный элемент для размещения на фронтальной панеле

Сообщение engineer_7 »

Borjomy_1 Сегодня, 14:02

Ну она скорее всего уже выполнилась один раз. Проверьте свойства VI Properties/Window Appearance/Show Front Panel When Called, если галка стоит, то при каждом вызове будет показываться это окно.
Свойства проверил, все установлено так, как вы написали.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Собственный элемент для размещения на фронтальной панеле

Сообщение Borjomy_1 »

Картинка означает, что VI находится в связке с работающими в данный момент другими VI и его нельзя редактировать.
Свойства проверил, все установлено так, как вы написали.
Как именно?
engineer_7
beginner
beginner
Сообщения: 27
Зарегистрирован: 20 июл 2017, 12:35
Версия LabVIEW: 14
Контактная информация:

Re: Собственный элемент для размещения на фронтальной панеле

Сообщение engineer_7 »

Borjomy_1 писал(а):Картинка означает, что VI находится в связке с работающими в данный момент другими VI и его нельзя редактировать.
Свойства проверил, все установлено так, как вы написали.
Как именно?
Вложения
winprop.jpg
engineer_7
beginner
beginner
Сообщения: 27
Зарегистрирован: 20 июл 2017, 12:35
Версия LabVIEW: 14
Контактная информация:

Re: Собственный элемент для размещения на фронтальной панеле

Сообщение engineer_7 »

Не знаю с чем была связанна ошибка, в общем создал точно такой же ВПП, и все заработало.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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