Компоненты Rave Reports и отчеты в приложении Delphi

         

/H2> br>. Диалог настройки печати компонента TRvSystem Его заголовок определяется свойством


property TitleSetup: TFormatString;

Перед открытием этого окна вызывается метод-обработчик

property OnPreviewSetup: TNotifyEvent;

Кроме этого, для диалога настройки печати можно задать ряд дополнительных параметров. Это делается в свойстве

type

TSystemSetup = (ssAllowSetup, ssAllowCopies, ssAllowCollate,

ssAllowDuplex, ssAllowDestPreview, ssAllowDestPrinter, ssAllowDestFile,

ssAllowPrinterSetup);

TSystemSetups = set of TSystemSetup;

property SystemSetups: TSystemSetups;

Элементы множества TSystemSetup означают следующее:

 ssAllowSetup — разрешает или запрещает использование диалога настройки печати компонента;  ssAllowCopies — управляет доступностью установки числа копий отчета;  ssAllowCollate — разрешает или запрещает настройку режима печати с разбором страниц по копиям;  ssAllowDuplex — разрешает или запрещает настройку двусторонней печати;  ssAllowDestPreview — разрешает или запрещает использование окна предварительного просмотра;  ssAiiowDestPrinter — разрешает или запрещает использование принтера;  ssAllowDestFile — разрешает или запрещает использование файла для вывода отчета;  ssAiiowPrinterSetup — разрешает или запрещает использование диалога настройки параметров принтера.

Во время выполнения любой из перечисленных операций вывода отчета открывается окно состояния процесса (Рисунок 23.5). Его заголовок определяется свойством

property TitleStatus: TFormatString;



Компонент отчета TRvProject



Компонент отчета TRvProject

Компонент TRvProject обеспечивает представление в приложении отчета. Для того чтобы связать проект отчета Rave Reports с компонентом, используется свойство

property ProjectFile: string;

До начала печати необходимо связать компонент TRvProject с компонентом управления отчетом TRvSystem. Для этого достаточно передать в свойстве

property Engine: TRpComponent;

ссылку на компонент TRvSystem.

При необходимости вы можете загрузить отчет из внешнего файла или потока:

procedure LoadFromFile(FileName: String);

 procedure LoadFromStream(Stream: TStream);

Загруженный отчет становится текущим.

Кроме этого существует и пара методов для сохранения отчета:

function SaveToFile(FileName: String); 

procedure SaveToStream(Stream: TStream);

В процессе работы приложения может потребоваться напечатать несколько различных отчетов. Для этого можно использовать требуемое число компонентов TRvProject или загружать нужные отчеты по мере необходимости.

Забегая немного вперед (см. гл. 24), скажем, что один файл проекта отчета может содержать несколько независимых отчетов. Каждый из них идентифицируется в компоненте TRvProject тремя свойствами. Имя, полное имя и описание отчета содержатся соответственно в трех свойствах только для чтения:

property ReportName: String; 

property ReportFullName: String; 

property ReportDesc: String;

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

function SelectReport(ReportName: string; FullName: boolean): boolean;

В параметре ReportName передается имя нужного отчета. Если параметр FullName имеет значение True, то это полное имя отчета, иначе — имя отчета.

В случае, если проект содержит несколько отчетов, их имена доступны при помощи метода

procedure GetReportList(ReportList: TStrings;FullName: boolean);

Список имен будет возвращен в список строк ReportList, а параметр FullName определяет, какие именно имена будут занесены в список. При значении параметра True метод возвращает полные имена отчетов (соответствует свойству ReportFullName), иначе — имена (соответствует свойству  ReportlName).

Например, код

var ReportList: TStringList; i: Integer;

ReportList := TStringList.Create;

RvProjectl.Open;

try

RvProjectl.GetReportList(ReportList, False);

for i := 0 to ReportList.Count - 1

do RvProjectl.ExecuteReport(ReportList[I]); 

finally

RvProjectl.Close;

ReportList.Free;

 end;

последовательно печатает все отчеты, входящие в состав файла проекта отчета.

Файл проекта отчета можно включить в состав исполняемого файла приложения. Для этого используется свойство

