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

Опции свойства

При объявлении свойства в инструкции = в конце объявления может указываться некоторый набор опций свойства.

Синтаксис

Опции перечесляются друг за другом в произвольном порядке через пробел или переводы строк:

propertyOption1 ... propertyOptionN

Поддерживается следующий набор опций (синтаксис каждой опции указывается в отдельной строке):

IN groupName
viewType
ON eventType { actionOperator }
CHANGEKEY key [SHOW | HIDE]
CHANGEMOUSE key [SHOW | HIDE]
MATERIALIZED
TABLE tableName
INDEXED [LIKE | MATCH]
NONULL [DELETE] eventClause
AUTOSET
CHARWIDTH width [FLEX | NOFLEX]
REGEXP rexpr [message]
ECHO
DEFAULTCOMPARE [compare]
LAZY [WEAK | STRONG]

Описание и параметры

  • MATERIALIZED

    Ключевое слово, помечающее свойство как материализованное. Такие свойства будут храниться в полях таблицы базы данных.

  • TABLE tableName

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

    • tableName

      Имя таблицы. Составной идентификатор.

  • INDEXED

    Ключевое слово, указание которого создает индекс по этому свойству. Аналогично использованию инструкции INDEX.

    • LIKE

      Ключевое слово, указание которого создает вместо обычного индекса GIN индекс.

    • MATCH

      Ключевое слово, указание которого создает вместо обычного индекса два: GIN индекс и GIN индекс с to_tsvector.

  • 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

    Строковый литерал, описывающий комбинацию клавиш. Синтаксис:

    keyStroke [;(modeKey=modeValue;)*]
    • keyStroke Строковое представление комбинации клавиш. Принцип задания аналогичен способу задания параметра в методе Java-класса Keystroke.getKeystroke(String).

    • (modeKey=modeValue;)* Опции, задающие условия выполнения для keyStroke. Поддерживаются следующие опции:

      • priority = priorityValue Приоритет, целочисленное значение. Если несколько свойств имеют подходящий под условия CHANGEKEY, выполнится тот, у которого приоритет будет выше. Если приоритет не задан, он равняется порядковому номеру свойства на форме. Кроме того, в любом случае к значению приоритета добавляется 1000, если совпадает группа объектов.

      • preview = previewValue Все события проверяются на выполнение дважды: сначала с isPreview=true, потом - с isPreview=false. Поддерживаемые значения previewValue:

        • AUTO, ONLY -> isPreview
        • NO -> !isPreview
        • ALL -> true
      • dialog = dialogValue Проверка, выполнять ли CHANGEKEY в диалоговом окне. Поддерживаемые значения dialogValue:

        • AUTO, ALL -> true
        • ONLY -> isDialog
        • NO -> !isDialog
      • window = windowValue Проверка, выполнять ли CHANGEKEY в модальном окне. Поддерживаемые значения windowValue:

        • AUTO, ALL -> true
        • ONLY -> isWindow
        • NO -> !isWindow
      • group = groupValue Проверка, совпадает ли группа объектов. Поддерживаемые значения groupValue:

        • AUTO, ALL -> true
        • ONLY -> equalGroup
        • NO -> !equalGroup
      • editing = editingValue Проверка, выполнять ли CHANGEKEY в режиме редактирования свойства. Поддерживаемые значения editingValue:

        • AUTO -> !(isEditing() && getEditElement().isOrHasChild(Element.as(event.getEventTarget())))
        • ALL -> true
        • ONLY -> isEditing
        • NO -> !isEditing
      • showing = showingValue Проверка, показывается ли в данный момент свойство на форме. Поддерживаемые значения showingValue:

        • AUTO, ONLY -> isShowing
        • ALL -> true
        • NO -> !isShowing
      • panel = panelValue Проверка, находится ли свойство в панели. Поддерживаемые значения panelValue:

        • AUTO -> !isMouse || !isPanel
        • ALL -> true
        • ONLY -> isPanel
        • NO -> !isPanel
      • cell = cellValue Проверка, находится ли свойство в таблице. Поддерживаемые значения cellValue:

        • AUTO -> !isMouse || isCell
        • ALL -> true
        • ONLY -> isCell
        • NO -> !isCell

      Для всех опций кроме priority значением по умолчанию является AUTO.

    • SHOW

      Ключевое слово, при указании которого комбинация клавиш будет отображаться в заголовке свойства. Используется по умолчанию.

    • HIDE

      Ключевое слово, при указании которого комбинация клавиш не будет отображаться в заголовке свойства.

  • CHANGEMOUSE key [SHOW | HIDE]

    Указание комбинации клавиш мыши, при нажатии которых будет начато редактирование свойства. Устанавливает значение для дизайна по умолчанию, может быть переопределено в инструкции DESIGN.

    • key

    Строковый литерал, описывающий комбинацию клавиш. Синтаксис:

    keyStroke [;(modeKey=modeValue;)*]
    • keyStroke Строковое представление комбинации клавиш мыши. В данный момент единственное поддерживаемое значение - DBLCLK - двойной клик.

    • (modeKey=modeValue;)* Синтаксис полностью совпадает с CHANGEKEY.

    • SHOW

      Ключевое слово, при указании которого комбинация клавиш мыши будет отображаться в заголовке свойства. Используется по умолчанию.

    • HIDE

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

  • DEFAULTCOMPARE [compare]

    Указание для свойства типа фильтра по умолчанию.

    • compare

      Тип фильтра по умолчанию. Строковый литерал. Может принимать следующие значения: =, >, <, >=, <=, !=, CONTAINS, LIKE. По умолчанию принимает значение = для всех типов данных кроме строковых регистронезависимых, для которых принимает значение CONTAINS. При включенной настройке System.defaultCompareForStringContains по умолчанию принимает значение CONTAINS для всех строковых данных независимо от регистрозависимости. Может быть переопределено в инструкции DESIGN.

  • LAZY [WEAK | STRONG]

    Указание для свойства уровня кэширования. WEAK означает кэширование значения свойства на сервере приложений (если чтение идет для всех фиксированных параметров). STRONG означает, что кэш будет очищаться не целиком при любом изменении свойства, а будет создаваться событие и будут очищаться конкретные значения. По умолчанию WEAK.

Примеры

// 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;