Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3_Generator_otchetov_lektsia.doc
Скачиваний:
8
Добавлен:
25.08.2019
Размер:
361.47 Кб
Скачать

2. Пример простого отчета

Рассмотрим пример, создания табличного отчета для списка всех государств из таблицы COUNTRY.DB из базы данных DBDEMOS.

В первую очередь необходимо связать компонент отчета с соответствующим компонентом набора данных. Для этого требуется указать в свойстве Dataset компонента TQuickRep имя компонента доступа к данным.

Все используемые ниже полосы создаются в отчете при помощи свойства Bands компонента TQuickRep.

Зададим заголовок и окончание страницы. На полосах Page Header и Page Footer можно разместить: номера страниц отчета, дату и время, название предприятия, его логотип и любую другую служебную информацию.

Полоса Title должна содержать название отчета и краткую аннотацию.

В полосе Column Header создадим шапку таблицы, включающую названия столбцов: название государства, столицу, численность населения и т. д. (рис. 2).

Полоса Detail должна иметь симметрично расположенные по отношению к шапке таблицы вертикальные образующие линии и одну горизонтальную разделительную линию (обычно нижнюю). В образовавшихся ячейках необходимо разместить компоненты TQRDBText (рис. 2), связанные с набором данных отчета, и указать для них требуемые поля набора данных.

Рис 2 Дизайн отчета

Рис.3. Просмотр отчета

На полосе Summary можно расположить обобщающие данные, например, общую площадь государств.

В результате, при печати или просмотре отчета получится таблица с параметрами государств (рис. 15.3), так как полоса Detail будет размножена в соответствии с числом записей в таблице COUNTRY.DB.

3. Компонент tQuickRep

Данный компонент является основой создаваемого отчета. Его основное назначение – содержать в себе другие компоненты набора QuickReport. Кроме того, только компонент TQuickRep позволяет отправлять на печать или включать просмотр готового отчета во время выполнения приложения, так как он обладает методами Print и Preview.

Компонент TQuickRep представляет собой размеченное поле белого цвета, напоминающее чистый лист бумаги. Отчет создается на базе самой обычной формы проекта. Для этого достаточно создать новую пустую форму, перенести в нее компонент TQuickRep, и основа нового отчета готова.

Однако для создания нового отчета более удобно воспользоваться Репозиторием объектов, который вызывается командой New из меню File Главного окна Delphi (рис. 4).

Любой отчет должен состоять из полос, каждая из которых отвечает за создание одной структурной части документа. От того, на какой полосе расположены специализированные компоненты отображения данных, зависит, будут ли в отчете показаны все записи набора данных или только текущая запись. Для управления стандартным набором полос компонент TQuickRep имеет специальное свойство Bands.

Рис. 4. Создание нового отчета с помощью Репозитория объектов Delphi

Все полосы располагаются в рабочей области компонента TQuickRep и выравниваются по левой и правой границе этой области.

Рис. 5. Диалог настройки параметров отчета

Важные для печати документа параметры отчета можно задать в специальном диалоге, который открывается командой Report settings из всплывающего меню компонента, перенесенного на форму (рис. 15.5).

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

  • Группа Paper size определяет параметры листа отчета.

  • Группа Margins задает отступы от края листа до рабочей области. Параметр Number of columns относится к полосам Column Header и Detail и определяет число колонок, в которых будут отображаться данные. Параметр Column space задает расстояние между колонками.

  • Группа Other задает параметры шрифта и единицы измерения для отчета.

  • Группа Page frame управляет рамкой вокруг рабочей области отчета. Рамка для каждой стороны листа задается отдельно.

  • Группа Bands позволяет добавлять и удалять полосы и задавать их высоту.

Для применения сделанных настроек к отчету необходимо щелкнуть на кнопке Apply, после этого можно просмотреть результат, щелкнув на кнопке Preview. Предварительный просмотр отчета также открывается командой Preview из всплывающего меню компонента.

Свойства:

  • Property AllDataSets: TList; - определяет список всех наборов данных, используемых в отчете;

  • property Available: boolean; - определяет, готов ли отчет к использованию. При значении False отчет готовится к печати или просмотру;

  • property BandList: TList; - задает список имен всех полос отчета;

  • property Bands: TquickRepBands - определяет набор полос отчета;

  • property DataSet: TDataSet; - задает связанный с отчетом набор данных;

  • property Description: TStrings; - определяет текстовое описание отчета;

  • property ExportFilter: TQRExportFilter; - определяет компонент TQRExportFilter, используемый для экспорта отчета в файл;

  • property Exporting: boolean; - возвращает True, если свойство ExportFilter не пустое. Работает только при Available = False;

  • property Options: TquickRoportOptions; - определяет параметры отчета;

  • property Page: TQRPage; - определяет параметры страницы;

  • property Printer: TQRPrinter; - дублирует свойство QRPrinter;

  • property PrinterSettings: TQRPrinterSettings; - определяет параметры печати отчета;

  • property PrintlfEmpty: boolean; - при значении True разрешает печатать пустой отчет;

  • property RecordCount: integers; - возвращает число записей в связанном с отчетом наборе данных. Для запроса SQL возвращает 1;

  • property RecordNumber: integers; - возвращает номер печатаемой строки;

  • property ReportTitle: strings; - краткое текстовое описание отчета. Используется для идентификации отчета при поиске в очереди на печать принтера;

  • property ShowProgress: boolean; - при значении True во время печати отчета отображается индикатор состояния процесса;

  • property Units: TQRUnits; - определяет единицу измерения отчета;

  • property Zoom: integer; - задает масштаб отображения отчета.

