Professional Documents
Culture Documents
Page 1 of 13
freepascal wiki
OPEN SOURCE COMPILER FOR PASCAL AND OBJECT PASCAL
VIEWS
TUTORIAL DE LAZREPORT
From Lazarus-ccr
Contents
Article
Discussion
Edit
History
NAVIGATION
1 Relatrio
2 Funes
2.1 Funes nos dados:
2.2 Funes nos caracteres de conexo:
2.3 Funes Lgicas:
Relatrio
Main Page
Documentation
FAQ
Downloads
Glossary
Index
Recent changes
Random page
Help
Vamos usar um demo de banco de dados fornecido pelo Delphi (alias DBDEMOS). Voc
deve criar uma nova aplicao com o formulrio principal chamado Form1.
Ponha no formulrio os seguintes componentes:
TTable:
Table1.DataBaseName:= DBDEMOS
Table1.TableName:= ANIMALS.DBF
Table1.Active:= TRUE
TDataSource
DataSource1.DataSet:= Table1
TfrDBDataSet
frDbDataSet.DataSource:= DataSource1
TfrReport
TfrDesigner
2 TButton
Button1.Caption:= ' Editing'
Button2.Caption:= ' Preview'
TOOLBOX
What links here
Related changes
Upload file
Special pages
Printable version
Permanent link
WIKI SEARCH
Go
Search
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009
Page 2 of 13
nomes de campos. Em nosso exemplo vamos tentar criar uma varivel nos campos BMP
e NAME na Tabela1.
Agora clique no boto Variables para definir o lado esquerdo desta janela.
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009
Page 3 of 13
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009
Page 4 of 13
Deve ter visto que os objetos so iguais aos componentes QRLabel, QRMemo, etc, do
QuickReport.
Em nosso relatrio em branco voc deve clicar no tipo de faixa que deseja criar:
Selecione o ttulo do estado e clique OK.
Tipo de faixa
Uso
Report title
Publicado apenas na primeira pgina
Report summary Publicado apenas na ltima pgina
Page header
Publicado no topo de cada pgina
Page footer
Publicado no p de cada pgina
Master header
Publicado no comeo do primeiro nvel (detalhe/barra)
Master Data
Dados do primeiro nvel
Master Footer
Publicado no final do primeiro nvel
Detail header
Publicado no comeo do segundo nvel (barra/detalhe)
Detail Data
Dados de segundo nvel
Detail Footer
Publicado no final do segundo nvel
Subdetail Header Publicados no comeo do terceiro (barra/detalhes)
Subdetail Data
Dados de terceiro nvel
Subdetail Footer Publicados no fim do terceiro nvel
Overlay
Heading of column Publicado no topo de cada coluna
Column base
Publicado no comeo do grupo
Heading of group Publicado no topo de cada pgina
Foot of group
Publicado no final do grupo
VarColumn
Usado para tabelas cruzadas
Nesta faixa, adicione um retngulo e o dimensione como quiser. Escolha uma cor para
o plano de fundo com o boto Baldinho Cheio, ento clique duas vezes no retngulo
para indicar o ttulo.
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009
Page 5 of 13
Vamos inserir a faixa como dados mestre, ento clique duas vezes nessa faixa para
selecionar frDBDataSet1, a principal fonte de dados do nosso exemplo.
Aqui podem ser colocados vrios campos, mas pode ser mantido um retngulo para um
nico campo a fim de aplicar formatos, por exemplo. A primeira linha Name [Field
Name] obtida escrevendo-se Name e ento, com o boto Variable, inserindo a
varivel [Field Name] (poderamos ter escrito isto diretamente). Para a segunda linha,
Size[[Table1, SIZE]*2.54], ns escrevemos Size e com o boto DB Field escolhemos o
tamanho do campo de Table1 e para converter este campo, expresso em polegadas,
para centmetros, multiplicamos este campo por 2.54. Pode-se ver o poder do
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009
Page 6 of 13
Agora vamos escrever o cdigo necessrio para carregar e visualizar ou editar o nosso
relaltrio rap1frf. Para isto adicione ao projeto o seguinte cdigo:
TForm1.Button2Click(Sender procedure: TObject);
begin
frReport1.LoadFromFile(' rap1.frf');
FrReport1.ShowReport;
end;
TForm1.ButtonClick(Sender procedure: TObject);
begin
frReport1.LoadFromFile(' rap1.frf');
frReport1.DesignReport;
end;
Voc tem uma edio com pr-visualizao que d a possibilidade de os usurios finais
modificarem o relatrio sem precisar modificar a aplicao bsica.
Agora vamos adicionar funcionalidades ao nosso exemplo bsico. Voc deve adicionar
um componente TButton com a propriedade Caption:= Print; e um TPrintDialog.
Obtemos isso:
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009
Page 7 of 13
um pouco longo mas nada impede que voc crie uma classe herdada do TfrReport
com um mtodo de impresso ou, mais fcil, crie um procedimento PrintReport(letat:
string) que carregue o relatrio e o imprima.
No menu Edit File > Page Options voc obtm isso:
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009
Page 8 of 13
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009
Page 9 of 13
Isto no usado para os dados, mas para permitir formatar os dados com
DisplayFormat. Agora vamos ver como criar uma varivel calculada. Como antes,
vamos criar uma nova categoria (opcional) e uma varivel. Test Calculation. Selecione
uma nova varivel e escolha um valor da ComboBox " Other " e " Expression ". Essa
seleo ativa a rea de dados de entrada Expression. Escreva o seguinte:
[Table1."SIZE"] + [Table1."WEIGHT"] . Dessa forma voc obter o sumrio dos campos
de dados Size e Weight. Voc tambm pode colocar nome nas variveis. E pode utilizar
os seguintes operadores:
Tipos de Operadores Operadores
Logic
>, <, BUT, AND, NOT, =, < >, > =, < =
Mathematics
-, *, +, MOD, /
Mais frente voc poder dispor dos seguintes funes padronizadas:
Funo
Descrio
Exemplos
SUM
Soma
AVG
Mdia
MIN
Mnimo
MAX
Mximo
FORMATDATETIME Data e hora formatadas
FORMATFLOAT
Ponto flutuante formatado
LOWERCASE
Letras minsculas
NAMECASE
Primeira maiscula
STRTODATE
Data para string
STRTOTIME
Hora para string
UPPERCASE
Letras maisculas
Se no for suficiente voc pode criar suas prprias funes, mas isso ns veremos mais
adiante.
Agora vamos definir um formato para as variveis de uma rea. Um formato vlido
para todas as variveis de uma rea de display. Para mostrar o editor de formatos,
clique com o boto direito em uma rea e ento em Variable Format.
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009
Page 10 of 13
A primeira ComboBox indica o tipo de dado (texto, numrico, data, hora, lgico). A
segunda permite selecionar o formato preestabelecido. O tipo Text no permite
qualquer formatao e o tipo Number requer um nmero decimal com vrgula. A no
ser para os tipos Text e Logic, voc pode usar as funes de formatao do Delphi.
Voc pode incluir tambm o conceito de highlighting, que muito til para enfatizar
dados. Voc pode especificar uma condio para aplicar o highlighting. Para isso use a
palavra-chave Value para indicar o valor da varivel. Aqui requisitado o highlighting
para todos os valores maiores que 1000. Por padro o highlighter um simples negrito
sobre fundo branco. Voc pode definir esses parmetros para uma rea clicando no
boto Realce.
Ento voc pode definir a cor do plano de fundo, o estilo e a cor da fonte a ser usada
selecionando Intesified brightness.
Funes
necessrio adicionar ao arquivo FR.lng a linha seguinte:
FCT = CATEGORY | FCT(<X>, <Y>, <Z >) | Help on the function
onde: FCT o nome da funo. CATEGORY, o nome da categoria. FCT(<X>, <Y>, <Z
>), a visualizao dos parmetros necessrios, com no mximo 3 parmetros. Help.,
uma pequena Ajuda que deve tornar possvell ao usurio entender o objetivo da
funo. | um separador. Cada parmetro separado por vrgula e pode ser uma
expresso, uma constante, uma varivel, um campo ou dados. As constantes de tipo
alfanumrico devem ser limitadas por um caractere. As variveir so limitadas por
and. Os campos de dados so limitados como as variveis e tem o seguinte formato:
Dataset_Name. "Field_Name"
Funes Estatsticas:
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009
Page 11 of 13
SUM(<X >)
. Retorna a soma dos valores dados por <X>, que geralmente um campo de
dados.
AVG(<X >)
Retorna a mdia dos valores dados por <X>.
COUNT
Meter.
MIN(<X >)
Retorna o valor mnimo dos valores dados em <X>.
MAX(<X >)
Retorna o valor mximo dos valores dados em <X >.
em letras minsculas.
em maisculas.
com a primeira letra maiscula.
na posio < Y > e comprimento< Z >.
Funes Lgicas:
IF(<X>, <Y>, <Z >)
Retorna < Y > se a expressso < X > verdadeira, se falsa retorna < Z >.
Para adicionar suas prprias funes realmente muito simples. Aqui um cdigo-fonte
para adicionar as funes POS e SQRT:
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009
Page 12 of 13
Unit FR_OGFct;
interface
implementation
uses FR_Pars, FR_Class; / / Declarao-padro
type
//Declarao de TBrOGFunctionLibrary
TfrOGFunctionLibrary = class(TfrFunctionLibrary)
public
constructor Create; override;
procedure DoFunction(FNo:integer procedure; p1, p2,
p3:Variant; var valley:string); override;
p3:Variant; var valley:string);
end;
//************************** / / * TfrOGFunctionLibrary
constructor TfrOGFunctionLibrary.Create;
begin
inherited Create;
with List do
begin
Add('POS');
ADD('SQRT');
end;
end;
Procedure TfrOGFunctionLibrary.DoFunction(FNo:Integer procedure; p1,
p2, p3:Variant; Var valley:String);
VAr Par1, Par2: Varying;
Result: Variantying;
begin
Try
Case FNo of //FNo um indice das funes declaradas no constructor
0 : Begin
//funo POS
Par1:=VarToStr(Parser.Calc(p1));
Par2:=VarToStr(Parser.Calc(P2));
Resultat:=Pos(Par1,Par2);
end;
1 : Resultat:=SQRT(Parser.Calc(P1)); //funo SQRT
end;
Except
// String resultante se der erro
Resultat:='Erreur fonction '+List.Strings[FNo];
end;
Val:=VarToStr(Resultat); // String resultante
end;
Procedure DoInit;
begin
frRegisterFunctionLibrary(TfrOGFunctionLibrary);
end;
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009
Page 13 of 13
Voc pode notar o aparecimento de um pequeno boto (...), ativo somente se for o
caso de uma expresso. Clique para abrir o editor abaixo:
Voc pode notar a semelhana. Se clicar no boto Add voc vai carregar o editor de
parmetros:
De acordo com o nmero de parmetros, voc ter mais ou menos zonas de edio. O
boto (...) torna possvel abrir o gerador de expresses para informar o parmetro.
http://wiki.freepascal.org/Tutorial_de_LazReport
18/04/2009