Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
30.05.2020
Размер:
93.7 Кб
Скачать

Лекція 8: Генератор звітів Fast Report. Етапи побудови звітів. Дизайнер звітів

План:

  1. Етапи побудови звіту

  • Дані

  • Параметри

  • Форма

  • Обробка

  1. Готовий звіт

  2. Дизайнер

  3. Об'єкти і бенды в FastReport для оформлення звітів

  4. Об'єкти FastReport

  5. Властивості і методи об'єктів в FastReport

  • Об'єкт "Текст"

  • Об'єкт "Малюнок"

  • Об'єкт "Вкладений звіт"

  • Об'єкт "Вкладений звіт"

  • Об'єкт "Лінія"

  • Об'єкт "Вкладений звіт"

  • Об'єкт "RichText"

  • Об'єкт "OLE"

  • Об'єкт "Діаграма"

  • Об'єкт "Фігура"

  • Об'єкт "RichText"

  • Об'єкт "OLE"

  • Об'єкт "Діаграма"

  • Об'єкт "Фігура"

  • Об'єкт "Штріхкод"

FastReport - це повністю візуальний генератор звітів, тобто більшість звітів можна побудувати, користуючись тільки мишею.

Етапи побудови звіту

Можна виділити наступні компоненти процесу побудови типового звіту:

Дані + параметри + форма + обробка = готовий звіт.

Розглянемо кожен з компонентів і його реалізацію в FastReport, а також в деяких інших генераторах звітів.

Дані

Є сукупністю даних, на основі яких будується звіт. Більшість звітів, як правило, заснована на даних з БД. Для доступу до таких даних Delphi надає ефективні механізми, які і використовуються в FastReport. Мова йде про компонентах TTable і TQuery, які можуть виступати як джерела даних для звіту. Окрім даних, що зберігаються в БД, FastReport може використовувати практично будь-які джерела (масив, файл, вміст StringGrid і ін.). В цьому випадку програміст повинен сам поклопотатися про доступ до такої інформації. Для цього є набір подій, що дозволяють легко здійснити передачу даних в ядро FastReport.

Параметри

На цьому етапі здійснюється запит параметрів у користувача (наприклад, діапазон дат, по якому необхідно вивести дані). Деякі звіти обходяться без цього етапу або використовують фіксовану установку параметрів (без запиту їх значень в діалозі).

Цей етап реалізований в різних генераторах звітів по-різному. FastReport дозволяє кінцевому користувачеві самому розробляти форму діалогу. Процес нагадує побудова форми в середовищі Delphi: є набір стандартних елементів управління, які можна розташовувати на формі діалогу і настроювати їх властивості. За допомогою вбудованої мови FastReport дозволяє реалізувати необхідну логіку роботи діалогу і передати введені значення ядру генератора.

Форма

Форма звіту є набором елементів, що описують те, як повинен виглядати готовий звіт. Для угрупування елементів по їх розташуванню в готовому звіті застосовуються бэнды (англ. band - смужка). Бенди розділяються на два види: службові (заголовок звіту, сторінки і ін.) і бэнды, створюючі багаторядкову частину звіту (далі - дата-бэнды). Дата-бенди підключаються до джерел даних, і їх вміст виводиться стільки раз, скільки є рядків даних в джерелі.

Для побудови форми звіту використовується візуальне середовище розробки - дизайнер. У FastReport дизайнер - це засіб розробки звітів, що поєднує потужність, простоту і зручність використання.

Обробка

Під обробкою розуміється обробка вхідних даних, модифікація форми звіту або окремих її компонентів в процесі побудови звіту. Простий приклад такої обробки - виведення негативних сум червоним кольором. Складніший приклад обробки - друк суми, яка підраховується в підвалі групи, в її заголовку.

Готовий звіт

Готовим звітом є продукт діяльності ядра FastReport - те, що ми бачимо при натисненні кнопки "Попередній перегляд". На відміну від багатьох генераторів звітів, які зберігають вміст сторінок звіту у вигляді метафайлу (тобто зображення у форматі EMF), в FastReport готовий звіт представлений набором об'єктів, що описують вміст кожної сторінки звіту. Це дозволяє модифікувати готовий звіт, завантажуючи потрібну сторінку в дизайнер. Крім того, можна описувати реакцію на клацання миші на потрібному об'єкті в режимі попереднього перегляду звіту. Це дозволяє легко організувати роботу застосування, при якій клацання на об'єкті звіту викликає генерацію нового звіту з детальнішими відомостями по вибраному об'єкту.

