В SimInTech имеется возможность сделать добавление, отображение и использование свойств блока
максимально удобным и гибким.
Для этого имеются следующие возможности:
Добавление и удаление свойств и изменение параметров (типа данных, имени, названия и
т.д.) - осуществляется с помощью окна "Изменить блок", вызвать которое можно выделив
блок левой кнопкой мыши и выполнив команду главного меню Правка → Изменить
блок.
Рис. 1. Окно редактирования свойств блокаОкно состоит из области списка свойств (1), где каждому свойству соответствует
строка с характеристиками (Название, Имя, Тип данных...). С помощью панели кнопок (2)
производится добавление, удаление, копирование/вставка и изменение порядка свойств в
списке. Отдельно стоит выделить такую характеристику свойства, как скрипт "Действие" (3),
в котором можно формировать команды, выполняемые при изменении значения свойства.
Скрытие свойств, в том числе динамически, в зависимости от контекста. Каждый блок
имеет текстовое свойство "Список невидимых свойств" (InvisibleProps) на вкладке Общие.
Свойства, имена которых формируют данный список, скрываются из окна свойств блока. При
этом они продолжают быть доступны для считывания из расчетного ядра и скриптового языка.
Формирование списка невидимых свойств может происходить как вручную (путем перечисления
через разделитель имен скрываемых свойств), так и в автоматическом режиме, из скрипта
блока или из скрипта "Действие", в зависимости от некоторых условий. При этом формируется
команда присвоения свойству InvisibleProps списка скрываемых свойств в текстовом виде.
Рассмотрим пример подобного скрипта для блока с тремя вещественными свойствами (prop_1,
prop_2,
prop_3):
ONAPPLYSCRIPTifself.prop_1 = 0 thenself.InvisibleProps = "";
if (self.prop_1 = 1) or (self.prop_1 = 2) thenself.InvisibleProps = "prop_2;prop_3;";
ENDSCRIPTREFRESH
Данный
скрипт, будучи записан в поле "Действие" некоторого свойства (например
prop_1), обеспечивает скрытие свойств prop_2 и
prop_3 в том случае, если prop_1 равно нулю. Префикс
self перед именем свойства обозначает, что данное свойство относится к
тому же объекту, которому принадлежит скрипт (т.е. к блоку). Нахождение данного скрипта
внутри секции onapplyscript обеспечивает его выполнение каждый раз при изменении
значения свойства. Ключевое свойство REFRESH производит переинициализацию списка
свойств.
Формирование динамического списка выбора. С помощью системной переменной
dynamic_property_items можно формировать список выбора значений
свойства. Рассмотрим соответствующий пример для блока с двумя текстовыми свойствами
(property1,
property2):
Данный
скрипт, будучи записан в поле "Действие" свойства property1, формирует
для него 2 варианта выбора (ААА и БББ). При выборе одного из вариантов происходит
присвоение свойству property2 текстовое значение, зависящее от выбранного
варианта. Префикс self перед именем свойства, как и в предыдущем примере,
обозначает, что данное свойство относится к тому же объекту, которому принадлежит скрипт
(т.е. к блоку). Скрипт внутри секции onitemsscript
обеспечивает выбор из нескольких вариантов.
Группировка нескольких свойств в виде дерева. Для выделения нескольких свойств в
группу с возможностью ее сворачивания и разворачивания в скрипте "Действие" каждого
свойства можно использовать ключевое слово group, после которого
необходимо указать имя группы, в состав которой должно входить свойство, которому
принадлежит скрипт. Для формирования более глубокой вложенности, после имени группы
ставится знак "|" (вертикальная черта) и указывается имя группы более глубокой
вложенности, где должно располагаться свойство. Например для свойства, которое должно быть
расположено в структуре "Параметры блока → Порядок байтов" скрипт "Действие" будет
выглядеть
так:
expandedgroup Параметры блока|Порядок байтов
Опциональное
ключевое слово expanded можно использовать в случае, если данная
структура должна быть по умолчанию развернутой. Если слово expanded
имеется в скрипте хотя бы одного свойства на данном уровне вложенности, то весь уровень
будет по умолчанию развернутым.
Рис. 2. Свойства блока, оформленные в виде дерева
Выполнение произвольного скрипта для свойства по нажатию кнопки. Для каждого
свойства можно добавить кнопку, по нажатию на которую будет выполняться произвольный
скрипт.
Рис. 3. Кнопка выполнения произвольного скрипта для свойстваКнопка появляется автоматически, если в скрипте "Действие" соответствующего свойства
имеется секция onbuttonscript. Код, выполняемый по нажатию на кнопку, должен
находиться внутри данной секции. Эта возможность может использоваться, например, для
вызова произвольной формы редактирования свойства (содержащей шкалу выбора значения или
настройки распределения значений для массива и т.д.) или выполнения функции
автоматизированного расчета значения свойства. Соответствующий пример заполнения скрипта
действия будет выглядеть следующим
образом:
ONBUTTONSCRIPT// Вот так можно подключить сюда произвольную форму визуальной настройки
// которая находится в менеджере данныхshowcontrolform(self, "control:Регулировка параметра");
ENDSCRIPT