Сведение нескольких отчётов

отредактировано 10:27 Раздел: FastReport 4.0
Пытаюсь свести несколько отчётов в один.

К сожалению не могу использовать
 frxReport1.PrepareReport(False);
т.к. добавлянь надо из другого компонента отчёта (другого TfrxReport)

Пробовал так
  frxCompositeRep.Assign(frxRep);
  frxCompositeRep.PrepareReport(false);
вообще ничего не отображает! Даже последнего отчёта нет.

Пробовал копировать страницы вручную
procedure AddReport(Dst, Source: TfrxReport);
 var
   I: Integer;
 begin
   for I := 0 to Source.PreviewPages.Count - 1 do
     Dst.PreviewPages.AddPage(Source.PreviewPages.Page[I]);
 end;
с ошибками вылетает при попытке показать такой отчёт.

Как быть?

Комментарии

  • отредактировано 10:27
    frxReport1.PrepareReport();
    frxCompositeRep.PrepareReport();
    frxCompositeRep.PreviewPages.AddFrom(frxReport1);
    frxCompositeRep.ShowPreparedReport;
    
  • отредактировано 10:27
    Спасибо помогло, почти...

    дело в том что если PreviewPages.Count = 0 то
    frxCompositeRep.PreviewPages.AddFrom(frxReport1);
    
    вылетает

    Делаю так
    procedure AddReport(Dst, Src: TfrxReport);
    var
      Stream: TMemoryStream;
    begin
      if Dst.PreviewPages.Count = 0 then
      begin
        Stream := TMemoryStream.Create;
        Src.PreviewPages.SaveToStream(Stream);
        Stream.Position := 0;
        Dst.PreviewPages.LoadFromStream(Stream);
        Stream.Free;
      end
      else
        Dst.PreviewPages.AddFrom(Src);
    end;
    
    Всё работает!

    Ещё раз спасибо!

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

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