Несколько отчетов -> в один

отредактировано 17:14 Раздел: FastReport 4.0
Есть несколько отчетов, необходимо за один раз вывести в окно просмотра (обязательно одно) все эти отчеты, некоторые многократно.
Это для групповой печати, в программе отметили печать необходимых отчетов, а мне нужно вывести их в одном окне, пользователь задаст необходимое количество копий и распечатает все сразу.
Как это сделать и можно ли вообще это сделать???

Комментарии

  • отредактировано 17:14
    из "Руководство программиста":
    написал:
    В некоторых случаях требуется организовать печать нескольких отчетов одним заданием, или формирование и отображение нескольких отчетов в одном окне просмотра. Для этого в FastReport есть средства, позволяющие построить новый отчет в дополнение к уже существующему. Метод TfrxReport.PrepareReport имеет один необязательный параметр ClearLastReport: Boolean, по умолчанию он равен True. Этот параметр определяет, надо ли очищать страницы ранее построенного отчета. Следующий пример показывает, как построить пакет из двух отчетов:



    frxReport1.LoadFromFile('1.fr3');

    frxReport1.PrepareReport;

    frxReport1.LoadFromFile('2.fr3');

    frxReport1.PrepareReport(False);

    frxReport1.ShowPreparedReport;



    Мы загружаем первый отчет и строим его, не показывая на экране. Затем загружаем второй отчет в этот же объект TfrxReport и строим его с параметром ClearLastReport = False. При этом отчет добавляется к ранее построенному. После этого мы показываем готовый отчет в окне предварительного просмотра
  • отредактировано May 2009
    Если frxReport1 с frxPreview1 не связан, то работает....
      frxReport1.Preview:= nil;
        frxReport1.LoadFromFile('C:\my.fr3');
        frxReport1.PrepareReport;
          frxReport1.LoadFromFile(''C:\my1.fr3');
          frxReport1.PrepareReport(False);
       frxReport1.Preview:= frxPreview1;
     
    frxReport1.ShowPreparedReport; //если последний отчёт с внутренним диалоговым окном
    

    Способ заморозить frxPreview1 не нашёл, только отсоединять. Не заработало добавление листов из готовых отчётов...

    Сделал, как смог загрузку готовых отчётов и объеденение их, способ:
    procedure MyProc;
    begin
       frxReport1.Preview:=nil;
          frxReport1.Clear;   frxReport2.Clear;
          frxReport1.PreviewPages.Clear; frxReport2.PreviewPages.Clear;
          frxReport1.PreviewPages.Initialize; // frxReport2.PreviewPages.Initialize;
    
           frxReport1.PreviewPages.LoadFromFile('C:\My.fp3'); //первый готовый отчёт загружаем в наш главный Report
               frxReport2.PreviewPages.LoadFromFile('C:\My1.fp3'); //второй готовый отчёт загружаем в наш второстепенный Report
           frxReport1.PreviewPages.AddFrom(frxReport2.Report);  //добавляем второстепенный к главному отчёту
             //frxReport2.PreviewPages.Clear; // можно разбиндить, для подстраховки
               frxReport2.PreviewPages.LoadFromFile('C:\My2.fp3'); //...
           frxReport1.PreviewPages.AddFrom(frxReport2.Report); //....
             //frxReport2.PreviewPages.Clear; //...
             // frxReport1.PreviewPages.AddEmptyPage(0); // вставляет пустой лист c нужного листа со смещением, 
                                                   //  не затирая существующие (начало с 0)
    
      frxReport1.Preview:=frxPreview1;
        frxReport1.PreviewPages.Finish;
    end;
    

    Также работает это со Stream. Пользуйтесь на здоровье!
      //frxReport1.PreviewPages.SaveToFile('c:\My.fp3'); // сохранение готового отчёта.
    

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

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