3.4.3. Отчеты по диаграммам

Для создания отчетов с выводом TbtkAdvDiagram или диаграммы гантта необходимо использовать тип шаблона Diagram Report(*.dgr). Diagram Report являются отчетами FastReport4. В редакторе шаблона Diagram Report доступен новый элемент на панели инструментов TbtkFrxPictureView

Элемент TbtkFrxPictureView, размещенный на отчете, является контейнером для изображения диаграммы. Источником данных для TbtkFrxPictureView является frxDiagramVirtSel. frxDiagramVirtSel хранит записи с изображениями. Записи создаются автоматически при построении отчета. По умолчанию frxDiagramVirtSel недоступен, потому необходимо открыть в Меню Отчеты->Данные и отметить галочкой frxDiagramVirtSel. После этого, его можно будет указать в свойстве TbtkFrxPictureView.DataSet, а в свойстве TbtkFrxPictureView.DataField выбрать поле “blobDiagram”.

Кроме стандартных свойств компонента TFrxPictureView в TbtkFrxPictureView добавлены новые:

class TbtkFrxPictureView
CutByPages: Boolean

Свойство позволяет включить режим (значение True), при котором большое изображение будет разрезано на несколько страниц. При этом изображение будет выводится в оригинальном масштабе. Такой режим позволяет распечатать изображения, например, размером A1 на восьми страницах формата A4.

New in version Global: 5.7.0_ms11

CuttingMode: TbtkDiagramCuttingMode

Задает способ разбития изображения на несколько страниц при включенном свойстве CutByPages

New in version Global: 5.7.0_ms11

FitByWidth: Boolean

Подогнать итоговое изображение по ширине листа отчёта.

Note

При использовании данного свойства значения свойств AutoSize и Streched игнорируются.

Note

Свойство поддерживается только в диаграмме гантта.

New in version Global: 5.11

class TbtkDiagramCuttingMode

Перечисление задающее способ разбития изображения на несколько страниц.

dcmCutByOriginOutputArea

Диаграмма разрезается по границам области вывода компонента. Не учитываются особенности выводимого изображения.

dcmCutByObjectBorder

Диаграмма разрезается на страницы по границам объектов на диаграмме, стараясь по возможности сохранить их целостность. Например, колонка дерева будет перенесена на следущую страницы полностью, если влезала на предыдущую страницу только частично.

Note

Свойство поддерживается только в диаграмме гантта

New in version Global: 5.7.0_ms11

Объекты классов TbtkAdvDiagram и TbtkGantt паскаль скрипта содержат методы, вызывающие создание отчета FR4 с выводом изображения диаграм.

Таким образом для печати диаграммы Гантта или AdvDiagram необходимо создать шаблон отчета Diagram Report(*.dgr), задейстовать в нем frxDiagramVirtSel и задать свойство DataField у компонента контейнера изображений. В операции выборки фрейма диаграммы написать вызов метода CreateReport (либо CreateReportEX) передав в него имя шаблона и дополнительные параметры.

Пример операции для TbtkAdvDiagram:
<PASCAL>
  Sel := FindSelectionEx('SEL_BTD_DIAGRAM', ['Representation'], ['Diagram']);
  Sel.Diagram.CreateReport('FR4_PrintBTDDiagram', nil, rvmShow,0, '', fcfMDI);
</PASCAL>

Обратите внимание, что обратиться к Diagram можно только из выборки лежащей на фрейме TbtkLookupAdvDiagramFrame.

Пример операции для диаграмме гантта:
<PASCAL>
  Selection.Gantt.CreateReportEx('FR4_PrintBTDDiagram', nil, rvmShow, 0, '', fcfMDI, ['StartDate','StopDate'],[DateTimeToStr(Selection.Gantt.StartDate), DateTimeToStr(Selection.Gantt.StopDate)] );
</PASCAL>