Создание собственного окна предварительного просмотра композитного отчета.

LOGic_BBSLOGic_BBS Казань
отредактировано 20:14 Раздел: FastReport 4.0
Прежде чем приступим к созданию собственного окна предварительного просмотра композитного отчета, обратимся к документации FastReport и почитаем, я здесь позволю себе процитировать немного документацию FastReport.
написал:
Создание собственных окон предварительного просмотра
FastReport показывает отчеты в стандартном окне предварительного просмотра. Если по каким-то причинам вас это не устраивает, можно создать собственную форму предварительного просмотра. Для этих целей служит компонент TfrxPreview из палитры компонентов FastReport.
…………………………………
Построение композитных отчетов (пакетная печать)
В некоторых случаях требуется организовать печать нескольких отчетов одним заданием, или формирование и отображение нескольких отчетов в одном окне просмотра. Для этого в FastReport есть средства, позволяющие построить новый отчет в дополнение к уже существующему. Метод TfrxReport.PrepareReport имеет один необязательный параметр ClearLastReport: Boolean, по умолчанию он равен True. Этот параметр определяет, надо ли очищать страницы ранее построенного отчета.
…………………………………

Из цитат понятно, что это возможно сделать, но возникает ряд вопросов. Во первых к какому из репортов мы присвоим ссылку на свойство TfrxReport.Preview, не забываем что у нас пакетная печать и frxReport может быть несколько (в примере их два). Во вторых мы хотим выводить свою форму а не форму FastReport. Ну да ладно сейчас мы эту задачку будем успешно решать.
Создадим основную форму и назовем ее FormMain на нее кинем кнопку Button1, создадим еще форму она у нас и будет Форма предварительного просмотра, назовем ее PreviewForm. Теперь перейдет к кнопке Button1 формы FormMain и напишем обработчик события нажатия на кнопку.
procedure TFormMain.Button1Click(Sender: TObject);
var
  Report: TfrxReport;
begin
 Report:= frxReportMain;
 Report.Preview := nil;

 Report.Script.Variables['dDAT'] := Edit1.Text;

 Report.LoadFromFile( ExtractFilePath(Application.ExeName) + 'ReportList\Test.fr3 ');
 Report.PrepareReport(True);

 Report.LoadFromFile( ExtractFilePath(Application.ExeName) + 'ReportList\Test2.fr3 ');
 Report.PrepareReport(False);

 Report.Preview:= PreviewForm.frxPreviewMain;
 PreviewForm.ShowModal;
end;
Мы загружаем первый отчет и строим его, не показывая его. Затем загружаем второй отчет в этот же объект Report и строим его с параметром ClearLastReport = False. При этом отчет добавляется к ранее построенному. После этого мы готовому отчету присваиваем ссылку на свойство TfrxReport.Preview нашего окна предварительного просмотра
Report.Preview:= PreviewForm.frxPreviewMain и показываем его модально PreviewForm.ShowModal;

Единственное на что хочется обратить внимание это на строчку Report.Preview := nil ;.
Все остальное хорошо документировано в документации FastReport.

Форму предварительного просмотра PreviewForm нет смысла описывать, потому что здесь можно сделать все, что пожелает ваша фантазия и возможности TfrxPreview в примере довольно все хорошо комментировано.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.