ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.08.2024
Просмотров: 16
Скачиваний: 0
Лекція 8: Генератор звітів Fast Report. Етапи побудови звітів. Дизайнер звітів
План:
-
Етапи побудови звіту
-
Дані
-
Параметри
-
Форма
-
Обробка
-
Готовий звіт
-
Дизайнер
-
Об'єкти і бенды в FastReport для оформлення звітів
-
Об'єкти FastReport
-
Властивості і методи об'єктів в 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 накладаються наступні обмеження: