Imprimir somente a primeira página do rodapé no QuickReport e aproveitar o espaço nas demais

Alternativa para imprimir somente a primeira página do rodapé em relatórios desenvolvidos em QuickReport e aproveitar o espaço nas demais páginas, por exemplo, com o detalhe

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.

Artigos relacionados