- •Лабораторная работа №5 Составление отчетов
- •Скомпилируйте приложение
- •Скомпилируйте приложение.
- •1. Первый отчет
- •1.1. Простой отчет
- •1.2. Другие типы секций
- •1.3. Получение данных
- •1.4. Фильтрация и сортировка данных
- •1.5. Добавление текста и полей данных
- •2. Создание отчетов
- •2.1. Разметка, единицы измерения и масштаб
- •2.2. Размер бумаги и границы
- •2.3. Выбор шрифта
- •2.4. Заголовок отчета и описание
- •2.5. Добавление секций
- •2.6. Размеры секций
- •2.8. Выключение секций
- •2.9. Добавление печатных компонент к отчету
- •2.2.10.4. Размер
- •2.2.10.5. Стиль шрифта и цвет текста
- •2.2.10.6. Выравнивание
- •2.2.10.7. Выравнивание по секции
- •2.2.10.8. Цвет фона и прозрачность
- •2.2.10.9. Рамки
- •2.2.10.10. Разрешение и запрет
- •2.2.10.11. Печать статического текста
- •2.11. Печать из полей базы данных
- •2.2.11.1. Форматирование вывода
- •2.2.11.2. Печать мемо полей
- •2.2.11.3. Печать простых графических фигур
- •2.12. Печать графики
- •2.2.12.1. Статические изображения
- •2.2.12.2. Изображения, хранящие в таблицах
- •2.13. Печать RichText полей
- •3. Использование выражений
- •3.1. Создание выражений
- •2.3.1.1. Использование полей базы данных в выражениях
- •2.3.1.2. Использование строк в выражениях
- •2.3.1.3. Примеры выражений
- •3.2. Использование выражений
- •3.3. Размер стека
- •4. Создание групп
2.6. Размеры секций
Секции получают свой горизонтальный размер автоматически. Для одно-колоночного отчета – это размер бумаги минус отступы. Единственный тип изменить размер секции – это изменить параметры отступов.
Ширина некоторых секций зависит от свойства Page.Columns компоненты TQuickRep. Если вы создаете многоколоночный отчет (например: телефонный справочник), то ширина заголовка колонки, секции данных, заголовка группы и подвал группы настраиваются в зависимости от ширины отдельной колонки.
Вы можете изменять вертикальный размер любой секции. Изменяется стандартным путем с помощью мышки. Если требуется более точная установка размера, то можно это сделать с помощью Инспектора Объектов свойство TQRBand.Size, размер устанавливается в текущих единицах измерения.
В случае изменения размера с помощью Инспектора Объектов – обновление на экране не происходит, только в runtime, то свойство есть ведет себя как read-only.
2.7. Порядок печати секций
(Page header) Заголовок страницы (повторяется на каждой странице) |
(Title) Заголовок (на первой странице) |
(Column header) Заголовок колонки (повторяется для всех колонок) |
(Detail) Секция данных (повторяется для всех записей) |
(Summary) Итоги (на последней странице) |
(Page footer) Подвал (повторяется на каждой странице) |
Секции появляются в компоненте TQuickRep в соответствии с порядком печати. Тем не менее важно понимать почему это сделано так. Обычно секции печатаются в следующем порядке:
Это немного отличается, если используются группы, но если вы знаете, данный порядок размещения, то остальное становится намного проще.
2.8. Выключение секций
Иногда требуется отключить печать секции, в зависимости от некоторых условий, или во время проектирования (design time) или во время исполнения (runtime). Во время проектирования установите свойство TQRBand.Enabled в значение False. Данное свойство также может быть установлено во время исполнения, до генерации отчета или в любом обработчике во время генерации отчета.
Во время генерации отчета вы можете временно запретить печать секции в обработчике события BeforePrint. Данный обработчик получает var параметр PrintBand, который требуется установить в значение False, если не требуется печатать секцию – это действует только на одно событие, то есть когда в следующий раз вырабатывается данное событие, требуется повторная установка параметра. Данная особенность может использоваться для простой фильтрации данных:
Procedure TrepCusList.RepDetailBeforePrint(
Sender:TQRCustomBand;
var PrintBand: Boolean);
begin
if CustTableTotalSales > 3000000 then
PrintBand := True
else
PrintBand := False;
end;
Очень часто забывают, что данная проверка и установка параметра может быть сделана короче и быстрее следующим образом:
procedure TrepCusList.RepDetailBeforePrint(
Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
PrintBand := CustTableTotalSales > 3000000;
end;
Если вы выключаете печать подвала (page footer), то остается пустое пространство внизу страницы вместо заполнения данного пространства данными из секции Detail. Это случается, потому что QuickReport не может проверять размер подвала все время, что резко снизило бы быстродействие системы. Если вы запрещаете печать подвала, то вы должны также изменить и его размер, вызвав метод QuickRep.ResetPageFooterSize, что бы QuickReport мог правильно рассчитать размер страницы для данных.
