Собственный элемент для размещения на фронтальной панеле
-
- beginner
- Сообщения: 27
- Зарегистрирован: 20 июл 2017, 12:35
- Версия LabVIEW: 14
- Контактная информация:
Собственный элемент для размещения на фронтальной панеле
Добрый день! Подскажите, пожалуйста.
Есть несколько tabcontrol по две страницы. Каждую страницу нужно переключать в зависимости от нажатия кнопок. Сам код для переключения страниц очень маленький, но когда размещаешь в главной программе порядка 10 контролов, код получается плохо читаемым. Есть какой нибудь вариант реализовать что то вроде cluster'a в для подобных случаев, то есть создать свой элемент(в данном случае tabcontrol с двумя страницами, индикатором а так же кнопкой переключения), чтобы при добавлении в основую программу на front panel не загромождать все кодом элемента, а получать только свойства.
Есть несколько tabcontrol по две страницы. Каждую страницу нужно переключать в зависимости от нажатия кнопок. Сам код для переключения страниц очень маленький, но когда размещаешь в главной программе порядка 10 контролов, код получается плохо читаемым. Есть какой нибудь вариант реализовать что то вроде cluster'a в для подобных случаев, то есть создать свой элемент(в данном случае tabcontrol с двумя страницами, индикатором а так же кнопкой переключения), чтобы при добавлении в основую программу на front panel не загромождать все кодом элемента, а получать только свойства.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Собственный элемент для размещения на фронтальной панеле
Три варианта
1. вы создаете массив Refoв ваших табов (ПКМ на контроле->Create->Reference, далее обращаетесь к их свойствам по индексу
2. вы берете текущий список Refов на вашей панели и в них ищете нужный вам (например поиском по Label)
3. вы кидаете на прозрачный таб ваши маленькие табы и обращаетесь к текущему списку Refов на вкладке, в отличие от п.2 в этом списке будут только ваши табы и к ним можно обращаться по индексу.
Но первый контролировать лучше всего и неожиданностей (в виде подвисания из-за некорректного поиска в массивах) не будет
и да, динамически создать контрол и поместить его на переднюю панель штатными средствами нельзя.
1. вы создаете массив Refoв ваших табов (ПКМ на контроле->Create->Reference, далее обращаетесь к их свойствам по индексу
2. вы берете текущий список Refов на вашей панели и в них ищете нужный вам (например поиском по Label)
3. вы кидаете на прозрачный таб ваши маленькие табы и обращаетесь к текущему списку Refов на вкладке, в отличие от п.2 в этом списке будут только ваши табы и к ним можно обращаться по индексу.
Но первый контролировать лучше всего и неожиданностей (в виде подвисания из-за некорректного поиска в массивах) не будет
и да, динамически создать контрол и поместить его на переднюю панель штатными средствами нельзя.
-
- beginner
- Сообщения: 27
- Зарегистрирован: 20 июл 2017, 12:35
- Версия LabVIEW: 14
- Контактная информация:
Re: Собственный элемент для размещения на фронтальной панеле
Попробовал реализовать вашу идею но немного в другой форме, вместо создания массива ссылок создал кластер ссылок всех tabControl. После чего попытался через функцию unbundle by name по имени выбрать нужный ref, и через свойство value выбрать нужную page. Но во время выполнения этой части кода возникает ошибка "object reference is invalid". Не могу понять с чем это может быть связанно?Borjomy_1 писал(а):Три варианта
1. вы создаете массив Refoв ваших табов (ПКМ на контроле->Create->Reference, далее обращаетесь к их свойствам по индексу
2. вы берете текущий список Refов на вашей панели и в них ищете нужный вам (например поиском по Label)
3. вы кидаете на прозрачный таб ваши маленькие табы и обращаетесь к текущему списку Refов на вкладке, в отличие от п.2 в этом списке будут только ваши табы и к ним можно обращаться по индексу.
Но первый контролировать лучше всего и неожиданностей (в виде подвисания из-за некорректного поиска в массивах) не будет
и да, динамически создать контрол и поместить его на переднюю панель штатными средствами нельзя.
-
- professor
- Сообщения: 3407
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Собственный элемент для размещения на фронтальной панеле
а как создаётся кластер?engineer_7 писал(а):Borjomy_1 писал(а):ссылок создал кластер ссылок всех tabControl. После чего попытался через функцию unbundle by name по имени выбрать нужный ref, и через свойство value выбрать нужную page. Но во время выполнения этой части кода возникает ошибка "object reference is invalid". Не могу понять с чем это может быть связанно?
-
- beginner
- Сообщения: 27
- Зарегистрирован: 20 июл 2017, 12:35
- Версия LabVIEW: 14
- Контактная информация:
Re: Собственный элемент для размещения на фронтальной панеле
В общем, вероятнее всего ошибки были с именами переменных в кластере, сейчас реализовал все в отдельной программе, все работает.
-
- beginner
- Сообщения: 27
- Зарегистрирован: 20 июл 2017, 12:35
- Версия LabVIEW: 14
- Контактная информация:
Re: Собственный элемент для размещения на фронтальной панеле
Но вот проблема, при добавлении такого же кода в мой проект, при нажатии на кнопку при выполнении команды смены значения индикатора, а так же страницы tabControl, выскакивает окно подприбора(того самого куда я отправляю значение из Enum), и открывшаяся программа ждет нажатия кнопки "Run" для продолжения, но после нажатия на данную кнопку, никаких изменений с моими элементами в главной программе не происходит. Какие причины могут быть данной ошибки?
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Собственный элемент для размещения на фронтальной панеле
Ну она скорее всего уже выполнилась один раз. Проверьте свойства VI Properties/Window Appearance/Show Front Panel When Called, если галка стоит, то при каждом вызове будет показываться это окно.
-
- beginner
- Сообщения: 27
- Зарегистрирован: 20 июл 2017, 12:35
- Версия LabVIEW: 14
- Контактная информация:
Re: Собственный элемент для размещения на фронтальной панеле
Не выполняется, просто сразу открывается, и все, кликаешь "Run", срабатывает, после чего снова переходит в режим ожидания..
- Вложения
-
- temp44.jpg (9.91 КБ) 7896 просмотров
-
- beginner
- Сообщения: 27
- Зарегистрирован: 20 июл 2017, 12:35
- Версия LabVIEW: 14
- Контактная информация:
Re: Собственный элемент для размещения на фронтальной панеле
Свойства проверил, все установлено так, как вы написали.Borjomy_1 Сегодня, 14:02
Ну она скорее всего уже выполнилась один раз. Проверьте свойства VI Properties/Window Appearance/Show Front Panel When Called, если галка стоит, то при каждом вызове будет показываться это окно.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Собственный элемент для размещения на фронтальной панеле
Картинка означает, что VI находится в связке с работающими в данный момент другими VI и его нельзя редактировать.
Как именно?Свойства проверил, все установлено так, как вы написали.
-
- beginner
- Сообщения: 27
- Зарегистрирован: 20 июл 2017, 12:35
- Версия LabVIEW: 14
- Контактная информация:
Re: Собственный элемент для размещения на фронтальной панеле
Borjomy_1 писал(а):Картинка означает, что VI находится в связке с работающими в данный момент другими VI и его нельзя редактировать.Как именно?Свойства проверил, все установлено так, как вы написали.
-
- beginner
- Сообщения: 27
- Зарегистрирован: 20 июл 2017, 12:35
- Версия LabVIEW: 14
- Контактная информация:
Re: Собственный элемент для размещения на фронтальной панеле
Не знаю с чем была связанна ошибка, в общем создал точно такой же ВПП, и все заработало.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение