Как создать свой компонент для отчета 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, который имеет предустановки границ и цвета текста. Вы можете настроить этим способом любой существующий объект в отчете, или создать свой собственный.

.NET .NET FastReport FastReport
10 февраля 2025

Как попробовать FastReport .NET WEB перед покупкой

Протестировав WEB пак перед покупкой, вы сможете сделать осознанный выбор: подходит ли вам FastReport .NET для ваших задач.
22 января 2025

Как подключить РЕД БД к генератору отчетов FastReport .NET

Пошаговая инструкция по подключению РЕД БД к генератору отчётов FastReport .NET. Эффективные методы и рекомендации для создания отчётов на основе данных из базы.
20 ноября 2024

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

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