Как задать картинку в отчете из кода пользовательского приложения

08.01.2020

Довольно часто возникает потребность задавать различные изображения в отчете в зависимости от каких-либо условий или входящих параметров. С этой проблемой столкнулся пользователь генератора отчетов List&Label:

Есть ли способ программной вставки встроенного изображения в документ List & Label из кода .net?

Однако, пользователь не нашел решения.

К сожалению, невозможно вставить изображение из кода .NET. Это возможно только при работе с отчетом в дизайнере List & Label.

В свете этого, хочется показать, как такое можно реализовать в генераторе отчетов FastReport.Net.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//Create instance of class Report
 Report report = new Report();
 //Add report page
 ReportPage page = new ReportPage();
 report.Pages.Add(page);
 page.CreateUniqueName();
 //App data band
 DataBand data = new DataBand();
 //Add data band to page
 page.Bands.Add(data);
 data.CreateUniqueName();
 data.Height = Units.Centimeters * 1; //Set band height
 //Create picture object
 PictureObject pic = new PictureObject();
 pic.Bounds = new RectangleF(0, 0, Units.Centimeters * 5, Units.Centimeters * 5); //Set object bounds
 pic.Image = new Bitmap("../../App_Data/snow_flake.ico"); //Set picture
 pic.Parent = data; //Set picture parent object
 pic.CreateUniqueName();
 report.Prepare(); //Build report
 report.Show(); //Show report

Это очень простой пример отчета, в котором всего лишь один бэнд «Данные». Так как этот отчет целиком создается в коде программы, то нет никаких проблем создать объект с картинкой и поместить в отчет. Создание отчета из кода позволяет нам как угодно менять его в зависимости от логики программы.

Рассмотрим другой случай. Допустим у вас уже есть шаблон отчета, созданный в дизайнере. Вы хотите менять картинку в отчете в зависимости от логики программы. В таком случае, в шаблоне отчета уже должен быть объект Picture, а вы просто будете заменять саму картинку из кода пользовательского приложения. Вот как будет выглядеть код в программе:         

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 //Create report object
 Report report = new Report();
 //Load report template into the report obj
 report.Load("../../App_Data/Picture.frx");
 //Get picture object from the report template
 PictureObject pic = report.FindObject("Picture1") as PictureObject;
 //Set object bounds
 pic.Bounds = new RectangleF(0, 0, Units.Centimeters * 5, Units.Centimeters * 5);
 //Set the image
 pic.Image = new Bitmap("../../App_Data/snow_flake.ico");
 //Build report
 report.Prepare();
 //Show report
 report.Show();

Здесь, мы находим объект с картинкой в шаблоне отчета и изменяем его свойства по своему желанию.

И, наконец, третий вариант работы с объектом Picture – из встроенного скрипта отчета. Скрипт отчета позволяет изменять шаблон и данные в отчете, как угодно. Вы можете предварительно добавить в шаблон объект Picture, а можете добавить его непосредственно в скрипте отчета. Поистине, безграничная гибкость. Нет необходимости использовать пользовательское приложение для управления содержимым отчета. Это большой плюс для меня, ведь отпадает необходимость править код приложения.

Пример для задания изображения в скрипте отчета крайне прост:

1
Picture1.Image = new Bitmap("C:/Users/Dimon/source/repos/PictureSetting/PictureSetting/App_Data/snow_flake.ico");

Вам нужно только определиться с событием, в котором вы хотите изменять картинку, например, для объекта Picture можно использовать событие BeforePrint.

1 ноября 2024

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

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

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

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

Как настроить WSL 2 для работы с FastReport и FastCube

В этой статье попробуем вместе разобраться, как настроить WSL 2 для работы с компонентами FastReport и FastCube в Lazarus для Linux.