Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

QuickRep - компонент-отчет

CuBook45

Главным элементом отчета является компонент-отчет QuickRep, представляющий собой основу, на которой размещаются другие компоненты. Компонент QuickRep обычно размещается на отдельной форме, предназначенной для создания отчета. По умолчанию он имеет имя QuickRep1. Если на форме размещается другой отчет (обычно так не делается), он получает имя QuickRep2 и т.д.
 
Компонент QuickRep при помещении его на форму имеет вид страницы формата А4, первоначально отображаемой в натуральную величину. При разработке приложения можно изменить масштаб страницы и размещенных на ней компонентов с помощью свойства zoom типа int. Значение этого свойства устанавливается в процентах, по умолчанию 100%.
 
Отчет можно поместить на любую форму приложения, например, на главную. В этом случае отчет (страница) создает своего рода фон, на котором расположены управляющие элементы формы.
 
Компонент QuickRep связывается с набором данных Table или Query, для которого создается отчет, с помощью свойства DataSet. При этом набор данных Query может содержать записи, выбранные из разных таблиц. При печати отчета в процессе выполнения приложения набор данных должен быть открыт. Во время построения отчета можно использовать специально создаваемый набор данных и размещать его на форме, при этом источник данных DataSource не требуется. На практике компонент QuickRep обычно связывается с набором данных, записи которого отображаются на форме в визуальных компонентах. В этом случае в отчет попадают записи, удовлетворяющие, например, критерию фильтрации и/или сортировки, задаваемому пользователем.
 
Приведем пример связывания отчета с набором данных.
void __fastcall TForm2::FormCreate(TObject *Sender)
{
QuickRep1->DataSet=Form1->Table1;
}
Отчет QuickRep1, находящийся на форме Form2, при обработке события onCreate этой формы связывается с набором данных Table1, расположенным на форме Form1. В файле реализации (исходного кода) модуля формы Form2 следует поместить директиву препроцессора #inciude "uniti.h" для подключения заголовочного файла модуля формы Form1.
 
Отчет состоит из отдельных полос - составных частей отчета, которые определяют содержание и вид созданного документа. Полоса представляет собой элемент отчета. Каждый элемент размещается на своем месте и предназначен для отображения соответствующих компонентов отчета и вывода данных.
 
Конструирование отчета в основном аналогично конструированию формы. Управлять наличием полос в отчете можно с помощью свойства Bands множественного типа TQuickRepBands. При разработке приложения включение/отключение полосы выполняется установкой логического значения соответствующего подсвойства свойства Bands, например, для полосы области данных отчета этим подсвойством является HasDetail. С помощью этого свойства в простой отчет можно включать следующие полосы:
  • HasPageHeader - верхний колонтитул;
  • HasTitle - заголовок отчета;
  • HasColumnHeader - заголовки столбцов;
  • HasDetail - область данных;
  • HasSummary - итог отчета;
  • HasPageFooter - нижний колонтитул.
Перечисленные полосы можно также вставлять в отчет с помощью компонента полосы QRBand, при этом тип вставляемой полосы устанавливается через свойство BandType этого компонента.
 
Параметры страницы отчета определяются свойством Page типа TQRPage, через подсвойства которого можно настраивать следующие характеристики:
  • Papersize - формат страницы (по умолчанию А4);
  • Orientation - ориентация страницы:
    • poPortrait - книжная (по умолчанию);
    • poLandScape - альбомная.
  • Length и Width - высота и ширина страницы;
  • TopMargin, BottomMargin, LeftMargin и RightMargin - размер верхнего, нижнего, левого и правого полей соответственно;
  • Ruler - признак отображения сетки при разработке отчета, по умолчанию имеет значение true, при этом сетка видна.
Значения свойств Length и Width можно устанавливать в том случае, если свойство Papersize имеет значение Custom, иначе высота и ширина страницы устанавливаются автоматически по формату и ориентации страницы, и разработчик не может их изменить.
 
Единицы измерения страниц, полос, полей, а также других элементов отчета определяет свойство unit типа TQRUnits, принимающее следующие значения:
  • Inches - дюймы;
  • MM - миллиметры (по умолчанию);
  • Pixels - пикселы;
  • Native - десятые доли миллиметра;
  • Characters - автоматическая настройка в соответствии с размером символов, установленным свойством QuickRep->Font->Size.
При необходимости разработчик может изменить параметры страницы, а также многие другие параметры отчета (например, шрифт по умолчанию) с помощью Инспектора объектов или в диалоговом окне Report Setting (Установки отчета) установки параметров отчета. Оно вызывается командой Report Setting контекстного меню страницы отчета или двойным щелчком на странице отчета.
 
Страница отчета может иметь рамку, параметры которой задает свойство Frame типа TQRFrame:
  • Color - цвет (по умолчанию черный);
  • Width - ширина в пикселах (по умолчанию 1);
  • Style - стиль (по умолчанию сплошная линия);
  • DrawTop, DrawBottom, DrawLeft, DrawRight - наличие линии сверху, снизу, слева и справа соответственно (по умолчанию все линии отсутствуют, и рамка не рисуется).
