Руководство разработчика

События бланка

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

Функция-обработчик должна быть следующего вида:

ФУНКЦИЯ <имя_функции>(ТИП_СТРОКА: событие, графа, значение)
событие
Имя события.
графа
Имя графы или другого объекта, породившего событие или пустая строка.
значение
Строковое представление значения или пустая строка.

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

Для открытия списка событий бланка в контекстном меню редактора бланка необходимо выбрать пункт "События бланка".

Здесь можно редактировать существующие события, либо добавлять новые:

В этом окне указывается имя события, функция-обработчик и библиотека, в которой находится эта функция. Опция Обновление бланка указывает на необходимость обновления граф после вызова функции. Если установлена опция Очистка бланка, то перед вызовом функции восстанавливается начальный набор и расположение элементов бланка. При включении опции Считывание граф ввода перед вызовом функции происходит передача значений из всех граф ввода бланка в соответствующие переменные. Подробнее см. Вывод информации при обработке событий и вызове функций.

Есть возможность обрабатывать некоторые события мыши. Поддерживаются нажатия левой кнопки мыши в комбинации с клавишами Ctrl, Alt и Shift над графами вывода.

Имена существующих 6 событий:

Комбинация Ctrl+Click зарезервирована для правки значений в графах вывода и не генерирует события.

В качестве параметров в обработчик передается: событие, имя графы, текст графы.

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

Поддерживается обработка некоторых комбинаций клавиш в диапазоне F2-F9 с Ctrl и Shift.

Имена событий:

где x может принимать значения от 2 до 9, за следующими исключениями:

В качестве параметров в обработчик передается:

Нет активного объекта : событие, "", "";
Активна графа ввода : событие, имя графы, текст графы;
Активна кнопка : событие, "", текст кнопки;
Активна опция : событие, имя переменной, ДА/НЕТ.

Поддерживается обработка таймеров с различными периодами. Имя события таймера задается как Timer:NNNN, где NNNN - период таймера в миллисекундах. Например, событие Timer:1000 будет вызываться раз в секунду, а Timer:100 - раз в 0.1 секунды. События таймера не генерируются во время выполнения формульного раздела и функций-обработчиков (обработка нажатий кнопок и т.п.).

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

Также с помощью событий возможен перехват стандартной обработки экспорта бланка в офисные приложения. Обработчик события экспорта может подготовить необходимые данные с помощью функций ДОБ_ПОДСТ, ДОБ_ТАБЛ_ПОДСТ и СБРОС_ПОДСТ, а затем выполнить экспорт вызовом функции ЭКСПОРТ_ФОРМЫ. Поддерживаются два события экспорта:

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

Функция обработчик для событий экспорта вызывается с параметром графа равным пустой строке, а в параметре значение содержится идентификатор целевого приложения, который может быть передан при вызове функции ЭКСПОРТ_ФОРМЫ.

В обработчике экспорта можно установить признак продолжения экспорта стандартными средствами платформы. Для этого надо установить атрибут "continue_export" равным "ДА" с помощью функции УСТ_АТРИБУТ. Перед следующим вызовом обработчика экспорта признак автоматически сбрасывается.

Функция СОБЫТИЕ_БЛАНКА позволяет программно инициировать события бланка.


См. также: