Создание FR-отчета |
Для содания FR-отчета сначала необходимо объявить поток данных.
Организация потока данных изложена в разделах:
Созданный поток данных связывается с системой FastReport процедурой RunFReport.
Начиная с Атлантис 5.3.07 для создания FR-отчета можно воспользоваться автоматически создаваемым потоком данных: при активизации табличного редактора в инструментальной панели появляется кнопка
. При нажатии на нее создается поток данных, соответствующий текущему табличному редактору, и запускается дизайнер FastReport.Имея поток данных можно проектировать форму отчета. Проектирование формы выполняется средствами графического дизайнера FastReport. Элементы типа table и dataset в словаре данных дизайнера видны как таблицы в закладках "Данные из БД" и "Источники данных для бэндов". Элементы потока "нулевого уровня" видны в закладке "Переменные".
При проектировании отчетов типа master-detail-subdetail, master-detail-detail и т.п. поток данных должен иметь соответствующую структуру. Вложенность элементов потока определяется подцепками в логической таблице. Вложенность элементов потока в описании потока используется исключительно для повышения читаемости программы.
Вызов дизайнера FastReport см. "Вызов генератора отчётов FastReport. ".
Подробнее о проектировании отчетов см. документацию по FastReport.
Визуализация процесса вывода FR-отчета запускается функцией StartNewVisual. Для этого необходимо вызвать функцию StartNewVisual из обработчика событий потока данных, который использует FastReport. При этом окно визуализации процесса привязывается к окну дизайнера FastReport, т.е. окно дизайнера FastReport становится для него родительским.
Для прерывания процесса прохода по потоку данных добавлены функции BreakProcess и AbortProcess, которые должны вызываться внутри обработчиков cmPreProcess, cmOnProcess, cmPostProcess. Данные функции не прерывают выполнения команд в обработчиках, они только устанавливают внутренние флаги, которые определяют будет ли дальше вызываться cmOnProcess, т.е. после BreakProcess и AbortProcess можно писать другие операторы. Отличие BreakProcess от AbortProcess в том, что после BreakProcess будет вызываться событие cmPostProcess, а после AbortProcess - нет.
Пример потока данных с визуализацией.
interface DSSample; // ------------------------------ create view as select * from x$files; var i: integer; cnt: integer; j: integer; // ------------------------------ browse SampleBrowse; fields xf$name; xf$loc; xf$title; end; // ------------------------------ datastream SampleStream ( table x$files ( [XFN] xf$name; [XFL] xf$loc; [XFT] xf$title; ); dataset DS ( [i] i; ); dataset DS2 ( [j] j; ); ) handleEvent table x$files cmPreProcess: { cnt := 0; StartNewVisual(vtRotateVisual, vfTimer+vfBreak+vfConfirm, 'TEST', 0); } cmOnProcess: { cnt := cnt + 1; delay(100); if (not NextVisual) { BreakProcess; } } cmPostProcess: { StopVisual('', 0); Message('table test '+cnt); } end; handleEvent dataset DS cmPreProcess: { i := 0; StartNewVisual(vtRotateVisual, vfTimer+vfBreak+vfConfirm, 'DATASET-TEST', 0); } cmOnProcess: { i := i + 1; if (i <= 100) then ContinueDataset; delay(100); if (not NextVisual) { BreakProcess; } } cmPostProcess: { StopVisual('', 0); Message('test '+i); } end; handleEvent dataset DS2 cmPreProcess: { j := 0; } cmOnProcess: { j := j + 1; if (j <= 20) then ContinueDataset; if (j = 15) then AbortProcess; } cmPostProcess: { message('test '+j); } end; end; // ------------------------------ handleEvent cmInit : { RunFReport(SampleStream, '', True); } end; end.
Автоматическое создание потока данных для табличного редактора и переход в дизайнер FastReport доступно начиная с Атлантис 5.3.07.
Управления визуализацией вывода FR-отчета доступно начиная с Атлантис 5.1.26.
Атлантис 5.1.2x.