Lab4-Quick_Report (1059118)
Текст из файла
Технология Quick Report
Технология Quick Report является базовой для создания отчетов в Delphi версий 2-6 и альтернативой технологии Rave Reports в Delphi 7 Studio. В этом разделе рассматриваются основные приемы создания отчетов с помощью компонентов вкладки QReport.
Принципы построения отчета
Центральным компонентом при построении отчета является компонент TQuickRep, определяющий свойства отчета в целом. Этот компонент всегда помещается на отдельную пустую форму, образуя с ее помощью визуальную среду конструирования отчета (рис. 8.21).
Пустое внутреннее пространство компонента имитирует чистый лист бумаги (его поля очерчены пунктирными линиями). На это пространство помещаются остальные компоненты точно так, как если бы создавалась обычная форма, однако, в отличие от обычной формы, форма с компонентом TQuickRep, подобно модулю данных, никогда не визуализируется в работающей программе.
Отчет в основном строится из компонентов-полос TQRBand, с помощью которых формируются различные его фрагменты, такие как общий заголовок, заголовок каждой страницы, заголовки колонок отчета, область для отображения собственно данных из таблицы БД и т. п. Содержимое полосы зависит от следующего ее свойства:
type TQRBandType = (rbTitle, rbPageHeader, rbDetail,
rbPageFooter, rbSummary, rbGroupHeader, rbGroupFooter, rbSubDetail,rbColumnHeader,rbOverlay, rbChild);
property BandType : TQRBandType;
Свойство может содержать одно из перечисленных ниже значений, определяющих, что будет отображать полоса:
- rbTitle — заголовок отчета в целом;
- rbPageHeader — верхний колонтитул;
- rbDetail — данные из НД (какой конкретно НД будет отображаться, определяется значением свойства DataSet компонента-отчета TQuickRep);
- rbPageFooter — нижний колонтитул, в котором обычно размещается номер страницы отчета и другая вспомогательная информация;
- rbSummary — общие для отчета в целом итоговые данные;
- rbGroupHeader — заголовок группы данных;
- rbGroupFooter — подвал группы данных;
- rbСо1umn Header— заголовки колонок отчета;
На полосах TQRBand размещаются остальные компоненты отчета, которые делятся на оформительские и отображающие данные. Оформительские компоненты содержат различного рода вспомогательную информацию — надписи, изображения и т. п. Эта информация не является частью данных из БД, но служит для удобства чтения отчета. Компоненты отображения данных получают информацию из соответствующих полей НД или вычисляют ее на основе этой информации.
По структуре различают три рода отчетов: простые, типа главный-детальный и композитные. В простых отчетах отображаются данные из одного НД, например список всех накладных, связанных с отпуском книг конкретному покупателю, упорядоченный по дате или сумме. В простом отчете должна использоваться хотя бы одна полоса TQRBand типа rbDetail, которая при печати (просмотре) отчета будет автоматически повторяться столько раз, сколько записей имеет НД. В отчетах типа главный-детальный используется информация из двух НД, связанных соответствующим реляционным отношением. Например, такой отчет позволяет напечатать не только текущую накладную, но и связанный с ней список книг. В отчетах главный-детальный обязательно используется полоса TQRSubDetail, которая автоматически повторяется столько раз, сколько записей содержит детальный НД. Наконец, композитный отчет строится как механическое объединение двух и более отчетов. Например, с его помощью можно создать отчет, в котором данные по конкретной накладной будут дополняться исчерпывающей информацией о партнере. Для создания композитного отчета на любую форму помещается компонент TQRCompositeReport, после чего на этапе прогона программы он наполняется с помощью метода Add его свойства Reports, например, так:
procedure TfmPrint.FormCreate(Sender: TObject);
begin
with QrCompositeReportl do
begin
Reports.Add(QuickRepl);
Reports.Add(QuickRep2);
end
end;
Любой отчет можно напечатать, если обратиться к его методу Print, или просмотреть в специальном окне просмотра, если вызвать метод Preview.
Пример создания отчета
В этом подразделе иллюстрируются основные приемы создания отчета. Наш отчет будет представлять собой товарную накладную на отпуск книг со склада оптового поставщика. Он будет создаваться с помощью команды Печать контекстного меню сетки DBGridl. Вид отчета в окне предварительного просмотра показан на рис. 8.22
1. Создайте в проекте новую пустую форму, расположите на ней компонент TQuickRep, измените имя формы на fmPrint и сохраните в файле fmPrintU. Эта форма не будет создаваться автоматически в момент старта программы, поэтому после ее присоединения к проекту выберите команду Project ► Options и перенесите ее в список доступных форм Available forms.
-
С помощью команды File ► Use unit свяжите новую форму с модулем данных
dmNaklsU, после чего поместите в свойство DataSet компонента QuickRep1
значение DM. Move. Замечу, что это свойство всегда должно быть заполнено ссылкой на тот НД, который будет содержать основную информацию, — иначе полосы TQRBand типа rbDetail и TQRSubDetail не смогут автоматически реплицироваться по количеству записей НД. В нашем случае нельзя в свойстве QuickRepl.DataSet указать имя НД DM. Nakls, так как это приведет к тому, что полосы с детальной информацией будут повторяться столько раз, сколько всех книг упоминается во всех накладных. -
Поместите на отчет полосу TQRBand. Эта полоса по умолчанию имеет типrbTitle, то есть появляется всего один раз в самом начале отчета. Используем ее для размещения заголовка накладной, для чего установите ее высоту Height = 99 и поместите на нее следующие компоненты:
- компонент TQRLabel со свойствами Caption = Товарная накладная №, Тор= 8, Left = 17 6, Font.Size = 16, Font .Style.fsBold = True;
- компонент TQRDBLabel со свойствами DataSet = DM. Nakls, DataField = NakllD, Top = 8, Left = 424, Font.Size = 16, Font.Style. fsBold= True;
- компонент TQRLabel со свойствами Caption = от, Top = 8, Left = 472, Font.Size = 16, Font.Style.fsBold = True;
- компонент TQRDBLabel со свойствами DataSet = DM. Nakls, DataField = NDate, Top= 8, Lef t = 504, Font. Size = 16, Font. Style. f sBold = True;
- компонент TQRLabel со свойствами Caption - Отправитель, Top =40,Left=16, Font.Size = 12, Font.Style, fsBold = True;
- компонент TQRLabel со свойствами Caption = Получатель, Top=64, Left=16, Font.Size=12, Font. Style. fsBold = True;
- компонент TQRDBLabel со свойствами DataSet - DM. Nakls, DataField = Firm, Top = 64, Left = 120, Font.Size = 10, Font. Style. fsUnderline = True.
Вид отчета к этому моменту на этапе конструировании показан на рис. 8.23,а на этапе прогона программы — на рис. 8.24.
Чтобы увидеть отчет в окне предварительного просмотра, щелкните на компоненте QuickRep1 правой кнопкой мыши и выберите в контекстном меню команду Preview.
-
Теперь поместим в отчет заголовки его колонок. Для этого используется компонент TQRBand со свойством BandType = rbColumnHeader. Кроме того, установите для этого компонента свойства Font.Size = 10 и Font.Style.fsBold = True, чтобы заголовки отображались полужирным шрифтом, а также поместите значения True в свойства Frame. DrawBottom, Frame.DrawLef t, Frame.DrawRight
и Frame.DrawTop, чтобы полоса очерчивалась прямоугольной рамкой. -
Разместите на новой полосе четыре компонента TQRLabel со следующими свойствами:
- компонент QRLabel3 со свойствами Caption = Название, автор, издательство, Left = 163, Тор = 10;
- компонент QRLabel4 со свойствами Caption = Колич-во, Left = 4 99, Тор = 10, AutoSize = False, Width = 66, Alignment = taCenter;
- компонент QRLabe 15 со свойствами Caption = Цена, Left = 567, Top = 10, AutoSize = False, Width = 66, Alignment = taCenter;
- компонент QRLabel6 со свойствами Caption = Сумма, Left = 632, Top = 10, AutoSize = False, Width = 66, Alignment = taCenter.
Результат показан на рис. 8.25.
6. Чтобы в отчете появился связанный с накладной список книг, поместите в него компонент TQRSubDetail со значениями свойств DataSet = DM. Move, Font.Size = 8, Height = 15, Frame.DrawLeft = True, Frame.DrawRight = True, Frame.DrawBottom = True.
7. На полосе TQRSubDetail разместите 4 компонента TQRDBText для отображения содержимого четырех колонок отчета:
- компонент QRDBText4 со свойствами: AutoSize = False, DataSet = DM. Move, DataField = Name, Frame.DrawRight = True, Height = 15, Left = 0, Top = 0, Width = 4 98;
- компонент QRDBText5 со свойствами: AutoSize = False, DataSet = DM. Move, DataField = MQuan, Frame.DrawRight = True, Height = 15, Left = 4 9 9, Top = 0, Width = 70, Alignment = taCenter;
- компонент QRDBText6 со свойствами AutoSize = False, DataSet = DM.Move, DataField = MPrice, Frame.DrawRight = True, Height = 15, Left = 567, Top = 0, Width = 70, Alignment = taCenter;
- компонент QRDBText7 со свойствами AutoSize = False, DataSet = DM.Move, DataField = Summa, Height = 15, Left = 638, Top = 0, Width = 70, Alignment = taCenter.
Вид отчета в окне предварительного просмотра к этому времени показан на рис. 8.26.
8. Для размещения в отчете итоговой информации используется полоса RQRBand типа rbSummary. Поместите на эту полосу:
- компонент TQRLabel со свойствами Тор= 10, Left = 10, Caption = Итого :;
- компонент TQRSysData со свойствами Тор = 10, Left = 56, Data = qrsDetailCount;
- компонент TQRLabel со свойствами Тор = 10, Left = 10, Caption = наименований на сумму;
- компонент TQRDBText со свойствами Тор = 10, Left = 248, DataSet = DM.Nakls, DataField = NSum.
9. Чтобы вызывать отчет в работающей программе, создайте обработчик выбора команды Печать контекстного меню сетки DBGridl, представленный в листинге 8.1.
Листинг 8.1. Обработчик выбора команды контекстного меню
procedure TfmNakls.LMPrintClick(Sender: TObject);
begin
fmPrint := TfmPrint.Create (Self);
fmPrint.QuickRepl.Preview;
fmPrint.Free;
end;
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.