События бланка
В бланках есть возможность определения обработчиков событий. Событие определяется именем. В качестве обработчика события указывается имя библиотеки и имя функции. К событию привязываются дополнительные действия: обновление, очистка бланка и считывание граф ввода (по аналогии с графами с вызовом функций). Подробнее о дополнительных действиях см. Вывод информации при обработке событий и вызове функций.
Функция-обработчик должна быть следующего вида:
ФУНКЦИЯ <имя_функции>(ТИП_СТРОКА: событие, графа, значение)
- событие
- Имя события.
- графа
- Имя графы или другого объекта, породившего событие или пустая строка.
- значение
- Строковое представление значения или пустая строка.
Передача имени события позволяет назначать одну функцию для обработки разных событий. В предельном случае, для всех событий бланка можно использовать одну функцию-обработчик.
Для открытия списка событий бланка в контекстном меню редактора бланка необходимо выбрать пункт "События бланка".
Здесь можно редактировать существующие события, либо добавлять новые:
В этом окне указывается имя события, функция-обработчик и библиотека, в которой находится эта функция. Опция Обновление бланка указывает на необходимость обновления граф после вызова функции. Если установлена опция Очистка бланка, то перед вызовом функции восстанавливается начальный набор и расположение элементов бланка. При включении опции Считывание граф ввода перед вызовом функции происходит передача значений из всех граф ввода бланка в соответствующие переменные. Подробнее см. Вывод информации при обработке событий и вызове функций.
Есть возможность обрабатывать некоторые события мыши. Поддерживаются нажатия левой кнопки мыши в комбинации с клавишами Ctrl, Alt и Shift над графами вывода.
Имена существующих 6 событий:
- Alt+Click
- Alt+Shift+Click
- Shift+Click
- Ctrl+Shift+Click
- Ctrl+Alt+Click
- Ctrl+Alt+Shift+Click
Комбинация Ctrl+Click зарезервирована для правки значений в графах вывода и не генерирует события.
В качестве параметров в обработчик передается: событие, имя графы, текст графы.
Также есть возможность обрабатывать некоторые события клавиатуры. События клавиатуры обрабатываются в контексте активного объекта бланка или всего бланка (при отсутствии объектов, получающих фокус ввода).
Поддерживается обработка некоторых комбинаций клавиш в диапазоне F2-F9 с Ctrl и Shift.
Имена событий:
- Shift+Fx
- Ctrl+Fx
- Ctrl+Shift+Fx
где x может принимать значения от 2 до 9, за следующими исключениями:
- Ctrl+F4, Ctrl+Shift+F4 – стандартные акселераторы закрытия дочернего окна MDI;
- Ctrl+F6, Ctrl+Shift+F6 – стандартные акселераторы переключения дочерних окон MDI;
- Ctrl+F2 – используется в графе ввода даты для установки текущей даты.
В качестве параметров в обработчик передается:
Нет активного объекта | : событие, "", ""; |
Активна графа ввода | : событие, имя графы, текст графы; |
Активна кнопка | : событие, "", текст кнопки; |
Активна опция | : событие, имя переменной, ДА/НЕТ. |
Поддерживается обработка таймеров с различными периодами. Имя события таймера задается как Timer:NNNN, где NNNN - период таймера в миллисекундах. Например, событие Timer:1000 будет вызываться раз в секунду, а Timer:100 - раз в 0.1 секунды. События таймера не генерируются во время выполнения формульного раздела и функций-обработчиков (обработка нажатий кнопок и т.п.).
Для кнопок и опций можно задавать произвольные имена событий, которые будут переданы в обработчик при нажатии кнопки или изменении состояния опции.
Также с помощью событий возможен перехват стандартной обработки экспорта бланка в офисные приложения. Обработчик события экспорта может подготовить необходимые данные с помощью функций ДОБ_ПОДСТ, ДОБ_ТАБЛ_ПОДСТ и СБРОС_ПОДСТ, а затем выполнить экспорт вызовом функции ЭКСПОРТ_ФОРМЫ. Поддерживаются два события экспорта:
- export:spreadsheet – при обработке команд "Экспорт в Excel" и "Экспорт в OpenOffice Calc";
- export:text – при обработке команд "Экспорт в Word" и "Экспорт в OpenOffice Writer".
В зависисмости от наличия шаблонов текстового документа и электронной таблицы могут обрабатываться как оба события экспорта, так и только одно. Доступность команд экспорта для пользователя в Главном меню и панели инструментов определяется наличием соответствующего обработчика (а также офисного приложения).
Функция обработчик для событий экспорта вызывается с параметром графа равным пустой строке, а в параметре значение содержится идентификатор целевого приложения, который может быть передан при вызове функции ЭКСПОРТ_ФОРМЫ.
В обработчике экспорта можно установить признак продолжения экспорта стандартными средствами платформы. Для этого надо установить атрибут "continue_export" равным "ДА" с помощью функции УСТ_АТРИБУТ. Перед следующим вызовом обработчика экспорта признак автоматически сбрасывается.
Функция СОБЫТИЕ_БЛАНКА позволяет программно инициировать события бланка.