Russian Belarusian English German Japanese Ukrainian

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

Компоненты, размещаемые в полосе отчета

CuBook05

После создания полосы определенного типа в ней размещаются соответствующие компоненты, при этом необходимо использовать только компоненты страницы QReport. Размещение на полосе других компонентов, например, Label или Edit, не вызывает ошибки трансляции, но в сформированный отчет такие компоненты не попадают.
 
Можно разместить компонент отчета и вне полосы непосредственно на компоненте-отчете QuickRep. В этом случае он будет выводиться на каждой странице отчета (например компонент QRimage, содержащий логотип фирмы).
 
Обычно используются следующие компоненты отчета:
  • QRLabel - надпись, содержащая текст (аналог надписи Label), может размещаться на любой полосе, но для полос данных обычно не используется;
  • QRDBText - значение поля записи (аналог компонента DBText); обычно размещается в полосе данных;
  • QRExpr - значение, формируемое на основе выражения, в котором могут использоваться значения полей записей; обычно используется для полос данных и нижних колонтитулов;
  • QRSysData - системная информация, обычно используется для итоговых полос и полос колонтитулов; ее вид определяется свойством Data типа TQRSysDataType, принимающим значения:
    • qrsColumnNo - номер текущего столбца (для одноколоночного отчета равен единице);
    • qrsDate - текущая дата;
    • qrsDateTime - текущие дата и время;
    • qrsDetailCount - число записей в наборе данных (для набора данных Query, например, при запросе к нескольким таблицам, может быть не определено);
    • qrsDetailNo - номер текущей записи (если отчет выводится для связанных таблиц, то в качестве номера берется номер текущей записи главной таблицы);
    • qrsPageNumber - номер текущей страницы;
    • qrsPageCount - общее число страниц в отчете (включение этого значения требует для формирования отчета двух проходов по набору данных, что увеличивает время подготовки отчета и может быть неэффективно при большом количестве записей);
    • qrsTime - текущее время (по умолчанию).
  • QRimage - графический образ, загружаемый аналогично графическому образу Image (может быть использован в любой полосе, но обычно не размещается в полосах данных); с помощью компонента QRimage выводится, например, логотип организации; кроме того, следует отличать этот компонент и от компонента QRDBimage, который обычно размещается в полосе данных и отображает рисунок из поля таблицы;
  • QRShape - геометрическая фигура, размещаемая в любой полосе.
Перед компонентом QRSysData может находиться надпись, которая указывается в свойстве Text типа AnsiString. Например, для значения qrsPageNumber в качестве надписи подойдет текст страница. По умолчанию надпись отсутствует.
 
Компонент QRShape позволяет оформить сетку вокруг выводимых данных. Для этого в полосу помещается компонент QRShape, имеющий форму прямоугольника, а сверху него располагается текстовый элемент. Прямоугольники будут образовывать рамки сетки, для чего соседние по вертикали и горизонтали прямоугольники выравниваются так, чтобы их стороны совпадали. Если для образования сетки использовать рамку самих текстовых элементов, то необходимо учитывать, что эта рамка выводится непосредственно вокруг текста, и при стыковке соседних элементов будет отсутствовать межстрочный интервал. Другой вариант создания это сетки, образование ее из горизонтальных линий рамки полос и вертикальных линий рамки. Однако в этом случае вертикальные линии не будут сплошными.
 
Выравниванием текста внутри компонентов, содержащих текст, управляет свойство Alignment. К таким компонентам относятся, например, QRLabel и QRDBText. По умолчанию текст выравнивается по левому краю. При необходимости это значение можно изменить, установив, например, для поля даты выравнивание по центру (tacenter), а для поля цены выравнивание по правому краю (taRightJustify).
 
Возможностью автоматического изменения размеров содержащего текст компонента по размеру текста управляет свойство Autosize. По умолчанию размер текстового компонента автоматически подстраивается под содержащийся в нем текст, так как свойство Autosize имеет значение true. Это может привести к нарушению выравнивания столбцов отчета. Если компоненты отчета, в первую очередь элементы полосы данных, имеют рамку, то размеры этих компонентов должны быть постоянными. В таком случае свойству Autosize устанавливается значение false.
 
Параметры шрифта устанавливаются через свойство Font отдельных компонентов. Для изменения шрифта сразу у всех компонентов удобно использовать свойство Font компонента QuickRep и свойство ParentFont компонентов отчета, управляющее возможностью наследования параметров шрифта от родительского компонента. В нашем случае родительским компонентом является отчет QuickRep. По умолчанию свойство ParentFont каждого компонента отчета имеет значение true, и при изменении шрифта отчета автоматически изменяется шрифт всех его элементов. Если для какого-либо компонента изменяются параметры шрифта, то его свойству ParentFont присваивается значение false.
 
Для оформления рамки вокруг отдельного элемента отчета используется свойство Frame, управляющее наличием рамки, цветом, стилем и толщиной линий. Многие компоненты отчета имеют событие onPrint типа TQRLabelOnPrintEvent, возникающее непосредственно перед печатью компонента. Действие обработчика события onPrint распространяется только на отчет и не затрагивает значения записей, находящихся в наборе данных.
 
Например, форматирование значений при печати:
void __fastcall TForm2::QRDBText4Print(TObject *Sender, AnsiString ScValue)
{
Value = Value + " год";
}
Параметр value обработчика события содержит значение, которое должно быть напечатано. Это значение можно изменить или отформатировать. Компонент QRDBText4 связан с символьным полем. При печати значения этого поля выводятся со строкой год.
 
Обработчик события OnPrint можно использовать, например, для улучшения выравнивания компонентов при использовании вокруг них вертикальных рамок. Так, при выравнивании текста компонента QRDBText вправо (его свойство Alignment имеет значение taRightJustify) возможно наползание текста на правую линию рамки. В этом случае для улучшения читаемости текст передвигается на несколько пробелов влево путем добавления в обработчик события строки кода:
Value := Value + " ";
При необходимости в обработчике события OnPrint выполняется и более сложное форматирование данных.
 
Событие OnPrint генерируется также при вызове метода Preview, но не возникает при просмотре отчета на этапе разработки приложения.
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

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