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) передав в него имя шаблона и дополнительные параметры.
<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>