Оператор 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
;