Вы находитесь на странице: 1из 7

DELPHI - Instituto Baro do Rio Branco Prof.

Giovani Dall Agnol

GERADOR DE RELATRIOS QUIKREPORT


A impresso de relatrios uma necessidade na maioria dos sistemas. Quem tem Delphi tem tudo para imprimir relatrios. O Delphi vem com dois mecanismos bsicos para gerar relatrios: (1) Quick Report e (2) TPrinter. Alm disso existem muitos geradores de relatrios de terceiros que podem ser adquiridos parte, tais como Report Builder e ReportSmith. O TPrinter permite manipular diretamente a impressora. Cada texto impresso posicionado na pgina atravs de um sistema de coordenadas calculadas em pixels. Isso to difcil quanto parece. melhor pular esse mtodo. No Quick Report o relatrio desenhado em um ambiente visual como se fosse um Form. Esse mtodo bem mais fcil. Vamos a ele.

1 - Quick Report
Desenhar um relatrio com o Quick Report assim: Voc cria um novo Form e nesse Form em branco voc desenha o relatrio usando os componentes prprios do Quick Report (esses componentes esto na aba QReport da palheta de componetes). Para fazer o programa imprimir o relatrio ou mostrar uma prvia do relatrio em vdeo, voc deve incluir uma opo de impresso no menu ou boto - em um Form que seja visvel ao usurio (pode ser o Form principal do sistema). O Form do relatrio em Quick Report no fica visvel ao usurio. Imagine um projeto Project1 que tem um Form chamado Form1. Para fazer um relatrio, crie um outro Form chamado Form2. Desenhe seu relatrio no Form2. Coloque um boto ou coisa parecida no Form1. Defina uma procedure para responder ao evento do boto. Nessa procedure mande imprimir o relatrio do Form2. No esquea de declarar o Form2 na clusula uses do Form1. A unit do Form1 vai ficar assim: ... unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit2; ... procedure TForm1.Button1Click(Sender: TObject); begin Form2.QuickRep1.Preview; end; ... Note a declarao da Unit2 (a unit do Form2) na clusula uses do Form1. Note tambm a procedure Button1Click, que responde ao evento OnClick do boto Button1. QuickRep1 o nome do relatrio que est no Form2. O mtodo preview do QuickRep1 mostra uma prvia do relatrio em vdeo. Para fazer o programa mandar o relatrio diretamente para a impressora s substituir o mtodo preview pelo mtodo print.

2 - Desenhando o relatrio
Vamos retomar o projeto Pcliente e fazer um relatrio de clientes. O relatrio vai conter nome, contato, telefone e limite de crdito. O componente QuickRep a base para a construo do relatrio. dentro do QuickRep que o relatrio vai ser desenhado. 1. Abra o projeto Pcliente.dpr 2. Crie um Form novo: clique na opo do menu do Delphi "File --> New Form" ou clique no boto New Form da barra de ferramentas. 3. Mude a propriedade Name do Form para frmRelatorio. 4. Salve o Form com o nome Urelat.pas 5. Coloque um componente QuickRep no Form novo. O QuickRep est na aba QReport da palheta de componentes.

DELPHI - Instituto Baro do Rio Branco Prof. Giovani Dall Agnol 3 - Bands

As bands do QuickRep dividem o relatrio em faixas de acordo com a funo. Existe uma faixa para o cabealho, outra para o rodap, outra para a linha de detalhe, etc. 1.D um duplo clique na propriedade Bands do QuickRep Vo aparecer as opes HasColumnHeader, HasDetail, HasPageFooter, HasPageHeader, HasSummary e HasTitle. Opes da propriedade Funo Bands HasTitle Pe uma faixa (band) para edio do ttulo do relatrio. Ttulo aquela parte do relatrio que s aparece no topo da primeira pgina, depois do cabealho. Coloque False. HasPageHeade Pe uma faixa para edio do cabealho. O cabealho aparece no topo de cada r pgina do relatrio. Coloque True. HasDetail Pe uma faixa para edio de linha de detalhe. A linha de detalhe aparece uma vez para cada registro da tabela. Coloque True. HasColumnHea Pe uma faixa para edio do cabealho de coluna. Essa faixa aparece entre o der cabealho e a linha de detalhe. Coloque True. HasPageFooter Pe uma faixa para edio do rodap. Essa faixa aparece no fim de cada pgina. Coloque True. HasSummary Pe uma faixa para edio do sumrio. Essa faixa aparece no fim da ltima pgina do relatrio, antes do rodap. Coloque True.

