Я не пойму
Неужели основное назначение SubReport'ов-это вывод данных, которые заполняются каждый раз по новой?!!
Неужели никто не задумывался о том-чтобы использовать их для включения в главный отчет в качестве отчетов-шаблонов?
Например-если есть 100 отчетов-и у них одинаковая шапка-то зачем каждый раз ее заново переделывать?
Один раз написал отчет 'Sub_Title.fr3' и потом сколько угодно используешь его в качестве SubReport'a!!!
Но КАК это сделать?
Разработчики!! Прием!!
P.S. Наследование не предлагать
P.P.S. Интересует реализация ТОЛЬКО посредством SubReport'ов
Можно сохранить сабрепорт в файл (точнее его страницу), и после загружать:
var
Sub: TfrxSubreport;
Stream: TMemoryStream;
begin
Sub := frxReport1.FindObject('Subreport1') as TfrxSubreport;
if Sub1 <> nil then
begin
Stream := TMemoryStream.Create;
try
Sub.Page.SaveToStream(Stream);
Stream.SaveToFile('subReport.sub');
finally
Stream.Free;
end;
end;
Загрузка будет аналогична Sub.Page.LoadFromStream(SubReportFileStream).
Или дрогой вариант с 2-мя компонентами TfrxReport:
var
Sub1, Sub2: TfrxSubreport;
begin
Sub1 := frxReport1.FindObject('Subreport1') as TfrxSubreport;
Sub2 := frxReport2.FindObject('Subreport1') as TfrxSubreport;
if (Sub1 <> nil) and (Sub2 <> nil)then
Sub2.Page.AssignAll(Sub1.Page);
Не вижу никаких трудностей.
Загрузка будет аналогична Sub.Page.LoadFromStream(SubReportFileStream)
var
Stream: TFileStream;
begin
Stream := TFileStream.Create('D:\SubTItle.fr3',fmOpenRead);
//...Создание компонента......
Sub.Page := TfrxReportPage(Report.Pages[2]);
Sub.Page.LoadFromStream(Stream);
end;
При такой записи у меня происходит следующее:
+Добавляется компонент SubReport
+При клике на нем открывается ПУСТАЯ страница
+все данные из SubReport'a создаются и отображаются в ГЛАВНОМ отчете
Нужно не шаблон загружать , а XML самого сабрепорта сохраненного таким способом:
var
Sub: TfrxSubreport;
Stream: TMemoryStream;
begin
Sub := frxReport1.FindObject('Subreport1') as TfrxSubreport;
if Sub1 <> nil then
begin
Stream := TMemoryStream.Create;
try
Sub.Page.SaveToStream(Stream);
Stream.SaveToFile('subReport.sub');
finally
Stream.Free;
end;
end;
Комментарии
Неужели основное назначение SubReport'ов-это вывод данных, которые заполняются каждый раз по новой?!!
Неужели никто не задумывался о том-чтобы использовать их для включения в главный отчет в качестве отчетов-шаблонов?
Например-если есть 100 отчетов-и у них одинаковая шапка-то зачем каждый раз ее заново переделывать?
Один раз написал отчет 'Sub_Title.fr3' и потом сколько угодно используешь его в качестве SubReport'a!!!
Но КАК это сделать?
Разработчики!! Прием!!
P.S. Наследование не предлагать
P.P.S. Интересует реализация ТОЛЬКО посредством SubReport'ов
Можно сохранить сабрепорт в файл (точнее его страницу), и после загружать: Загрузка будет аналогична Sub.Page.LoadFromStream(SubReportFileStream).
Или дрогой вариант с 2-мя компонентами TfrxReport:
+Добавляется компонент SubReport
+При клике на нем открывается ПУСТАЯ страница
+все данные из SubReport'a создаются и отображаются в ГЛАВНОМ отчете