Relatórios com LazReport

Há duas grandes opções de relatórios: o LazReport e o Fortes-CE, vamos instalar o LazReport.

O LazReport já acompanha a instalação do Lazarus, mas não é previamente instalado. Compor relatórios com ele é similar ao FastReport do Delphi.

Seu grande diferencial ao Fortes é que ele tem sua interface própria de construção de relatório, isto é, você deposita um componente no formulário e este componente lhe dá acesso a um editor de design de relatório que será a unica ferramenta de trabalho, quase sem código de programação da sua parte, você apenas precisará dos datasources e o restante é com o design e quase não carecendo de programação por cima. Isso pode ser bom por um lado, mas por outro torna-o menos flexível que o Fortes-CE onde usaremos os eventos OnBefore em cima de bandas e objetos visuais para personalizar as informações.

Por exemplo, imagine imprimir um Label ao lado do nome do cliente intitulado ‘Situação’ que fosse uma imagem ou texto que variasse conforme a situação financeira, usando o Fortes, no label colocaria algum código no evento OnBeforePrint, simples assim, já no LazReport você já tem a opção de criar uma variavel e colocá-lo junto ao MemoView (componente que mostra texto similar ao TLabel) e antes do relatório ser preparado você altera essas variaveis ou não cria nenhuma variável e faz esse ajuste fino em tempo de runtime.

Dentro deste design de relatório, você tem os :

  1. Datasets: para conectar os campos de tabelas de bancos de dados aos componentes visuais
  2. Variaveis: que são basicamente valores que não tem relação com banco de dados onde alguns já vem prontos como data/hora atual, numero de página e pode-se acrescentar suas próprias variáveis que serão usadas durante o relatório.

Programadores geralmente tentam resolver o relatório totalmente visual, alterando apenas suas propriedades. Mas é possivel alterar os componentes em tempo de execução, é similar ao FastReport do Delphi(mas que também tem versão comercial para Lazarus):

  // Componentes Visuais
  if frx_Report.FindObject('LBL_VL_TOTAL')<>nil then
  begin
    TfrxMemoView(frx_Report.FindObject('LBL_VL_TOTAL')).Memo.Text:='Valor em REAIS';
  end  
  if frx_Report.FindObject('header_logo')<>nil then
  begin
    TfrxPictureView(frx_Report.FindObject('header_logo')).Hyperlink.Kind:=hkURL;
    TfrxPictureView(frx_Report.FindObject('header_logo')).Hyperlink.Value:=link2site_nosso.text;
    TfrxPictureView(frx_Report.FindObject('header_logo')).Picture.LoadFromFile(edtImg_Header.Text);
  end;
  // Variaives
  frx_Report.Variables.Variables['NOME_LOCAL']:='Estado, Cidade, Cep, UF';
  frx_Report.Variables.Variables['REQUERENTE']:='José da Silva';    

Para instalar o LazReport neste passo, vá em Pacote->Instalar e desinstalar pacotes e marque para instalação os seguintes pacotes:

  1. lazreport
  2. lazfpreportdesign
  3. lclfpreport
  4. lr_codereport_pkg

Depois de compilar e instalar os pacotes acima, prossiga com estes também:

  1. lazreportpdfexport: Fornece a possibilidade de exportar um relatório do lazreport para o formato pdf. (requer dependencia powerpdf)
  2. lrspreadsheetexport: Fornece a possibilidade de exportar um relatório do lazreport para o formato xls,xlsx,ods,…. (requer dependência FPSpreadsheet já instalada)
  3. lazidefpreport

Fique atento aos componentes marcados que exigem suas dependências previamente instaladas. Podem existir outras referências de componente iniciando com as letras lazIstoOuAquilo que acrescentam mais recursos ao lazreport que talvez queira instalar, mas corre-se o risco de haver dependências e você deve ficar atento a elas antes de prosseguir. Se instalar algo que bugou sua IDE volte ao tópico “A prova de balas” para ter o seu sistema de volta.