Перейти к основному содержимому
Версия: 7.0

Расширение форм

Техника расширения форм позволяет разработчику расширять структуру формы, созданной в другом модуле, — добавлять новые объекты, отображаемые для них свойства и действия, фильтры и сортировки, а также дополнять элементы, уже объявленные на форме. Кроме того, из другого модуля можно настроить дизайн формы.

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

Добавляемый объект, свойство или действие можно разместить в выбранной позиции относительно уже имеющихся на форме — до или после конкретного из них, либо в начале или в конце. Для объектов эта позиция задаёт их место в порядке групп объектов формы; от этого порядка зависят группа отображения свойства и группа объектов, к которой применяется фильтр.

Язык

Для того, чтобы вместо создания новой формы расширить структуру уже существующей, необходимо использовать инструкцию EXTEND FORM.

Примеры

CLASS ItemGroup;
name = DATA ISTRING[100] (ItemGroup);

itemGroup = DATA ItemGroup (Item);

EXTEND FORM items
PROPERTIES(i) NEWSESSION DELETE // добавляем на форму кнопку удаления

OBJECTS g = ItemGroup BEFORE i // добавляем на форму объект группы товаров перед товаром
PROPERTIES(g) READONLY name
// если бы объект был добавлен после объекта с товарами, то фильтрация
// шла бы по группе товаров, а не по товарам
FILTERS itemGroup(i) == g
;