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

Оператор INPUT

Оператор INPUT - создание действия, осуществляющего ввод примитива или выбор объекта пользовательского класса.

Синтаксис

INPUT inputOptions [LIST listExpr]
[CHANGE [= changeExpr]]
[DO actionOperator [ELSE elseActionOperator]]

inputOptions - опции ввода. Задаются одним из следующих синтаксисов:

[alias =] className
[alias] = expr

Описание

Оператор INPUT создает действие, которое позволяет запрашивать у пользователя значение одного из встроенных классов.

Если className - пользовательский класс, оператор запрашивает объект этого класса. Без явного LIST интерактивный ввод открывает форму выбора объектов класса, а программно переданное значение интерпретируется как идентификатор объекта. Явный LIST предлагает для выбора значения listExpr (например, LIST name(o)); класс значения listExpr определяет встроенный редактор.

Параметры

  • className

    Имя встроенного класса или пользовательского класса. Для пользовательского класса запрашивается объект этого класса.

  • listExpr

    Выражение, значения которого предлагаются для выбора. Используется для ввода пользовательского класса, чтобы перечислить объекты-кандидаты (класс значения listExpr определяет встроенный редактор).

  • expr

    Выражение, значение которого определяет начальное значение ввода.

  • alias

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

  • CHANGE

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

  • changeExpr

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

  • actionOperator

    Контекстно-зависимый оператор-действие, выполняется, если ввод был успешно завершен.

  • elseActionOperator

    Контекстно-зависимый оператор-действие, выполняется, если ввод был отменен. В качестве параметров нельзя использовать параметр результата ввода.

Примеры

changeCustomer (Order o)  {
INPUT s = STRING[100] DO {
customer(o) <- s;
IF s THEN
MESSAGE 'Customer changed to ' + s;
ELSE
MESSAGE 'Customer dropped';
}
}

FORM order
OBJECTS o = Order
PROPERTIES(o) customer ON CHANGE changeCustomer(o)
;

testFile {
INPUT f = FILE DO { // запрашиваем диалог по выбору файла
open(f); // открываем выбранный файл
}
}