Muitas vezes precisamos imprimir alguma legenda ou outra informação no radapé das páginas. Isto é fácil usando QuickReport, basta acessar a propriedade Bands do objeto TQuickRep e setar a opção HasPageFooter como True. Porém o rodápe vai ser impresso em todas páginas. Como fazer então para imprimir somente na primeira página e nas demais páginas ocupar o espaço que seria destinado ao rodapé, por exemplo, com o detalhe?

Use o evento AfterPrint de sua banda PageFooter e insira o código abaixo, que está entre o begin e o end.

Para que não haja interferência do código na primeira página, colocamos o código no evento AfterPrint e não no BeforePrint. Assim, quando o código for executado pela primeira vez, a primeira página já tera sido impressa.

Veja também que montamos a solução de forma otimizada, executando o trecho de código entre o begin e end do "if QuickRep1.PageNumber = 1" somente na primeira página após ela já ter sido impressa, evitando assim, "n" chamadas a procedure ResetPageFooterSize, pois o próprio QuickReport, segundo seu manual, deixa subentender que não calcula à cada página seu PageFooter. Apenas o if será executado a cada página.


procedure TForm1.PageFooterBand1AfterPrint(Sender: TQRCustomBand;
  BandPrinted: Boolean);

begin
   {usamos o evento AfterPrint para que o código abaixo não 
   interfira na primeira página}
   if QuickRep1.PageNumber = 1 then  
  {testamos para executar apenas uma vez, ou seja, otimizar e evitar que 
  ResetPageFooterSize seja executada várias vezes o que daria o 
  mesmo efeito que executar apenas uma vez}
   begin
      PageFooterBand1.Enabled := False;     
      {Testado e aprovado e ficou ótimo, pq as linhas dos frames tb obedecem}
      //PageFooterBand1.Size.Height := 0;   
     {Testado e aprovado e ficou ótimo, pq as linhas dos frames tb obedecem}
      QuickRep1.ResetPageFooterSize;
   end;
end;

Funciona tanto com:

PageFooterBand1.Enabled := False;

ou com

PageFooterBand1.Size.Height := 0;

Testado em Delphi 7 e QuickReport 5.02.