Fastreport. Печать Pagefooter непосредственно после Masterdata

hichic
отредактировано July 2010 Раздел: FastReport 4.0
Как в FastReport 4.9 осуществить корректный вывод PageFooter непосредственно после MasterData?
Пробовал так:
var
  Y: extended;
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
begin
  Y:=Engine.CurY;
end;

procedure PageFooter1OnBeforePrint(Sender: TfrxComponent);
begin
  Engine.CurY:=Y;
end;

При переносе нескольких строк данных на новую страницу все отображается корректно:
d2981b1ad4bbt.jpg

Далее... В отчете присутсвуют бэнды: ReportTitle, Header, MasterData, Footer и PageFooter. MasterData.KeepFooter := True, т.е. если Footer переносится на новую страницу, то последняя строка данных, в любом случае, переходит вместе с ним, и вот когда такое происходит, то получается некрасиво:
2dc2a3ec0ff6t.jpg

Комментарии

  • hichic
    отредактировано 05:47
    Я какую-то глупость спросил, или реально никто не знает?
  • hichic
    отредактировано July 2010
    Понял свою ошибку. Проблема решена скриптом
    procedure MasterDataOnBeforePrint(Sender: TfrxComponent);
    begin
      if (MasterData.Dataset.RecNo + 1 = MasterData.Dataset.RecordCount) 
      and (Engine.FreeSpace < (MasterData.Height + ColumnFooter.Height + ReportSummary.Height)) then
        Engine.NewPage;                                                                             
    end;
    
    Используемые бэнды: ReportTitle, ColumnHeader, MasterData, ColumnFooter и ReportSummary.

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

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