DELPHI - Instituto Baro do Rio Branco Prof. Giovani Dall Agnol 4 - DataSet

A prxima propriedade do QuickRep a DataSet. Essa propriedade aponta para a fonte dos dados que sero impressos. A fonte dos dados, neste caso, vai ser a tabela Cliente. Coloque um componente Table no Form Mude as propriedades do Table para acessar a tabela Cliente Propriedade do Table Valor Active True DatabaseName MEUALIAS IndexName idxNOME Name tblCliente TableName Cliente.db Propriedades do componente Table para o relatrio 1. Selecione o componente QuickRep 2. Mude a propriedade DataSet para tblCliente Outras Propriedades do QuickRep Propriedade Name ReportTitle Options Funo Nome do componente. Mude para relCliente o nome que vai aparecer na fila de impresso do Windows ou da rede. Mude para Relatrio de Clientes Estas opes permitem impedir que o cabealho aparea na primeira pgina ou que o rodap aparea na ltima. Isso til se voc quiser que o ttulo ou a faixa de fim de relatrio apaream isolados, sem cabealho ou rodap. No projeto atual deixe como est. Define o formato da pgina. Altura, largura, margens, orientao (retrato ou paisagem), etc.

Page

5 Cabealho Vamos desenhar o cabealho na faixa PageHeader. 1. Selecione a faixa PageHeader 2. Clique e arraste a ncora inferior da faixa para aumentar o tamanho. ncoras so aqueles pontos pretos que aparecem em volta do componente selecionado. 3. Coloque um componente QRLabel na faixa PageHeader. Note que os componentes no podem ser movidos de uma faixa para outra. 4. Centralize o componente QRLabel mudando a propriedade Alignment para taCenter e a propriedade AlignToBand para True. 5. Mude a propriedade Caption para "Relatrio de Clientes" (sem as aspas). 6. Mude a opo Size da propriedade Font para 20 Se voc quiser pode incluir uma imagem (um logotipo, por exemplo). 7. Coloque um componente QRImage na faixa PageHeader. 8. Clique na propriedade Picture 9. Clique no boto das reticncias 10.Escolha uma imagem com o Picture Editor

DELPHI - Instituto Baro do Rio Branco Prof. Giovani Dall Agnol Cabealho de Coluna
Vamos desenhar o cabealho de coluna na faixa ColumnHeader.

1 Coloque 4 componentes QRLabel na faixa ColumnHeader (um para cada coluna do relatrio). 2 Altere as propriedades Caption para Nome, Contato, Telefone e Limite de Crdito. 3 Altere o Style das propriedades Font para Underline e Italic. S para enfeitar um pouco vamos colocar uma linha separando o cabealho das linhas de detalhe. 4 Coloque um componente QRShape na faixa ColumnHeader 5 Mude a opo Width da propriedade Pen para 4. Isso vai engrossar a linha. 6 Mude a propriedade Shape para qrsHorLine. O componente QRShape tem vrias formas prdefinidas. qrsHorLine a linha horizontal. 7 Estique a linha por toda extenso do relatrio usando as ncoras.

6 - Linha de Detalhe Vamos desenhar a linha de detalhe na faixa Detail. 8 Coloque 4 componentes QRDBText na faixa Detail (um para cada coluna do relatrio). Faa com que eles fiquem grudados na parte superior da faixa. 9 Reduza a altura da faixa at no sobrar espao entre os componentes e o fim da faixa. Se sobrar algum espao, as linhas de detalhe vo aparecer afastadas. 10 Mude a propriedade DataSet de cada componente QRDBText para tblCliente. Isso vai indicar a fonte dos dados. 11 Mude as propriedades DataField para os respectivos campos de cada coluna do relatrio. 12 Na ltima coluna (Limite de Crdito) mude a propriedade Alignment para taRightJustify. Tradicionalmente os nmeros so alinhados direita. 13 Na ltima coluna mude a propriedade AutoSize para False. Quando AutoSize igual a True o campo esticado ou encolhido para caber o texto valor a ser impresso. O problema que o AutoSize estica o campo fixando a posio da borda esquerda, o que acaba desalinhando os campos alinhados direita. 14 Coloque a mscara de edio ###,##0.00 na propriedade Mask.

