Для расширения функциональности отчётов используйте:
модули, содержащие пользовательские Fore-функции, которые могут быть использованы для преобразования данных. Сигнатура указываемого модуля может содержать параметры;
обработчик событий - модуль, созданный на языке Fore. Обработчик событий позволяет выполнять заданное действие при каждом возникновении события. Например, при подключении модуля обработки событий появляется возможность: обрабатывать ввод данных «на лету», выполнять дополнительные действия перед и/или после возникновения какого-либо события.
Основное назначение подключения прикладных модулей и обработчиков событий:
формирование гиперссылок. Если в качестве их действий необходимо выполнение макросов, содержащихся в подключённых объектах;
формирование формул;
обработка событий. Для обработки событий необходимо описать класс, наследуемый от класса ReportEvents, и переопределить методы, реализующие необходимые события.
Для отчётов можно настроить обработку событий, происходящих:
перед открытием регламентного отчёта;
перед и после смены активного листа регламентного отчёта;
перед и после вычисления области данных (в том числе, реляционной), регламентного отчёта целиком или его отдельного листа;
перед и после печати и экспорта регламентного отчёта;
перед и после сохранения изменённых значений областей данных;
при изменении значения элемента управления регламентного отчёта;
перед сохранением регламентного отчёта и др.
Для работы с модулями отчёта и обработчиком событий используйте панель «Список модулей»:
При работе с модулями отчёта/обработчиком событий доступны следующие операции:
Создание модуля/обработчика событий
Автоматическое создание обработчика событий
Подключение существующего модуля/обработчика событий
Открытие модуля/обработчика событий в среде разработки
Удаление модуля/обработчика событий из списка
Для выполнения примера создайте модуль. Добавьте ссылки на системные сборки: Drawing, Express, Report, Tab:
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(Sheet: IPrxSheet);
End Class EventsClass;
В результате при наступлении события, происходящего после вычисления листа регламентного отчёта, фон диапазона ячеек A0:F10 будет перекрашен в зелёный цвет.
См. также: