Reports with LazReport

There are two major reporting options: the LazReport it's the Fortes-CE, let's install 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';    

To install LazReport in this step, go to Package->Install and Uninstall Packages and mark for installation the following packages:

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

After compiling and installing the above packages, proceed with these as well:

  1. lazreportpdfexport: Provides the possibility to export a report from lazreport to pdf format. (requires powerpdf dependency)
  2. lrspreadsheetexport: Provides the possibility to export a report from lazreport to the format xls,xlsx,ods,…. (requires FPSpreadsheet dependency already installed)
  3. lazidefpreport

Watch out for marked components that require their pre-installed dependencies. There may be other component references starting with the letters lazThisOr That 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.