Exportando um relatório para PDF
Esse é um procedimento bastante simples, mas é necessário instalar dois pacotes. Para exportar um relatório para PDF você precisa do LazReportPDFExport. Este componente está em source\addons\pdfexport no mesmo diretório do LazReport. Mas este componente depende do PowerPDF. Você pode fazer o download do pacote PowerPDF no repositório de componentes e código Lazarus. Instale o PowerPDF e depois o LazReportPDFExport. O PowerPDF irá aparecer em uma nova aba de componentes e o LazReportPDFExport será um novo componente -TfrTNPDFExport - na aba do LazReport.
Supondo que você já criou o relatório, coloque um TfrTNPDFExport no mesmo form onde está o TfrReport. Execute o seu programa e visualize o relatório. Clique no botão Save report. Clique na caixa Tipo e deve aparecer a opção Adobe Acrobat PDF (*.pdf). Selecione esta opção, dê um nome ao arquivo e pressione o botão Salvar. Agora você tem um arquivo pdf com o seu relatório. Também existem componentes que permitem você exportar para HTML ou CSV.
Object Inspector
Semelhante ao Object Inspector do Lazarus, com ele podemos manipular propriedades de alguns objetos, tais como: nome, posição, tamanho e visibilidade. No LazReport ele é tratado como uma ToolBar. Pode ser mostrado ou ocultado. Para mostrar a janela do Object Inspector selecione Tools -> ToolBars -> Object Inspector. Depois simplesmente selecione um objeto no relatório para visualizar/alterar suas propriedades.
Destacando objetos
Em certos relatórios pode ser necessário mudar a cor da fonte e/ou do fundo de objetos, baseado em certas condições. Para isso selecione o objeto alvo e pressione o botão Highlight attributes na barra de ferramentas de formatação de texto, como mostra a figura abaixo.
Vamos supor que tenhamos um relatório de vendas mensais efetuadas pelos vendedores de uma loja e que a meta para aquele mês seja 10.000 reais. Então, queremos que os valores abaixo de 10.000 apareçam com fonte em vermelho. Na caixa de texto Condition da janela Highlight attributes informe Value < 10000. Selecione a cor da fonte e/ou a cor de fundo e pressione o botão OK. Veja a figura seguinte. Agora o relatório irá mostrar os valores de venda menores que 10.000 em vermelho. Condições mais complexas podem ser criadas usando o recurso de script que será apresentado mais adiante.
Programando eventos
Em certos casos pode ser necessário imprimir dados que não estão em bancos de dados. Uma opção é usar os eventos do componentes TfrReport. Dois desses eventos são OnGetValue e OnEnterRect. OnGetValue ocorre toda vez que um objeto Text encontra uma variável e precisa atribuir um valor a ela. Se a variável não possuir um valor então esse valor é definido através de código, por exemplo:
procedure TForm1.frReport1GetValue(const ParName: String; var ParValue: Variant);
begin
if ParName = 'Variavel1' then
ParValue := 100;
end;
Onde ParName tem o nome da variável como string e ParValue recebe o valor dessa variável. Por sua vez o evento OnEnterRect acontece antes que um objeto seja desenhado. Podemos, por exemplo, imprimir um dado bem específico em uma linha ou coluna do relatório.
procedure TForm1.frReport1EnterRect(Memo: TStringList; View: TfrView);
begin
if (FCol=3)and(FRow=3) then
view.Memo.Text := 'ALO';
end;
begin
if (FCol=3)and(FRow=3) then
view.Memo.Text := 'ALO';
end;
FCol e FRow definem uma coluna e uma linha do relatório respectivamente. No exemplo será impressa a palava ALO na linha 3 e coluna 3.
Programando um script
LazReport possui um interpretador interno semelhante ao Pascal que tem as seguintes características:
- Operador de atribuição (:=);
- Estruturas if ... then ... else, while ... do e repeat ... until;
- Delimitadores de blocos begin e end;
- Variávies não tipadas;
- Acesso aos objetos do LazReport e suas propriedades.
Algumas propriedades de objetos visuais que podem ser usadas nos scripts são:
Visible - determina a visibilidade do objeto (boolean);
FillColor - determina a cor de fundo do objeto. Valores possíveis: clRed, clBlue, etc.;
Text - conteúdo do memo;
Objetos Text tem também as seguintes propriedades:
FontName, FontSize, FontColor - nome, tamanho e cor da fonte;
FontStyle - estilo da fonte (1 - itálico, 2 - negrito e 3 - sublinhado);
Adjust - alinhamento do texto (1 - direita, 2 - centro).
Por exemplo, voltando ao nosso relatório de vendas, vamos supor que queremos imprimir em verde os valores acima do dobro da meta, em vermelho os valores abaixo da meta e em azul os demais. O código ficaria como abaixo, supondo que o valor seja dado por [TotalVendas]:
if [TotalVendas] < 10000 then
FontColor := clGreen
else if [TotalVendas] < 20000 then
FontColor := clBlue
else
FontColor := clRed;
Vamos continuar explorando os recursos do LazReport. No próximo post vamos mostrar como criar um relatório mestre-detalhe.
6 comentários:
Carlos,
segui exatamente os passos que estão no exemplo do lazreport 'stringgrid' para imprimir os dados da minha grid, inclusive, achei um how-to igual.
no entanto, nao aparece no relatorio o conteudo da grid, somente o cabeçalho.
Será que falta alguma coisa?
Você pode me passar o link do how-to? Vou fazer o exemplo aqui e depois retorno a você.
http://groups.google.com/group/lazarus-br/browse_thread/thread/2bb687ea46a99ff4
Professor,
e o mesmo exemplo que vem no pacote do lazreport. segui a risca,
mas nao joga no relatorio o conteudo da stringgrid.
Abração.
Funcionou. Respondi no forum também. Se quiser pode me mandar e-mail.
HOLA QUE MAS, HACE RATO QUE QUIERO MiGRAR A LAZARUS PERO AUN EL ROMPE CABEZAS NO ESTÁ COMPLETO, ME GUSTARIA TENER O DESCARGAR EL GENERADOR DE REPORTES DE LASARUZ Y ASI ARMAR EL ROMPE CABEZAS, SI ME PUEDE AYUDAR SE LO AGRADECERIA MUCHISIMO.
GRACIAS.
MI CORREO ES:
lws_1234@hotmail.com O
l1w2s3_1234@yahoo.es
O pacote do lazreport pode ser encontrado no diretório /components/lazreport sob o home do lazarus
Postar um comentário