MultiReport in LazReport

Модератор: Модераторы

Ответить
DedFrend
постоялец
Сообщения: 157
Зарегистрирован: 25.11.2018 11:21:50

MultiReport in LazReport

Сообщение DedFrend »

Кто-нибудь знает, как в LazReport слить вместе несколько отдельно формируемых отчетов. Есть компонент, у него есть свойство Reports, но как это
заставить работать? Методом "научного тыка" не получается.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Вот кусок из моего проекта - надёргал

процдеура добавляет в композитный отчёт данные из обычного подготовленного

Код: Выделить всё

procedure DoAddFrom(Report: TfrReport);
var
  S:TMemoryStream;
begin
  if (Report <> nil) and (Report.EMFPages.Count > 0) then
  begin
    S:=TMemoryStream.Create;
    try
      Report.EMFPages.SaveToStream(S);
      S.Position:=0;
      MainDM.frMainComposite.EMFPages.AddPagesFromStream(S);
    finally
      S.Free;
    end;
  end;
end;
Основное формирование

Код: Выделить всё

  
   MainDM.frMainComposite.Reports.Clear;
  //Добавим первый отчёт
    MainDM.frMainReport.LoadFromFile(RepFileName);
    MainDM.frMainReport.PrepareReport;
    DoAddFrom(MainDM.frMainReport);

  //Добавим второй отчёт
    MainDM.frMainReport.LoadFromFile(RepFileName);
    MainDM.frMainReport.PrepareReport;
    DoAddFrom(MainDM.frMainReport);
//отобразим композитный
    MainDM.frMainComposite.ShowPreparedReport
DedFrend
постоялец
Сообщения: 157
Зарегистрирован: 25.11.2018 11:21:50

Сообщение DedFrend »

Что-то страшновато выглядит. Но спасибо! Буду посмотреть.
А нет ли ссылочки? Потому что то, что обычно приводится по этому поводу, информации не содержит.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

У меня код предназначен для универсального решения - одни и те же отчёты можно формировать как отдельными отчётами так и сшивать в один отчёт
например можно просто информацию о товаре дать клиенту (картинку/сертификат и т.д.), а в других ситуациях всё это собирается в один пакет (обычно pdf) вместе с счётом на оплат/упд/пропуском и т.д.
поэтому получилось так

а если совсем простой пример то вот можно так
У вас нет необходимых прав для просмотра вложений в этом сообщении.
DedFrend
постоялец
Сообщения: 157
Зарегистрирован: 25.11.2018 11:21:50

Сообщение DedFrend »

Спасибо, разобрался!
Моя проблема была в том, что отдельные отчеты у меня были на разных формах. И я с дуру при добавлении отчета создавал "голый" компонент
TfrReport. Конечно, он никаких данных не видел и не отображался.
Правильно вот так:

Код: Выделить всё

var
  AllReport: TfrCompositeReport;
  SampleReport1, SampleReport2: TForm;
....
  SampleReport1 := TFirstReport.Create(self);
  AllReport.Reports.Add(SampleReport1.frReport);
  SampleReport2 := TSecondReport.Create(self);
  AllReport.Reports.Add(SampleReport2.frReport);
  AllReport.ShowReport;
  AllReport.Clear;
  SampleReport1.free;
  SampleReport2.free;

Ответить