SNK Software
Web Studio Монополия Metaproducts Утилиты Игры
Монополию Web Studio Библиотека
Вебмастер Дельфи Работа на ПК Самоучитель
Для PHP Для Delphi
Веб-дизайн Программирование Компьютеры Девайсы Заметки
SNK Software Индустрия hardware Индустрия software
О студии Портфолио Сопровождение сайтов

Новые материалы

Девайсы:
Сравнительный обзор Nokia Lumia 920 и HTC 8X
Девайсы:
Обзор Nokia Lumia 820 – смартфона на WP8
Вебмастеру:
Настройка Apache, PHP и MySQL для Linux-VPS
Вебмастеру:
VPS на домашнем ПК: настройка сети в VM VirtualBox и Debian
Вебмастеру:
VPS на домашнем ПК: устанавливаем Linux Debian 6
Вебмастеру:
VPS на домашнем ПК: установка VM VirtualBox
Работа на компьютере:
Иные возможности текстового процессора Word
Работа на компьютере:
Вставка объектов
Работа на компьютере:
Таблицы в Word
Работа на компьютере:
Печать и сохранение документов
Работа на компьютере:
Сноски, колонтитулы, оглавление и указатели в Word

Очтеты в Delphi

Вопрос рассмотрения работы с базами данных в Delphi был бы не полным, если не рассмотреть работу с отчетами. Отчеты представляют собой печатные документы, получаемые в результате выполнения запросов к БД. А распечатка всевозможных бумажных документов - одно из основных предназначений приложений БД.

Отчеты в Delphi

Для упрощения процесса составления отчетов в поставку всех версий Delphi входят специальные программные средства - генераторы отчетов. В первых версиях Delphi это был ReportSmith, затем, с Delphi 3 по Delphi 6 - QuickReport, а начиная с Delphi 7 и заканчивая Delphi 2006 - Rave Reports.

ПРИМЕЧАНИЕ
В поставку Delphi 7 так же входит и QuickReport, однако по умолчанию этот инструментарий отсутствует на панели компонентов. Чтобы воспользоваться QuickReport в этой версии Delphi, следует открыть Component ' Install Packages, нажать кнопку Add и выбрать файл dclqrt70.bpl в подкаталоге …Delphi\Bin.

Генераторы ReportSmith и Rave Reports представляют собой отдельные приложения, при помощи которых можно создавать отчеты, в то время, как QuickReports - это набор VCL-компонентов, которые помещают непосредственно на стандартную форму Delphi.

В простейшем случае работа с QuickReport выглядит следующим образом: создается новая форма, на которую помещают компонент QuickRep. Затем при помощи составного свойства Bands определяют, какие основные составные части отчета требуются:

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

Рассмотрим простейшее приложение, использующее отчет. Для этого создадим новый проект в Delphi (если у вас Delphi 7, то сначала подключите QuickReport, как описано в примечании, если же у вас более новая версия - то можете пропустить этот текст и сразу перейти к следующему параграфу). Затем на главную форму поместите 3 кнопки - "Просмотр", "Печать" и "Выход", а в заголовке окна (Caption) напишите "QuickReport demo" (рис. 22.1).

Приложение QuickReport demo на Delphi
Рис. 22.1. Приложение QuickReport demo

Теперь создадим новую форму, поместим на нее компонент Table, установим свойство DatabaseName в DATA1, а для TableName выберем Customer, после чего установим свойство Active в истину. Таким образом, мы подготовили данные для вывода. Теперь поместим на форму компонент QuickRep, который визуально предствляет собой лист отчета и установим в свойстве Bands флаги HasColumnHeader, HasDetail, HasPageFooter и HasTitle. В результате на "листе" появятся 4 области, представляющие собой соответствующие логические части отчета. Теперь в центре самой верхней области - Title - поместим компонент QRLabel. Это аналог стандартной подписи (Label), предназначенный специально для отчетов QuickReport. В свойстве Caption напишем "Клиенты", после чего можно увеличить размер шрифта, сделать его полужирным или выбрать другую гарнитуру, чтобы заголовок не "затерялся".

