Telescope (core)
Como definir dinamicamente um cabeçalho/rodapé do relatório em tempo de execução através de uma regra de negócio?
ADS.FAQ-22920
Para montar dinamicamente um cabeçalho e/ou rodapé em todas as páginas de um relatório, será necessário criar uma regra disparada em um evento PRE_REPORT.
Sugere-se que o nome desta regra seja algo como "Preparar cabeçalho (ou rodapé) do relatório".
O código a ser colocado nesta regra, deverá set algo como:
getPageHeaderTemplate()
.leftArea("EMPRESA ACME S.A.\nRelatório contábil - Mes: MAIO/2010")
.rightArea("Página ${page} de ${pages}");
getPageFooterTemplate()
.leftArea("MATERIAL CONTROLADO - NÃO COPIAR")
.rightArea("Emitido por ${user} em ${date} ${time}");
Observações:
- Cada uma das quatro áreas (left/right x header/footer) pode ter N linhas - As linhas são programadas através de quebras de linha inseridas dentro da string ("\n").
- Existem várias macros permitidas. Veja a documentação que trata sobre as preferencias de cabeçalho dos relatórios para maiores detalhes.
Alterando o cabeçalho ao longo do relatório
Caso deseje alterar o conteúdo do cabeçalho/rodapé em cada página colocando, por exemplo, um valor a transportar ou transportado, um range de datas contidas na página, etc., o mesmo procedimento que foi realizado no pre-report, pode ser realizado nos eventos ON_PAGE_HEADER e ON_PAGE_FOOTER.
A programação é exatamente igual à utilizada no PRE_REPORT.
O único detalhe IMPORTANTE é que os cabeçalhos e rodapés não poderão ocupar mais espaço do que aquele previsto inicialmente no PRE_REPORT. Caso o desenvolvedor coloque dinamicamente um cabeçalho ou rodapé maior (com mais linhas) do que o inicialmente previsto, corre-se o risco de sobrepor textos SOBRE o corpo do relatório.
Ver também: