Как создать свой компонент для отчета FastReport .NET

14.05.2021

Генератор отчетов FastReport .NET обладает широкими возможностями кастомизации, то есть настройкой «под себя». Из кода пользовательского приложения вы можете создавать собственные компоненты генератора отчетов используя библиотеки FastReport. Таким образом можно создать как собственный дизайнер отчетов, так и его просмотрщик.

Также, вы можете подменять диалоговые окна в дизайнере отчетов, например, окно сохранения файла.

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

Допустим, в своих отчетах вы часто используете текстовый объект с определенными настройками. Было бы удобно иметь уже настроенный объект “текст” с определенным шрифтом или выделением цветом, чтобы не настраивать каждый раз эти свойства вручную.

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

Чтобы создать свой собственный компонент для отчета вам необходимы исходные коды генератора отчетов FastReport .NET. Давайте рассмотрим случай создания собственного объекта на основе объекта Text. Для этого нужно добавить новый класс в корень проекта FastReport:

 public class CustomerTextObject : TextObject
 {
 public override void OnBeforeInsert(int flags)
 {
 base.OnBeforeInsert(flags);
 Border.Lines = BorderLines.All;
 }
 }

В этом классе мы переопределили событие перед вставкой объекта, в котором задали значение по умолчанию для границ объекта. Таким образом наш текстовый объект будет сразу иметь включенные границы. Если вам требуется задать какие-либо другие свойства объекта - без проблем. Выставим цвет:

public override void OnBeforeInsert(int flags)
 {
 base.OnBeforeInsert(flags);
 Border.Lines = BorderLines.All;
 TextColor = System.Drawing.Color.Gray;
 }

В случае, если вы хотите создать объект с собственной функциональностью, то наследовать нужно от базового класса ReportComponentBase. Но тогда, помимо свойств объекта, его поведения, вам придется реализовать и отрисовку - метод Draw(). Затем вызвать в нем base.Draw() и добавить рисование объекта.

Давайте взглянем на пример отрисовки объекта Text:

public override void Draw(FRPaintEventArgs e)
 {
 base.Draw(e);
 DrawText(e);
 DrawMarkers(e);
 Border.Draw(e, new RectangleF(AbsLeft, AbsTop, Width, Height));
 DrawDesign(e);
 }

Как видите, здесь вызывается сразу несколько методов: для отрисовки текста, маркеров, границ и редактора.

После создания своего объекта, нужно зарегистрировать его, чтобы он появился на панели элементов в дизайнере отчета. Для этого используем метод FastReport.Utils.RegisteredObjects.Add() в классе AssemblyInitializer.cs.

Пример регистрации созданного нами ранее объекта:

RegisteredObjects.Add(typeof(CustomerTextObject), “ReportPage”, 120, 1);

Все параметры по порядку: имя регистрируемого объекта, имя объекта страницы отчета, идентификатор иконки объекта, порядковый номер объекта на панели инструментов. Иконки хранятся в ресурсах. Вы можете добавить свое изображение в формате bmp в ресурсы или передать его непосредственно в параметр метода вместо идентификатора иконки.

Теперь можно скомпилировать решение и запустить дизайнер отчетов. На панели элементов появился еще один контрол:

Объект в дизайнере отчётов

Мы использовали иконку от объекта Text, поэтому он выглядит также. А теперь добавим его на страницу отчета и введем текст:

Объект “Текст”

Как видим, и рамки, и цвет текста соответствуют нашим установка в коде. Мы с вами создали “кастомный” объект Text, который имеет предустановки границ и цвета текста. Вы можете настроить этим способом любой существующий объект в отчете, или создать свой собственный.

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.