Следующим этапом будет собственно подготовка к выводу данных отчета. Поскольку мы выбрали таблицу клиентов, то выводить будем 2 колонки - номер клиента в базе (поле CUST_ID) и иго имя (CUST_NAME). Для этого сначала на области заголовков столбцов (Column Header) разместим еще 2 надписи, воспользовавшись QRLabel, в свойстве Caption которых напишем "№" и "Имя". В следующей области, Detail, непосредственно под этими надписями, поместим 2 компонента QRDBText. Эти компоненты, в свою очередь, можно назвать аналогами компонент DBText, предназначенных для вывода данных из БД в строковом формате. Свойство DataSet компонентов QRDBText следует установить в Table1, а DataField - в CUST_ID у одного и в CUST_NAME - у другого. Здесь надо отметить, что компоненты, помещенные в области Detail, при печати будут повторяться построчно столько раз, сколько требуется для вывода всех данных из указанного источника. Но следует учитывать, что и у компонентов, используемых для вывода полей, и у основы отчета - компонента QuickRep, должен использоваться один и тот же источник данных. В данном случае это Table1.

Последнее, что остается - это определить содержимое нижнего колонтитула. Для этого в области Page Footer поместим компонент QRSysData. Прямого аналога в VCL у этого компонента нет, можно назвать его "продвинутой" версией текстовой подписи, которая может менять свое содержимое в зависимости от состояния отчета. За тип выводимой информации отвечает свойство Data, которое может принимать одно из следующих значений: qrsDare, qrsDateTime, qrsDetailCount, qrsDetailNo, qrsPageNumber, qrsReportTitle и qrsTime. Соответственно, будет выводиться текущая дата, дата и время, количество записей на странице, номер последней записи на странице, номер страницы, название отчета, или текущее время. Поскольку записей в таблице у нас весьма немного, то остановимся на втором варианте - выводе даты и времени составления отчета. Впрочем, при необходимости всегда можно использовать несколько таких компонентов, чтобы вывести всю необходимую информацию.

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

Форма Delphi с отчетом QuickReport
Рис. 22.2. Форма Delphi с отчетом QuickReport

Теперь остается написать код для обращения к этому отчету. Для этого вернемся к первой (главной) форме приложения, в начале секции implementation подключим форму с запросом при помощи ключевого слова uses и создадим обработчики событий для кнопок, как показано в листинге 22.1.

Листинг 22.1. Исходный код приложения QuickReport demo

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, QRCtrls, QuickRpt, ExtCtrls, DB, DBTables; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); end; var Form1: TForm1; implementation uses unit2; {$R *.dfm} procedure TForm1.Button3Click(Sender: TObject); begin close; end; procedure TForm1.Button1Click(Sender: TObject); begin Form2.QuickRep1.Preview; end; procedure TForm1.Button2Click(Sender: TObject); begin Form2.QuickRep1.Print; end; end.

Как видно из кода, вся программная работа заключается в вызове метода Preview для просмотра отчета и метода Print для вывода на печать. С исходным кодом так же можно ознакомится в каталоге Demo\Part4\QReport.

Основы Rave Reports

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

В зависимости от того, какая версия Delphi у вас установлена - 7.0, 2005 или 2006, в вашем распоряжении окажется Rave Reports версии 5.0, 6.0 или 6.5. Существенных различий между ними нет, поэтому мы будем рассматривать версию 5.0. При необходимости, Rave Reports можно использовать и с более ранними версиями Delphi, а так же с рядом других IDE.

Что касается самого генератора Rave Reports, то он состоит из 3 частей:

Основным преимуществом Rave Reports перед QuickReport является собственная визуальная среда разработки отчетов, которая, в принципе, позволяет добиться больших результатов при меньших усилиях. Правда, обратной стороной этого улучшения является то, что предварительно придется изучить эту среду, что несколько затруднительно, особенно учитывая весьма скупую справочную систему, поставляемую вместе с этим генератором отчетов. Поэтому для начала остановимся на самой интегрированной среде разработки Rave Reports, тем более что разработка отчета при помощи Rave начинается как раз с его конструирования в самой среде, и лишь после этого в разрабатываемом приложении в Delphi настраивается связь приложения с отчетом при помощи компонентов, расположенных на странице Rave.

Среда Rave Reports

Вызвать визуальный конструктор Rave Reports можно из меню Delphi, выбрав пункт Tools'Rave Designer. В результате запустится приложение - среда разработки отчетов Rave Reports (рис. 22.3).

Вид окна IDE Rave Reports 5.0
Рис. 22.3. Вид окна IDE Rave Reports 5.0

