Постраничный итог не в PageFooter. Как?
Здравствуйте, уважаемые.
Вопрос такой: Можно ли (и как) сделать в отчёте постраничный итог, но размещаемый не в PageFooter-е (это понятно как делать), а "приклеенный" к дата-бэнду.
То есть он печатается после дата-бэнда (как Footer или ReportSummary) но является итогом по странице.
Или же я хочу не существующего пока в FR бэнда "PageSummary" ?
Спасибо заранее.
Вопрос такой: Можно ли (и как) сделать в отчёте постраничный итог, но размещаемый не в PageFooter-е (это понятно как делать), а "приклеенный" к дата-бэнду.
То есть он печатается после дата-бэнда (как Footer или ReportSummary) но является итогом по странице.
Или же я хочу не существующего пока в FR бэнда "PageSummary" ?
Спасибо заранее.
Комментарии
http://www.fast-report.com/ru/forum/index....t=0&#entry12426
первый вариант (ReportSummary.OnBeforePrint - принудительно вывести PageFooter перед ReportSummary) не устраивает двумя причинами:
- а если в PF не только постраничный итог а что-то ещё (номер страницы, например) - это совсем не надо перед RS.
- на НЕпоследних страницах постраничный итог в PF не приклеивается к дата-бэнду.
второе решение с группировкой (нарезка группировкой по NN строк на страницу)
- а что делать на первой странице (где количество строк меньше чем на остальных из-за Header-ов)?
- а что (прости господи) делать с растягиваемыми строками дата-бэнда?
на мой взгляд, эта задача - печать постраничного итога приклеенного к дата-бэнду - хоть и совершенно из пальца высосанная, но реально ставящая в тупик - требует адекватной поддержки в FR (гипотетический бэнд PageSummary) с требуемым функционалом.
к сожалению, этот отчёт не мне пригрезился, а является утверждённой госкомстатом формой и заказчик требует безусловного её соблюдения.
как быть?
есть MasterBand, к нему кладётся Child, на чайлде завёрстан постраничный итог, значения для которого считаются в beforeprint датабэнда и сбрасываются в ноль в afterprint чайлда.
у MasterBand в OnAfterPrint (AFTER ! не Before и не BeforePrint для Child !) скриптуем:
procedure MasterBandOnAfterPrint(Sender: TfrxComponent);
begin
Child.Visible := (Engine.FreeSpace < (MasterBand.Height + Child.Height))
and (<Page#> <> <TotalPages>);
end;
по поводу (<Page#> <> <TotalPages>) заботимся ибо на последней странице места хватит и условие сработает не как нам надо.
но печатать-то надо и на ней, что лечим, например в OnBeforePrint для ReportSummary:
procedure ReportSummaryOnBeforePrint(Sender: TfrxComponent);
begin
Child.Visible := True;
Engine.ShowBand(Child);
end;
вуаля - всё работает как надо (за что спасибо, выручили).
но это-ж надо такую стойку на ушах заруливать...
а проще никак?