Вікно попереднього перегляду FastReport відрізняється від використовуваних в інших генераторах. Зокрема, в FastReport використовується схема проглядання документа і навігації, прийнята в Microsoft Word: у вікні можна бачити відразу декілька сторінок. Крім того, реалізована можливість пошуку тексту у всьому документі.

Дизайнер

Компонент забезпечений вбудованим дизайнером, якого можна викликати в design-time подвійним клацанням миші на компоненті TfrReport. Дизайнер надає користувачеві зручні засоби для розробки зовнішнього вигляду звіту і дозволяє відразу виконати попередній перегляд. Інтерфейс дизайнера виконаний на сучасному рівні з використанням панелей інструментів (toolbars). Інформація про розташування панелей запам'ятовується в реєстрі, і при наступному запуску відновлюється. Також в реєстрі запам'ятовується решта настройок дизайнера.

Об'єкти і бенды в FastReport для оформлення звітів

Об'єкти FastReport

Назва

Опис

Текст

Призначений для відображення тексту (однорядкового або багаторядкового). У тексті можуть бути присутніми змінні, вирази або поля БД (обрамляються квадратними дужками).

Бенд

Бенд (англ. band - смужка). Як і у всіх band-ориентированных генераторах звітів, дозволяє об'єднувати об'єкти в групи (заголовок звіту, сторінки, багаторядкова частина, підвал і ін.).

Малюнок

Призначений для відображення малюнка у форматах BMP, ICO, WMF, EMF, JPG. Також здатний відображати малюнок з BLOb-поля БД.

Вкладений звіт

Призначений для створення вкладених звітів. Будучи вставленим в звіт, приводить до створення нової сторінки, вміст якої буде виведений замість об'єкту при формуванні звіту.

Лінія

При виборі цього об'єкту курсор приймає форму олівця. На сторінці звіту при цьому можна малювати вертикальні і горизонтальні лінії.

Текст з тінню

Виконує ті ж функції, що і об'єкт "Текст". Крім того, уміє відображати тінь або градієнтну заливку. Дуже зручний об'єкт для друку наклейок.

Штрих-код

Відображає дані у формі штрих-кода. Здатний відображати дані з поля БД.

Фігура

Відображає один з чотирьох типів фігур: прямокутник, прямокутник із закругленими кутами, еліпс і трикутник.

Прапорець

Відображає хрестик або галочку усередині прямокутника.

RichText

Відображає форматований текст (формат RTF). У тексті можуть бути присутніми переменные/выражения/поля БД. Також здатний відображати дані з BLOb-поля БД.

OLE об'єкт

Відображає об'єкт OLE. Також здатний відображати дані з BLOb-поля БД.

Діаграма

Відображає дані у вигляді діаграми (використовується компонент TeeChart).

RichText 2.0

Відображає форматований текст з картинками і OLE-вставками (формат RTF 2.0, використовується компонент TrxRichEdit). У тексті можуть бути присутніми переменные/выражения/поля БД. Також здатний відображати дані з BLOb-поля БД.

У FastReport є 22 бэнда. Повний їх перелік приведений в таблиці.

Назва

Функція

Report title

друкується один раз на початку звіту

Report summary

друкується один раз в кінці звіту

Page header

друкується вгорі на кожній сторінці

Page footer

друкується внизу на кожній сторінці

Master header

друкується на початку списку 1-го рівня

Master data

дані списку 1-го рівня

Master footer

друкується в кінці списку 1-го рівня

Detail header

друкується на початку списку 2-го рівня

Detail data

дані списку 2-го рівня

Detail footer

друкується в кінці списку 2-го рівня

Subdetail header

друкується на початку списку 3-го рівня

Subdetail data

дані списку 3-го рівня

Subdetail footer

друкується в кінці списку 3-го рівня

Overlay

друкується на кожній сторінці нижнім шаром

Column header

друкується на початку кожної колонки

Column footer

друкується в кінці кожної колонки

Group header

заголовок групи

Group footer

друкується після групи

Cross header

Cross data Cross footer

ця група бэндов призначена для створення звітів із змінною кількістю стовпців і розбиттям на сторінки

Child

може бути прикріплений до будь-якого з бэндов, окрім Page footer, і виводитися разом з ним.

Як видно, набір бэндов відрізняється від "класичної" схеми, якій, зокрема, дотримується ReportBuilder (тут і далі мається на увазі ReportBuilder 4.2).

Властивості і методи об'єктів в FastReport

Об'єкт "Текст"