С помощью свойства PrinterSetting типа TQuickRepPrinterSettings устанавливаются параметры принтера:
  • FirstPage и LastPage - номер первой и последней печатаемой страницы;
  • Copeis - число копий;
  • Duplex - включение режима двусторонней печати;
  • OutputBin - способ подачи бумаги.
Параметры принтера можно устанавливать также с помощью стандартных Диалогов PrintDialog и PrinterSetupDialog или метода PrinterSetup.
 
Отчет характеризуется тремя параметрами, которые задаются в свойстве Options множественного типа TQuickReportOptions:
  • FirstPageHeader - печать верхнего колонтитула на первой странице отчета;
  • LastPageFooter - печать нижнего колонтитула на последней странице отчета;
  • Compression - отчет сохраняется в сжатом формате, при этом уменьшается объем занимаемой памяти, но снижается быстродействие.
По умолчанию свойство options имеет значение [FirstPageHeader, LastPageFooter].
 
Свойство PrintifEmpty типа bool определяет, выводить ли данные отчета' для пустого набора данных. По умолчанию свойство имеет значение true, и отчет печатается, даже если в наборе данных нет ни одной записи. Это удобно, например, при печати бланков. Если свойству PrintifEmpty установить значение false, то для пустого набора данных отчет не выводится, точнее, выводится пустая страница. То есть при отсутствии записей отсутствует не только область данных, но и ряд других полос, например, заголовок отчета.
 
Способ выравнивания элементов отчета определяет свойство snapToGrid типа bool. Если оно имеет значение true (по умолчанию), то помещаемые в отчет компоненты автоматически выравниваются по линиям сетки. Шаг сетки задается в окне параметров среды С++ Builder и по умолчанию равен 8 пикселам. Если привязка элементов отчета к линиям сетки не требуется, то свойству SnapToGrid устанавливают значение false.
 
Процесс подготовки отчета к печати или просмотру может отображаться в отдельном окне. Наличие окна отображения для процесса подготовки документа определяет свойство ShowProgress типа bool. По умолчанию оно имеет значение true, и процесс подготовки отображается в окне на экране. Этот процесс может быть прерван нажатием клавиши <Esc>.
 
Как правило, свойства отчета и его отдельных элементов устанавливаются при создании отчета на этапе разработки приложения.
 
Для печати отчета предназначен метод Print, сразу после вызова которого отчет подготавливается к печати и направляется на установленный в системе принтер. Дополнительных подтверждений от пользователя не требуется. При необходимости текущий принтер и его параметры устанавливаются до начала печати, например, с помощью вызова метода PrinterSetup. Метод Print может вызываться, например, при нажатии кнопки с заголовком Печать, расположенной на форме, с которой пользователь работает.
 
Если компонент-отчет QuickRep связан с набором данных, записи которого выводятся в сетке DBGrid формы, то порядок записей отчета соответствует порядку записей, видимых пользователем на форме. После отбора (фильтрации) записей и/или сортировки при нажатии кнопки Печать происходит вывод отчета, причем учитывается новый состав и порядок следования записей.
 
При формировании отчета изменяется положение указателя текущей записи, поэтому при необходимости разработчик должен предусмотреть запоминание и восстановление положения указателя, например, с помощью закладки.
 
Эти события возникают только при печати, а не при просмотре отчета. Поэтому если создан обработчик события BeforePrint, изменяющий вид и содержание отчета, то возможна ситуация, когда пользователь просматривает один вариант отчета, а напечатан он будет по-другому.
 
Для предварительного просмотра отчета перед печатью служит метод Preview, вызывающий окно просмотра. В этом окне можно сделать следующее:
  • просмотреть отчет в разных масштабах;
  • сохранить отчет в файле;
  • загрузить предварительно сохраненный отчет;
  • направить отчет на печать.
Возможности метода Preview превосходят возможности метода Print, поэтому чаще выполняют именно предварительный просмотр документа, а не печать, что удобно делать и при отладке приложения. Печатать отчет можно непосредственно из окна предварительного просмотра.
 
На этапе разработки приложения также можно просмотреть отчет, выполнив команду Preview (Просмотр) контекстного меню отчета. Внешний вид отчета будет таким же, как при печати или в окне просмотра при выполнении приложения за исключением отсутствия значений вычисляемых полей.
 
При предварительном просмотре отчета в процессе выполнения приложения генерируются события OnPreview типа TNotifyEvent и AfterPreview типа TQRAfterPreviewtEvent. В обработчике первого события кодируются действия, выполняемые непосредственно перед предварительным просмотром отчета, а в обработчике второго события - действия, выполняемые сразу после окончания предварительного просмотра.
 
Разработчик имеет возможность создать свое окно предварительного просмотра отчета, используя компонент QRPreview.
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий