Опции свойства
При объявлении свойства в инструкции = в конце объявления может указываться некоторый набор опций свойства.
Синтаксис
Опции перечесляются друг за другом в произвольном порядке через пробел или переводы строк:
propertyOption1 ... propertyOptionN
Поддерживается следующий набор опций (синтаксис каждой опции указывается в отдельной строке):
IN groupName
viewType
ON eventType { actionOperator }
CHANGEKEY key [SHOW | HIDE]
MATERIALIZED
TABLE tableName
INDEXED
NONULL [DELETE] eventClause
AUTOSET
CHARWIDTH width [FLEX | NOFLEX]
REGEXP rexpr [message]
ECHO
DEFAULTCOMPARE [compare]
Описание и параметры
-
IN groupNameУказание группы свойств и действий, которой принадлежит свойство. Если опция не указывается, то свойство по умолчанию будет принадлежать группе
System.private.-
groupNameИмя группы. Составной идентификатор.
-
-
MATERIALIZEDКлючевое слово, помечающее свойство как материализованное. Такие свойства будут храниться в полях таблицы базы данных.
-
TABLE tableNameУказание таблицы, в которой будет храниться свойство. Количество ключей таблицы должно совпадать с количеством аргументов свойства, и классы аргументов должны подходить к классам ключей таблицы. Если таблица не задана, свойство автоматически будет помещено в "ближайшую" существующую в системе таблицу.
-
tableNameИмя таблицы. Составной идентификатор.
-
-
INDEXEDКлючевое слово, указание которого создает индекс по этому свойству. Аналогично использованию инструкции
INDEX. -
NONULL [DELETE] eventClauseДобавление ограничения определенности. Если это ограничение в результате каких-то изменений для некоторых объектов нарушается, то будет либо показано соответствующее сообщение, либо при указании
DELETEтакие объекты будут удалены.-
DELETEКлючевое слово, при указании которого в случае, если свойство становится равным
NULL, будут удалены объекты, которые являются в данном случае аргументами свойства. -
eventClauseБлок описания типа события. Описывает событие по которому будет выполняться проверка свойства на
NULL.
-
Блок интерактивного представления
-
viewTypeУказание типа представления свойства при добавлении на форму.
GRID- колонка таблицыTOOLBAR- тулбарPANEL- панель
По действию аналогично указанию опции
viewTypeв блоке свойств инструкцииFORM. Соответственно если эта опция не указана ни в опциях свойств, ни в блоке свойств непосредственно на форме, используется тип представления по умолчанию для группы отображения, добавляемого на форму свойства. -
ON eventType { actionOperator }Указание действия, которое будет обработкой по умолчанию некоторого события формы всех интерактивных представлений этого свойства. Могут быть переопределены в блоке свойств инструкции
FORM.-
eventTypeТип события формы. Задается одним из следующих вариантов:
CHANGE- происходит при попытке изменения значения свойства.CHANGEWYS- происходит при попытке изменении значения свойства с помощью специального механизма ввода.GROUPCHANGE- происходит при попытке изменения значения свойства для всех объектов в таблице (групповое редактирование).EDIT- происходит при попытке редактировать объект, который является значением этого свойства.CONTEXTMENU [caption]- пользователь выбрал в контекстном меню свойства на форме заданный пункт. Также при необходимости можно задать заголовокcaptionэтого пункта меню (строковый литерал). Если этого не сделать, то, по умолчанию, он будет равен заголовку действия.
-
actionOperatorКонтекстно-зависимый оператор-действие. Оператор, описывающий выполняемое по событию действие. В качестве параметров оператора можно использовать параметры самого свойства.
-
Блок значений по умолчанию инструкции DESIGN
-
CHARWIDTH width [FLEX | NOFLEX]Указание количества символов значения свойства, которые должны быть видны пользователю. Устанавливает значение для дизайна по умолчанию, может быть переопределено в инструкции
DESIGN.-
widthКоличество символов. Целочисленный литерал.
-
FLEXКлючевое слово. Если указано, коэффициент расширения значения свойства автоматически устанавливается равным его базовому размеру.
-
NOFLEXКлючевое слово. Если указано, коэффициент расширения значения свойства автоматически устанавливается равным нулю.
-
-
REGEXP rexpr [message]Указание регулярного выражения, которому должно соответствовать значение свойства после редактирования. Устанавливает значение для дизайна по умолчанию, может быть переопределено в инструкции
DESIGN.-
rexprСтроковый литерал, описывающий регулярное выражение. Правила задания аналогичны принятым в языке Java.
-
messageСтроковый литерал, описывающий сообщение, которое будет показано пользователю в случае, если он введет значение, не соответствующее регулярному выражению. Если не указывается, то будет показано сообщение по умолчанию.
-
-
ECHOКлючевое слово, указание которого приведет к отображению символов звездочки
*вместо значения свойства. Используется, например, для паролей. Может быть переопределено в инструкцииDESIGN. -
CHANGEKEY key [SHOW | HIDE]Указание комбинации клавиш, при нажатии которой будет начато редактирование свойства. Устанавливает значение для дизайна по умолчанию, может быть переопределено в инструкции
DESIGN.key
Строковый литерал, описывающий комбинацию клавиш. Принцип задания аналогичен способу задания параметра в методе Java-класса Keystroke.getKeystroke(String).
-
SHOWКлючевое слово, при указании которого комбинация клавиш будет отображаться в заголовке свойства. Используется по умолчанию.
-
HIDEКлючевое слово, при указании которого комбинация клавиш не будет отображаться в заголовке свойства.
-
DEFAULTCOMPARE [compare]Указание для свойства типа фильтра по умолчанию.
-
compareТип фильтра по умолчанию. Строковый литерал. Может принимать следующие значения:
=,>,<,>=,<=,!=,START_WITH,CONTAINS,ENDS_WITH,LIKE. По умолчанию принимает значение=для всех типов данных кроме строковых регистронезависимых, для которых принимает значениеCONTAINS. При включенной настройкеSystem.defaultCompareForStringContainsпо умолчанию принимает значениеCONTAINSдля всех строковых данных независимо от регистрозависимости. Может быть переопределено в инструкцииDESIGN.
-
Примеры
// cвойство задано контекстно-независимым оператором-свойством DATA
cost 'Стоимость' (i) = DATA NUMERIC[12,3] (Item);
// cвойство задано выражением
weightedSum 'Взвешенная сумма' (a, b) = 2*a + 3*b;
// заголовком этого свойства будет 'diff', а параметрами - (a, b)
diff = a - b;
// свойство задано оператором DATA с указанием дополнительных опций свойства
teamName 'Название команды' = DATA BPSTRING[30](Team) IN baseGroup TABLE team;