property StoreRAV: Boolean;

При щелчке на кнопке в строке этого свойства в Инспекторе объектов открывается специализированный редактор Load Into exe (Рисунок 23.2).



Компонент управления отчетом TRvSystem



Компонент управления отчетом TRvSystem

Компонент управления отчетом TRvSystem обеспечивает выполнение основных операций с отчетом из приложения. В приложении он должен быть связан с компонентом TRvProject (см. выше разд. "Компонент отчета TRvProject" данной главы). Этого вполне достаточно, чтобы компонент TRvSystem выполнил свою работу. У разработчика нет необходимости вызывать какие-либо методы компонента, чтобы направить отчет на печать.

В его составе инкапсулированы объекты, обеспечивающие вывод отчета из компонента TRvProject в один из трех системных приемников:

файл (объект класса TSystemFiler);  предварительный просмотр (объект класса TSystemPreview);  принтер (объект класса TSystemPrinter).

За это отвечает свойство

type

TReportDest = (rdPreview, rdPrinter, rdFile); 

property ReportDest: TReportDest;

которое может принимать одно из трех значений типа TReportDest.

Соответственно, для каждого типа системного приемника имеется свойство, позволяющее задать все его основные параметры.

Для вывода в файл это комплексное свойство

property SystemFiler: TSystemFiler;

Внутри него задается имя файла во вложенном свойстве

property FileName: string;

но при этом вложенное свойство

type

TStreamMode = (smMemory, smTempFile, smFile, sraUser); property StreamMode: TStreamMode;

должно иметь значение smFile.

При выводе отчета для предварительного просмотра используется экземпляр класса TSystemPreview, который доступен через свойство

property SystemPreview: TSystemPreview;

Его свойства совпадают со свойствами компонента TRvRenderPreview.

Стандартное диалоговое окно предварительного просмотра отчета Rave Reports представлено на Рисунок 23.3.



Компоненты Rave Reports и их назначение



Компоненты Rave Reports и их назначение

Компоненты для создания отчетов и управления расположены на странице Rave Палитры компонентов. Они делятся на следующие функциональные группы.

 Компонент отчета TRvproject, с точки зрения приложения, и есть отчет. Он обеспечивает загрузку заранее созданного в визуальной среде Rave Reports отчета из файла с расширением rav.

Подробнее об использовании компонента TRvproject рассказывается в ниже в этой главе.

 Компонент управления отчетом TRvSystem обеспечивает работу приложения с отчетом. Взаимодействуя с компонентом отчета, с одной стороны, и сервером отчета Rave Reports, с другой, этот компонент обеспечивает просмотр и печать отчетов.

Подробнее об использовании компонента TRvSystem рассказывается в ниже в этой главе.

 Компоненты соединения с источниками данных предназначены для подключения различных источников данных к отчетам. При этом могут использоваться технологии доступа к данным ADO, BDE, dbExpress (см. часть IV).

К этой группе относятся компоненты:

 TRvCustomConnection;  TRvDataSetConnection;  TRvTableConnection;  TRvQueryConnection.

Подробнее об использовании этих компонентов рассказывается в гл. 25.

 Компоненты преобразования данных позволяют конвертировать отчеты из формата данных Rave Reports в другие форматы (текстовый, PDF, HTML, RTF), а также распечатывать или просматривать отчеты.

К этой группе относятся компоненты:

 TRvNDRWriter;  TRvRenderHTML;  TRvRenderPreview;   TRvRenderRTF;  TRvRenderPrinter;  TRvRenderText.  TRvRenderPDF;

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



Компоненты Rave Reports в приложении Delphi



Рисунок 23.1. Компоненты Rave Reports в приложении Delphi


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

1. При помощи визуальной среды разработки Rave Reports необходимо создать проект отчета и сохранить его (см. гл. 24).

2. Перенести в проект приложения в Delphi компонент TRvProject и связать его с файлом проекта отчета (см. ниже) при помощи свойства ProjectFile.

3. Перенести в проект приложения в Delphi компонент TRvSystem и связать его с компонентом TRvProject. ля этого используется свойство Engine компонента TRvProject (см. ниже).