Интерфейс визуального конструктора отчетов вполне стандартен для Windows-приложений и напоминает интерфейс самой среды Delphi. В самом верху расположено меню, а под ним - панели инструментов. Слева расположены 2 панели, дублирующие наиболее востребованные команды программы. Справа располагается многостраничная панель инструментов, подобная палитре компонентов в Delphi, на ней находятся компоненты, при помощи которых и создаются отчеты.

Ниже расположена основная часть окна, разделенная на 3 части. Так, слева расположен инспектор компонентов отчета, при помощи которого настраиваются свойства выбранного компонента, подобно тому, как это осуществляется в инспекторе объекта в IDE Delphi.

В центральной части окна визуального конструктора располагается блокнот с 2 вкладками - Page Designer (конструктор страниц) и Event Editor (редактор событий). На вкладке конструктора страниц можно добавлять, удалять и редактировать компоненты отчета. При этом, поскольку отчеты могут быть многостраничными, то эта вкладка, в свою очередь, так же является блокнотом, каждый лист которого представляет собой страницу отчета. Что касается вкладки редактора событий, то на ней, при необходимости, определяют обработчики событий для отчетов и их составных частей - страниц, элементов оформления и т.д.

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

Само дерево состоит из 3 "ветвей":

Здесь следует отметить, что все создаваемые в Rave Reports отчеты являются частью проектов. Проект может содержать произвольное число отчетов, а каждый отчет, в свою очередь, может состоять из произвольного числа страниц. При этом словарь просмотров данных, как и страницы из глобального каталога являются общими для всех отчетов проекта. При работе с проектом выделяют какой-либо отчет, который называется текущим отчетом. Сразу после открытия проекта текущим становится первый отчет, но при необходимости всегда можно выбрать нужный отчет при помощи двойного щелчка мышкой по его названию в дереве проекта.

Чтобы добавить новый отчет к проекту с помощью команды New Report из меню File, а новая страница в отчете добавляется при помощи команды New Report Page из этого же меню. Сразу после создания объект незамедлительно появляется в соответствующей ветви дерева проекта.

Если проект включает в себя несколько отчетов, и требуется создать страницу, которая будет использоваться в нескольких их них, то следует создать страницу для каталога глобальных страниц при помощи команды New Global Page. После создания такую страницу можно редактировать и добавлять в состав любого входящего в проект отчета.

Состав и порядок вывода страниц отчета определяется при помощи свойства PageList отчета. Это свойство доступно из инспектора компонента отчета, когда в дереве проекта выбран сам отчет. Для выбора страниц и их упорядочивания следует нажать на кнопку с многоточием, при этом появится редактор страниц отчета (Page List Editor), при помощи которого определяют выводимые на печать страницы, а так же настраивают порядок их вывода (рис. 22.4).

Редактор страниц отчета Rave Reports
Рис. 22.4. Редактор страниц отчета

Все доступные страницы отчета находятся в 2 списках. В первом (Report Pages) доступны все страницы текущего отчета, а во втором (Global Pages) - все глобальные страницы проекта. При нажатии кнопок Add Page и Add Global страницы попадают в список Page List. Уже после внесения в список можно менять порядок вывода страниц, а так же удалять их из этого списка при помощи кнопок, расположенных слева.

Создания объекта данных в Rave Reports - выбор типа источника
Рис. 22.5. Создания объекта данных - выбор типа источника

Наконец, новый источник данных создается при помощи команды New Data Object. При этом открывается диалоговое окно Data Connections (рис. 22.5), в котором следует выбрать один из 5 предлагаемых типов объектов:

После выбора типа, если выбран вариант соединения с базой данных, будет предложено определиться с типом источника - BDE, ADO или dbExpress (DBX), а затем, в зависимости от выбранного варианта, будет предложено либо указать псевдоним БД в BDE, либо определить параметры соединения.

ПРИМЕЧАНИЕ
В Rave Reports 6.x имеется так же поддержка источников данных IBX - Interbase Express. Так же можно отметить, что версии 6 и 6.5 выгодно отличаются от более ранних наличием полноценной справочной системы.

После того, как источник данных создан, он появляется в дереве проекта отчетов в группе Data View Dictionary. Все источники данных являются общими и доступны для всех отчетов проекта.

Компоненты Rave Reports для создания отчетов

Для создания и оформления отчетов в среде Rave Reports имеется многостраничная панель инструментов, имеющая 10 вкладок:

По сути, именно компонентами являются только те элементы, что расположены на первых 4 вкладках - Drawing, Bar Code, Standard и Report. При этом компоненты, расположенные во вкладках Drawing, Bar Code и Standard используются для визуального оформления и вывода статичной информации, в то время как собственно за вывод данных отвечают компоненты, расположенные на вкладке Report. Названия и описания всех компонентов, предназначенных для оформления отчетов, сведены в таблице 22.1.

Таблица 22.1. Компоненты для оформления отчетов в Rave Reports
КомпонентВкладкаОписание
Line, Hline, VlineDrawingКомпоненты для рисования универсальной, горизонтальной и вертикальной линии. Разница между универсальной линией и остальными заключается в том, что ее можно «повернуть» при помощи мышки, а другие – только путем редактирования свойства Height в инспекторе компонентов отчета
Rectangle, SquareDrawingКомпоненты для вывода прямоугольника и квадрата
Circle, EllipseDrawingКомпоненты для вывода окружности и эллипса
PostNetBarCodeBar CodeКомпонент для вывода штрихкода в формате PostNet, который применяется в почтовой службе США
I2of5BarCodeBar CodeКомпонент для вывода штрихкода в формате I2of5, предназначенного для вывода цифровых последовательностей
Code39BarCodeBar CodeКомпонент для вывода штрихкода в формате Code39, кодирующего цифры и заглавные латинские буквы, а так же некоторые иные символы
Code128BarCodeBar CodeКомпонент для вывода штрихкода в формате Code128, при помощи которого можно представить первую половину символов таблицы ASCII
UPCBarCodeBar CodeКомпонент для вывода штрихкода в формате UPC, служащего для маркировки товаров 12-ю цифрами
EANBarCodeBar CodeКомпонент для вывода штрихкода в формате EAN, служащего для маркировки товаров 13-ю цифрами
TextStandardКомпонент для вывода однострочного текста. Сам текст задается при помощи свойства Text путем его редактирования в инспекторе компонентов отчета
MemoStandardКомпонент для вывода многострочного текста. Сам текст задается при помощи свойства Text
SectionStandardНепечатный компонент, предназначенный для группировки нескольких компонентов
BitmapStandardКомпонент для отображения растровых изображений в формате BMP. Само изображение задается при помощи свойства Image
MetaFileStandardКомпонент для отображения векторных изображений в форматах EMF и WMF. Само изображение задается при помощи свойства Image
FontMasterStandardНепечатный компонент, предназначенный для определения свойств шрифта для компонентов отчета, связанных с данным элементом при помощи свойства FontMirror
PageNumInitStandardНепечатный компонент, предназначенный для переопределения нумерации страниц начиная с той страницы отчета, на которой он расположен

Компоненты для вывода данных, в свою очередь, подразделяются на следующие группы: компоненты отображения данных, обеспечивающие вывод данных из источника; структурные компоненты, предназначенные для группировки; компоненты вычислений, предназначенные для произведения математических операций над выводимыми в отчете данными. Все они приведены в таблице 22.2.

Таблица 22.2. Компоненты вывода данных в Rave Reports
КомпонентГруппаОписание
DataTextОтображениеИспользуется для вывода строковых и числовых значений из связанного с ним источника (просмотра) данных
DataMemoОтображениеИспользуется для вывода данных в формате Memo или BLOB
CalcTextОтображениеИспользуется для вывода результатов вычислений по связанным полям
DataMirrorSectionОтображениеАналог компонента Section, предназначенный для компонентов вывода данных
RegionСтруктураИспользуется для определения области (части страницы), на которой располагаются другие компоненты вывода данных. При необходимости можно разбить область на колонки при помощи свойства Columns
BandСтруктураИспользуется для определения полосы, на которой располагаются компоненты оформления отчета. Компонент Band может размещаться только на компоненте Region
DataBandСтруктураИспользуется для выделения полосы, на которой располагаются компоненты вывода данных. Компонент DataBand может размещаться только на компоненте Region
DataCycle, CalcOp, CalcTotal, CalcControllerВычисленияГруппа непечатных компонентов, используемых для вычисления данных на основе информации, доступной из источников (просмотров) данных

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

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

Компоненты Rave Reports в VCL

Для взаимодействия с приложениями, создаваемыми в Delphi, вместе с Rave Reports поставляется набор VCL-компонент. В Delphi 7 и более поздних версиях они установлены по умолчанию и находятся на вкладке Rave палитры компонентов Delphi.