Методы:

  • procedure ExportToFilter (Afilter: TQRExportFilter); - cохраняет отчет в формате, который определяется экземпляром класса фильтра, переданного в параметре;

  • procedure NewColumn; - осуществляет переход на следующую колонку или страницу (если отчет простой);

  • procedure NewPage; - осуществляет переход на следующую страницу отчета;

  • procedure Prepare; - создает отчет;

  • procedure Preview; - осуществляет предварительный просмотр отчета;

  • procedure Print; - осуществляет печать отчета;

  • procedure PrinterSetup; - открывает стандартный диалог настройки принтера;

  • procedure PrintBackground; - осуществляет фоновую печать отчета в отдельном потоке;

  • procedure ResetPageFooterSize; - восстанавливает стандартные размеры окончания страницы.

Методы-обработчики событий:

  • property AfLerPreview: TQRAfterPreviewEvent; - вызывается после закрытия окна предварительного просмотра отчета;

  • property AfterPrint: TQRAfterPrintEvent; - вызывается после завершения печати отчета;

  • property BeforePrint: TQRDeforePrintEvent; - вызывается перед началом печати или просмотра отчета;

  • property OnEndPage: TQREndPageEvent; - вызывается при окончании создания очередной страницы отчета;

  • property OnNeedData: procedure (Sender: Tobject; MoreData: boolean); - вызывается при переносе данных из набора данных в отчет при его подготовке. Параметр MoreData при значении False прерывает этот процесс;

  • property OnPreview: procedure (Sender: TObject); - используется при необходимости заменить стандартный предварительный просмотр на другой;

  • property OnStartPage: procedure (Sender: Tobject); - вызывается при начале создания очередной страницы отчета;

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

В процессе создания стандартной структуры отчета необязательно использовать компоненты полос из Палитры компонентов. Для этих целей можно применить свойство Bands, которое определяет множество имеющихся в отчете полос. Полоса включается в отчет, если для соответствующего параметра задается значение True. Свойство Bands использует следующее множество значений:

  • HasColumnHeader - заголовок колонки;

  • HasDetaii - полоса данных;

  • HasPageFooter - окончание страницы;

  • HasPageHeader - заголовок страницы;

  • Has summary - итоговая полоса;

  • HasTitie - заголовок отчета.

При подготовке отчета к печати или просмотру ключевую роль играет свойство printer, для печати используется канва объекта TQRPrinter, связанного через это свойство с отчетом. Такой объект создается автоматически для каждого отчета. Чаще всего при разработке отчета использовать это свойство нет необходимости.

Свойство Options позволяет задать параметры отчета в целом. Класс TQuickReportOptions имеет следующие доступные для разработчика свойства:

  • FirstPageHeader - управляет отображением заголовка на первой странице отчета;

  • LastpageFooter - управляет отображением окончания на последней странице отчета;

  • Compression - управляет сжатием служебного метафайла, используемого при перерисовке отчета.

Свойство page позволяет задать параметры страницы отчета и позволяет устанавливать значения для следующих опубликованных свойств:

  • BottomMargin - нижний отступ;

  • Columns - число колонок;

  • Coiumnspace - расстояние между колонками;

  • LeftMargin - левый отступ;

  • Length - длинна;

  • orientation - ориентация страницы;

  • papersize - формат бумаги;

  • RightMargin правый отступ;

  • Ruler - разметка по краям листа;

  • TopMargin - верхний отступ;

  • Width - ширина.

Параметры страницы используются не только при печати отчета, но и в процессе разработки, изменяя внешний вид компонента TQuickRep в форме.

Свойство Print-erSettings типа TQRPrinterSettings позволяет установить параметры печати отчета:

  • Copies — число копий каждой страницы отчета;

  • Duplex — включает или отключает параллельную печать страниц;

  • Pirsipage — номер первой печатаемой страницы отчета;

  • LastPage — номер последней печатаемой страницы отчета;

  • OutputBin — определяет выходной лоток принтера.

Рис.6. Диалог предварительного просмотра отчета

Во время выполнения приложения при использовании метода preview появляется стандартный диалог предварительного просмотра отчета (рис. 15.6). При выполнении метода print отчет сразу отправляется на принтер.

Используя метод OnPreview можно переопределить диалог предварительного просмотра отчета:

Пример 15.1.

procedure TReportlForm.QuickRepPreview(Sender: TObject);

begin

PreviewForm.QRPreviewl.QRPririter := Sender as TQRPrinter;

PreviewForm.Show;

end;

В этом случае в секцию uses модуля отчета необходимо добавить модуль QRPrntr.

В процессе разработки стандартных отчетов для компонента TQuickRep обычно задаются значения всего нескольких свойств. Определяются параметры листа отчета: отступы, единицы измерения, ориентация и т. д. При помощи свойства DataSet с отчетом связывается основной набор данных. Свойство ReportTitie поможет идентифицировать отчет в очереди на печать принтера. При помощи свойства Bands задаются стандартные полосы.