Построение отчёта для печати > Начало работы с инструментом «Отчёты» в веб-приложении > Построение отчёта > Обработка событий отчёта
Одним из способов расширения функциональности отчётов является обработка событий, которые генерируются при работе пользователя с отчётом.
Обработчик событий позволяет выполнять заданное действие при каждом возникновении события. Например, при подключении модуля обработки событий появляется возможность:
обрабатывать ввод данных «на лету»;
выводить диалог подтверждения выполняемого действия;
выполнять дополнительные действия перед и/или после возникновения какого-либо события;
выводить информационные сообщения, содержащие определённую информацию (например, идентификатор изменённого элемента управления, тип гиперссылки).
Для регламентных отчётов можно настроить обработку событий, происходящих:
перед открытием регламентного отчёта;
перед и после смены активного листа регламентного отчёта;
перед и после вычисления области данных (в том числе, реляционной), регламентного отчёта целиком или его отдельного листа;
перед и после печати и экспорта регламентного отчёта;
перед и после сохранения изменённых значений областей данных;
при изменении значения элемента управления регламентного отчёта;
перед сохранением регламентного отчёта и др.
Основное назначение подключения прикладных макросов и обработчиков событий:
формирование гиперссылок. Если в качестве их действий необходимо выполнение макросов, содержащихся в подключённых объектах;
формирование формул;
обработка событий. Для обработки событий необходимо описать класс, наследуемый от класса ReportEvents, и переопределить методы, реализующие необходимые события.
Сигнатура указываемого макроса может содержать параметры.
Для работы с модулями обработки событий выполните одно из действий:
выполните команду «Разработка > Модули и обработка событий» в главном меню;
нажмите кнопку «Модули и обработка событий» на панели
вкладок.
После выполнения одного из действий будет открыта боковая панель «Список модулей»:
Выберите существующий модуль обработки событий или создайте новый.
Подключение
существующего модуля
Открытие модуля
в среде разработки
Помимо обработки событий в модуле могут быть реализованы пользовательские функции для преобразования данных. Если в списке модулей содержится такой модуль, то при формировании формулы пользовательские функции будут доступны для использования в мастере функций.
Для выполнения примера создайте модуль. Добавьте ссылки на системные сборки: Drawing, Express, Report, Tab:
Sub Main;
Begin
End Sub Main;
Class EventsClass: ReportEvents
...
// Событие, происходящее после вычисления листа регламентного отчёта
Public Sub OnAfterRecalcSheet(Sheet: IPrxSheet);
Var
Tab: ITabSheet;
Range: ITabRange;
Style: ITabCellStyle;
Begin
// Получим таблицу листа отчёта
Tab := Sheet As ITabSheet;
// Выберем диапазон ячеек для раскрашивания
Range := Tab.Cells(0, 0, 10, 5);
// Зададим стиль оформления для выбранного диапазона
Style := Range.Style;
// Установим закраску фона ячеек выбранного диапазона зелёным цветом
Style.BackgroundBrush := New GxSolidBrush.Create(GxColor.FromName("Green"));
End Sub OnAfterRecalcSheet;
...
End Class EventsClass;
В результате при наступлении события, происходящего после вычисления листа регламентного отчёта, фон диапазона ячеек A0:F10 будет перекрашен в зелёный цвет.
См. также: