На главную страницу ЗАО Софткей
 Главная   Новости   Статьи   Пресс-релизы   Рассылки 
 
MS O365 test

Главное - отчитаться

13.02.2003 / Программы / Дмитрий Лобач

Пользуясь поставляемыми вместе с Delphi компонентами Quick Report, программист получает в свое распоряжение мощное средство для построения band-отчетов. При этом, однако, возникает проблема гибкости и удобства для конечного пользователя - ведь средства визуального проектирования отчета доступны лишь во время разработки приложения. Пользователь не получает доступа к расположению элементов отчета, их свойствам, взаимодействию и, соответственно, не может сконструировать отчет по своему усмотрению. Таким образом, Quick Report не может быть применен в случаях, когда необходимо без обширного дополнительного программирования обеспечить возможность создавать и редактировать новые отчеты уже после окончания разработки и финального билда приложения.

Одним из наиболее оптимальных способов разрешения такой проблемы является использование FastReport.

FastReport VCL представляет собой генератор отчетов, реализованный в виде компонентов для Delphi версий 2-7 и С++ Builder версий 3-6. Его возможности по составлению отчетов примерно эквивалентны Quick Report. Однако, в дополнение к ним, Fast Report содержит дизайнерский модуль, который позволяет добавить своему приложению функциональность по созданию отчетов во время его работы (то есть уже после компиляции). Fast Report может работать не только с BDE, но и с ADO, IBX и даже с собственным движком пользователя (как в случае рассмотренной нами ранее программы CDBF).

Fast Report предоставляет в распоряжение пользователя аналоги инструментов, которыми пользуются программисты при визуальном программировании в Delphi. Здесь есть и "бросание" визуальных и невизуальных элементов на лист шаблона, и инспектор объектов, и обработчики событий. Фактически, дизайнер FastReport представляет собой мощное самостоятельное приложение для проектирования отчетов, которое программист может легко интегрировать в свой проект.

Дизайнер Fast Report запускается в собственном окне, имеет самостоятельное меню и поддерживает свой формат (*.frf) для хранения шаблонов отчетов. Следует также отметить удобный предпросмотр с возможностью редактирования уже сформированного отчета и его экспорта в форматы TXT, RTF, CSV, HTML.

Основным инструментом при конструировании отчетов являются так называемые bands. По своей сути, bands - это особые группы графических элементов. От обычных групп они отличаются тем, что обладают специальным поведением, которое зависит от их вида и местоположения. Например, титульный band встречается в отчете один раз - в самом начале. А вот page header band и page footer band встречаются на каждой странице - соответственно вверху и внизу, представляя собой нечто вроде колонтитулов.

Шаблон...

... и отчет

Master data band и detail data band используются для вывода соответственно основных и детализированных данных. В примере, приведенном на иллюстрации, основными данными могут быть названия и реквизиты компаний-контрагентов, а детализированными - перечень заказов этих компаний с указанием номеров и дат (содержащихся в отдельной таблице), а еще более детализированными (subdetail) - вид, объем и сумма конкретного заказа (которые содержатся в еще одной подчиненной таблице). Таким образом, можно организовать три уровня подчинения - master, detail и subdetail. Причем, допускается, чтобы на уровнях detail и subdetail выбирались данные из нескольких разных таблиц. Каждый уровень детализации может иметь свои header и footer, обрамляющие его записи. Кроме того, header и footer доступны для отдельных столбцов.

Шаблон Master-Detail-Subdetail...

... и сгенерированный на его основе отчет

Всего в отчетах Fast Report могут использоваться bands 22 различных видов. Следует еще раз напомнить, что отличие bands от обычных групп графических элементов (как в Corel Draw или в палитре "рисование" текстового редактора MS Word) состоит в их адаптивном поведении при генерации отчета. Bands на шаблоне отчета не определяют однозначно его внешний вид (как в WYSIWYG-редакторах), а лишь указывают генератору, каким будет размещение элементов данных в результирующем отчете. Сам шаблон может содержать всего лишь одну страницу (хотя может и несколько), однако находящиеся на нем bands позволяют отформатировать множество (причем заранее точное количество может быть неизвестно) страниц отчета. Дополнительные страницы добавляются в отчет по мере того, как на существующих исчерпывается место при выводе информации. При этом взаимное расположение основных, детализированных данных, промежуточных и общих итогов, элементов оформления будет задаваться взаимным расположением bands на листе или листах шаблона.

На bands и непосредственно на листах отчета, помимо элементов данных, могут располагаться статические текстовые объекты (в том числе, с поддержкой RichText). Программа предоставляет ставшие стандартными возможности по форматированию текста: можно выбирать вид, размер шрифта, способ начертания (полужирный, италик, подчеркивание), выравнивать абзацы по высоте и ширине, разворачивать текст на 90 градусов.

Помимо текста, поддерживается вставка в отчет картинок (*.bmp, *.jpg, *.wmf, *.emf), простых геометрических фигур, штрих-кодов, OLE-объектов, чекбоксов. Управление свойствами всех объектов при генерации отчета осуществляется с помощью скриптов, которые будут рассмотрены чуть ниже. Весьма уместной и полезной является возможность многошагового отката при создании и редактировании объектов.

В Fast Report есть RTF-редактор, позволяющий вставлять в текст переменные (в квадратных скобках)

Элемент отчета, сгенерированного на основе показанного выше шаблона с RTF-элементом

Разработчики приложили массу усилий, чтобы Fast Report был гибким и удобным в использовании. В частности, одним из основных элементов управления в нем является Object Inspector, хорошо знакомый каждому разработчику в Delphi, да и других RAD-средствах. С его помощью можно легко получить доступ к свойствам (форматированию, поведению, содержанию) листа и всех объектов на листе. Также значительно упрощается освоение продукта, поскольку Object Inspector позволяет легко видеть возможности по управлению компонентами отчета. В дополнение к Object Inspector, в Fast Report существует специальный визуальный построитель выражений, который обеспечивает легкий доступ ко всем переменным, функциям и исходным данным при разработке шаблона.

Редактор выражений

Однако на Object Inspector и визуальных конструкторах сходство со средой разработки Delphi не заканчивается. С помощью формул и выражений не всегда можно осуществить все вычисления и форматирование, которые необходимы при построении отчета. Если отчет конструируется еще во время разработки программы (как Quick Report), то эта работа осуществляется при помощи подпрограмм (переопределенных методов классов) на Object Pascal, которые компилируются самим Delphi. Однако когда программа уже скомпилирована, такая возможность теряется. Поэтому, чтобы позволить пользователю самостоятельно программировать необходимые действия при генерации отчета, Fast Report содержит встроенный интерпретатор объектно-ориентированного языка, подобного Object Pascal.

Пример скрипта

Для управления построением отчетов Fast Report позволяет создавать диалоговые окна с обычными элементами управления: кнопками, текстовыми полями, списками, чекбоксами. Эти окна проектируются визуально, их поведение задается с помощью Object Inspector и программ для встроенного интерпретатора. Через диалоговые окна можно, например, задавать наименования разделов отчетов или указывать степень детализации отчета.

Создание собственного диалогового окна

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

Особым видом отчетов в Fast Report являются двумерные отчеты. Они могут создаваться двумя способами. Первым путем является добавление в шаблон так называемых cross-bands, расположенных вертикально. На пересечении обычных (горизонтальных) и вертикальных bands помещаются элементы данных. В этом случае отчет может расти не только "вглубь" (путем добавления необходимых строк для вывода данных), но и "вширь" (путем добавления столбцов).

Предположим, у нас есть информация относительно объемов продаж по ряду торговых точек за несколько лет. Однако при создании отчета мы не знаем заранее, за сколько именно; также заранее неизвестно количество и состав точек. В этом случае можно создать шаблон двумерного отчета, в котором по вертикали будут отложены торговые точки, а по горизонтали - годы. При генерации отчета в него будет добавлено количества строк и столбцов, зависящие от конкретных данных, на которых базируется отчет.

Шаблон с кросс-бэндами

Вторым способом построения двумерного отчета является использование специального объекта - кросс-таблицы. Подобная таблица настраивается отдельным редактором.

Удобной особенностью Fast Report является возможность создания многостраничных шаблонов. При этом страницы могут быть как связанными (одна страница ссылается на другую, как на суботчет), так и независимыми.

Подведем итоги. Благодаря встроенному интерпретатору и поддержке конструируемых диалоговых окон, Fast Report обладает превосходной гибкостью и настраиваемостью. Кстати, создание собственных диалоговых окон, как и работа со сформированным отчетом (редактирование, поиск), являются уникальными возможностями FastReport, которыми не обладают его конкуренты (Report Builder, Rave, QR Designer). Он является практически незаменимым инструментом в тех случаях, когда необходимо иметь возможность изменять вид генерируемых отчетов без изменения кода основного приложения. Кроме того, Fast Report - прекрасный выбор для использования в собственных коммерческих разработках, требующих генератора отчетов. Эти разработки совершенно не обязательно должны быть Windows-зависимыми. Версия Fast Report CLX позволяет использовать возможности Fast Report не только разработчикам в Delphi 6, но и Linux-разработчикам, работающим в Borland Kylix. То есть отчеты и шаблоны в Fast Report являются кросс-платформенными.

Fast Report, в отличие от перечисленных выше конкурентов, создан русскоязычными разработчиками, поэтому не требует дополнительной локализации. А на сайте fast-report.com можно найти русскоязычное руководство и демо-проект, который исчерпывающе демонстрирует богатые возможности Fast Report.


Ссылки по теме:

Автор статьи: Дмитрий Лобач


Рубрики статей
Все статьи
Аналитика
Программы
Игры
Интернет
Авторские права
Интервью
События в мире ПО
Рассылки
Новости мира ПО
Статьи: Мир ПО
Статьи: Программы
Статьи: Игры
Архив выпусков
  «   Май 2018   »  
Пн Вт Ср Чт Пт Сб Вс
 123456
78910111213
14151617181920
21222324252627
28293031   
Поиск в архиве

Логин / пароль:
запомнить




Наши партнеры:

 САПР и графика



Написать редактору  | RSSЭкспорт новостей и обзоров


Rambler's
Top100 Rambler's Top100

Разработка компании «Битрикс»
Разработано
«Битрикс»


Copyright © 2001-2018 ЗАО «Софткей»