Инструкция FORM
Инструкция FORM
- создание формы.
Синтаксис
FORM name [caption] formOptions
formBlock1
...
formBlockN
;
После указания имени и заголовка формы в произвольном порядке указываются опции формы formOptions
:
IMAGE path
AUTOREFRESH period
После опций формы описываются в произвольном порядке блоки формы formBlock1 ... formBlockN
:
OBJECTS ...
TREE ...
PROPERTIES ...
FILTERS ...
[EXTEND] FILTERGROUP ...
ORDERS ...
EVENTS ...
REPORT propertyExpression
FORMEXTID extID
EDIT className OBJECT objectName
LIST className OBJECT objectName
Описание
Инструкция FORM
объявляет новую форму и добавляет ее в текущий модуль. Кроме того эта инструкция позволяет описать структуру формы, а также ее статичное и частично интерактивное (за исключением дизайна формы) представление. В начале инструкции задаются имя и заголовки, затем указываются опции формы, а затем объявление содержит произвольное количество блоков, описывающих структуру формы. Их можно использовать в любом порядке, при условии что каждый блок объявляется позже блоков, элементы которых он использует. Каждый блок может использоваться произвольное количество раз.
Параметры
name
Имя формы. Простой идентификатор. Имя должно быть уникально в пределах текущего пространства имен.
caption
Заголовок формы. Строковый литерал. Если заголовок не задан, то заголовком формы будет являться ее имя.
Опции формы (formOptions
)
IMAGE path
Указание относительного пути к файлу с картинкой, которая будет отображаться в качестве иконки формы.
path
Путь к файлу. Строковый литерал. Путь указывается относительно каталога
images
.
AUTOREFRESH period
Указание периода автоматического обновления формы через интервал времени. Если опция не задана, то форма автоматически обновляться не будет. deprecated since version 5, используйте
EVENTS ON SCHEDULE refresh()
period
Пeриод времени в секундах. Целочисленный литерал.
Блоки формы (formBlock1 ... formBlockN
)
OBJECTS ...
Добавляет объекты на форму. Синтаксис блока объектов.
TREE ...
Добавляет дерево объектов на форму. Синтаксис блока дерева объектов.
PROPERTIES ...
Добавляет свойства и действия на форму. Синтаксис блока свойств и действий.
FILTERS ...
Добавляет фиксированные фильтры на форму. Синтаксис блока фиксированных фильтров.
[EXTEND] FILTERGROUP ...
Добавляет группу фильтров на форму либо расширяет существующую. Синтаксис блока группы фильтров.
ORDER ...
Добавляет сортировки на форму. Синтаксис блока сортировок.
EVENTS ...
Устанавливает действия, выполняемые при определенных событиях. Синтаксис блока событий.
FORMEXTID extID
Указание имени, которое будет использоваться для экспорта / импорта этой формы. Используется только в структурированном представлении.
extId
Строковый литерал.
REPORT propertyExpression
Указание свойства, значение которого будет использовано в качестве имени файла отчета для пустой группы. В качестве параметров можно использовать имена уже объявленных объектов на форме. Предполагается, что значения этих объектов будут переданы при открытии формы в печатном представлении (если этого не будет сделано, они будут считаться равными
NULL
).propertyExpression
EDIT сlassName OBJECT objectName
Устанавливает текущую форму в качестве формы редактирования объектов указанного класса.
className
Имя пользовательского класса, при редактировании объектов которого будет вызываться описываемая форма. Задается составным идентификатором.
objectName
Имя объекта формы, который будет использоваться для редактирования. Задается простым идентификатором.
LIST сlassName OBJECT objectName
Устанавливает текущую форму в качестве формы выбора объекта указанного класса.
className
Имя пользовательского класса, для выбора объекта которого будет вызываться описываемая форма. Задается составным идентификатором.
objectName
Имя объекта формы, текущее значение которого будет использоваться в качестве выбираемого объекта. Задается простым идентификатором.
Примеры
CLASS Document;
// объявляем форму Документы
FORM documents 'Документы'
// Добавляем один объект класса Document, по этому имени объект будет доступен в операторах
// DESIGN, SHOW, EXPORT, DIALOG и др.
OBJECTS d = Document
// ... добавляем свойства и фильтры на форму
// помечаем что данная форма должна использоваться, когда необходимо выбрать документ,
// при этом объект d должен использоваться как возвращаемое значение
LIST Document OBJECT d
;
CLASS Item;
// объявляем форму Товар
FORM item 'Товар'
// добавляем объект класса Item и помечаем, что он должен отображаться в панель
// (то есть видимо только одно значение)
OBJECTS i = Item PANEL
// ... добавляем свойства и фильтры на форму
// помечаем что данная форма должна использоваться, когда необходимо добавлять или редактировать товар
EDIT Item OBJECT i
;
// объявляем форму со списком Товаров
FORM items 'Товары'
OBJECTS i = Item
// ... добавляем свойства и фильтры на форму
// добавляем кнопки, которые будут создавать и редактировать товар, используя форму item
PROPERTIES(i) NEWSESSION NEW, EDIT
;
CLASS Invoice;
CLASS InvoiceDetail;
// объявляем форму печати инвойса
FORM printInvoice
OBJECTS i = Invoice // добавляем объект класса инвойс, для которого будет идти печать
// ... добавляем свойства и фильтры на форму
;
// разбиваем определение формы на две инструкции (вторую инструкцию можно перенести в другой модуль)
EXTEND FORM printInvoice
// добавляем строки инвойса, каждая из которых будет использоваться в отчете в качестве детализации
OBJECTS d = InvoiceDetail
// ... добавляем свойства и фильтры на форму
;
// объявляем действие , при выполнении которого будет открываться форма печати инвойса
print (Invoice invoice) { PRINT printInvoice OBJECTS i = invoice; }