Delphi для профессионалов

http://www.banksgroup.ru/


 

Компонент управления отчетом 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.

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

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

property TitlePreview: TFormatString;

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

property OnPreviewShow: TNotifyEvent;

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

property SystemPrinter: TSystemPrinter;

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

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

Рис. 23.4

. Диалог настройки печати компонента 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;

Рис. 23.5. Форма состояния процесса вывода отчета компонента TRvSystem

В нем отображается информационная строка состояния, которая может быть настроена при помощи свойств объекта SystemFiler, представленного в компоненте TRvSystem одноименным свойством.

Вложенное свойство

property StatusFormat: string;

определяет строку форматирования для текста о состоянии процесса. Для нее предусмотрены следующие управляющие символы:

  •  %с — текущее состояние процесса вывода;
  •  %р — номер текущей страницы; 
  •  %f — номер первой страницы; 
  •  %1 — номер последней страницы;
  •  %d — название устройства вывода (название принтера, имя файла, предварительный просмотр);
  •  %r — имя драйвера устройства вывода;
  •  %s — общее число страниц;
  •  %t — порт печати;
  •  %о-%9 — номера строк для свойства statusText (см. ниже).

Вложенное свойство

property StatusText: TStrings;

позволяет задать до десяти строк (можно задать и больше, но они не будут восприняты строкой статуса) с какой-либо дополнительной информацией, описывающей процесс вывода. Первая строка списка будет выведена при наличии в свойстве statusFormat управляющего символа %0, вторая — при наличии символа %1 и т. д.

При помощи перечисленных свойств вы сможете детально описать процесс вывода отчета. В этом вам помогут методы-обработчики событий компонента TRvSystem.

До начата печати отчета и по его окончании (даже если печать была прервана) соответственно вызывается пара методов-обработчиков:

property OnBeforePrint: TNotifyEvent; 

property OnAfterPrint: TNotifyEvent;

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

property OnPrint: TNotifyEvent;

Если вы печатаете одну страницу, будет вызван метод-обработчик

type

TPrintPageEvent = function(Sender: TObject;

var PageNum: Integer): Boolean;

property OnPrintPage: TPrintPageEvent;

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

property OnNewPage: TNotifyEvent;

который обозначает генерацию страницы.

При печати колонтитулов в верхней и нижней частях страницы вызываются методы-обработчики

property OnPrintHeader: TNotifyEvent;

property OnPrintFooter: TNotifyEvent;

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

type

TSystemOption = (soUseFiler, soWaitForOK, soShowStatus, soAllowPrintFromPreview, soPreviewModal);

TSystemOptions = set of TSystemOption; 

property SystemOptions: TSystemOptions;

Элементы типа TSystemOptions обозначают следующее:

  •  soUseFiler — при установке этой опции в значение True вывод будет направляться в файл, заданный свойством SystemFiler, независимо от других настроек компонента;
  •  SoWaitForOK — если включить эту опцию, генерация отчета будет задержана до момента, когда пользователь нажмет кнопку ОК в диалоге настройки печати компонента (см. рис. 23.4);
  •  soshowstatus — эта опция управляет видимостью окна состояния процесса вывода отчета в компоненте;
  •  soAiiowPrintFromPreview — будучи включенной, эта опция позволяет печатать отчет из окна предварительного просмотра;
  •  soPreviewModal — при значении True делает окно предварительного просмотра модальным.