DELPHI - Instituto Baro do Rio Branco Prof. Giovani Dall Agnol


7 Sumrio

Vamos desenhar o sumrio do relatrio na faixa Summary. Vamos colocar nessa faixa um totalizador para imprimir o somatrio dos limites de crdito. 15 Coloque na faixa Summary um componente QRExpression. Esse componente um curinga que pode imprimir um valor constante, um campo da tabela ou um valor calculado. 16 Mude as propriedades Alignment para taRightJustify e AutoSize para False. 17 Clique na propriedade Expression. Essa a propriedade que contm a frmula a ser calculada. 18 Digite a frmula SUM(tblCliente.VALOR_CREDITO). Para ver outras frmulas clique no boto das reticncias ao lado da propriedade Expression. Isso vai abrir o Expression Wizard que vai ajudar a criar outras frmulas. 19 Mude o Style da propriedade Font para Bold. 20 Coloque a mscara de edio ###,##0.00 na propriedade Mask. 21 Mude a propriedade Master para relCliente. Toda frmula que contm funes agregadoras (somatrio, mdia, mnima, mxima, etc.) precisa de um Master. Esse Master indica quando calcular (o que entra ou no no clculo). O relCliente em Master indica que toda vez que uma linha de detalhe for impressa, essa linha vai ser totalizada. 22 Coloque um QRLabel ao lado do QRExpr 23 Mude o Caption para Total:

Mude o Style da propriedade Font para Bold

8 Rodap
Vamos desenhar o rodap do relatrio na faixa PageFooter. 24 Coloque um componente QRSysData na faixa PageFooter esquerda. Esse componente usado para imprimir informaes do sistema, tais como data, hora e nmero da pgina. 25 Mude a propriedade Data para qrsDate (data corrente). 26 Coloque outro componente QRSysData na faixa PageFooter direita.. 27 Mude a propriedade Data para qrsPageNumber (nmero da pgina). 28 Coloque um componente QRLabel prximo ao nmero da pgina. 29 Mude a propriedade Caption para Pgina: 30 Mude o Size da propriedade Font de todos os componentes do rodap para 8 Para dar um toque final coloque mais uma linha separando o rodap das linhas de detalhe, do mesmo jeito que foi feito no cabealho das colunas.

DELPHI - Instituto Baro do Rio Branco Prof. Giovani Dall Agnol

9 - Imprimindo com Quick Report


Agora que o relatrio est desenhado, vamos colocar a opo de impresso no Form principal. Abra o Form frmCliente Inclua a Unit do relatrio Urelat na clusula uses Inclua um boto na barra de ferramentas do Form. Se voc esqueceu como fazer, veja o tpico Barra de Ferramentas em Componentes visuais. Coloque uma figura de impressora no boto. Veja o tpico Lista de Imagens no Componentes visuais. Inclua uma opo Imprimir no menu. Veja o tpico Menu em Componentes visuais. Inclua uma procedure para tratar o evento OnClick da opo Imprimir do menu. Associe o evento OnClick do boto Imprimir mesma procedure.

31 32 33 34 35 36

A procedure deve ficar assim: unit Ucliente; interface uses Windows, . . ., DBTables, Urelat; ... procedure TfrmCliente.Imprimir1Click(Sender: TObject); begin frmRelatorio.QrrelCliente.Preview; end; ... Observaes: A unit do relatrio (Urelat) declarada na clusula Uses. frmRelatorio o nome do Form do relatrio. relCliente o nome do componente QuickRep no Form frmRelatorio. Preview o comando que mostra o relatrio no vdeo. Se quiser imprimir diretamente na impressora s substituir o comando Preview pelo Print. Quando executar o programa voc vai ver o relatrio no vdeo assim:

DELPHI - Instituto Baro do Rio Branco Prof. Giovani Dall Agnol

Вам также может понравиться