Классы LabVIEW 8.5

Общие принципы, проектирование, модуляризация, темплейты и шаблоны
Ответить
Аватара пользователя
JohnChaban
leader
leader
Сообщения: 669
Зарегистрирован: 18 фев 2010, 13:26
Версия LabVIEW: 2015,2016
Откуда: Город Сосновый Бор Ленинградская Область
Контактная информация:

Классы LabVIEW 8.5

Сообщение JohnChaban »

Добрый день
Интересует вопрос:
Создается Класс (BaseClass).
В элементе BaseClass.ctl формируется элемент, вид которого приведен на рисунке ниже.
Формируется прибор лицевая панель которого (Front Panel) состоится из множества иэлементов
( BaseClass.ctl).
Как и можно ли сделать так чтобы поменять свойство элемента (BaseClass.ctl) и оно изменилось на
приборе автоматически.
Тоесть например я добавляю красный квадрат BaseClass.ctl и оно аатоматически добаляется в элементы
прибора.
Можно ли сделать так.
Вид класса проекта приведен ниже.
Заранее спасибо.
Вложения
class_ctl.jpg
class_ctl.jpg (39.11 КБ) 9496 просмотров
project_Class.jpg
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: Классы LabVIEW 8.5

Сообщение Konstantin Sumenko »

Strict Type Definition в определении типа элемента. Advanced->Customise. Потом его в класс.
Аватара пользователя
JohnChaban
leader
leader
Сообщения: 669
Зарегистрирован: 18 фев 2010, 13:26
Версия LabVIEW: 2015,2016
Откуда: Город Сосновый Бор Ленинградская Область
Контактная информация:

Re: Классы LabVIEW 8.5

Сообщение JohnChaban »

не совсем понятно.
Можно поподробнее.
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: Классы LabVIEW 8.5

Сообщение Konstantin Sumenko »

Сейчас под рукой нет LV. Объясню так. Если тебе нужно, чтобы св-ва элемента при изменении его в одном месте отображались везде где он используется, то нужно указать его тип как type def (strict type def для учета косметических деталей). Это делается в режиме customize (правой кнопкой на элементе -> Advanced-> Customize). Далее под меню есть выбор выпадающий контрол где по умолчанию стоит "Control"- выбери вместо этого strict type def. Сохрани этот контрол. И далее используй именно его.
Аватара пользователя
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: Классы LabVIEW 8.5

Сообщение mzu2006 »

Может я чего не понял, но то, как отображается объект класса на передней панели определяется его иконкой, в :labview: классе нет публичных элементов. Т.е. отображение надо делать отдельно от класса.
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: Классы LabVIEW 8.5

Сообщение Konstantin Sumenko »

Я понял, что элемент, вставленный как объект класса используется потом на лицевой панели.
Аватара пользователя
JohnChaban
leader
leader
Сообщения: 669
Зарегистрирован: 18 фев 2010, 13:26
Версия LabVIEW: 2015,2016
Откуда: Город Сосновый Бор Ленинградская Область
Контактная информация:

Re: Классы LabVIEW 8.5

Сообщение JohnChaban »

Ну я хотел бы сделать так чтобы например:
Есть кластер, в нем множество элементов одного типа.
Чтобы каждый раз не переделивать большой кластер можно же изменить свойства в одном месте и распространить его на другие элементы такого же типа.
Если можно сделать без класса то можно без класса.
Просто как в с++ делается класс а потом в одном месте меняются его свойтсва и распространяются на элеменнты которые используют этот класс.
Аватара пользователя
Chupakabra

Tutorials
professional
professional
Сообщения: 360
Зарегистрирован: 21 янв 2009, 10:50
Награды: 1
Версия LabVIEW: 2015
Откуда: Москва
Поблагодарили: 4 раза
Контактная информация:

Re: Классы LabVIEW 8.5

Сообщение Chupakabra »

mzu2006 писал(а):Может я чего не понял, но то, как отображается объект класса на передней панели определяется его иконкой, в :labview: классе нет публичных элементов. Т.е. отображение надо делать отдельно от класса.
Я так понимаю, что с помощью классов нельзя управлять окнами и контролами на них. Т.е. классы могут оперировать долько данными, а графика должна идти отдельно?

p.s. зачем внутри класса можно добавлять контролы и что дает назначение им типа доступа (области видимости)?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Классы LabVIEW 8.5

Сообщение Eugen Graf »

Каждый контрол уже является классом со своими Properties и Methods, есль хочешь, можешь упаковать контрол в самодельный Wrapper Class.
Аватара пользователя
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: Классы LabVIEW 8.5

Сообщение mzu2006 »

В :labview: есть несколько иерархий классов, они не пересекаются.
Eugen Graf писал(а):Каждый контрол уже является классом со своими Properties и Methods
Это классы иерархии VIServer (GObject). Его можно обернуть в
Eugen Graf писал(а):самодельный Wrapper Class.
это уже LVOOP класс - т.е. библиотека lvlib (инкапсуляция), с наследованием и полиморфизмом.

ТС имел в виду класс LVOOP. На передней панели он отображается как иконка, и Konstantin Sumenko был абсолбтно прав предложив воспользоваться Strict typedef.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Модели программирования»