4. Написать код приложения, обеспечивающий просмотр и печать отчета (при необходимости и другие операции), используя методы компонента TRvProject (см. ниже).

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

 



Отчет в приложении Delphi



Отчет в приложении Delphi

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

Основой отчета является файл отчета с расширением rav. Он создается в визуальной среде разработки Rave Reports и может содержать произвольное число страниц. Каждая страница может быть оформлена графическими или текстовыми элементами или отображать данные из какой-либо базы данных. Другими словами, файл RAV — это проект будущего отчета, содержащий общую информацию об отчете, оформление его страниц и правила их заполнения.

После создания проект отчета необходимо связать с приложением Delphi. Для этого используется компонент TRvProject (Рисунок 23.1). Этот компонент обеспечивает представление отчета в приложении.

Но этого недостаточно, чтобы просмотреть или напечатать отчет. Для выполнения этих операций используется код ядра генератора отчета, который автоматически прикомпилируется к исполняемому коду приложения при переносе на любую форму проекта компонентов TRvProject и TRvSystem. Для управления операциями печати и просмотра в проекте должен присутствовать компонент TRvSystem (Рисунок 23.1).



Редактор свойства StoreRAV компонента TRvProject



Рисунок 23.2. Редактор свойства StoreRAV компонента TRvProject


Здесь можно задать файл проекта отчета. После этого в Инспекторе объектов в строке свойства storeRAv появятся дата и время загрузки проекта отчета. Это же время и дата будут сохранены в свойстве

property RaveBlobDateTime: TDateTime;

Отправить отчет на печать можно методом

procedure Execute;

или же методом

procedure ExecuteReport(ReportName: string);

который позволяет направить на печать отчет, заданный параметром ReportName. Он должен соответствовать имени отчета, хранящемуся в свойстве ReportName компонента TRvProject.

Отчет, содержащийся в компоненте Trvproject, может быть открыт для редактирования методом

procedure Open;

Не открывая отчет, вы не сможете использовать большинство свойств и методов компонента. Дело в том, что при открытии компонент загружает отчет из файла проекта или прикомпилированного кода (в случае использования свойства StoreRAV).

Сохранение и закрытие отчета соответственно выполняются методами

procedure Save; procedure Close;

Кроме этого, действия, аналогичные методам open и close, выполняются свойством

property Active: Boolean;

Если свойству присвоить значение True — отчет открывается, иначе — закрывается.

До и после открытия и закрытия отчета вызывается четверка методов-обработчиков:

property aeforeOpen: TNotifyEvent;

property AfterOpen: TNotifyEvent;

property BeforeClose: TNotifyEvent; 

property AfterClose: TNotifyEvent;

 



В качестве основного средства создания



Резюме

В качестве основного средства создания отчетов и их использования в приложениях в состав Delphi 7 включен генератор отчетов Rave Reports 5.0. В его состав входят ядро генератора отчетов, визуальная среда создания отчетов и набор компонентов.
Ядро генератора отчетов обеспечивает предварительный просмотр или печать отчета. Оно включается в исполняемый файл приложения. Поэтому разработчики избавлены от необходимости распространять совместно с приложением какие-либо дополнительные файлы.
Визуальная среда создания отчетов позволяет разрабатывать самые разнообразные отчеты, в том числе использующие наборы данных из источников различных типов.
Набор компонентов предоставляет разработчику инструментарий для управления отчетом в приложении.

Стандартное диалоговое окно предварительного просмотра компонента TRvSystem



Рисунок 23.3. Стандартное диалоговое окно предварительного просмотра компонента TRvSystem


Заголовок этого окна задается свойством

property TitlePreview: TFormatString;

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

property OnPreviewShow: TNotifyEvent;

За вывод отчета на печать отвечает инкапсулированный в компоненте объект типа TSystemPrinter. К нему можно обратиться при помощи свойства

property SystemPrinter: TSystemPrinter;

Его свойства совпадают со свойствами компонента TRvRenderPrinter.

Перед тем как отправить отчет одному из трех системных приемников, компонент открывает диалог настройки печати (Рисунок 23.4).