Є довільним чином обрамлений прямокутник з багаторядковим текстом усередині. Задається колір текста/заливка, тип рамки, товщина рамки і колір, всі параметри шрифту тексту, вирівнювання тексту усередині прямокутника і орієнтація тексту (норм./90 градусів). Об'єкт може бути виведений з використанням атрибутів виділення, якщо виконується умова виділення.

Крім основного редактора, є редактор, що дозволяє вибрати формат змінних. Викликати його можна або з контекстного меню об'єкту, або з вікна редактора мемо (кнопка "Формат"). Змінна може відображатися як текст, число, дата, час, булеве значення.

У контекстному меню об'єкту можна задати наступні опції:

· "розтягуваний" - висота об'єкту залежатиме від кількості рядків в нім. При цьому опція "розтягуваний" повинна бути включена у бэнда, на якому знаходиться об'єкт. При друці бэнда обчислюється його висота, і всі об'єкти з включеним розтяганням виводяться таким чином, що їх нижня межа розтягується до нижньої межі бэнда.

· "перенесення слів" - якщо слово не поміщається в рядку, воно переноситься на наступний рядок.

· "перенесення по складах" - при перенесенні слова робиться розбиття його на склади. При цьому опція "перенесення слів" повинна бути включена.

Об'єкт "Малюнок"

Призначений для вставки графічного файлу у форматі BMP/WMF/ICO (і JPG, якщо встановлений відповідний модуль) в документ. Редактор об'єкту дозволяє вставити малюнок і очистити вміст об'єкту.

У контекстному меню об'єкту можна задати наступні опції:

· "розтягуваний" - малюнок розтягується по межах об'єкту;

· "зберігати пропорції" - якщо включено розтягання, пропорції малюнка зберігаються;

· "центрівка" - малюнок виводиться в центрі об'єкту.

Об'єкт "Вкладений звіт"

Вкладений звіт - це звіт з розміщеним на нім об'єктом SubReport, який є посиланням на інший звіт, розташований на окремій сторінці. При формуванні такого звіту замість об'єкту SubReport буде виведений відповідний звіт. Об'єкти SubReport можна розташовувати на листі один під одним або поряд. На використання SubReports накладаються наступні обмеження:

· не можна використовувати колонки;

· не можна використовувати бэнды, що розриваються;

· не можна використовувати групи.

Об'єкт "Лінія"

Є вертикальною або горизонтальною лінією із змінним кольором і товщиною. Дизайнер має зручні засоби для малювання ліній. Зокрема, за допомогою ліній можна швидко задати зовнішнє обрамлення для таблиці, відмінне від внутрішнього.

Об'єкт "Вкладений звіт"

Є прямокутником з хрестиком усередині. Якщо в memo об'єкту розмістити посилання змінну або на полі таблиці БД, то хрестик буде показаний при ненульовому значенні змінної. У memo можна також розмістити символ "0" або відмінний від нуля.

Об'єкт "RichText"

Призначений для вставки тексту у форматі RTF (Rich Text format) в документ. Зокрема, таким чином можна вставити текст, підготовлений в текстовому процесорі MS Word, заздалегідь зберігши його у форматі RTF. У тексті можуть знаходиться змінні, обрамлені квадратними дужками, - як і в об'єкті "Текст". Якщо текст не вміщається в рамки об'єкту, то зайві рядки просто не виведуться.

Якщо звіт, що відкривається, містить непідключені компоненти, то видасться повідомлення про помилку.

Об'єкт "OLE"

Призначений для вставки OLE об'єктів в документ. Редактор об'єкту "OLE" дозволяє вставити новий об'єкт і редагувати що існує. Вставка нового об'єкту проводиться в стандартному діалоговому вікні.

Об'єкт "Діаграма"

Призначений для вставки графіка або діаграми в документ. Можливе використання шести типів графіків: лінії, крапки, стовпці горизонтальні і вертикальні, області і кругові діаграми. Редактор об'єкту дозволяє задавати різні опції для графіка, а також указувати об'єкти, вміст яких буде використаний при побудові графіка.

Для побудови графіка необхідно вказати імена двох об'єктів типу "Текст", в яких міститься назва і відповідне числове значення. При побудові звіту вміст цих об'єктів накопичуватиметься в мемо діаграми.

Графік можна побудувати і вручну, якщо занести в memo об'єкту відповідні значення. Якщо кількість рядків заголовка не відповідає кількості значень, графік виведений не буде.

Об'єкт "Фігура"

Призначений для вставки геометричних фігур (прямокутник, прямокутник із закругленими кутами, еліпс, трикутник) в документ. Виконує виключно декоративну роль.

Об'єкт "Штріхкод"

Призначений для вставки штрихкодов в документ.

4