Все компоненты Rave можно условно разделить на 4 категории - для управления проектом, для организации соединений с данными, для вывода на печать или на экран, а так же для экспорта в какой-либо формат. Всего же их насчитывается 13:

Наиболее важным для построения отчета компонентом, безусловно, является компонент RvProject, поскольку без его участия невозможно взаимодействие приложения с отчетами Rave Reports. Связь с проектом отчета осуществляется при помощи свойства Project File, которому присваивается имя RAV-файла с проектом отчета:

RvProject1.ProjectFile:='c:\project1.rav';

Поскольку в одном проекте Rave Reports может находиться несколько отчетов, то для выбора нужного отчета используется свойства ReportName, ReportFillName и ReportDesc, позволяющие сослаться на нужный отчет по его короткому или полному имени, или по описанию. Чтобы получить список всех отчетов проекта, можно прибегнуть к процедуре GetReportList, которая возвращает список всех отчетов проекта. При этом в качестве первого параметра, передаваемого этой процедуре, должен быть передан объект типа TStrings, а в качестве второго - булево значение, в зависимости от которого список будет заполнен либо сокращенными, либо полными названиями отчетов.

С другими компонентами Rave, используемыми для управления отчетом, компонент RvProject связывается при помощи свойства Engine. В типичном случае, в качестве Engine указывают компонент RvSystem, при помощи которого можно выводить отчет как на экран, так и на печать, или же экспортировать его в файл. Фактически, работа с отчетом Rave Reports в Delphi сводится к тому, что сначала при помощи компонента RvProject устанавливается связь с проектом и выбирается нужный отчет, после чего при помощи RvSystem отчет выводится на печать, в файл, или на экран.

Компоненты RvCustomConnection, RvDataSetConnection, RvTableConnection и RvQueryConnection предназначены для предоставления отчету источников данных из приложения Delphi. Именно эти компоненты будут отображаться при разработке отчета в среде Rave Reports, если при создании объекта данных (New Data Object) выбрать вариант прямого просмотра данных (Direct Data View). Разумеется, при этом должна быть запущена среда Delphi с загруженным приложением, содержащим подобные компоненты.

Пример создания отчета

Рассмотрим пример создания простейшего отчета с использованием Rave Reports. Пусть он будет выводить ту же самую таблицу и примерно в таком же виде, как и рассмотренный в начале этой главы отчет, созданный на базе VCL-компонентов QuickReport.

Для начала нам потребуется главная форма приложения, подобная той, что была использована в примере с QuickReport (см. рис. 22.1). Этой формой и ограничимся, поскольку в данном случае форма отчета создается не средствами VCL-компонент в IDE Delphi, а в специализированной среде Rave Reports. Поэтому единственный компонент доступа к данным - Table - мы так же поместим на этой форме. При этом, как и в предыдущем случае, установим свойство DatabaseName в DATA1, TableName - в customer, а Active - в истину.

Теперь перейдем к компонентам, расположенным на закладке Rave. Из них нам понадобятся RvProject - основной компонент отчета, RvSystem - для генерации отчетов и вывода их на принтер или в окно просмотра, а так же RvDataSetConnection - для взаимодействия с источником данных, т.е. с компонентом Table. Соответственно, следует связать компонент RvDataSetConnection с Table, установив у него в свойстве DataSet значение Table1. Что касается компонента RvProject, то его следует связать с компонентом RvSystem, для чего в свойстве Engine следует установить значение RvSystem1.

После этого можно приступить собственно к проектированию отчета, для чего нам понадобится загрузить среду Rave Reports. Сделать это можно как из меню Tools, так и при помощи двойного щелчка мышкой по компоненту RvProject.

В среде Rave Reports следует начать новый проект, выбрав пункт New из меню File. При этом автоматически создастся новый проект, уже содержащий пустой одностраничный отчет. Для начала подготовим заголовок страницы отчета, для чего вверху страницы, по центру, расположим текстовую надпись (компонент Text расположен на вкладке Standard), в свойстве Text которой, при помощи инспектора компонентов, укажем значение "Клиенты". Чтобы выделить эту надпись шрифтом, можно перейти на закладку Fonts и настроить вид надписи при помощи имеющихся на ней элементов управления. Затем наметим заголовки столбцов, для чего несколько ниже основного заголовка разместим еще 2 компонента Text, один из которых будет являться заголовкам для колонки с номерами клиентов в базе, а другой - для имен.

