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

Ввод значения

Эта категория включает в себя операторы, отвечающие за ввод значения:

Кроме перечисленных операторов, за ввод также отвечают диалоговые формы операторов показа сообщения (ASK) и открытия формы (DIALOG) в интерактивном представлении.

Выполнение ввода

Действие ввода значения выполняется в рамках обработки события на открытой форме. При вызове действия оно приостанавливает текущий поток и обращается к интерактивному представлению этой формы — пользовательской сессии, в которой было инициировано событие, — за получением значения от пользователя. Платформа показывает пользователю элемент ввода, соответствующий запрашиваемому значению (например, текстовое поле для строкового значения, выбор даты для даты или диалог выбора файла для файла); пользователь вводит или выбирает значение либо отменяет ввод. Результат всегда является типизированным значением запрашиваемого класса — платформа проверяет введённые пользователем данные как значение этого класса и никогда не выполняет их как код — и далее этот типизированный результат используется для вызова основного или альтернативного действия.

Отмена и результат ввода

В операторах ввода значения операция ввода может быть отменена (для каждого оператора эта ситуация определяется по своему). Если это происходит, то в специальное свойство System.requestCanceled записывается значение TRUE (NULL - в обратном случае).

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

Начальные значения и автоматическое изменение

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

Также во многих случаях (особенно в обработке событий изменения свойства) бывает необходимо не просто ввести значение, а еще и записать введенное значение в некоторое свойство (как правило, для которого и вызывается обработка события изменения, это нужно чтобы обеспечить WYSIWYG). При этом в большинстве случаев изменяемое свойство совпадает со свойством начального значения. Чтобы сделать реализацию такого сценария более удобной, в операторах ввода значения есть возможность задать специальную опцию (CHANGE), которая автоматически к основному действию добавит изменение свойства на результат ввода, при этом в качестве изменяемого свойства будет использоваться свойство начального значения (впрочем, при необходимости, изменяемое свойство разработчик может задать явно). Стоит отметить, что описанная возможность является не более чем синтаксическим сахаром, однако она позволяет сделать код существенно более лаконичным и читабельным.

к сведению

В текущей реализации платформы начальные значения и автоматическое изменение поддерживаются только для оператора ввода значения (INPUT) и диалогового открытия формы (DIALOG).