Инструкция DESIGN
Инструкция DESIGN - изменение дизайна формы.
Синтаксис
Синтаксис представляет собой вложенные друг в друга блоки инструкций дизайна. Внешний блок, начинающийся с ключевого слова DESIGN, определяет форму, дизайн которой будет изменяться:
DESIGN formName [caption] [CUSTOM] {
designStatement1
...
designStatementN
}
Каждый designStatement описывает одну инструкцию дизайна. Инструкции дизайна бывают следующих типов:
NEW name [insertPos] [{...}];
MOVE selector [insertPos] [{...}];
selector [{...}];
REMOVE selector;
propertyName = value;
Первые три инструкции: создание (NEW), перемещение (MOVE) и редактирование могут в свою очередь содержать вложенные блоки инструкций дизайна. Инструкции дизайна удаление (REMOVE) и изменение значения свойства (=) являются простыми одиночными инструкциями. Каждая инструкция дизайна должна завершаться точкой с запятой, если в ней не содержится вложенный блок инструкций.
Каждый selector может быть одного из следующих типов:
componentName
PROPERTY(formPropertyName)
FILTER(filterName)
FILTERGROUP(filterGroupName)
PARENT(selector)
GROUP([propertyGroupSelector][,groupObjectTreeSelector])
noGroupObjectTreeContainerType
groupObjectTreeContainerType(groupObjectTreeSelector)
В свою очередь, groupObjectTreeSelector может быть одного из двух видов:
groupObjectSelector
TREE treeSelector
Описание
При помощи инструкции DESIGN разработчик может управлять дизайном интерактивного представления формы путем создания, перемещения и удаления контейнеров и компонент, а также задания им определенных свойств. По умолчанию для каждой формы создается дизайн по умолчанию вместе с соответствующими контейнерами. При необходимости можно пересоздать дизайн без созданных по умолчанию контейнеров и выполненных ранее настроек. Осуществляется это с помощью ключевого слова CUSTOM.
Каждый блок инструкций дизайна, заключенный в фигурные скобки, позволяет изменять некоторый компонент и его потомков, будем называть этот компонент текущим компонентом либо текущим контейнером, если нам известно, что компонент в данной ситуации должен являться контейнером. Во внешнем блоке, идущем после ключевого слова DESIGN, текущим компонентом является главный контейнер формы BOX. Существует следующие виды инструкций дизайна:
- Инструкция создания (
NEW) позволяет создать новый контейнер, делая его потомком текущего контейнера. Текущим компонентом в блоке инструкций дизайна, содержащемся в этой инструкции, будет являться созданный контейнер. - Инструкция перемещения (
MOVE) позволяет сделать некоторый существующий компонент непосредственным потомком текущего контейнера. Предварительно этот компонент удаляется из предыдущего родительского контейнера. Текущим компонентом в блоке инструкций дизайна, содержащемся в этой инструкции, будет являться перемещаемый компонент. - Инструкция редактирования позволяет изменить указанный компонент, который должен являться потомком (не обязательно непосредственным) текущего контейнера. Текущим компонентом в блоке инструкций дизайна, содержащемся в этой инструкции, будет являться указанный элемент.
- Инструкция удаления (
REMOVE) позволяет удалить указанный компонент из иерархии компонентов. Удаляемый компонент должен являться потомком текущего контейнера. - Инструкция изменения значения свойства (
=) позволяет изменить значение указанного свойства текущего компонента.
Иерархия компонент, описываемая в рамках одной инструкции, может иметь произвольный уровень вложенности и описывать любое количество компонентов и их свойств на каждом из уровней.
Для обращения к компонентам дизайна можно использовать их имя, а также обращаться к компонентам свойств на форме (PROPERTY), родительскому компоненту (PARENT), контейнерам групп свойств (GROUP) и другим базовым компонентам / компонентам дизайна по умолчанию. К компоненту свойства, созданному предопределённым оператором работы с объектами, можно обращаться по имени оператора с его отображением на объекты, например PROPERTY(NEW(o)), PROPERTY(NEW[Order](o)), PROPERTY(EDIT(o)) или PROPERTY(DELETE(o)), если свойству не задано явное имя на форме.
Параметры
Общие параметры
-
formNameИмя изменяемой формы. Составной идентификатор.
-
captionНовый заголовок формы в интерактивном режиме отображения — заголовок главного контейнера
BOX, который и показывается как заголовок окна или закладки формы. Строковый литерал. Заголовок, зависящий от данных, задаётся не здесь, а свойствомcaptionглавного контейнера во внешнем блоке инструкций (см. свойства контейнеров). В навигаторе заголовок формы при этом не изменяется. -
nameИмя создаваемого контейнера. Простой идентификатор.
-
insertPosУказание позиции вставки или перемещения компонента. Может задаваться одним из следующих способов:
-
BEFORE selector -
AFTER selectorУказание того, что компонент должен быть добавлен или перенесен непосредственно перед (
BEFORE) или после (AFTER) указанного компонента. Указанный компонент должен быть непосредственным потомком текущего контейнера. -
FIRSTКлючевое слово, указывающее на то, что компонент должен быть добавлен или перенесен в начало списка непосредственных потомков текущего контейнера.
-
LASTКлючевое слово, указывающее на то, что компонент должен быть добавлен или перенесен в конец списка непосредственных потомков текущего контейнера. В отличие от добавления по умолчанию, компоненты, вставленные с помощью
LAST, всегда будут располагаться после всех компонентов, добавленных в порядке объявления. -
DEFAULTКлючевое слово, указывающее на то, что компонент добавляется в список непосредственных потомков текущего контейнера в порядке объявления. Является значением по умолчанию.
Контейнер
TOOLBARBOXформы добавляется в контейнерBOXформы по правиламLAST, поэтому компоненты, добавляемые в этотBOXв порядке объявления, располагаются над тулбаром. Чтобы разместить компонент под тулбаром, следует использоватьLASTилиAFTER TOOLBARBOX.
-
-
propertyNameИмя свойства компонента. Список существующих свойств перечислен в таблицах ниже.
-
valueЗначение, присваиваемое соответствующему свойству контейнера. Допустимый тип значения можно посмотреть в таблицах ниже.
Свойства компонентов
| Имя свойства | Описание | Вид значения | Значение по умолчанию | Примеры |
|---|---|---|---|---|
span | Количество ячеек линии (колонок или рядов), которое компонент занимает в контейнере с раскладкой в несколько lines (или grid) | Целочисленный литерал | 1 | 2 |
defaultComponent | Указание того, что на данный компонент должен быть выставлен фокус при инициализации формы. Может быть установлен только для одного компонента на всей форме | Дополненный логический литерал | FALSE | TRUEFALSE |
activated | Указание того, что компонент (вкладка) должен быть изначально выбран в своём контейнере с вкладками при открытии формы | Логический литерал | FALSE | TRUEFALSE |
custom | Представление, которым рисуется компонент: заданное как NULL — штатное представление платформы, а не пользовательское. Компонент, не являющийся контейнером, принимает NULL или имя компонента React — строковый литерал, соответствующий [A-Z][A-Za-z0-9_$]*; контейнер принимает и собственный дизайн (см. свойства контейнеров ниже), а свойство — свою функцию отображения (ниже). Компонент React, заданный таблице — GRID, в том числе дерева, —, системной панели инструментов (TOOLBARSYSTEM), элементам управления фильтрами (FILTERCONTROLS), группе фильтров (FILTERGROUP) или фильтру по свойству (FILTER), рисует на месте компонента то, что компонент показывает из своей группы объектов или дерева, — его строки, его кнопки, выбранный в нем фильтр, условие фильтра — (только веб-клиент), а остальная форма рисуется как обычно. Такой компонент, который ничего там не показывает, — группы в виде PANEL, панель инструментов, скрытая visible = FALSE, группа фильтров без фильтров или без объекта, — ошибка при сборке формы, и так же ошибочны таблица группы с видом списка, отличным от GRID, и таблица, в которую дизайн переносит компоненты. Компонент с собственным представлением — NULL или пользовательским, — стоящий внутри React-контейнера custom, на любой глубине под контейнерами, которые React-компонент рисует сам, сохраняет это представление, и React-компонент размещает его через <Platform name/>, а не рисует сам из своих данных (только веб-клиент); списочное свойство размещается так там, где React-компонент рисует строки его группы, где бы ни стояло само свойство. В любом другом месте компонент, которому задано NULL, рисуется там, где стоит, штатным представлением: контейнер — без заданного ему ранее пользовательского представления, свойство — без своих пользовательских функций отображения и редактирования. Вид представления группы объектов, в том числе CUSTOM, задается группе, а не ее компоненту GRID: custom у GRID(o) его не меняет. У свойства custom = NULL означает то же, что опция NOCUSTOM блока свойств, а строковый литерал — то же, что CUSTOM с функцией отображения с этим именем | NULL или строковый литерал | не задано | NULL'OrderGrid' |
fill | Аналогично свойству flex, но кроме того, если устанавливается нулевое значение, то свойство align устанавливается в START, иначе align устанавливается в STRETCH | Литерал типа NUMERIC | 0 | 1.5 |
size | Базовый размер компонента в пикселях. -1 означает, что базовый размер не задан и компонент получает размер по своему содержимому (автоматическое определение размера): таблица или дерево тогда получает высоту загруженных записей плюс заголовок вместо базового размера по умолчанию | Пара целочисленных литералов (ширина, высота) | (-1, -1); у таблицы или дерева — размер по умолчанию по lineHeight рядам и lineWidth колонкам; у главного контейнера формы, открытой окном, — измеряется при открытии (см. размер окна) | (100, 20) |
height | Базовый размер компонента по высоте в пикселях (-1 — высота по содержимому, см. size) | Целочисленный литерал | -1; у таблицы или дерева — высота по умолчанию по lineHeight рядам; у главного контейнера формы, открытой окном, — измеряется при открытии (см. размер окна) | 50 |
width | Базовый размер компонента по ширине в пикселях (-1 — ширина по содержимому, см. size) | Целочисленный литерал | -1; у таблицы или дерева — ширина по умолчанию по lineWidth колонкам; у главного контейнера формы, открытой окном, — измеряется при открытии (см. размер окна) | 20 |
flex | Коэффициент расширения. Значение свойства, аналогичного свойству CSS flex-grow. Задает насколько компонент должен расти в размерах относительно других компонентов | Литерал типа NUMERIC | 0 | 0.25 |
shrink | Разрешает компоненту сжиматься меньше своего базового размера вдоль основного направления контейнера (аналогично CSS flex-shrink) | Логический литерал | FALSE | TRUEFALSE |
alignShrink | Разрешает компоненту сжиматься меньше своего базового размера вдоль поперечного направления (выравнивания) | Логический литерал | FALSE | TRUEFALSE |
alignalignment | Способ выравнивания компонента внутри контейнера. Допустимые значения: START (В начале), CENTER (В центре), END (В конце), STRETCH (Растянуть). | Тип выравнивания | START | STRETCH |
alignCaption | При выравнивании заголовков в контейнере (alignCaptions) рисует заголовок этого компонента в общей колонке заголовков | Логический литерал | FALSE | TRUEFALSE |
overflowHorz | Поведение, когда содержимое превышает ширину компонента: auto (прокрутка при необходимости), clip, visible (CSS overflow-x) | Строковый литерал | auto | clipvisibleauto |
overflowVert | Поведение, когда содержимое превышает высоту компонента: auto (прокрутка при необходимости), clip, visible (CSS overflow-y) | Строковый литерал | auto | clipvisibleauto |
marginTop | Отступ сверху | Целочисленный литерал | 0 | 3 |
marginBottom | Отступ снизу | Целочисленный литерал | 0 | 4 |
marginLeft | Отступ слева | Целочисленный литерал | 0 | 1 |
marginRight | Отступ справа | Целочисленный литерал | 0 | 1 |
margin | Отступ. Устанавливает одинаковое значение свойствам marginTop, marginRight, marginBottom, marginLeft | Целочисленный литерал | 0 | 5 |
captionFont | Шрифт, который будет использоваться для отображения заголовка компонента | Строковый литерал | зависит от компонента | 'Tahoma bold 16''Times 12' |
font | Шрифт, который будет использоваться для отображения текста компонента, например, значения свойства, заголовка действия, текста в таблице | Выражение (строковое значение) | зависит от компонента | 'Tahoma bold 16''Times 12' |
class | CSS-классы компонента (через пробел). К главному (корневому) контейнеру формы в веб-клиенте не применяется | Выражение (строковое значение) | NULL | some-class-one some-class-two |
fontSize | Размер шрифта, который будет использоваться для отображения текста компонента | Числовой литерал | зависит от компонента | 10 |
fontStyle | Стиль шрифта, который будет использоваться для отображения текста компонента. Может содержать слова 'bold' и/или 'italic', либо пустую строку | Строковый литерал | '' | 'bold''bold italic' |
background | Цвет, который будет использоваться для отображения фона компонента | Выражение (значение класса COLOR) | NULL | #FFFFCCRGB(255, 0, 0) |
foreground | Цвет, который будет использоваться для отображения текста компонента | Выражение (значение класса COLOR) | NULL | #FFFFCCRGB(255, 0, 0) |
panelCaptionVertical | deprecated since version 6, используйте captionVertical | Логический литерал | TRUE | TRUEFALSE |
captionVertical | Указание того, что в панели необходимо рисовать заголовок компонента свойства или действия сверху от значения, а заголовок контейнера - сверху от его содержимого | Логический литерал | FALSE для свойства или действия, TRUE для контейнера | TRUEFALSE |
panelCaptionLast | deprecated since version 6, используйте captionLast | Логический литерал | FALSE | TRUEFALSE |
captionLast | Указание того, что в панели необходимо рисовать сначала значение, а потом заголовок свойства | Логический литерал | FALSE | TRUEFALSE |
panelCaptionAlignment | deprecated since version 6, используйте captionAlignmentHorz | Тип выравнивания | START | STRETCH |
captionAlignmentHorz | Способ выравнивания заголовка компонента по горизонтали. Допустимые значения: START (В начале), CENTER (В центре), END (В конце), STRETCH (Растянуть). | Тип выравнивания | START | STRETCH |
captionAlignmentVert | Способ выравнивания заголовка компонента по вертикали. Допустимые значения: START (В начале), CENTER (В центре), END (В конце), STRETCH (Растянуть). | Тип выравнивания | CENTER | STRETCH |
showIf | Указание условия, при котором компонент будет отображаться | Выражение (логическое значение) | NULL | isLeapYear(date)hasComplexity(a, b) |
Свойства контейнеров
| Имя свойства | Описание | Вид значения | Значение по умолчанию | Примеры |
|---|---|---|---|---|
caption | Заголовок контейнера. Для главного контейнера BOX — заголовок самой формы (окна или закладки) в интерактивном представлении; выражение со значением, зависящим от данных, обновляет его при их изменении, заголовок формы в навигаторе не меняется. Пустая строка равносильна NULL: заголовок не создаётся (и контейнер по умолчанию перестаёт быть collapsible) | Выражение (строковое значение) | NULL | 'Заголовок''Заказ ' + number(o) |
captionClass | CSS-классы заголовка контейнера (через пробел) | Выражение (строковое значение) | NULL | 'some-caption-class' |
valueClass | CSS-классы значения контейнера (через пробел) | Выражение (строковое значение) | NULL | 'some-value-class' |
image | Картинка, отображаемая в заголовке контейнера: путь относительно каталога images либо выражение-свойство, дающее картинку | Выражение (строковое значение) | NULL | 'image.png' |
collapsible | Позволяет пользователю сворачивать и разворачивать контейнер; в свёрнутом виде показывается только его заголовок | Логический литерал | зависит от заголовка | TRUEFALSE |
popup | Показывает содержимое контейнера во всплывающем окне, открываемом из его заголовка, а не внутри формы (контейнер изначально свёрнут) | Логический литерал | FALSE | TRUEFALSE |
border | Рисование рамки вокруг контейнера | Логический литерал | FALSE | TRUEFALSE |
collapsed | Делает так, что сворачиваемый контейнер изначально свёрнут | Логический литерал | FALSE | TRUEFALSE |
horizontal | Горизонтальный контейнер | Логический литерал | FALSE | TRUEFALSE |
tabbed | Контейнер с табами; не учитывается у контейнера, который рисует React-компонент: то, что он рисует, он раскладывает сам | Логический литерал | FALSE | TRUEFALSE |
childrenAlignment | Способ выравнивания дочерних компонентов внутри контейнера. Допустимые значения: START, CENTER, END | Тип выравнивания | START | CENTER |
alignCaptions | Выравнивает заголовки дочерних свойств в общую колонку, чтобы их значения выстраивались в линию | Логический литерал | зависит от контейнера | TRUEFALSE |
grid | Располагает потомков в виде сетки (используя lines как количество дорожек и span каждого потомка) вместо обычного линейного потока | Логический литерал | FALSE | TRUEFALSE |
wrap | Разрешает потомкам переноситься на несколько линий, когда они не помещаются в одну. По умолчанию TRUE, если контейнер горизонтальный или имеет несколько линий (обе характеристики берутся с учётом опции reversed), иначе FALSE | Логический литерал | зависит от контейнера | TRUEFALSE |
resizeOverflow | Разрешает контейнеру выходить за пределы доступного места, когда его содержимое не помещается (работает как максимальный размер) | Логический литерал | FALSE | TRUEFALSE |
custom | Отображает контейнер при помощи пользовательского клиентского представления (только веб-клиент). Форма значения выбирает отрисовщик: строковый литерал, соответствующий [A-Z][A-Za-z0-9_$]* (простой идентификатор, начинающийся с заглавной буквы), задаёт компонент React; пустая строка '' раскладывает потомков по порядку, как обычная панель; строка с HTML-шаблоном или свойство, которое его вычисляет, рисуют контейнер по этой разметке — заданные вместе, литерал задаёт разметку, с которой контейнер начинает, а свойство заменяет её с первого своего значения, тогда как компонент React со свойством сочетать нельзя, так как компонент рисует контейнер сам. Заданный как NULL, контейнер рисуется штатным представлением платформы, даже если ранее ему было задано пользовательское (см. свойства компонентов). Контейнер с собственным пользовательским представлением — любым из этих значений, — стоящий внутри того, что рисует React-компонент, рисуется этим представлением, а не React-компонентом, который размещает его через <Platform name/>, так же как любой компонент с собственным представлением (см. свойства компонентов). В HTML-шаблоне <Platform:name> — место, куда помещается дочерний компонент с таким именем, названный своим идентификатором компонента — для свойства это PROPERTY(qty), как его называет дизайн; дочерний компонент, которому шаблон места не дал, не показывается, место, называющее то, чего на форме нет вовсе, — ошибка при сборке формы, и так же ошибочно имя, размещённое дважды. Место пишется открытым, без закрывающего тега; закрыть его или написать самозакрывающимся — ошибка. Регистр префикса Platform: произволен; имя после него сопоставляется точно. Литерал, который не является ни именем компонента, ни разметкой, и контейнер, у которого задано ещё и tabbed, — ошибки при сборке формы. Места шаблона, который вычисляет свойство, читаются при его отрисовке: место, записанное дважды, место без имени и место, называющее то, чего на форме нет вовсе, выводятся в самом месте и в консоли браузера, а обе неверные записи — только в консоли, поскольку элемент, в который их можно было бы вывести, браузер уже уничтожил | Выражение (строковое значение) | NULL | 'OrderBoard''<div><Platform:gridWrap></div>' |
lines | Количество линий, по которым раскладываются потомки: колонок в вертикальном контейнере, рядов в горизонтальном. Потомки распределяются по линиям по кругу в порядке следования: первый — в первую линию, второй — во вторую, …, потомок с номером lines + 1 — снова в первую. При lines = 1 все потомки идут одной колонкой (в вертикальном контейнере) или одним рядом (в горизонтальном). Контейнеры GROUP(...) дизайна по умолчанию создаются с lines = 3, поэтому умолчание 1 на них не распространяется: одна колонка в таком контейнере требует явного lines = 1 | Целочисленный литерал | 1 (у контейнеров GROUP(...) дизайна по умолчанию — 3) | 3 |
lineSize | Базовый размер каждой дорожки линии в многолинейном или сеточном контейнере, в пикселях | Целочисленный литерал | NULL | 60 |
captionLineSize | Базовый размер общей дорожки колонки заголовков при выравнивании заголовков, в пикселях | Целочисленный литерал | NULL | 60 |
reversed | Раскладывает потомков одной линией в направлении, обратном заданному опцией horizontal (значение lines при этом не применяется). По умолчанию TRUE, если линий больше одной, потомков не больше, чем линий, и контейнер не grid: каждый потомок занял бы свою линию, поэтому вместо линий потомки просто выстраиваются в один ряд (в вертикальном контейнере) или одну колонку (в горизонтальном); иначе FALSE | Логический литерал | зависит от контейнера | TRUEFALSE |
lineShrink | Разрешает дорожкам линий многолинейного контейнера сжиматься меньше их базового размера | Логический литерал | зависит от контейнера | TRUEFALSE |
Свойства свойств и действий на форме
| Имя свойства | Описание | Вид значения | Значение по умолчанию | Примеры |
|---|---|---|---|---|
changeOnSingleClick | Указание того, инициируется ли событие изменения одиночным (TRUE) или двойным (FALSE) кликом мышью по компоненту свойства | Дополненный логический литерал | зависит от свойства | TRUEFALSE |
hide | Указание того, что компонент свойства (действия) должен быть всегда спрятан | Дополненный логический литерал | FALSE | TRUEFALSE |
maxValue | Максимальное числовое значение, которое позволяет ввести компонент свойства | Целочисленный литерал | NULL | 10000005000000000L |
echoSymbols | Указание того, что вместо значения свойства будет показываться набор символов *. Используется, например, для паролей | Дополненный логический литерал | FALSE | TRUEFALSE |
noSort | Запрет сортировки | Логический литерал | FALSE | TRUEFALSE |
defaultCompare | Фильтр по умолчанию. Допустимые значения: =, >, <, >=, <=, !=, =* (содержит), =@ (нечёткий поиск). | Строковый литерал | зависит от свойства | > |
valueSize | Ширина и высота ячейки значения свойства в пикселях. -1 означает, что в этом направлении ячейка получает размер по своему содержимому, а не по классу значения (автоматическое определение размера; только в веб-клиенте, десктоп-клиент всегда задает размер ячейки по классу значения): многострочный текст (TEXT, RICHTEXT, HTMLTEXT) получает высоту по содержимому вместо четырех строк по умолчанию. Ширина колонки таблицы и при этом определяется классом значения | Пара целочисленных литералов (ширина, высота) | см. valueWidth и valueHeight | (100, 100) |
valueHeight | Высота ячейки значения свойства в пикселях (-1 — высота по содержимому, см. valueSize) | Целочисленный литерал | -1; при заданном charHeight — столько строк; если у значения нет пользовательского представления (CUSTOM): у многострочного текста (TEXT, RICHTEXT, HTMLTEXT, JSON, JSONTEXT, XML) — четыре строки, у картинки, PDF или видео в таблице — по классу значения | 100 |
valueWidth | Ширина ячейки значения свойства в пикселях (-1 — ширина по содержимому, см. valueSize) | Целочисленный литерал | по классу значения или по charWidth, если он задан; у действия, значения BOOLEAN / TBOOLEAN или файла и значения с пользовательским представлением (CUSTOM) без charWidth — -1 | 100 |
captionHeight | Высота заголовка свойства в пикселях | Целочисленный литерал | -1 | 100 |
captionCharHeight | Высота заголовка свойства в символах | Целочисленный литерал | -1 | 5 |
captionWidth | Ширина заголовка свойства в пикселях | Целочисленный литерал | -1 | 100 |
charHeight | Высота ячейки значения свойства в символах (строках); -1 означает, что высота определяется типом значения свойства | Целочисленный литерал | -1 | 2 |
charWidth | Ширина ячейки значения свойства в символах; -1 означает, что ширина определяется типом значения свойства | Целочисленный литерал | -1 | 10 |
valueFlex | Заставляет ячейку значения растягиваться и заполнять доступную ширину, переопределяя определяемое типом поведение по умолчанию | Логический литерал | зависит от свойства | TRUEFALSE |
resizeShrink | Позволяет пользователю перетаскиванием сделать колонку таблицы уже её ширины (charWidth, valueWidth или определённой классом значения), вплоть до небольшого минимума. Действует только для растягиваемых колонок (с положительным flex); переопределяет resizeShrink таблицы | Логический литерал | resizeShrink таблицы | TRUEFALSE |
changeKey | Клавиша, при нажатии которой будет начато редактирование свойства. Принцип задания аналогичен заданию параметра в Keystroke.getKeystroke(String) | Выражение (строковое значение) | NULL | 'ctrl F6''BACK_SPACE''alt shift X' |
showChangeKey | Указание того, что в заголовок свойства будет включено название сочетания клавиш, по которому будет начато редактирование | Дополненный логический литерал | FALSE | TRUEFALSE |
changeMouse | Действие мыши, по которому будет начато редактирование свойства | Выражение (строковое значение) | NULL | 'DBLCLK' |
showChangeMouse | Указание того, что в заголовок свойства будет включено название действия мыши, по которому будет начато редактирование | Дополненный логический литерал | FALSE | TRUEFALSE |
focusable | Указание того, что компонент свойства (действия) или колонка в таблице могут владеть фокусом | Дополненный логический литерал | NULL | TRUEFALSE |
inline | Отображает свойство или действие в потоке своего контейнера, а не как отдельный блок раскладки | Дополненный логический литерал | NULL | TRUEFALSE |
panelColumnVertical | В панели располагает колонки группы-в-колонки свойства вертикально, а не горизонтально | Логический литерал | FALSE | TRUEFALSE |
class | CSS-классы свойства (через пробел) | Выражение (строковое значение) | NULL | some-class-one some-class-two |
footerClass | CSS-классы футера свойства (через пробел) | Выражение (строковое значение) | NULL | some-footer-class |
valueClass | CSS-классы значения свойства (через пробел). Явное значение полностью замещает классы значения по умолчанию (form-control и т.п.). В таблице для типовой текстовой ячейки элементом значения является сама ячейка (td); элементы выбора (кнопочная группа, выпадающий список), создаваемые для свойств с малым числом вариантов, являются её потомками, и классы значения на них не переносятся | Выражение (строковое значение) | NULL | some-value-class |
captionClass | CSS-классы заголовка свойства (через пробел) | Выражение (строковое значение) | NULL | some-caption-class |
caption | Заголовок свойства или действия | Строковый литерал | заголовок свойства или действия | 'Заголовок' |
tag | HTML-тег, которым отображается элемент значения (например input, a, button, select); переопределяет автоматически выбираемый тег | Строковый литерал | NULL | 'a' |
inputType | Тип HTML-поля ввода, используемый при редактировании значения (например password, range); переопределяет определяемый типом по умолчанию | Строковый литерал | NULL | 'password' |
image | Путь к файлу с картинкой, которая будет отображаться в качестве иконки действия. Путь указывается относительно каталога images | Выражение (строковое значение) | NULL | 'image.png' |
imagePath | deprecated since version 6, используйте image | Выражение (строковое значение) | NULL | 'image.png' |
comment | Комментарий свойства или действия | Выражение (строковое значение) | NULL | 'Комментарий' |
commentClass | Класс комментария свойства или действия | Выражение (строковое значение) | NULL | 'comment-class' |
panelCommentVertical | Указание того, что в панели необходимо рисовать комментарий свойства или действия сверху или снизу от значения | Дополненный логический литерал | FALSE | TRUEFALSE |
panelCommentFirst | Указание того, что в панели необходимо рисовать сначала комментарий, а потом значение свойства | Дополненный логический литерал | FALSE | TRUEFALSE |
panelCommentAlignment | Способ выравнивания компонента комментария внутри контейнера. Допустимые значения: START (В начале), CENTER (В центре), END (В конце), STRETCH (Растянуть). | Тип выравнивания | CENTER | STRETCH |
placeholder | Placeholder свойства | Выражение (строковое значение) | placeholder свойства | 'Placeholder' |
pattern | Шаблон форматирования значения свойства. Синтаксис задания шаблона аналогичен синтаксису DecimalFormat либо SimpleDateFormat в зависимости от типа значения | Строковый литерал | NULL | '#,##0.00' |
regexp | Регулярное выражение, которому должно соответствовать значение свойства при редактировании | Выражение (строковое значение) | NULL | '^((8|\\+7)[\\- ]?)?(\\(?\\d\{3\}\\)?[\\- ]?)?[\\d\\- ]\{7,10\}$' |
regexpMessage | Сообщение, которое будет выдано пользователю, если он введет значение не соответствующее регулярному выражению | Выражение (строковое значение) | сообщение по умолчанию | 'Неправильный формат телефона' |
tooltip | Подсказка, которая будет показываться при наведении пользователем мышки на заголовок свойства или действия | Выражение (строковое значение) | tooltip по умолчанию | 'Подсказка' |
valueTooltip | Подсказка, которая будет показываться при наведении пользователем мышки на значение свойства | Выражение (строковое значение) | tooltip по умолчанию | 'Подсказка' |
valueAlignment | Способ выравнивания значения компонента. Допустимые значения: START (В начале), CENTER (В центре), END (В конце), STRETCH (Растянуть).deprecated since version 6, используйте valueAlignmentHorz | Тип выравнивания | START | STRETCH |
valueAlignmentHorz | Способ выравнивания по горизонтали значения компонента. Допустимые значения: START (В начале), CENTER (В центре), END (В конце), STRETCH (Растянуть). | Тип выравнивания | зависит от свойства | STRETCH |
valueAlignmentVert | Способ выравнивания по вертикали значения компонента. Допустимые значения: START (В начале), CENTER (В центре), END (В конце), STRETCH (Растянуть). | Тип выравнивания | зависит от свойства | STRETCH |
panelCustom | Использует пользовательскую раскладку свойства в панели вместо стандартной раскладки «заголовок и значение» | Логический литерал | зависит от свойства | TRUEFALSE |
valueOverflowHorz | Поведение, когда содержимое значения превышает ширину ячейки: auto, clip, visible (CSS overflow-x) | Строковый литерал | зависит от свойства | autoclipvisible |
valueOverflowVert | Поведение, когда содержимое значения превышает высоту ячейки: auto, clip, visible (CSS overflow-y) | Строковый литерал | clip | autoclipvisible |
valueShrinkHorz | Разрешает ячейке значения сжиматься меньше своей базовой ширины | Логический литерал | зависит от свойства | TRUEFALSE |
valueShrinkVert | Разрешает ячейке значения сжиматься меньше своей базовой высоты | Логический литерал | зависит от свойства | TRUEFALSE |
highlightDuplicate | Подсвечивает ячейки, значение которых повторяет значение другой ячейки в той же колонке | Логический литерал | зависит от таблицы | TRUEFALSE |
wrapWordBreak | При переносе значения разрешает перенос внутри длинных слов, а не только по пробелам | Логический литерал | FALSE | TRUEFALSE |
ellipsis | Обрезает не помещающийся текст значения с многоточием | Логический литерал | зависит от свойства | TRUEFALSE |
collapse | Сжимает ячейку значения до одной строки, без раскрытия для многострочного содержимого | Логический литерал | зависит от свойства | TRUEFALSE |
captionWrap | Разрешает тексту заголовка свойства переноситься на несколько строк | Логический литерал | зависит от свойства | TRUEFALSE |
captionWrapWordBreak | При переносе заголовка разрешает перенос внутри длинных слов | Логический литерал | FALSE | TRUEFALSE |
captionEllipsis | Обрезает не помещающийся заголовок с многоточием | Логический литерал | TRUE | TRUEFALSE |
captionCollapse | Сжимает заголовок до одной строки | Логический литерал | FALSE | TRUEFALSE |
clearText | Указание того, что в начале редактирования свойства должен сбрасываться текущий текст | Дополненный логический литерал | FALSE | TRUEFALSE |
notSelectAll | Указание того, что в начале редактирования весь текст не выделяется | Дополненный логический литерал | FALSE | TRUEFALSE |
askConfirm | Указание того, что при попытке редактирования свойства (выполнении действия) будет выполнен запрос на подтверждение | Дополненный логический литерал | FALSE | TRUEFALSE |
askConfirmMessage | Текст вопроса о подтверждении редактирования свойства (выполнении редактирования) | Строковый литерал | сообщение по умолчанию | 'Вы действительно хотите изменить это свойство?' |
toolbar | Показывает ли ячейка значения собственный небольшой тулбар управления | Дополненный логический литерал | зависит от свойства | TRUEFALSE |
toolbarActions | Включает ли тулбар ячейки значения кнопки действий свойства | Дополненный логический литерал | зависит от свойства | TRUEFALSE |
notNull | Указание того, что в случае NULL значения свойства, компонент этого свойства должен быть подсвечен | Дополненный логический литерал | notNull свойства | TRUEFALSE |
select | Отображает значение как элемент выбора из его возможных значений; строка задаёт вид элемента: 'buttonGroup' — примыкающие друг к другу кнопки-переключатели с подсвеченным выбранным вариантом, 'button' — такие же кнопки по отдельности, 'list' — столбец переключателей (при выборе нескольких значений — флажков), 'dropdown' — стандартный выпадающий список (элемент select), 'input' — текстовое поле с выпадающим списком вариантов, подходящих под введённый текст (только для выбора нескольких значений); NULL отключает элемент. Выбор задаётся отдельно от custom свойства, который говорит, кто его рисует: custom = NULL — элемент платформы, имя функции отображения — эта функция. Вид относится к элементу платформы, поэтому принимается только там, где рисует этот элемент: форма отклоняется, если он задан вместе с функцией отображения или там, где свойство рисует компонент React; см. блок свойств | Строковый литерал | NULL | 'dropdown' |
defaultValue | Значение по умолчанию (при начале редактирования, только для custom interpreter) | Выражение (строковое значение) | NULL | default valuedefaultValue(a, b) |
Свойства тулбара
| Имя свойства | Описание | Вид значения | Значение по умолчанию | Примеры |
|---|---|---|---|---|
visible | Указание видимости компонента | Логический литерал | TRUE | TRUEFALSE |
showViews | Показывать кнопки переключения режимов отображения | Дополненный логический литерал | TRUE | TRUEFALSE |
showFilters | Показывать кнопку настройки фильтров | Дополненный логический литерал | TRUE | TRUEFALSE |
showSettings | Показывать кнопку настройки таблицы | Дополненный логический литерал | TRUE | TRUEFALSE |
showCountQuantity | Показывать кнопку подсчета количества рядов. Если пользователь отметил ряды, считаются только они | Дополненный логический литерал | TRUE | TRUEFALSE |
showCalculateSum | Показывать кнопку подсчета суммы по колонке. Если пользователь отметил ряды, сумма считается только по ним | Дополненный логический литерал | TRUE | TRUEFALSE |
showPrintGroupXls | Показывать кнопку экспорта таблицы в xls-формат | Дополненный логический литерал | TRUE | TRUEFALSE |
showManualUpdate | Показывать кнопку ручного обновления | Дополненный логический литерал | TRUE | TRUEFALSE |
Свойства таблицы
| Имя свойства | Описание | Вид значения | Значение по умолчанию | Примеры |
|---|---|---|---|---|
boxed | Рисование рамки вокруг компонента | Логический литерал | TRUE | TRUEFALSE |
tabVertical | Указание того, что переход фокуса между ячейками будет осуществляться сверху вниз, а не слева направо | Дополненный логический литерал | FALSE | TRUEFALSE |
quickSearch | Указание того, что в таблице будет осуществляться быстрый поиск элемента | Дополненный логический литерал | FALSE | TRUEFALSE |
headerHeight | Высота заголовка в пикселяхdeprecated since version 6, используйте captionHeight | Целочисленный литерал | NULL | 60 |
captionHeight | Высота заголовка в пикселях | Целочисленный литерал | NULL | 60 |
captionCharHeight | Высота заголовка в символах | Целочисленный литерал | NULL | 5 |
resizeOverflow | Разрешает таблице выходить за пределы отведённого места, когда ряды не помещаются (работает как максимальная высота) | Логический литерал | FALSE | TRUEFALSE |
resizeShrink | Позволяет пользователю перетаскиванием делать колонки таблицы уже их ширины (charWidth, valueWidth или определённой классами значений), вплоть до небольшого минимума. Для отдельной колонки переопределяется свойством resizeShrink | Логический литерал | FALSE | TRUEFALSE |
lineWidth | Число колонок, по которым вычисляется базовая ширина по умолчанию таблицы | Целочисленный литерал | все колонки, если их не больше трех, иначе от трех до шести по числу колонок | 4 |
lineHeight | Число рядов, по которым вычисляется базовая высота по умолчанию таблицы | Целочисленный литерал | 5 | 10 |
enableManualUpdate | Включить режим ручного обновления по умолчанию | Дополненный логический литерал | FALSE | TRUEFALSE |
hierarchicalWidth | Ширина иерархической (первой) колонки дерева в пикселях. Применяется положительное значение. В веб-клиенте колонка не участвует в распределении свободной ширины таблицы, а узел уровня L (верхний уровень — 0) отрисовывается L + 1 блоками отступа по 16 пикселей, которые могут переноситься на вторую строку ячейки, если колонка у́же их суммарной ширины | Целочисленный литерал | без положительного значения — сумма по группам объектов дерева: 20 на обычную группу, 80 на иерархическую группу | 100 |
hierarchicalCaption | Заголовок первой колонки дерева | Строковый литерал | 'Дерево' | Заголовок дерева |
Другие свойства
| Имя свойства | Действует для | Описание | Вид значения | Значение по умолчанию | Примеры |
|---|---|---|---|---|---|
visible | пользовательский фильтр, дерево классов | Указание видимости компонента для задания пользовательских фильтров (дерева классов) | Дополненный логический литерал | TRUE | TRUEFALSE |
Параметры selector
-
componentNameИмя компонента дизайна. Простой идентификатор.
-
formPropertyNameИмя свойства / действия на форме. Селектор сопоставляет это имя целиком: для свойства, добавленного как
PROPERTIES(o) number, этоnumber(o), дляPROPERTIES() total—total(), аnumber— только если это имя явно задано при добавлении свойства на форму:PROPERTIES(o) number = number. -
filterNameИмя на форме свойства, для которого объявлен пользовательский фильтр - опцией
FILTERв блоке свойств и действий или в блоке фиксированных фильтров с типомUSER, - записанное какformPropertyName. Селектор обращается к компоненту этого фильтра, и сам селектор -FILTER(number(o))- идентификатор этого компонента. Объявить фильтр в дизайне нельзя. -
filterGroupName -
propertyGroupSelector -
groupObjectSelector -
treeSelector -
noGroupObjectTreeContainerTypeТип контейнера формы:
BOX- общий контейнер формыOBJECTS- содержит компоненты всех групп объектов / деревьев формыPANEL- содержит компоненты свойств, которые отображаются в панель (PANEL), и для которых группа отображения не определена.TOOLBARBOX- общий контейнер тулбара.TOOLBARLEFT- левая часть тулбараTOOLBARRIGHT- правая часть тулбараTOOLBAR- содержит компоненты свойств, которые отображаются в тулбар (TOOLBAR), и для которых группа отображения не определена.POPUP- свернутый всплывающий контейнер (меню "⋮")
-
groupObjectTreeContainerTypeТип контейнера группы объектов / дерева:
- Все типы контейнера формы
noGroupObjectTreeContainerType, кромеOBJECTS(семантика аналогична). GRID- компонент таблицыTOOLBARSYSTEM- системный тулбар (количество записей, групповая корректировка и т.п.).FILTERGROUPS- содержит компоненты групп фильтровFILTERBOX- содержит пользовательский фильтр и его элементы управленияFILTERS- компонент, который отображает пользовательские фильтрыFILTERCONTROLS- элементы управления пользовательского фильтра
- Все типы контейнера формы
Примеры
DESIGN order { // настраиваем дизайн формы, начиная с дизайна по умолчанию
// отмечаем, что все изменения иерархии будут происходит для самого верхнего контейнера
// задаем заголовок формы (окна или закладки), зависящий от данных, - заголовок главного контейнера
caption = 'Заказ ' + number(o);
// создаем новый контейнер самым первым перед системными кнопками, в который положим два контейнера -
// шапка и спецификации
NEW orderPane FIRST {
fill = 1; // указываем, что контейнер должен занимать все доступное ему место
MOVE BOX(o) { // переносим в новый контейнер все, что касается объекта o
PANEL(o) { // настроим как отображаются свойства в панели объекта o
horizontal = FALSE; // делаем, чтобы все потомки шли сверху вниз
NEW headerRow1 { // создаем контейнер - первый ряд
horizontal = TRUE;
MOVE PROPERTY(date(o)) { // переносим свойство даты заказа
// "перегружаем" заголовок свойства в дизайне формы (вместо стандартного)
caption = 'Дата редактируемого заказа';
// задаем подсказку для свойства дата заказа
tooltip = 'Введите сюда дату, когда был сделан заказ';
background = #FF0000; // делаем фон красным
}
MOVE PROPERTY(time(o)) { // переносим свойство времени заказа
foreground = #00FF00; // делаем цвет зеленым
}
MOVE PROPERTY(number(o)) { // переносим свойство номер заказа
// ставим, что пользователю желательно должно показываться 5 символов
charWidth = 5;
}
MOVE PROPERTY(series(o)); // переносим свойство серия заказа
}
NEW headerRow2 {
horizontal = FALSE; // потомки - сверху вниз
}
MOVE PROPERTY(note(o));
}
size = (400, 300); //указываем, что контейнер o.box должен иметь базовый размер 400x300 пикселей
}
// создаем контейнер, в котором будут хранится различные спецификации по заказу
NEW detailPane {
// помечаем, что этот контейнер должен быть панелью закладок, где закладками являются его потомки
tabbed = TRUE;
fill = 1; // отдаём панели закладок всё оставшееся по высоте место
alignment = STRETCH; // и растягиваем её на всю ширину контейнера
// добавляем контейнер с строками заказа как одну из закладок верхней панели
MOVE BOX(d) {
caption = 'Строки'; // задаем заголовок панели закладки
// делаем, чтобы колонка с номером строки никогда не могла иметь фокус
PROPERTY(index(d)) { focusable = FALSE; }
GRID(d) {
// делаем, чтобы по умолчанию фокус при открытии формы устанавливался на таблицу строк
defaultComponent = TRUE;
}
}
MOVE BOX(s) { // добавляем контейнер с итогами по sku как одну из закладок detailPane
caption = 'Подбор';
}
}
}
}
// разбиваем определение формы на две инструкции (вторую инструкцию можно перенести в другой модуль)
DESIGN order {
// убираем из иерархии контейнер с кнопками печати и экспорта в xls, тем самым делая их невидимыми
REMOVE TOOLBARLEFT;
}
На выходе получаем следующую форму:
