На этом шаге мы рассмотрим общие принципы построения отчета.
Центральным компонентом при построении отчета является компонент TQuickRep, определяющей свойства отчета в целом. Этот компонент всегда помещается на отдельную пустую форму, создавая с ее помощью визуальную среду конструирования отчета.
Рис.1. Пример формы с размещенным на ней компонентом TQuickRep
Пустое внутреннее пространство компонента имитирует чистый лист бумаги (его поля очерчены пунктирными линиями).
На это пространство помещаются остальные компоненты точно так, как если бы создавалась обычная форма, однако,
в отличие от обычной формы с компонентом TQuickRep, подобно модулю данных,
никогда не визуализируется в работающей программе.
Отчет, в основном, строится из компонентов-полос TQRBand, с помощью которых
формируются различные его фрагменты, такие как общий заголовок, заголовок каждой страницы,
заголовки колонок отчета, область для отображения собственно данных из ТБД и т.п.
Содержимое полосы зависит от следующего ее свойства:
type TQRBandType = (rbTitle, rbPageHeader, rbDetail, rbPageFooter, rbSummary, rbGroupHeader, rbGroupFooter, rbSubDetail, rbColumnHeader, rbOverlay, rbChild); property BandType:TQRBandType;
Более подробную информацию по использованию свойств этого компонента можно получить на шаге 4 "Компонент TQRBand".
На полосах TQRBand, и на полосах дочерних компонентов TQRStringsBand, TQRSubDetail, TQRChildBand, и др. размещаются остальные компоненты отчета, которые делятся на оформительские и отображающие данные. Оформительские компоненты содержат различного рода вспомогательную информацию - надписи, изображения и т.д. Эта информация не является частью данных из БД, но служит для удобства чтения отчета. Компоненты отображения данных получают информацию из соответствующих полей НД и вычисляют ее на основе этой информации.
По структуре различают три рода отчетов:
В простых отчетах отображаются данные из одного НД, например, список всех накладных, связанных с отпуском книг конкретному покупателю, упорядоченный по дате или сумме. В простом отчете должна использоваться хотя бы одна полоса TQRBand типа rbDetail, которая при печати (просмотре) отчета будет автоматически повторяться столько раз, сколько записей содержит НД.
В отчетах типа главный - детальный используется информация их двух НД, связанных соответствующим реляционным отношением. Например, такой отчет позволяет напечатать не только текущую накладную, но и связать с ней список книг. В отчетах главный - детальный обязательно используется полоса TQRSubDetail, которая автоматически повторяется столько раз, сколько записей содержит детальный НД.
Наконец, композитный отчет строится как простое объединение двух и более других отчетов. Например, с его помощью можно создать отчет, в котором данные по конкретной накладной будут дополняться исчерпывающей информацией о партнере. Для создания композитного отчета на любую форму помещается компонент TQRCompositeReport.
Любой отчет можно напечатать, если обратиться к его методу Print, или просмотреть в специальном окне просмотра, если вызвать метод Preview.
На следующем шаге мы приведем общие сведения о вкладке QReport.