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

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

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

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

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

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

Пример операции для ADV диграмм:
<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>