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.