Таким образом, можно приступать к подготовке к выводу собственно данных. Но, прежде всего, нам потребуется определить источник данных, для чего следует создать объект данных (File ' New Data Object). В окне диалога Data Connections следует выбрать вариант Direct Data View и нажать на кнопку Next, после чего появится второй экран этого диалога со списком доступных соединений. Впрочем, в данном случае, список будет состоять всего из 1 элемента - RvDataSetConnection1, который мы и выберем. После нажатия на кнопку Finish, новый источник данных появится в дереве проекта под именем DataView1.

После всей проделанной подготовительной работы займемся выводом данных, для чего нам понадобятся компоненты отчета, расположенные на закладке Report. Прежде всего, поместим на лист компонент Region и при помощи мышки растянем его таким образом, чтобы он занял практически все свободное место на листе, поскольку именно размеры этого компонента определяют область, в которую будут выводиться данные. Затем, непосредственно на этот компонент, поместим другой - DataBand. На компонент DataBand, в свою очередь, поместим 2 компонента DataText, выровняв их по левому краю с заголовками столбцов (рис. 22.6).

Разработанный отчет в среде Rave Reports
Рис. 22.6. Разработанный отчет в среде Rave Reports

Теперь остается связать Data-компоненты с источником данных, для чего как для компонента DataBand, так и для обоих компонентов DataText следует установить свойство DataView в DataView1. Для компонентов DataText помимо этого следует выбрать еще и поля, которые они будут выводить, что определяется при помощи свойства DataField. Соответственно для левого компонента это будет CUST_ID, а для правого - CUST_NAME.

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

Прежде всего, нам следует указать имя файла проекта в свойстве ProjectFile компонента RvProject. В том случае, если проект был сохранен в том же каталоге, что и это приложение, то достаточно просто ввести имя файла. В противном случае потребуется указать полный путь, для чего можно нажать кнопку с многоточием напротив этого поля в инспекторе объектов и воспользоваться стандартным диалогом открытия файла. Кроме того, поскольку с одной стороны, при выполнении запроса на вывод отчета компонент RvSystem запрашивает, куда его выводить, а с другой у нас и так имеется 2 отдельных кнопки - для вывода на экран и на принтер, то в свойстве SystemSetups этого компонента следует выключить флаг ssAllowSetup.

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

RvSystem1.DefaultDest:=rdPreview; RvProject1.Execute;

Здесь в первой строке указывается, что вывод следует производить в окно просмотра на экран монитора, а во второй обеспечивается сам вывод. Для вывода же на печать следует лишь изменить значение, назначаемое свойств DefaultDest с rdPreview на rdPrinter:

RvSystem1.DefaultDest:=rdPrinter; RvProject1.Execute;

Вместе с тем, следует учитывать, что для вывода из проекта будет браться первый попавшийся отчет, поэтому если отчетов будет несколько, то всякий раз следует указывать, какой именно отчет нам требуется. Сделать это можно при помощи метода SelectReport:

RvProject1.SelectReport('Report1',true);

Кроме того, не было бы лишним явно загрузить отчет, для чего можно воспользоваться методом Open:

RvProject1.Open;

В результате, мы получим код, приведенный в листинге 22.2.

Листинг 22.2. Код приложения Rave Reports demo

procedure TForm1.FormCreate(Sender: TObject); begin RvProject1.SelectReport('Report1',true); RvProject1.Open; end; procedure TForm1.Button1Click(Sender: TObject); begin RvSystem1.DefaultDest:=rdPreview; RvProject1.Execute; end; procedure TForm1.Button2Click(Sender: TObject); begin RvSystem1.DefaultDest:=rdPrinter; RvProject1.Execute; end; procedure TForm1.Button3Click(Sender: TObject); begin close; end;

С самим приложением можно ознакомиться в каталоге Demo\Part4\RReport.

Избранное

SNK GSCP
SNK GSCP - новая библиотека для PHP 5!
Web Studio
Web Studio и Visual Workshop
Библиотека:
Стандарты на web-технологии
Монополия
Монополия Android
Загрузки:
скачать программы
Продукция:
программы и книги
Техподдержка / Связаться с нами
Copyright © 1999-2020 SNK. Все права защищены.
При использовании материалов с сайта ссылка на источник обязательна.
Рейтинг@Mail.ru