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

Оператор ACTIVATE

Оператор ACTIVATE - создание действия, которое активирует один из элементов формы: указанную форму, закладку, свойство (или действие) на форме либо набор объектов в группе объектов формы.

Синтаксис

ACTIVATE FORM formName
ACTIVATE TAB formName.componentSelector
ACTIVATE PROPERTY formPropertyId

ACTIVATE [FIRST | LAST | NULL] formObjectId = expr
ACTIVATE [FIRST | LAST | NULL] formGroupObjectId [OBJECTS formObject1 = expr1, ..., formObjectK = exprK]

Описание

Синтаксис оператора ACTIVATE зависит от вида активируемого элемента.

Активация формы, закладки или свойства

Формы ACTIVATE FORM, ACTIVATE TAB и ACTIVATE PROPERTY создают действие, которое активизирует форму, закладку или свойство (действие) на форме. Действие не имеет параметров и не использует контекст. Поведение определяется ключевым словом:

  • FORM — активирует указанную форму у пользователя, если она уже открыта (в виде запроса клиенту). Если форма была открыта несколько раз, активируется та, которая была открыта первой. Если форма не открыта, действие не имеет эффекта.
  • TAB — делает указанную закладку активной в соответствующей панели закладок. Активация закладки выполняется только в том случае, если указанная форма в момент выполнения действия является активной (тот же вызов на неактивной форме не имеет эффекта). Закладка не активируется, если она является пустым контейнером (без дочерних элементов).
  • PROPERTY — переводит фокус на указанное свойство или действие, отображаемое на текущей активной форме. Для успешного выполнения указанное свойство должно находиться на форме, выполняющей действие.

Активация объектов в группе

Формы ACTIVATE ... formObjectId = expr и ACTIVATE ... formGroupObjectId [OBJECTS ...] создают действие, выполняющее активацию объектов в группе. В первом варианте указывается искомое значение одиночного объекта на форме (этот объект может находиться в составе некоторой группы объектов), во втором — конкретная группа объектов и искомые значения для некоторых её объектов (будем называть их объектами поиска).

Направление поиска задаётся одним из ключевых слов FIRST, LAST или NULL (значение PREV явно в операторе не указывается). Если ни одно из ключевых слов не задано, используется тип объектов по умолчанию, заданный у группы объектов.

Для одиночного объекта (форма formObjectId = expr) и для формы с блоком OBJECTS ключевое слово NULL сбрасывает в NULL те объекты группы, которые не указаны явно (в том числе дополнительные); для указанных объектов применяются переданные выражения.

Параметры

  • formName

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

  • componentSelector

    Селектор компонента дизайна. Компонент должен быть закладкой панели вкладок (то есть находиться внутри контейнера со свойством tabbed = TRUE).

  • formPropertyId

    Глобальный идентификатор свойства или действия на форме, на которое должен перейти фокус.

  • FIRST

    Ключевое слово. Если указывается, то текущим набором объектов для:

    • дополнительных объектов будет выбран первый подходящий набор в соответствии с заданным порядком.
    • основных объектов, если искомый набор объектов не найден, будет выбран следующий ближайший набор в соответствии с заданным порядком.
  • LAST

    Ключевое слово. Если указывается, то текущим набором объектов для:

    • дополнительных объектов будет выбран последний подходящий набор в соответствии с заданным порядком.
    • основных объектов, если искомый набор объектов не найден, будет выбран предыдущий ближайший набор в соответствии с заданным порядком.
  • NULL

    Ключевое слово. Если указывается, то текущие значения объектов заданной группы сбрасываются в NULL (для явно указанных в операторе объектов применяются соответствующие выражения).

  • formObjectId

    Глобальный идентификатор объекта на форме, для которого указывается искомое значение.

  • expr

    Выражение, значением которого является искомое значение объекта на форме.

  • formGroupObjectId

    Глобальный идентификатор группы объектов, для объектов которой указываются искомые значения.

  • formObject1 ... formObjectK

    Список имён объектов на форме. Может содержать только часть объектов указанной группы объектов. Имя объекта задаётся простым идентификатором.

  • expr1 ... exprK

    Список выражений, значения которых являются искомыми значениями соответствующих объектов в указанной группе объектов.

Примеры

//Форма с двумя закладками
FORM myForm 'Моя форма'
OBJECTS u = CustomUser
PROPERTIES(u) name

OBJECTS c = Chat
PROPERTIES(c) name
;

DESIGN myForm {
NEW tabbedPane FIRST {
tabbed = TRUE;
NEW contacts {
caption = 'Контакты';
MOVE BOX(u);
}
NEW recent {
caption = 'Последние';
MOVE BOX(c);
}
}
}

testAction() {
ACTIVATE FORM myForm;
ACTIVATE TAB myForm.recent;
}

CLASS ReceiptDetail;
barcode = DATA STRING[30] (ReceiptDetail);
quantity = DATA STRING[30] (ReceiptDetail);

FORM POS
OBJECTS d = ReceiptDetail
PROPERTIES(d) barcode, quantityGrid = quantity
;

createReceiptDetail 'Добавить строку продажи'(STRING[30] barcode) {
NEW d = ReceiptDetail {
barcode(d) <- barcode;
ACTIVATE PROPERTY POS.quantityGrid;
}
}
number = DATA INTEGER (Order);
FORM orders
OBJECTS o = Order
PROPERTIES(o) READONLY number, currency, customer
;
newOrder {
NEW new = Order {
number(new) <- (GROUP MAX number(Order o)) (+) 1;
ACTIVATE orders.o = new;
}
}
activateFirst { ACTIVATE FIRST orders.o; }
activateLast { ACTIVATE LAST orders.o; }

EXTEND FORM orders
PROPERTIES(o) newOrder, activateFirst, activateLast
;