Você está na página 1de 237

FastReport VCL 5

User's Manual

1998-2014 Fast Reports Inc.


Manual Version 5.0.0

FastReport VCL 5 User's Manual

Table of contents
2

Chapter I Designer

1 Teclas
...................................................................................................................................
de controle
3
2 Controle
...................................................................................................................................
do mouse
3
3 Barras
...................................................................................................................................
de ferramentas
4
Barra Modo.........................................................................................................................................................
do designer
4
Barra de ferram
.........................................................................................................................................................
entas padr o
4
Barra de ferram
.........................................................................................................................................................
entas Texto
5
Barra de ferram
.........................................................................................................................................................
entas Borda
6
Barra de ferram
.........................................................................................................................................................
entas Paleta de Alinham ento
7

4 Opes
...................................................................................................................................
do designer
9
5 Configura
...................................................................................................................................
o do Relatrio
10
6 Opes
...................................................................................................................................
da Pgina
13

17

Chapter II Criar relatrios

1 Objetos
...................................................................................................................................
do relatrio
17
2 Relatrio
...................................................................................................................................
de exemplo "Ol, Mundo!"
17
3 O objeto
...................................................................................................................................
"Texto"
18
4 Tags
...................................................................................................................................
HTML no objeto "Texto"
20
5 Exibir
...................................................................................................................................
expresses com a ajuda do objeto "Texto"
21
6 Bandas
...................................................................................................................................
no FastReport
22
7 Bandas
...................................................................................................................................
de dados
24
8 O componente
...................................................................................................................................
TfrxDBDataSet
24
9 Relatrio
...................................................................................................................................
"Lista de Clientes"
25
10 Exibir
...................................................................................................................................
campos de BD com a ajuda do objeto "Texto"
28
11 Aliases
................................................................................................................................... 28
12 Variveis
................................................................................................................................... 30
13 Objeto
...................................................................................................................................
"Figura"
32
14 Relatrio
...................................................................................................................................
com figuras
33
15 Exibir
...................................................................................................................................
texto com vrias linhas
34
16 Divis
...................................................................................................................................
o de dados
36
17 Quebra
...................................................................................................................................
automtica de linha de objetos
38
18 Exibir
...................................................................................................................................
dados na forma de uma tabela
40
19 Imprimir
...................................................................................................................................
rtulos
42
20 Bandas
...................................................................................................................................
filho
44
21 Deslocar
...................................................................................................................................
objetos
46
22 Relatrio
...................................................................................................................................
com dois nveis de dados (mestre-detalhe)
47

1998-2014 Fast Reports Inc.

Table of contents

II

23 Cabealhos
...................................................................................................................................
e rodaps de uma banda de dados
50
24 Relatrios
...................................................................................................................................
com pginas mltiplas
52
25 Propriedades
...................................................................................................................................
RowCount e PageCount
53

Chapter III Grupos e agregados

56

1 Relatrio
...................................................................................................................................
com grupos
56
2 Outros
...................................................................................................................................
recursos de grupos
58
3 Redefinir
...................................................................................................................................
nmeros de pginas
60
4 Grupos
...................................................................................................................................
de drill down
61
5 Numera
...................................................................................................................................
o de linhas
61
6 Funes
...................................................................................................................................
de agrega o
62
7 Totais
...................................................................................................................................
da pgina e do relatrio
65
8 Inserir
...................................................................................................................................
funes de agrega o
66

Chapter IV Formatar, realar

69

1 Formatar
...................................................................................................................................
valores
69
2 Formata
...................................................................................................................................
o embutida
70
3 Realce
...................................................................................................................................
condicional
71
4 Colorindo
...................................................................................................................................
fileiras de dados alternadas
74

Chapter V Relatrios aninhados (sub-relatrios)

77

1 Relatrios
...................................................................................................................................
aninhados (sub-relatrios)
77
2 Sub-relatrios
...................................................................................................................................
lado a lado
77
3 Limitaes
...................................................................................................................................
na utiliza o de sub-relatrios
78
4 Op
...................................................................................................................................
o PrintOnParent
79

Chapter VI Script

81

1 Um...................................................................................................................................
gostinho de script
81
2 Estrutura
...................................................................................................................................
de um script
84
3 Script
...................................................................................................................................
"Ol, Mundo!"
86
4 Usando
...................................................................................................................................
objetos no script
86
5 Chamando
...................................................................................................................................
as variveis da lista de variveis do relatrio
87
6 Referenciando
...................................................................................................................................
os campos de BD
88
7 Utilizar
...................................................................................................................................
funes de agrega o no script
89
8 Exibir
...................................................................................................................................
o valor de uma varivel em um relatrio
89
9 Eventos
................................................................................................................................... 89
10 Exemplo
...................................................................................................................................
de uso do evento "OnBeforePrint"
91
11 Imprimir
...................................................................................................................................
um total de grupo no cabealho do grupo
93
12 Evento
...................................................................................................................................
"OnAfterData"
97
13 Objetos
...................................................................................................................................
de servio
98
Objeto "Report"
......................................................................................................................................................... 98

1998-2014 Fast Reports Inc.

III

FastReport VCL 5 User's Manual


Objeto "Engine"
......................................................................................................................................................... 99
Objeto "Outline"
......................................................................................................................................................... 100

14 Utiliza
...................................................................................................................................
o do objeto "Engine"
101
15 ncoras
................................................................................................................................... 103
16 Utiliza
...................................................................................................................................
o do objeto "Outline"
105
17 Evento
...................................................................................................................................
de pgina "OnManualBuild"
108
18 Cria
...................................................................................................................................
o de objetos no script
113

Chapter VII Relatrios tipo tabela de referncia


cruzada

116

1 Constru
...................................................................................................................................
o de um relatrio de tabela de refer ncia cruzada
117
2 Modificar
...................................................................................................................................
a apar ncia
119
3 Utiliza
...................................................................................................................................
o de funes
121
4 Classifica
...................................................................................................................................
o de valores
122
5 Tabelas
...................................................................................................................................
com cabealhos compostos
123
6 Ajustar
...................................................................................................................................
a largura da clula
125
7 Cor
...................................................................................................................................
da fonte e realce
127
8 Gerenciar
...................................................................................................................................
uma tabela de refer ncia cruzada em um script
129
9 Ajustar
...................................................................................................................................
o tamanho da fileira/coluna
134
10 Preencher
...................................................................................................................................
uma tabela manualmente
135
11 Adicionar
...................................................................................................................................
objetos externos tabela
137
12 Algumas
...................................................................................................................................
configuraes teis
139

Chapter VIII Grficos

143

1 Limitar
...................................................................................................................................
o nmero de valores do grfico
146
2 Algumas
...................................................................................................................................
configuraes teis
147
3 Grfico
...................................................................................................................................
com valores inseridos manualmente
147
4 Cria
...................................................................................................................................
o de grficos com um script
148
5 Imprimir
...................................................................................................................................
um grfico criado em Delphi
149

Chapter IX Relatrios interativos

151

1 Hiperlink
................................................................................................................................... 151
2 Configura
...................................................................................................................................
o de um hiperlink
151
3 Link
...................................................................................................................................
para a URL
152
4 Link
...................................................................................................................................
para o nmero da pgina
153
5 Link
...................................................................................................................................
para uma ncora
153
6 Link
...................................................................................................................................
para um relatrio detalhado
153
7 Link
...................................................................................................................................
a uma pgina detalhada
154
8 Link
...................................................................................................................................
personalizado
154

Chapter X Relatrios matriciais

156

1998-2014 Fast Reports Inc.

Table of contents

IV

1 Tabelas
...................................................................................................................................
de refer ncia cruzada em relatrios matriciais
159
2 Impress
...................................................................................................................................
o de um relatrio matricial
161
3 Objeto
...................................................................................................................................
"Comando"
161

Chapter XI Formulrios de dilogo

164

1 Controles
................................................................................................................................... 164
2 Relatrio
...................................................................................................................................
"Ol, Mundo!"
165
3 Inserir
...................................................................................................................................
parmetros e transferi-los para um relatrio
167
4 Intera
...................................................................................................................................
o com controles
167
5 Diversos
...................................................................................................................................
formulrios de dilogo
168
6 Gerenciar
...................................................................................................................................
formulrios de dilogo
169

Chapter XII Componentes de acesso a dados

172

1 Descries
...................................................................................................................................
de componentes
173
TfrxDBLookupCom
.........................................................................................................................................................
boBox
173
TfrxADOTable
......................................................................................................................................................... 174
TfrxADOQuery
......................................................................................................................................................... 176
TfrxADODataBase
......................................................................................................................................................... 178

2 Designer
...................................................................................................................................
de relatrios
178
3 Relatrio
...................................................................................................................................
simples do tipo "Lista"
179
4 Relatrio
...................................................................................................................................
com consulta paramtrica
181
5 Outros
...................................................................................................................................
recursos teis
183

Chapter XIII Herana do relatrio

185

1 Criar
...................................................................................................................................
um relatrio base
185
2 Alterar
...................................................................................................................................
um relatrio base
187
3 Controle
...................................................................................................................................
de herana
188

Chapter XIV Assistentes

191

1 Assistente
...................................................................................................................................
de relatrio novo
191
2 Assistente
...................................................................................................................................
de nova conex o
195
3 Assistente
...................................................................................................................................
de nova tabela
196
4 Assistente
...................................................................................................................................
de nova consulta
197
5 Constru
...................................................................................................................................
o da consulta
197
Utiliza o.........................................................................................................................................................
do construtor de consultas
200
Construir.........................................................................................................................................................
consultas com plexas
202

Chapter XV Visualiza o, impress o e exporta o de


um relatrio

206

1 Teclas
...................................................................................................................................
de controle
207
2 Controle
...................................................................................................................................
do mouse
208
3 Impress
...................................................................................................................................
o do relatrio
208
4 Pesquisa
...................................................................................................................................
de texto em relatrios
211

1998-2014 Fast Reports Inc.

FastReport VCL 5 User's Manual


5 Exportar
...................................................................................................................................
o relatrio
211
Exportar .........................................................................................................................................................
para o form ato PDF
212
Exportar .........................................................................................................................................................
para Open Docum ent
214
Exportar .........................................................................................................................................................
ao form ato RTF
215
Exportar .........................................................................................................................................................
para Word 2007
216
Exportar .........................................................................................................................................................
para Excel 97/2000/XP
216
Exportar .........................................................................................................................................................
para o form ato Excel XML
218
Exportar .........................................................................................................................................................
para Excel 2007
219
Exportar .........................................................................................................................................................
para Pow erPoint 2007
220
Exportar .........................................................................................................................................................
para o form ato CSV
220
Exportar .........................................................................................................................................................
para o form ato HTML
221
Exportar .........................................................................................................................................................
para o form ato texto
222
Exportar .........................................................................................................................................................
para os form atos grficos Jpeg, BMP, Gif, Tiff
223

6 Enviar
...................................................................................................................................
um relatrio por e-mail
224
7 Consideraes
...................................................................................................................................
do design do relatrio
226

1998-2014 Fast Reports Inc.

Chapter

I
Designer

FastReport VCL 5 User's Manual

O designer fornece todas as ferramentas necessrias ao usurio para criar e visualizar


relatrios. A interface do designer cumpre com os requisitos atuais. Ela contm diversas barras
de ferramentas que podem ser encaixadas onde for desejado. As posies das barras de
ferramentas s o restauradas cada vez que o designer for aberto. As posies das barras de
ferramentas, alm de outras configuraes do designer, s o armazenadas no registro ou em
um arquivo .ini, se algum for atribudo.

Legenda dos recursos do designer de relatrios:


1 rea de trabalho para criar o design do relatrio
2 barra do menu
3 barras de ferramentas
4 barra de ferramentas de objetos
5 guias de pginas do relatrio
6 painel "rvore do Relatrio"
7 painel "Inspetor de Objetos"
8 painel "rvore de Dados": os elementos podem ser arrastados deste painel para a pgina
do relatrio
9 rguas: uma rgua pode ser arrastada para a pgina do relatrio para criar uma linha guia
azul na pgina (os objetos se ajustam a linhas guia prximas)
10 barra de status

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Designer

1.1

Teclas de controle
Keys

Description

Ctrl+O

Comando de menu "Arquivo > Abrir"

Ctrl+S

Comando de menu "Arquivo > Salvar"

Ctrl+P

Comando de menu "Arquivo > Visualizar"

Ctrl+Z

Comando de menu "Editar > Desfazer"

Ctrl+C

Comando de menu "Editar > Copiar"

Ctrl+V

Comando de menu "Editar > Colar"

Ctrl+X

Comando de menu "Editar > Cortar"

Ctrl+A

Comando de menu "Editar > Selecionar Tudo"

Arrow, Tab
Del
Enter

1.2

mover entre objetos


excluir objetos selecionados
abrir editor para o objeto selecionado

Shift+arrows

alterar o tamanho de objetos selecionados

Ctrl+arrows

mover objetos selecionados

Alt+arrows

anexar o objeto selecionado a um objeto adjacente na dire o


especificada

Controle do mouse
Opera o

Descri o

Bot o esquerdo

selecionar objeto; colar objeto novo; mover ou redimensionar


objetos
para objetos selecionados, amplie ou reduza o zoom ao
arrastar o quadrado vermelho no canto inferior esquerdo do
grupo de objetos selecionados

Bot o direito

menu de contexto do objeto selecionado

Dois cliques

abrir editor do objeto


clicar duas vezes em espao em branco abre a caixa de
dilogo "Opes da Pgina"

Roda do mouse

rolar pgina do relatrio

Shift + bot o esquerdo alternar a sele o de objetos


Ctrl + bot o esquerdo criar um quadro ao mover o mouse
solte o bot o para selecionar todos os objetos capturados no
quadro
tambm possvel clicar em um espao em branco e mover

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

FastReport VCL 5 User's Manual

o mouse conforme necessrio


Alt + bot o esquerdo

editar o contedo no local se um objeto "Texto" for


selecionado

1.3

Barras de ferramentas

1.3.1

Barra Modo do designer


A barra de ferramentas Modo integrada barra de ferramentas Objeto ao lado esquerdo da
janela do designer, e possui os seguintes botes:
cone

Nome

Descri o

Selecionar
Objetos

modo padr o de opera o: o cursor do mouse seleciona os


objetos, altera seu tamanho, etc.

M o

1.3.2

permite arrastar toda a pgina do relatrio

Zoom

permite o clique com o bot o esquerdo para ampliar o zoom


(adiciona 25% se j estiver no intervalo 25-75%, de outro modo
adiciona 100%) ou o clique com o bot o direito para reduzir o zoom
(reduz 25% se j estiver no intervalo 25-75%, de outro modo reduz
100%)
manter o bot o esquerdo do mouse apertado ao arrastar amplia o
zoom na rea selecionada

Editar Texto

permite a edi o no local de objetos "Texto"


manter o bot o esquerdo do mouse apertado e mover o cursor cria
e dimensiona um novo objeto "Texto" e abre seu editor

Copiar
Formata o

permite a cpia da formata o de um objeto "Texto" para outros:


selecione um objeto "Texto",
clique no bot o Copiar Formata o,
selecione os objetos-alvo
saia do modo Copiar Formata o ao clicar em qualquer outro bot o
de modo

Barra de ferramentas padr o

cone

Nome
Novo Relatrio

FastReport v4 1998-2014 Fast Reports Inc.

Descri o
cria um relatrio em branco

Manual v5.0.0

Designer

Abrir Relatrio
Salvar Relatrio
Visualizar

abre o arquivo de um relatrio existente


combina o de atalho "Ctrl+O"
salva o relatrio em um arquivo
combina o de atalho "Ctrl+S"
visualiza o relatrio
combina o de atalho

"Ctrl+P"

Nova Pgina de
Relatrio

adiciona uma pgina nova ao relatrio

Nova Pgina de
Dilogo

adiciona um formulrio de dilogo novo ao relatrio

Excluir Pgina

exclui a pgina atual

Opes de Pgina abre a caixa de dilogo de propriedades da pgina


Recortar

para

rea

de

Copiar

copia os objetos selecionados para a rea de transferncia


combina o de atalho "Ctrl+C"

Colar

cola objetos da rea de transferncia


combina o de atalho "Ctrl+V"

Desfazer

desfaz a ltima opera o


combina o de atalho "Ctrl+Z"

Refazer

refaz a ltima opera o cancelada (desfeita)


combina o de atalho "Ctrl+Y"

Agrupar

agrupa objetos selecionados

Desagrupar
Zoom

1.3.3

Recorta os objetos selecionados


transferncia
combina o de atalho "Ctrl+X"

desagrupa objetos selecionados


configura o fator de zoom

Barra de ferramentas Texto

cone

Nome

Descri o

Sem
estilo

Estilo

exibe o estilo do objeto "Texto" selecionado


selecione o estilo em uma lista suspensa para alterar o estilo
do objeto selecionado
defina estilos em "Relatrio > Estilos"

Arial

Nome da Fonte

exibe a fonte do objeto "Texto" selecionado


selecione a fonte em uma lista suspensa para alterar a fonte
do objeto selecionado
exibe as ltimas cinco fontes usadas no incio da lista

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

FastReport VCL 5 User's Manual

10

Tamanho da
Fonte

exibe o tamanho da fonte do objeto "Texto" selecionado


selecione o tamanho em uma lista suspensa para alterar o
tamanho da fonte do objeto selecionado
tambm possvel digitar nmeros diretamente na caixa de
edi o

Negrito (alternar) ativa/desativa o estilo Negrito da fonte do contedo do objeto


"Texto"
Itlico (alternar)

ativa/desativa o estilo Itlico da fonte do contedo do objeto


"Texto"

Sublinhado
(alternar)

ativa/desativa o estilo Sublinhado da fonte do contedo do


objeto "Texto"

Configuraes da abre a caixa de dilogo Configuraes da Fonte


Fonte
Cor da Fonte
Realce

suspende a grade de sele o de cor da fonte


abre a caixa de dilogo de realce
possvel configurar uma condi o para o realce

Rota o do Texto modifica a rota o do texto a partir de uma lista suspensa


Alinhar
Esquerda

alinha o texto esquerda dentro do quadro do objeto "Texto"

Centralizar

alinha o texto ao centro dentro do quadro do objeto "Texto"

Alinhar Direita
Justificar

1.3.4

alinha o texto direita dentro do quadro do objeto "Texto"


justifica o texto dentro do quadro do objeto "Texto"

Alinhar Acima

alinha o texto (vertical) parte superior dentro do quadro do


objeto "Texto"

Centralizar
Verticalmente

alinha o texto (vertical) ao meio dentro do quadro do objeto


"Texto"

Alinhar Abaixo

alinha o texto (vertical) parte inferior dentro do quadro do


objeto "Texto"

Barra de ferramentas Borda

cone

Nome

Descri o

Linha Acima (alternar)

ativa/desativa a linha superior da borda do objeto


"Texto"

Linha Abaixo (alternar) ativa/desativa a linha inferior da borda do objeto


"Texto"
Linha Esquerda
(alternar)

FastReport v4 1998-2014 Fast Reports Inc.

ativa/desativa a linha esquerda da borda do objeto


"Texto"

Manual v5.0.0

Designer

Linha Direita
(alternar)

ativa/desativa a linha direita da borda do objeto


"Texto"

Todas as Linhas da
Borda

ativa todas as quatro linhas da borda do objeto


"Texto"

Sem Borda

desativa todas as quatro linhas da borda do objeto


"Texto"

Editor de Borda

invoca a caixa de dilogo do editor de borda

Cor do Plano de Fundo define a cor do plano de fundo a partir de uma lista
suspensa
Editor de
Preenchimento

1.3.5

invoca a caixa
preenchimento

de

dilogo

do

editor

de

Cor da Borda

suspende a grade de sele o de cor da linha da


borda

Estilo da Borda

suspende a lista de sele o do estilo da linha da


borda

Largura da Borda

define a largura da linha da borda a partir de uma


lista suspensa
tambm possvel digitar nmeros (0.1 at 10)
diretamente na caixa de edi o

Barra de ferramentas Paleta de Alinhamento

Observe que alguns botes ficar o ativos quando mais de um objeto for selecionado.
cone

Descri o
mostrar grade (ativar/desativar)
alinhar grade (ativar/desativar)
ajustar grade
alinhar bordas esquerdas (ao primeiro objeto
selecionado)
alinhar centros horizontais (ao primeiro objeto
selecionado)
alinhar bordas
selecionado)

direitas

(ao

primeiro

objeto

alinhar bordas superiores (ao primeiro objeto


selecionado)
alinhar centros
selecionado)

FastReport v4 1998-2014 Fast Reports Inc.

verticais

(ao

primeiro

objeto

Manual v5.0.0

FastReport VCL 5 User's Manual

alinhar bordas
selecionado)

inferiores

(ao primeiro

objeto

espaar igualmente na dire o horizontal


espaar igualmente na dire o vertical
centrar cada objeto individualmente de maneira
horizontal na banda
centrar cada objeto individualmente de maneira
vertical na banda
definir larguras iguais (igual ao primeiro objeto
selecionado)
definir alturas iguais (igual ao primeiro objeto
selecionado)

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Designer

1.4

Opes do designer
Configure as opes do designer atravs do comando de menu "Exibir > Opes...".

Aqui possvel definir as unidades preferenciais (centmetros, polegadas, pixels) e o


espaamento da grade. Dica: tambm possvel alterar as unidades no designer ao clicar duas
vezes na parte esquerda da barra de status, onde s o exibidas as unidades atuais.
possvel configurar a visibilidade e o alinhamento grade. Isso tambm pode ser efetuado
atravs de botes na barra de ferramentas "Padr o", dentro do prprio designer.
possvel configurar uma fonte para a janela do editor de cdigo e o editor do objeto "Texto". Se
a op o "Usar as configuraes de fonte do objeto" for habilitada, a fonte na janela do editor de
texto corresponder com a fonte do objeto que est sendo editado.
O plano de fundo branco padr o do espao de trabalho do designer e das janelas de
ferramentas pode ser modificado com os botes "Espao de trabalho" e "Janelas de

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

10

FastReport VCL 5 User's Manual

ferramentas".
A op o "Cor da grade LCD" aumenta um pouco o contraste das linhas de grade e melhora sua
visibilidade em monitores LCD.
A op o "Mostrar o editor aps inserir" controla o que acontece quando objetos novos s o
inseridos. Se a op o for habilitada, o editor ser exibido cada vez que um objeto for inserido.
recomendado desabilitar a op o ao criar uma grande quantidade de objetos em branco.
Desabilitar a op o "Mostrar rtulos das bandas" oculta os rtulos das bandas, ocupando
assim menos espao na pgina de design. Se forem desabilitados, os rtulos das bandas s o
exibidos dentro do espao de trabalho das bandas.
A op o "Exibir lista suspensa de campos" controla a acessibilidade da lista suspensa ao
colocar o mouse sobre objetos "Texto" que est o conectados a campos de dados. Isso pode
ser necessrio se houver muitos objetos "Texto" estreitos em uma banda.
A op o "Coloca o livre de bandas" desabilita o ajuste de bandas pgina. Esta op o
permanece desabilitada por padr o, e as bandas s o agrupadas automaticamente na pgina de
acordo com sua fun o. O espao entre as bandas definido no campo "Espao entre
bandas".

1.5

Configura o do Relatrio
A caixa de dilogo Configura o do Relatrio pode ser acessada no menu "Relatrio >
Opes...". A caixa de dilogo possui trs guias.
Na primeira guia possvel ver as configuraes gerais do relatrio:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Designer

11

possvel vincular um relatrio a uma das impressoras instaladas no sistema. Isso significa
que a impressora selecionada se tornar a impressora padr o ao imprimir esse relatrio. Isso
pode ser til quando houver diversas impressoras no sistema; por exemplo, documentos de
texto podem ser vinculados a impressoras monocromticas, e documentos com grficos
podem ser vinculados a impressoras coloridas. "Padr o" listado nas configuraes da
impressora. Quando esta op o estiver selecionada, o relatrio n o ser vinculado a nenhuma
impressora especfica, mas ser impresso na impressora padr o do sistema.
Tambm possvel configurar o nmero de cpias do relatrio a serem impressas, e se elas
devem ser agrupadas. O valor definido nesta caixa de dilogo ser mostrado na caixa de
dilogo "Imprimir" ao imprimir o relatrio.
Se o sinalizador "Dois passos" estiver marcado, o relatrio ser gerado em duas etapas. No
primeiro passo criado um rascunho do relatrio que dividido em pginas, mas n o estar
disponvel para visualiza o. No segundo passo o rascunho do relatrio convertido em um
relatrio padr o, que salvo no fluxo de visualiza o.
Por que s o necessrios dois passos? Na maioria das vezes esta op o usada quando um
relatrio precisa ter acesso ao nmero total de pginas no relatrio, por exemplo, para exibir
"Pgina 1 de 15". O nmero total de pginas calculado durante o primeiro passo e
disponibilizado atravs da varivel de sistema "TOTALPAGES". O erro mais frequente tentar
utilizar esta varivel em um relatrio de passo nico, quando a varivel retornar 0.
Outro uso para os dois passos ao executar clculos no primeiro passo e exibir os resultados
no segundo passo. Por exemplo, quando uma soma deve ser exibida no cabealho de um
grupo em vez de no habitual rodap do grupo. Clculos deste tipo s o executados ao escrever

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

12

FastReport VCL 5 User's Manual

o cdigo do script do relatrio no evento "OnBeforePrint" de um objeto.


O sinalizador "Imprimir se vazio" permite a cria o de um relatrio que n o contm nenhuma
linha de dados. Se esta op o for desabilitada, relatrios vazios n o ser o criados.
O campo "Senha" habilita a defini o de uma senha, que deve ser inserida antes de abrir um
relatrio.
Na segunda guia possvel configurar as opes de herana:

Mais tarde, no captulo "Herana do relatrio", voc obter mais informaes sobre herana.
Nesta caixa de dilogo possvel ver o nome do relatrio base (se o relatrio for herdado),
desanexar o relatrio base (neste caso seu relatrio ser autnomo e n o herdado) ou herdar o
relatrio a partir de um dos relatrios base disponveis.
A terceira guia da caixa de dilogo permite configurar propriedades descritivas do relatrio:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Designer

13

Todos os campos nesta guia servem apenas para fins informativos e n o podem ser
impressos.

1.6

Opes da Pgina
As "Opes da Pgina" est o disponveis atravs do menu "Arquivo > Configuraes da
Pgina..." ou ao clicar duas vezes em um espao em branco na pgina. A caixa de dilogo
possui duas guias:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

14

FastReport VCL 5 User's Manual

Na primeira guia da caixa de dilogo possvel configurar o tamanho e o alinhamento da folha,


assim como as margens. Em "Fonte de Papel", a lista suspensa permite a sele o da bandeja
da impressora para a primeira pgina e o resto das pginas do relatrio.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Designer

15

Na segunda guia da caixa de dilogo possvel definir o nmero de colunas para relatrios com
vrias colunas. As configuraes atuais tambm s o exibidas no designer.
O sinalizador "Imprimir para pgina anterior" permite imprimir pginas sem iniciar uma pgina
nova. Em vez disso o comeo ser em qualquer espao em branco na pgina anterior. Esta
op o pode ser til quando o modelo de um relatrio contm diversas pginas ou ao imprimir
relatrios em lote (compostos).
A op o "Margens espelho" troca as margens esquerda e direita de pginas pares durante a
visualiza o ou impress o de um relatrio.
As opes "Largura e altura de pgina infinita" aumentam o tamanho da pgina dependendo do
nmero de registros de dados na pgina (quando o relatrio for executado). Se forem
habilitadas, o relatrio ir ser exibido em uma pgina grande na janela de visualiza o, em vez
de diversas pginas de tamanho padr o.
A op o "Altura extensa em modo de design" aumenta a altura da pgina no designer. Este
recurso pode ser til se houver muitas bandas em uma pgina. Ele deve ser usado ao trabalhar
com bandas sobrepostas. Ele afeta somente a altura da pgina no modo de design.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

II
Criar relatrios

Criar relatrios

2.1

17

Objetos do relatrio
FastReport Designer representa relatrios como uma cole o de pginas esquemticas.
Objetos s o colocados em qualquer lugar nas pginas do relatrio e s o usados para definir a
aparncia do relatrio e exibir diversas informaes, como texto e grficos. Estes s o os
objetos FastReport que s o includos no pacote padr o:
- Objeto "Banda": uma rea na pgina do designer que se comporta de acordo com seu tipo
(por exemplo, Banda de cabealho, Banda de dados)
- Objeto "Texto": exibe uma ou mais linhas de texto dentro de uma rea retangular
- Objeto "Figura": exibe um arquivo grfico no formato "BMP", "JPEG", "ICO", "WMF" ou
"EMF"
- Objeto "Linha": exibe uma linha horizontal ou vertical
- Objeto "Texto do sistema": exibe informaes do sistema (data, hora, nmero da pgina,
etc.) ou valores agregados
- Objeto "Sub-relatrio": permite inserir uma pgina de design de outro relatrio na pgina
host
- Objetos da categoria "Desenhar": exibem diversas formas geomtricas (linha diagonal,
retngulo, retngulo arredondado, elipse, tringulo e diamante)
- Objeto "Grfico": exibe dados em diversos formatos grficos (grfico de pizza, histograma,
etc.)
- Objeto "RichText": exibe texto no formato Rich Text (RTF)
- Objeto "Caixa de Sele o": exibe uma caixa de sele o com uma marca de sele o ou
uma cruz
- Objeto "Cdigo de Barras": exibe os dados como um entre diversos tipos de cdigos de
barra
- Objeto "OLE": exibe qualquer objeto usando a tecnologia OLE.
Os objetos bsicos usados com maior frequncia s o os objetos "Banda" e "Texto". Voc
saber mais sobre suas funcionalidades mais adiante neste captulo.

2.2

Relatrio de exemplo "Ol, Mundo!"


O relatrio de exemplo ir conter apenas um item de informa o: "Ol, Mundo!". Abra o
designer de relatrios e clique no bot o "Texto" na barra de ferramentas de Objetos. Mova o
cursor do mouse sobre a pgina e clique novamente. O objeto inserido na posi o do mouse.

A janela do editor de texto aberta imediatamente. Se ela n o aparecer automaticamente,

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

18

FastReport VCL 5 User's Manual

clique duas vezes no objeto. A abertura do editor de texto pode ser configurada nas
configuraes do designer isso ser visto mais adiante. Digite "Ol, Mundo!" e clique no bot o
OK.

O design do relatrio est concludo. Para visualizar o relatrio, selecione o item de menu
"Arquivo > Visualizar" ou clique no bot o correspondente na barra de ferramentas. A janela de
visualiza o que contm a pgina do relatrio com o texto "Ol, Mundo!" exibida. Este
relatrio pode ser impresso, salvo em um arquivo (*.fp3) ou exportado para um dos formatos de
exporta o suportados.

2.3

O objeto "Texto"
O objeto "Texto" possui diversos recursos. Ele pode exibir texto em um quadro e ser preechido
com uma cor. O texto pode ser exibido usando qualquer fonte de qualquer tamanho e estilo.
Todas as propriedades podem ser definidas visualmente com a ajuda das barras de
ferramentas.
Seguem alguns exemplos do design do texto:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

19

Agora vamos dar uma olhada em outros recursos deste objeto bsico. Como exemplo,
criaremos um novo objeto "Texto" que exibir duas linhas de texto:
Esta uma linha de texto muito, muito, muito longa.
E esta outra linha, a mais curta.
Habilite a borda do objeto na barra de ferramentas e redimensione o objeto para 9x3 cm usando
o mouse. Vemos que o objeto pode n o apenas exibir uma nica linha, mas diversas linhas de
texto. Agora reduza a largura do objeto para 5 cm. bvio que linhas longas n o couberam no
objeto e foram quebradas. Isso controlado atravs da propriedade "WordWrap" do objeto. Se
ela for desabilitada (no inspetor de objetos ou atravs do menu de contexto do objeto), linhas
longas ser o apenas cortadas.
Agora veremos como funciona o alinhamento de texto dentro do objeto. Os botes de
alinhamento est o localizados na barra de ferramentas "Texto" e eles controlam o alinhamento
de texto horizontal ou vertical. Observe o bot o "Justificar", que permite alinhar pargrafos a
ambas as bordas do objeto. Para fazer isso, "WordWrap" deve estar habilitada.

Todo o texto no objeto pode ser girado em qualquer ngulo no intervalo 0...360. O bot o
na
barra de ferramentas "Texto" permite girar o texto rapidamente para as predefinies 0, 45, 90,
180 ou 270. Para qualquer outro valor, configure o ngulo desejado na propriedade "Rotation"
no inspetor de objetos. Ao girar texto em ngulos diferentes de 90, 180 ou 270, o texto pode ser
cortado pelo quadro do objeto, conforme mostrado abaixo. Para resolver isso, aumente
levemente a altura do objeto para que todo o texto caiba dentro do objeto.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

20

FastReport VCL 5 User's Manual

Vamos dar uma olhada rpida em outras propriedades do objeto "Texto" que influenciam sua
aparncia. A maior parte destas propriedades est o disponveis apenas no inspetor de objetos:
- BrushStyle: o tipo de preenchimento do objeto
- CharSpacing: o espaamento entre caracteres, em pixels
- GapX, GapY: os recuos do texto na borda esquerda e superior, em pixels
- LineSpacing: o espaamento entre linhas, em pixels
- ParagraphGap: o recuo da primeira linha do pargrafo, em pixels

2.4

Tags HTML no objeto "Texto"


O objeto "Texto" entende algumas tags simples de HTML. As tags podem estar localizadas
dentro do texto do objeto. Tags s o desabilitadas por padr o; para habilit-las selecione
"Permitir Tags HTML" no menu de contexto do objeto ou habilite a propriedade
"AllowHTMLTags" no inspetor de objetos. Aqui est a lista de tags suportadas.
<b> : texto em negrito
<i> : texto em itlico
<u> : texto sublinhado
<sub> : subscrito
<sup> : sobrescrito
<font color> : cor da fonte
<nowrap> : texto que n o quebrado quando "WordWrap" for habilitado, todo o texto movido
para a prxima linha
Observe que somente algumas tags s o suportadas, mas isso deve ser suficiente para a maior
parte das aplicaes. N o possvel alterar o tamanho ou nome da fonte atravs de tags
HTML.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

21

Os exemplos a seguir mostram como as tags podem ser usadas.


texto <b>texto em negrito</b> <i>texto em itlico</i> <b><i>negrito e itlico</b></i>
E = mc<sup>2</sup>
A<sub>1</sub> = B<sup>2</sup>
este um texto normal, <font color=red>e este um texto vermelho</font>
este um texto normal, <font color="#FF8030">e este um texto laranja</font>

2.5

Exibir expresses com a ajuda do objeto "Texto"


Um dos recursos mais importantes deste objeto bsico sua habilidade de exibir n o apenas
texto esttico, mas tambm expresses. Expresses podem ser colocadas dentro do objetos,
misturadas a texto normal. Vamos ver um exemplo simples de como isso funciona. Digite o
seguinte no objeto:
Ol, Mundo! Hoje [DATE].
Quando o relatrio for executado, obteremos algo parecido a isto:
Ol, Mundo! Hoje 01.01.2004.
Como isso acontece? Quando FastReport cria o relatrio e encontra uma express o entre
colchetes, o mecanismo de relatrios calcula o valor da express o e insere este valor no texto
no lugar da express o. Objetos "Texto" podem conter inmeras expressres misturadas ao
texto normal. Expresses complexas podem conter parnteses (por exemplo [1+2*(3+4)]).
Constantes, variveis, funes e campos de BD podem ser usados em expresses. Iremos
aprender mais sobre eles mais tarde neste captulo.
O FastReport reconhece expresses entre colchetes automaticamente no texto. Mas o que
acontece se nosso texto normal conter colchetes que n o queremos que sejam considerados
como expresses? Por exemplo, se precisamos exibir o seguinte:
a[1] := 10
FastReport consideraria [1] como uma express o e exibiria o texto como:
a1 := 10
o que n o desejamos que acontea, claro. Uma maneira de evitar isso desabilitar o
reconhecimento de expresses. Desabilite a propriedade "AllowExpressions" (ou "Permitir

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

22

FastReport VCL 5 User's Manual

Expresses" no menu de contexto) e todas as expresses no texto ser o ignoradas. Em nosso


exemplo, o FastReport iria exibir exatamente o que precisamos:
a[1] := 10
Porm, s vezes, necessrio que um texto tenha tanto uma express o quanto texto normal
entre colchetes, por exemplo:
a[1] := [myVar]
Desabilitar "AllowExpressions" nos permite exibir colchetes nos lugares necessrios, mas
tambm desabilita a manipula o de expresses. Nesta situa o, o FastReport permite a
utiliza o de um conjunto de smbolos alternativo para designar expresses. Por padr o, a
propriedade "ExpressionDelimiters" responsvel por isso. Em nosso exemplo podemos usar
chevrons para as expresses, em vez de colchetes:
a[1] := <myVar>
O valor "<,>" deve ser definido na propriedade "ExpressionDelimiters", onde a vrgula
necessria para separar os smbolos de abertura e fechamento. Outro requisito que os
smbolos de abertura e fechamento n o podem ser idnticos, ent o "%,%" n o funcionar.
Podem ser usados smbolos complexos, por exemplo "<%,%>". Ent o nosso exemplo poderia
ter o seguinte aspecto:
a[1] := <%myVar%>

2.6

Bandas no FastReport
Bandas s o usadas para colocar os objetos que elas contm em locais especficos na pgina
de sada. Ao colocar um objeto na banda "Cabealho da Pgina" ns dizemos ao mecanismo
de relatrios que o objeto deve ser exibido no topo de cada pgina no relatrio final. De maneira
similar, objetos na banda "Rodap da Pgina" s o exibidos na parte inferior de cada pgina.
Vamos demonstrar isso com um exemplo. Criaremos um relatrio contendo "Oi!" no topo da
pgina, a data atual direita e o nmero da pgina no rodap da pgina ao lado direito.
Abra o designer do FastReport e clique no bot o "Novo Relatrio" na barra de ferramentas.
exibido um modelo de relatrio que j contm trs bandas: "TtuloDoRelatrio", "DadosMestre" e
"RodapDaPgina". Vamos remover a banda "DadosMestre" brevemente (clique em qualquer
espao livre dentro da banda ou em seu cabealho e remova-a com a tecla "Delete" ou o item
"Remover" no menu de contexto). Agora vamos adicionar uma nova banda ("Cabealho da
Pgina"). Clique no bot o "Inserir Banda" na barra de ferramentas de objetos e selecione
"Cabealho da Pgina" na lista suspensa. Vemos que uma banda nova adicionada pgina.
Ao mesmo tempo, as bandas existentes s o movidas para baixo. O designer do FastReport
posiciona as bandas na pgina automaticamente bandas de cabealho no topo, bandas de
dados no meio e bandas de rodap embaixo.
Agora vamos adicionar alguns objetos. Adicione um objeto "Texto do Sistema" banda
"CabealhoDaPgina" e em seu editor selecione "[DATE]" na lista suspensa de variveis do
sistema (lembre-se que a data atual tambm pode ser exibida em um objeto "Texto" ao digitar
"[DATE]" em seu editor). Depois adicione um objeto "Texto" contendo "Oi!" banda

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

23

"TtuloDoRelatrio". Um objeto "Texto" que exibe o nmero da pgina j foi adicionado


automaticamente banda "RodapDaPgina".

Ao executar o relatrio, voc ver que os objetos no relatrio pronto s o impressos nas
posies corretas na pgina.

Ent o bandas s o responsveis por posicionar objetos na pgina. Dependendo do tipo de


banda, possvel imprimir objetos no topo ou na parte inferior de uma pgina, e na primeira ou
ltima pgina. As bandas bsicas necessrias na maioria dos relatrios se comportam deste
modo:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

24

FastReport VCL 5 User's Manual

- Banda "Cabealho da Pgina": exibida no topo de cada pgina


- Banda "Rodap da Pgina": exibida na parte inferior de cada pgina
- Banda "Ttulo do Relatrio": exibida no topo da primeira pgina. Ela pode estar antes ou
depois da banda "Cabealho da Pgina", dependendo da propriedade "TitleBeforeHeader"
da pgina (encontrada no inspetor de objetos aps clicar em qualquer espao livre na
pgina)
- Banda "Sumrio do Relatrio": exibida no espao livre no final do relatrio

2.7

Bandas de dados
Agora iremos aprender como imprimir dados de tabelas de BD ou de consultas. O que
considerado uma 'tabela' ou uma 'consulta'? Elas s o compostas de dados organizados em
linhas (registros ou fileiras) que contm uma ou mais colunas (campos). Para imprimir estes
tipos de dados, o FastReport utiliza um tipo de banda especial, as diversas bandas que s o
chamadas "Dados...". Para imprimir uma tabela inteira ou apenas algumas fileiras e campos,
necessrio adicionar uma ou mais dessas bandas ao relatrio, vincul-las tabela e colocar
objetos de campo dentro delas. Quando FastReport criar o relatrio, as bandas ser o
impressas na pgina de sada, uma vez para cada registro na tabela. Se n o sobrar espao
livre na pgina de sida para uma banda, o mecanismo de relatrios criar uma nova pgina de
sada antes de continuar.

2.8

O componente TfrxDBDataSet
O componente conector "TfrxDBDataSet"
da paleta de componentes Delphi do FastReport
usado para conectar uma tabela (ou qualquer outra fonte de dados) ao FastReport. Este
componente atua como o mensageiro entre a fonte de dados e o ncleo do FastReport. O
componente responsvel pela navega o de registros e pela referncia da tabela. Isso torna o
ncleo do FastReport independente de bibliotecas de acesso a dados. O FastReport pode
utilizar as bibliotecas "BDE", "IB_Objects" (que possuem uma implementa o n o padr o que
incompatvel com TDataSet) e outras, assim como dados de fontes n o conectadas a um
banco de dados, como matrizes e arquivos. O componente "TfrxDBDataSet" foi projetado para
ser usado com fontes de dados que sejam compatveis com TDataSet (como BDE, ADO, IBX e
a maioria das outras bibliotecas). O componente "TfrxDBDataSet" destinado ao trabalho com
IB_Objects. O componente "TfrxUserDataSet"
(matrizes, arquivos, etc.).

funciona com outras fontes de dados

muito fcil usar o componente "TfrxUserDataSet". Conecte-o fonte de dados ao configurar a


propriedade "DataSet" (para a conex o direta a uma tabela ou consulta) ou a propriedade
"DataSource" (para a conex o atravs do componente "TDataSource"). Os dois mtodos s o
equivalentes e mutuamente exclusivos, apesar do primeiro permitir o gerenciamento dos dados
sem precisar de um componente "TDataSource".
Para deixar o componente Delphi (e os dados conectados a ele) disponvel para o relatrio,
qualquer conjunto de dados usado no relatrio deve ser habilitado. Faa isso no item de menu
"Relatrio > Dados..." no designer do FastReport e selecione os conjuntos de dados
necessrios na caixa de dilogo que aberta.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

2.9

25

Relatrio "Lista de Clientes"


Nosso segundo relatrio ser muito mais complexo que o primeiro (ele ir conter uma tabela de
BD de clientes da empresa). Vamos usar o banco de dados de demonstra o demo.mdb que
includa no kit de distribui o do FastReport Studio. Crie um novo relatrio. V para a guia
"Dados", coloque o componente "Tabela ADO" na pgina:

e configure uma propriedade:

TableName = 'Customer'
Agora a tabela e todos os seus campos se tornar o visveis no painel "rvore de Dados" no
IDE.
Agora vamos fazer o design do relatrio. Primeiro adicione um objeto "Texto" que contm "Lista
de clientes" banda "TtuloDoRelatrio".
Depois conecte a banda "DadosMestre" a nosso conjunto de dados. Isso pode ser feito de trs

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

26

FastReport VCL 5 User's Manual

maneiras:
- clique duas vezes na banda
- selecione "Editar..." no menu de contexto da banda
- ou clique na propriedade "DataSet" da banda no inspetor de objetos
Agora coloque quatro objetos "Texto" (que ir o exibir os campos nmero do cliente, nome do
cliente, telefone e fax do conjunto de dados) na banda. Faremos isso de maneiras diferentes
para demonstrar alguns recursos do designer do FastReport.

A primeira maneira colocar um objeto "Texto" na banda e digitar "[ADOTable1."CustNo"]" nele.


Esta a maneira menos conveniente, j que o link do campo deve ser inserido manualmente,
havendo a possibilidade de digitar o texto de maneira incorreta. um pouco mais fcil usar o
designer de expresses
clique duas vezes no objeto "Texto" e clique no bot o mais
esquerda da guia "Texto" da janela do editor que aberto. Para inserir nosso campo, clique
duas vezes no nome do campo no designer de expresses. Clique no bot o OK para fechar a
caixa de dilogo e ver o link do campo inserido no objeto "Texto".
A segunda maneira de adicionar o campo de BD ao objeto "Texto" ao configurar duas
propriedades no inspetor de objetos. Coloque um segundo objeto "Texto" na banda, sem
escrever nada na janela do editor. Configura as propriedades do objeto usando o inspetor de
objetos:
DataSet = ADOTable1
DataField = 'Company'
Ambas as propriedades s o apresentadas como uma lista, ent o apenas selecione o valor
necessrio da lista suspensa usando o mouse.
A terceira maneira "arrastar e soltar" o campo necessrio do painel "rvore de Dados" para
dentro do relatrio. Esta a maneira mais simples e mais fcil, mas antes de fazer isso,
desmarque a caixa de sele o "Criar rtulo" na parte inferior do painel de "rvore de Dados", ou
um segundo objeto "Texto", que contm o nome do campo, criado junto ao objeto link do
campo. Desta maneira, selecione o campo "Phone" e arraste-o para a banda.
Para a quarta maneira necessrio ativar o sinalizador da op o do designer "Mostrar lista
suspensa de campos" (atravs do menu principal: "Exibir > Opes"), e tambm necessrio
que a banda j esteja conectada ao conjunto de dados. Coloque um objeto "Texto" em branco
na banda e coloque o cursos do mouse sobre o objeto um bot o da lista suspensa aparecer
na extremidade direita. Clique neste bot o para abrir a lista de campos de BD e selecione o
campo "FAX".

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

27

O design de nosso relatrio est concludo.

Clique no bot o "Visualizar" para ver o resultado.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

28

2.10

FastReport VCL 5 User's Manual

Exibir campos de BD com a ajuda do objeto "Texto"


Como foi visto, objetos "Texto" podem exibir dados de um BD, assim como texto esttico e
expresses. Tambm vimos que isso pode ser feito de duas maneiras: ao colocar um link ao
campo do BD no texto do objeto, ou ao conectar o objeto ao campo necessrio atravs de suas
propriedades "DataSet" e "DataField". A primeira maneira apropriada para exibir tanto o
contedo do campo e o texto de qualifica o no mesmo objeto. Por exemplo:
Pessoa de contato: [frxDBDataSet1."Contact_Person"]
necessrio usar uma sintaxe especial para links ao campo do BD:
[nomeconjuntodedados."nomecampo"]. O nome do campo (assim como o nome do conjunto
de dados) pode conter espaos, mas n o deve haver nenhum espao entre os smbolos
"ponto" e "aspas".
Alm disso, tambm podemos aplicar operaes de computa o a um campo na express o,
como mostrado aqui:
Comprimento (cm): [<frxDBDataSet1."Length_in"> * 2.54]
Observe como devem ser usados colchetes e chevrons. Lembre-se de que colchetes s o
usados por padr o para delimitar expresses no texto do objeto. Quando necessrio, os
colchetes podem ser substitudos por qualquer outro par de caracteres de abertura/fechamento
(consulte a se o "Exibir expresses com a ajuda do objeto 'Texto'"). Chevrons s o usados
dentro de expresses para delinear as variveis do FastReport ou campos de BD. De maneira
lgica, deveramos escrever:
Pessoa de contato: [<frxDBDataSet1."Contact_Person">]
em vez de
Pessoa de contato: [frxDBDataSet1."Contact_Person"]
No entanto, ambas as notaes est o corretas, j que o FastReport n o requer colchetes
quando a express o contm somente uma varivel ou somente um campo de BD. Em todos
os outros casos, os chevrons s o necessrios, como em:
Comprimento (cm): [<frxDBDataSet1."Length_in"> * 2.54]

2.11

Aliases
No relatrio anterior, a fonte de dados se chamava ADOTable1, os campos eram chamados
"CustNo", "Company", "Phone" e "FAX", e ns nos referimos a eles no relatrio usando algo
parecido com "[ADOTable1.CustNo"]". Isso fcil de entender? N o exatamente. Seria mais
claro se a fonte de dados e o campo fossem chamados "Nossos clientes" e "Nmero",
respectivamente. No entanto, h uma maneira de evitar isso. Podemos usar pseudnimos ou
aliases para esses itens. No FastReport, tanto o conjunto de dados como seus campos
possuem uma segunda propriedade de nome conhecida como UserName, ou seja, um alias,
que pode ser alterada com facilidade. Sempre que for dado um alias a um componente (ou
seja, UserName foi alterado do seu nome padr o), este alias deve ser usado no FastReport a

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

29

propriedade Name do componente n o ser reconhecida.


muito fcil configurar aliases para uma fonte de dados e seus campos no FastReport. Para
abrir o editor de alias, clique duas vezes no componente ADOTable1 ou use seu menu de
contexto. possvel modificar o conjunto de dados e os aliases dos campos no editor, e
tambm especificar quais campos s o necessrios no relatrio. Vamos renomear o conjunto
de dados e os campos conforme visto abaixo:

O alias do conjunto de dados tambm pode ser modificado sem usar o editor de alias, ao
alterar a propriedade "UserName" do componente ADOTable1.
Tendo feito isso, agora precisamos modificar o relatrio, j que os nomes do relatrio e os
campos foram alterados. Para modificar os nomes dos campos em objetos do relatrio, mais
fcil usar o quarto mtodo descrito na se o "Relatrio 'Lista de Clientes'". Mova o cursor sobre
o objeto "Texto", de modo que o bot o aparea no lado direito do objeto, clique no bot o e
selecione o campo da lista. Aps fazer isso a origem dos dados no conjunto de dados e seus
campos se torna mais aparente.
Observa o: melhor atribuir aliases no incio do design do relatrio, a fim de evitar renomear
todos os campos em um relatrio mais tarde.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

30

2.12

FastReport VCL 5 User's Manual

Variveis
Assim como aliases, h outra maneira de ajudar o designer do relatrio a definir nomes mais
inteligveis para campos de BD e outros elementos de informa o. Um nome de campo de BD
ou qualquer express o podem ser associados a uma varivel. Para criar e trabalhar com
variveis no FastReport, selecione o item de menu "Relatrio > Variveis...".
A lista de variveis no FastReport possui uma estrutura de dois nveis. O primeiro nvel contm
a categoria e o segundo nvel contm a varivel em si. Esta categoriza o de variveis
conveniente quando a lista de variveis for muito longa. Uma lista de variveis deve conter pelo
menos uma categoria, o que significa que variveis n o podem estar localizadas no nvel
superior. Alm disso, nomes de categorias n o podem ser includos em relatrios, ent o cada
nome na lista deve ser nico.
Vamos ilustrar o uso de variveis com o seguinte exemplo. Assumiremos que temos duas
fontes de dados: a primeira "frxDBDataSet1", com os campos "CustNo" e "Name", e a
segunda "frxDBDataSet2", com os campos "OrderNo" e "Date". Podemos associar a
seguinte lista de variveis aos campos:
Clientes
Nmero do cliente
Nome do cliente
Pedidos
Nmero do pedido
Data do pedido
onde "Clientes" e "Pedidos" s o duas categorias. Abra o editor de variveis e crie esta estrutura
usando os botes "Nova Categoria", "Nova Varivel" e "Editar". Para vincular as variveis aos
campos de BD, selecione uma varivel e clique duas vezes no campo de BD necessrio no
painel direito. O link ao campo do BD ser exibido no painel inferior. A varivel agora est
associada a esta express o, ent o o valor da varivel se torna o valor da express o. Se for
necessrio, a express o pode ser editada ou modificada manualmente, e qualquer fun o do
FR ou outras variveis podem ser usadas nela. Lembre-se que categorias n o devem ser
associadas a expresses.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

31

Aps criar a lista de variveis, feche o editor de variveis. Agora podemos inserir as variveis no
relatrio. Ao contrrio de campos de BD, h um nmero menor de mtodos de inser o.
Podemos inserir uma varivel no texto do objeto manualmente ao digitar "[Nmero do cliente]",
ou podemos arrastar uma varivel do painel "rvore de Dados" para a pgina do relatrio. Neste
caso necessrio abrir a guia "Variveis" neste painel.
Vamos revisar o que aprendemos at agora:
- O design de um relatrio composto de pginas de design
- As pginas podem conter objetos FR, que podem ser colocados na pgina ou dentro de uma
banda
- Bandas s o espaos reservados na pgina de design e controlam onde os objetos que els
contm s o exibidos na pgina de sada, de acordo com o tipo de banda
- Objetos "Texto" contm o texto que desejamos exibir em uma certa posi o. Eles podem ter
vrias linhas e podem conter texto esttico, campos de dados, variveis, expresses ou uma
combina o destes
- Bandas de tipos de dados (Mestre, Detalhe, Sub-detalhe, etc.), quando conectadas a um
TfrxDbDataset, controlam o nmero de vezes que estas bandas s o exibidas (fileiras) e, em
conjunto com o mecanismo de relatrios, determinam o nmero de pginas concludas

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

32

FastReport VCL 5 User's Manual

geradas pelo relatrio. Observa o: apesar destas bandas de dados terem tipos como
Mestre, Detalhe, etc., isto somente designa a rela o de locais na hierarquia de
posicionamento das bandas nas pginas de sada. As relaes de dados dependem das
relaes de tabela/consulta nos frxdbdatasets conectados. Cada nvel de banda de dados
requer um "TfrxDbDataset" separado ou uma associa o equivalente.

2.13

Objeto "Figura"
O prximo objeto a ser abordado o objeto "Figura". Ele tambm usado nos relatrios com
frequncia. Ao usar este objeto possvel inserir logos, fotos (de um funcionrio, por exemplo)
ou qualquer outras informaes pictricas. O objeto pode exibir grficos nos formatos "BMP",
"ICO", "WMF" ou "EMF".
Vamos dar uma olhada nas funcionalidades deste objeto. Crie um relatrio em branco e
coloque um objeto "Figura" na pgina do relatrio. Se o editor de figura n o abrir
automaticamente, clique duas vezes no objeto "Figura". Voc pode carregar qualquer figura de
um arquivo grfico ou apagar a figura existente e fechar o editor ao clicar na marca de sele o
verde.

Algumas propriedades do objeto est o disponveis no menu de contexto, assim como no


inspetor de objetos:
- Tamanho Automtico
- Esticar: ativado por padr o
- Centro
- KeepAspectRatio: ativado por padr o
Quando "Tamanho Automtico" estiver ativado, o objeto redimensionado para o tamanho da
figura que contm. s vezes isso pode ser til se s o exibidas figuras de bancos de dados de

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

33

diversos tamanhos. "Tamanho Automtico" desativado por padr o.


"Esticar" ativado por padr o. Esta propriedade estende a figura dentro do objeto. Altere o
tamanho do objeto usando o mouse e voc ver que toda a figura sempre exibida dentro do
quadro do objeto. Se "Esticar" for desativado, a figura (ou somente parte dela) exibida em seu
tamanho original. Este comportamento difere de "Tamanho Automtico" porque voc tem
controle sobre o tamanho do quadro do objeto, que pode ser maior o menor que a figura que
contm. Com "Tamanho Automtico" ativado, voc n o possui nenhum controle sobre o
tamanho do quadro do objeto.
A propriedade "Centro" alinha a figura dentro do objeto.
"KeepAspectRatio" ativado por padr o. Ela evita que a figura seja distorcida quando o
tamanho do objeto for modificado. Esta propriedade somente efetiva quando "Esticar"
tambm estiver ativado. Quando "KeepAspectRatio" estiver ativado, um crculo desenhado
permanece sendo um crculo sem se tornar um oval, n o importando o tamanho do objeto
"Figura". A figura estendida ocupa somente a parte do espao interno do objeto que
necessria para exib-la com a taxa de propor o correta. Quando desativado, a figura
estendida para preencher o quadro do objeto e ser distorcida se a taxa de propor o do
quadro n o for a mesma da figura.
Outra propriedade til que est disponvel somente no inspetor de objetos "FileLink". Ao inserir
o nome de um arquivo, como c:\figura.bmp, ou uma varivel que contm o nome de um
arquivo, como [figura_arquivo], ir carregar a figura do arquivo nomeado ao executar o relatrio.

2.14

Relatrio com figuras


O objeto "Figura", como muitos objetos no FastReport, pode exibir dados de um BD. Este
objeto pode ser conectado a um campo de BD ao configurar as propriedades "DataSet" e
"DataField" no inspetor de objetos. Ao contrrio do objeto "Texto", esta a nica maneira de
conectar este objeto a seus dados.
Vamos demonstrar isso com um relatrio que exibe os nomes e as imagens de alguns peixes.
Crie um novo relatrio, coloque o componente "ADO Table" no relatrio e configure estas
propriedades:

TableName = 'Biolife'
UserName = 'Bio'
Agora iremos adicionar objetos pgina do relatrio. Coloque um objeto "Texto" que contm
"Peixe" na banda "TtuloDoRelatrio". Conecte a banda "DadosMestre" fonte de dados (clique
duas vezes na banda e selecione "Bio" da lista). Aumente a altura da banda para 5 cm ao
arrastar a parte inferior da banda para baixo ou ao usar o inspetor de objetos. Coloque um
objeto "Texto" na banda e conecte-o ao campo "CommonName", usando qualquer um dos
mtodos j descritos. Depois disso, coloque um objeto "Figura" ao lado e conecte-o ao campo
"Grfico" ao configurar suas propriedades no inspetor de objetos.
DataSet = Bio
DataField = 'Graphic'

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

34

FastReport VCL 5 User's Manual

Observe que ambas as propriedades s o do tipo "Lista" e podem ser configuradas com os
valores necessrios usando o mouse. Para criar espao para a figura, estenda o objeto para 4
x 2,5 cm.

O design do relatrio agora est concludo, e ele produz o relatrio mostrado abaixo:

2.15

Exibir texto com vrias linhas


Vamos melhorar o exemplo anterior. A tabela "Biolife" possui um campo "Notes" que contm
uma descri o detalhada de cada peixe. Atualize nosso relatrio ao adicionar este campo a ele.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

35

primeira vista, isso parece fcil adicionar um objeto "Texto" banda de dados entre os
objetos existentes, conect-lo ao campo "Notes" e configurar o tamanho do objeto como 8 x 2,5
cm. No entanto, a visualiza o do relatrio n o mostra exatamente o que desejamos:

FastReport executou exatamente o que foi instrudo a fazer. O campo "Notas" contm um texto
com vrias linhas de comprimentos variados, porm o objeto "Texto" que exibe as informaes
deste campo tem um tamanho fixo. por isso que algumas linhas parecem cortadas. O que
pode ser feito a respeito?
claro que o tamanho do objeto pode ser aumentado ou o tamanho da fonte pode ser reduzido.
No entanto, isso pode levar perda de espao na pgina de sada, j que alguns peixes
possuem descries longas, e outros possuem descries curtas. O FastReport tem algumas
propriedades que nos permitem solucionar este problema.
Essas propriedades permitem que uma banda ou um objeto ajustem sua altura
automaticamente para criar o espao necessrio para um registro (fileira). Para obter isso,
precisamos apenas ativar a propriedade "Esticar", tanto da banda como do objeto "Texto". No
entanto, isso n o tudo, j que um objeto "Texto" com texto mais longo deve ser capaz de se
estender automaticamente. Para isso precisamos configurar outras propriedades tambm.
O objeto "Texto" capaz de definir sua altura e largura automaticamente para criar espao para
seu contedo. "AutoWidth" e "EsticarMode" podem ser usado para isso. "AutoWidth" permite
que o objeto texto varie sua largura, para que todas as linhas criem espao sem dividir
nenhuma palavra. Este modo til quando um objeto possui uma nica linha de texto, e quando
o aumento de tamanho direita n o afeta outros objetos. A propriedade "Esticar" permite que a
altura de um objeto aumente para acomodar o texto, sem alterar a largura do objeto. "Esticar"
tem diversos modos que podem ser selecionados no inspetor de objetos:
smDontEsticar n o estender o objeto (padr o)
smActualHeight estender o objeto para criar espao para todo o texto
smMaxHeight estender o objeto para que sua parte inferior alcance a parte inferior da banda
no qual estiver colocado. Abordaremos este modo mais adiante
Aqui estamos interessados na propriedade "Esticar" do objeto "Texto". Habilite-a usando o

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

36

FastReport VCL 5 User's Manual

menu de contexto do objeto ou ao configurar "EsticarMode" como smActualHeight. Tambm


habilite a propriedade "Esticar" da banda. Visualize o relatrio e certifique-se de que tudo
exibido como esperado.

Como voc pode ver, ao criar o relatrio, o FastReport preenche os objetos com dados e os
estende se "Esticar" for habilitado. Ele ent o calcula a altura da banda para que cada objeto
tenha espao suficiente. Se a propriedade "Esticar" da banda for desabilitada, este ajuste de
altura n o executado e a banda exibida na altura definida no design. Neste caso, veramos
que objetos com texto mais longo seriam estendidos, mas a banda n o o seria, o que levaria
sobreposi o do texto, j que a banda seguinte seria exibida imediatamente aps a anterior.

2.16

Divis o de dados
Vamos dar uma olhada em um aspecto peculiar deste relatrio: h muito espao em branco na
parte inferior das pginas. Por que? Quando um relatrio criado, o mecanismo do FastReport
preenche o espao em branco da pgina com as bandas. Aps exibir cada banda, a posi o
atual movida para baixo. Quando FastReport percebe que n h espao livre suficiente para
exibir a prxima banda (sua altura maior que o espao livre da pgina), ele cria uma nova
pgina e continua com a exibi o da banda neste ponto. Esta sequncia repetida para cada
registro no conjunto de dados.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

37

Nosso relatrio contm um objeto com texto longo, e por isso que a altura da banda
bastante grande. Alm disso, se uma banda grande n o possuir espao suficiente em uma
pgina, ela deslocada para a prxima, deixando muito espao em branco na parte inferior da
pgina, como mostrado aqui:

Para limitar o desperdcio de papel, vamos usar um recurso do FastReport que transforma o
contedo de uma banda em pargrafos. Tudo que precisamos fazer habilitar a propriedade
"AlllowSplit" da banda "Dados de 1o. Nvel". Voc ver que agora h menos espao vazio na
parte inferior das pginas do relatrio:

Como funciona essa divis o de bandas? H alguns objetos no FastReport que suportam este
recurso. Eles s o os objetos "Texto", "Linha" e "RichEdit". Eles podem ser "divididos", e outros
objetos n o podem. Quando FastReport precisa dividir uma banda, ele o faz da seguinte
maneira:
- exibe os objetos n o divisveis que cabem no espao vazio
- exibe os objetos divisveis parcialmente (objetos "Texto" s o exibidos de uma forma que
todas as linhas cabem no objeto)
- cria uma nova pgina e continua com a exibi o do objeto na banda
- se um objeto n o divisvel n o possuir espao no espao vazio, ele deslocado para a
prxima pgina; ao mesmo tempo todos os objetos localizados abaixo dele s o deslocados
conforme necessrio
- o processo continua at que todos os objetos da banda seja exibidos por completo.
O algoritmo de divis o se tornar mais claro ao olhar para este exemplo:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

38

FastReport VCL 5 User's Manual

Deve ser observado que o algoritmo de divis o n o perfeito, e que a sada final pode n o ser
igual ao esperado. Esta op o deve ser usada com muito cuidado em casos onde objetos na
banda dividida s o agrupados de maneira complexa ou o tamanho das fontes difere. Segue um
exemplo do que pode ser gerado.

2.17

Quebra automtica de linha de objetos


Em alguns designs de relatrio pode ser necessrio que o texto seja disposto ao redor de
outros objetos (frequentemente ao usar imagens). Vamos demonstrar como o FastReport pode
fazer isso em nosso exemplo atual.
Adicione mais um objeto "Texto" banda de dados abaixo do objeto Bio."Notes", conforme
mostrado aqui:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

39

Iremos desabilitar o Esticar no objeto Bio."Notes" e habilit-lo no objeto inferior. Para fazer o
texto "fluir" do objeto Bio."Notes" para o objeto inferior, configure a propriedade "FlowTo" do
objeto Bio."Notes" no inspetor de objetos uma lista suspensa. Selecione o nome do objeto
inferior nesta lista. O relatrio resultante ter a seguinte aparncia:

Quando o relatrio for gerado, se o texto n o couber no objeto superior, o excesso deslocado
para o objeto inferior. Ao arranjar os dois objetos em volta da imagem, obtido o efeito da
quebra automtica de linha.
Observe: o objeto principal deve ser inserido no relatrio antes de inserir o objeto vinculado, ou
de outro modo o fluxo do texto pode n o funcionar corretamente! Se isto ocorrer, selecione o
objeto vinculado e traga-o para a frente usando o item de menu "Editar > Trazer para Frente".

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

40

2.18

FastReport VCL 5 User's Manual

Exibir dados na forma de uma tabela


s vezes necessrio exibir dados na forma de uma tabela com borda. Um exemplo deste tipo
de relatrio uma lista de preos. Para criar este tipo de relatrio no FastReport, somente
necessrio habilitar bordas para os objetos localizados na banda de dados. Vamos demonstrar
diversas variaes de bordas com um exemplo.
Crie um relatrio similar a este:

Coloque os objetos "Texto" lado a lado na banda e diminua a altura da banda.


O primeiro tipo de tabela, e tambm o mais simples, tem uma borda completa nas clulas.
Para obter isso, habilite todas as linhas da borda (encontradas na propriedade Frame.Typ) para
cada objeto:

O prximo tipo de borda desenha somente linhas de clulas horizontais ou verticais, novamente
usando a propriedade Frame.Typ:

Finalmente, para desenhar apenas uma borda externa para a tabela, o relatrio precisa ser
modificado:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

41

Voc pode ver que adicionamos dois objetos "Texto", um na banda de cabealho da pgina e
outro na banda de rodap da pgina. As linhas de borda apropriadas para os objetos nas
bordas da banda de dados foram habilitadas, resultando em um relatrio com o seguinte
aspecto:

Todos esses exemplos continham bandas que tinham tamanhos fixos. Como possvel exibir
uma tabela quando a banda estendida? Vamos explicar como isso feito atravs de um
exemplo. Adicione um campo novo (um texto com vrias linhas de Bio."Notes") a nosso
relatrio. Como voc j aprendeu, a propriedade "Esticar" deve ser habilitada tanto para este
objeto como para a banda no qual o objeto est localizado, para que a altura da banda seja
alterada dependendo do tamanho do texto no objeto "Texto". O relatrio gerado tem este
aspecto::

Isso difere um pouco do que precisamos

FastReport v4 1998-2014 Fast Reports Inc.

a aparncia melhor se as bordas dos objetos

Manual v5.0.0

42

FastReport VCL 5 User's Manual

vizinhos tambm s o estendidas. O FastReport pode solucionar este problema com facilidade.
Configure a propriedade "StretchMode" como smMaxHeight no inspetor de objetos para todos
os objetos que devem ser estendidos, e o ncleo do FastReport calcular a altura de banda
mxima e "estender" objetos que tm Esticar habilitado at a extremidade inferior da banda. J
que bordas de objetos s o estendidas juntas com o objeto, a aparncia do relatrio alterada:

2.19

Imprimir rtulos
Ao contrrio de relatrios do tipo tabela, outros relatrios (como relatrios de impress o de
rtulos) podem ter os dados arranjados de maneira que um campo esteja abaixo do outro.
Vamos dar uma olhada em um exemplo deste tipo de relatrio que exibe dados sobre peixes,
como no exemplo anterior. Os dados do relatrio s o apresentados como rtulos e possuem a
seguinte estrutura:

Ao visualizar, veramos o seguinte:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

43

Observe que h muito espao vazio direita da pgina. Para usar toda a pgina, possvel
configurar o nmero de colunas nas quais s o exibidos os dados nas configuraes da pgina
do relatrio. Para fazer isso, clique duas vezes no espao vazio na pgina de design ou use
"Arquivo > Configuraes da Pgina..." no menu.

A contagem de colunas, a largura e as posies s o configuradas na guia "Outras Opes" na


caixa de dilogo. Em nosso exemplo, somente o Nmero precisa ser configurado como 2, ja
que o FastReport ajusta as outras opes automaticamente. A borda da coluna exibida no
designer como uma linha vertical fina:

O relatrio agora criado da seguinte maneira. FastReport repete a banda "Dados de 1o. Nvel"
enquanto houver espao em branco na parte inferior da pgina. Depois disso, criada uma
nova coluna na mesma pgina e as bandas de dados continuam a ser repetidas a partir do topo
da coluna nova. Isso difere de relatrios simples, nos quais criada uma nova pgina em vez
de uma coluna nova. Quando a segunda coluna tiver sido preenchida, criada uma terceira
coluna, e assim por diante apesar de nosso exemplo possuir somente duas colunas. Quando
todas as colunas tiverem sido preenchidas, o FastReport cria uma nova pgina e continua
exibindo os dados, comeando novamente pela primeira coluna.
Nosso relatrio de duas colunas deve ter esta aparncia:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

44

FastReport VCL 5 User's Manual

A propriedade "Columns", disponvel no inspetor de objetos para todas as bandas de dados,


oferece outra maneira de configurar o nmero de colunas. No entanto, se esta propriedade for
diferente de zero, o nmero de colunas configurado somente para a banda de dados
selecionada, e n o para toda a pgina (como no exemplo anterior). O efeito resultante exibir
os dados primeiro da 'esquerda para a direita e depois de cima para baixo', em vez da sada 'de
cima para baixo e depois esquerda para a direita' mostrada acima.
Desabilite as colunas na caixa de dilogo de Opes da Pgina (configure o Nmero de
colunas como 1) e insira 2 na propriedade "Columns" da banda de dados. Observe que a
propriedade "ColumnWidth" tambm deve ser modificada do zero padr o para prevenir que a
coluna 2 se sobreponha coluna 1. De maneira opcional, a propriedade "ColumnGap" tambm
pode ser alterada. O FastReport ent o exibe as bordas das colunas como linhas pontilhadas:

Este design exibe os dados na ordem 'esquerda para a direita e depois de cima para baixo'.

2.20

Bandas filho
Pode haver um problema quando um campo em um relatrio tipo rtulo possui contedo de
comprimento varivel. Para simular isso em nosso exemplo, vamos reduzir a largura do objeto
Bio."Common Name" para 2,5 cm e habilitar a propriedade "Esticar" neste objeto e tambm na
banda "Dados de 1o. Nvel". Habilite todas as linhas da borda para todos os objetos para que os
efeitos da fun o de extens o sejam claramente visveis. O design agora gera um relatrio
como este:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

45

Aqui o primeiro objeto de campo Bio."Common Name" contm muito texto e estendido por
duas linhas. Isso causa o deslocamento para baixo do objeto de campo Bio."Length (cm)",
localizado abaixo do primeiro. Isso acontece porque todos os objetos possuem a propriedade
"ShiftMode" configurada como smAlways como padr o, o que significa que eles s o
deslocados para baixo se houver um objeto extensvel (um objeto "Texto" com a propriedade
"Esticar" habilitada) sobre eles. A distncia do deslocamento depende de quanto o objeto acima
estendido.
Mas n o desejamos que isso acontea com nosso rtulo. Ns queremos que o objeto
"Comprimento, cm:" tambm seja deslocado igualmente. Isso pode ser obtido ao usar uma
banda de FastReport especial chamada de banda "Filho". Uma banda "Filho" vinculada a (e
exibida aps) uma banda pai. Adicione uma banda "Filho" ao design e arraste os dois objetos
"Texto" para dentro dela, conforme mostrado aqui:

Vincule a banda DadosMestre banda Filho ao configurar sua propriedade "Child" como
"Child1" no inspetor de objetos. Agora, cada vez que a banda DadosMestre for impressa, a
banda Filho impressa imediatamente depois dela:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

46

FastReport VCL 5 User's Manual

O ttulo "Comprimento, cm:" agora est alinhado corretamente com seu campo de valor "50".
Para prevenir que uma banda filho seja movida para a prxima pgina se n o houver espao
livre suficiente na pgina (e se tornando 'rf ' de sua banda pai), habilite a propriedade
"KeepChild" da banda pai no inspetor de objetos.

2.21

Deslocar objetos
Voc j viu como 'smAlways' funciona na propriedade "ShiftMode". Vamos dar uma olhada no
prximo modo de deslocamento, 'smWhenOverlapped'. Neste modo, o deslocamento de
objetos ocorre quando o objeto acima estendido e sobreposto ao objeto abaixo. Aqui h dois
cenrios:
1: os trs objetos no topo tm "Esticar" habilitado, e os trs objetos inferiores tm "ShiftMode"
configurado como 'smAlways'. Os objetos inferiores s o deslocados apenas o suficiente
para dar espao ao objeto estendido acima deles:

2: os trs objetos superiores tm "Esticar" habilitado, e os trs objetos inferiors tm


"ShiftMode" configurado como 'smWhenOverlapped'. Os objetos inferiores s o deslocados
para dar espa para o objeto estendido, e tambm para manter a separa o designada dos
dois objetos:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

47

Isso permite a cria o de relatrio complexos, especialmente em casos nos quais um objeto
pode sobrepor diversos outros objetos acima dele ao mesmo tempo. No exemplo abaixo, todos
os objetos superiores contm texto extensvel, e todos os objetos inferiores est o no modo
'smWhenOverlapped'. Os objetos inferiores sempre ser o exibidos perto do objeto que estiver
acima, n o importando o comprimento do texto dos objetos superiores:

2.22

Relatrio com dois nveis de dados (mestre-detalhe)


At agora nossos relatrios de exemplo usaram somente uma banda de dados ("Dados de 1o.
Nvel" ou "Dados Mestre") para controlar a sada de dados. Isso era adequado para a sada de
dados de uma nica tabela de BD. FastReport tambm permite o design de relatrios com at
seis nveis de dados, todos na mesma pgina de design. Alm disso, possvel obter um
nmero ilimitado de nveis de dados em relatrios ao usar o objeto "Sub-relatrio" este objeto
ser abordado mais adiante. Em geral, a maioria dos relatrios precisa de apenas um, dois ou
trs nveis de dados, e nmeros maiores de nveis de dados s o raros.
Vamos ver como fazer o design de um relatrio com dois nveis de dados. O relatrio ir exibir
dados das tabelas de demonstra o "Customer" e "Orders". A primeira tabela uma lista de
clientes e a segunda uma lista de pedidos feitos por esses clientes. As tabelas contm dados
nos seguintes campos:
Customer:
CustNo
1221
1231
1351
.

Company
Kauai Dive Shoppe
Unisco
Sight Diver

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

48

FastReport VCL 5 User's Manual

Orders:
OrderNo
1003
1023
1052
1055
1060
1123
.

CustNo
1351
1221
1351
1351
1231
1221

SaleDate
12.04.1988
01.07.1988
06.01.1989
04.02.1989
28.02.1989
24.08.1993

Como voc pode ver, a segunda tabela contm a lista de todos os pedidos feitos por todos os
clientes. Para ver os pedidos da tabela Orders que foram feitos por um cliente da tabela
Customers, as duas tabelas s o vinculadas no campo "CustNo", que comum a ambas as
tabelas. A sada do relatrio desses dados deve ter este aspecto:
1221
1023
1123

Kauai Dive Shoppe


01.07.1988
24.08.1993

1231
1060

Unisco
28.02.1989

1351
1003
1052
1055

Sight Diver
12.04.1988
06.01.1989
04.02.1989

Let's design the report. Create a new project in Delphi, place two TTable, one "TDataSource",
two TfrxDBDataSet and one TfrxReport components on the form. Set the component
properties as shown here:
Table1:
DatabaseName = 'DBDEMOS'
TableName = 'Customer.db'
Table2:
DatabaseName = 'DBDEMOS'
TableName = 'Orders.db'
DataSource1:
DataSet = Table1
frxDBDataSet1:
DataSet = Table1
UserName = 'Customers'
frxDBDataSet2:
DataSet = Table2
UserName = 'Orders'

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

49

Crie um relatrio novo. Coloque duas "Tabelas ADO" na pgina e configure suas propriedades:
ADOTable1:
TableName = 'Customer'
UserName = 'Customers'
ADOTable2:
TableName = 'Orders'
UserName = 'Orders'
Agora adicione uma banda "Dados Mestre" e uma "Dados de Detalhe" pgina:

Observe que a banda "DadosMestre" deve ser colocada acima da banda "DadosDeDetalhe"!
Arraste-a para l se necessrio. Se a banda Mestre for colocada embaixo da banda Detalhe, o
FastReport ir gerar uma mensagem de erro ao visualizar o relatrio.
Se voc visualizasse o relatrio agora, voc veria que a lista de pedidos permaneceria igual
para todos os clientes e iria conter todos os registros da tabela "Orders". Isso aconteceria
porque a propriedade MasterSource da tabela "Orders" n o foi configurada. Configure
"MasterSource ADOTable1" no componente "ADOTable2". Agora configuramos uma rela o
'mestre-detalhe'. Depois disso, selecionamos os campos a serem vinculados. Configure a
propriedade "MasterFields" do componente "ADOTable2".

Precisamos vincular os campos "CustNo" das duas fontes. Para fazer isso, selecione os

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

50

FastReport VCL 5 User's Manual

campos desejados e clique no bot o "Adicionar". A vincula o do campo ser exibida no painel
inferior. Conclua ao fechar o editor clicando em OK.
Ao criar a visualiza o, FastReport faz o seguinte. Aps a sada de um registro da tabela
mestre (Customer), ele configura o filtro na tabela detalhe (Orders). Somente os registros que
cumprem a condi o 'Orders.CustNo = Customer.CustNo' permanecem na tabela. Isso
significa que para cada cliente somente s o exibidos na banda detalhe os pedidos que
correspondem ao cliente autal. importante enteder este conceito. Apesar das bandas de
dados serem do tipo mestre ou detalhe, elas somente controlam o posicionamento dos dados
na pgina de sada (ordem e nmero de exibies). Os dados exibidos pelos objetos nas
bandas depende dos campos aos quais os objetos est o vinculados e da vincula o externa
das duas tabelas.
Esta a sada final:

possvel construir relatrios com at 6 nveis de dados de maneira similar.

2.23

Cabealhos e rodaps de uma banda de dados


Cada banda de dados pode ter um cabealho e um rodap. Os cabealhos s o exibidos
primeiro, depois todos os registros na banda de dados, e finalmente os rodaps. Aqui segue um
exemplo de como os cabealhos e rodaps funcionam em um relatrio simples:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

51

Vamos dar uma olhada em um exemplo mais complexo que utiliza dois nveis de dados
mestre e detalhe:

Como voc pode ver, o cabealho exibido antes de todos os registros de bandas de dados.
Deste modo, o cabealho dos dados mestre exibido primeiro, no incio do relatrio, e um
cabealho de dados detalhe exibido antes de cada grupo de bandas detalhe que pertencem
banda de registros mestre atual. O rodap de detalhe exibido depois do grupo de bandas
detalhe que pertencem banda de registros mestre, e o rodap mestre n o exibido at que
todos os registros da banda de dados mestre sejam exibidos.
Ao usar a propriedade FooterAfterEach da banda de dados, possvel alterar este
comportamento. Configurar esta propriedade como True (tambm possvel usar o menu de
contexto da banda de dados "Rodap Aps Cada Linha") resulta na exibi o do rodap aps
cada linha de dados. Isso pode ser til no design de relatrios mestre-detalhe. Se
FooterAfterEach da banda de dados mestre for configurado como True, o relatrio ser exibido
assim:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

52

2.24

FastReport VCL 5 User's Manual

Relatrios com pginas mltiplas


Um relatrio no FastReport pode conter diversas pginas de design. Designs com pginas
mltiplas permitem o ajuste de propriedades como tamanho e orienta o de cada pgina,
assim como permitem variedade na coloca o de objetos e bandas nas pginas. Quando este
tipo de relatrio exibido, todas as bandas da primeira pgina de design s o exibidas, e ent o
as bandas da segunda pgina, etc.
Quando um relatrio novo criado no designer, ele contm uma pgina por padr o. possvel
adicionar uma pgina nova ao clicar no bot o na barra de ferramentas ou ao selecionar o
comando de menu "Arquivo > Nova Pgina". Ent o voc veria que exibida uma nova guia de
pgina no designer:

fcil alternar as pginas ao clicar nas guias de pginas. As guias de pginas podem ser
arrastadas ("arrastar e soltar") para mudar sua ordem de impress o com facilidade. Uma
pgina desnecessria pode ser excluda com o bot o na barra de ferramentas, ou ao
selecionar o comando de menu "Editar > Remover Pgina". Tambm possvel usar o menu
de contexto ao clicar com o bot o direito na guia da pgina:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Criar relatrios

53

O nmero de pginas de design em um relatrio ilimitado. Como regra geral, pginas


adicionais s o usada como pginas de ttulo ou, em relatrios mais complexos, para dados que
tm origem em diversas fontes de dados.
Aqui h um exemplo simples de como criar uma pgina de ttulo. Vamos usar nosso relatrio
anterior que possui um nvel de dados. Adicione uma nova pgina a ele e ela ser adicionada
como uma segunda pgina. Mova-a para a frente do relatrio ao clicar na guia Page2 e arrastla sobre a guia da primeira pgina, Page1. Isso altera a ordem das pginas. Selecione a pgina
nova e coloque um objeto "Texto" contendo "Nosso relatrio" no meio da pgina. Isso tudo. O
relatrio com uma pgina de ttulo est concludo:

No entanto, preste aten o a um recurso de relatrios com pginas mltiplas. Se a propriedade


"PrintOnPreviousPage" for habilitada no inspetor de objettos para a segunda pgina de sada,
ent o os objetos da segunda pgina de sada ser o impressos no espao em branco da
primeira pgina de sada e n o na nova pgina de sada.

2.25

Propriedades RowCount e PageCount


s vezes surge a necessidade de exibir dados estticos diversas vezes, por exemplo ao
imprimir cartes de visitas ou cartes postais "em branco". Para isso as bandas de dados
possuem a propriedade "RowCount" e a pgina do relatrio possui a propriedade "PageCount".
Essas duas propriedades controlam o grau de repeti o de bandas/pginas no relatrio, sem
serem influenciadas pelos dados do relatrio.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

54

FastReport VCL 5 User's Manual

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

III
Grupos e
agregados

56

3.1

FastReport VCL 5 User's Manual

Relatrio com grupos


No exemplo anterior criamos um relatrio de dois nveis baseado nos dados de duas tabelas.
possvel construir outro relatrio com o mesmo aspecto no FastReport, que desta vez
baseado em um conjunto de dados obtido de uma consulta conjunta.
Para fazer isso necessrio uma consulta SQL que retorna dados de ambas as tabelas
ordenado de maneira especfica. Em nosso exemplo, as tabelas ser o unidas nos campos
"CustNo", que est o presentes em ambas as tabelas. A consulta pode ser:
select * from customer, orders
where orders.CustNo = customer.CustNo
order by customer.CustNo
A linha "order by" necessria para ordenar os registros no campo "CustNo". Esta consulta
retorna um conjunto de dados parecido com isto:
CustNo
1221
1221
1231
1351
1351
1351

Company
Kauai Dive Shoppe
Kauai Dive Shoppe
Unisco
Sight Diver
Sight Diver
Sight Diver

OrderNo
1023
1123
1060
1003
1052
1055

SaleDate
01.07.1988
24.08.1993
28.02.1989
12.04.1988
06.01.1989
04.02.1989

Como possvel fazer o design de um relatrio de vrios nveis usando estes dados? No
FastReport h uma banda especial, o "Cabealho de Grupo". Uma condi o (um campo de BD
ou uma express o) especificada para a banda; a banda exibida sempre que o valor da
condi o for alterado. O exemplo a seguir ilustra isso.
Crie um relatrio novo no designer do FastReport. Coloque um componente "Consulta ADO" na
pgina e configure suas propriedades:
SQL =
select * from customer, orders
where orders.CustNo = customer.CustNo
order by customer.CustNo
UserName = 'Group'
Depois adicione uma banda "Cabealho de Grupo" ao relatrio. Defina uma condi o (neste
caso o campo de dados "Group.CustNo") no editor da banda "Cabealho de Grupo":

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Grupos e agregados

57

Tambm vincule a banda de dados fonte de dados "Group" e arranje alguns objetos como
mostrado abaixo (observe que o cabealho do grupo deve ser colocado acima da banda de
dados):

Ao visualizar o relatrio, obtemos uma sada similar a isto:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

58

FastReport VCL 5 User's Manual

Como voc pode ver, a banda "Cabealho de Grupo" exibida somente quando o valor do
campo ao qual vinculada alterado. Caso contrrio, a banda de dados conectada ao conjunto
de dados "Group" exibida. Se compararmos este relatrio ao relatrio mestre-detalhe criado
anteriormente, bvio que os nmeros de pedidos n o s o ordenados. Isso pode ser corrigido
com facilidade ao alterar a clusula 'order by' da consulta SQL:
select * from customer, orders
where orders.CustNo = customer.CustNo
order by customer.CustNo, orders.OrderNo
possvel fazer o design de relatrios que possuam grupos aninhados de maneira similar. A
profundidade de grupos aninhados ilimitada. Relatrios que usam grupos tm algumas
vantagens sobre relatrios do tipo mestre-detalhe:
- todo o relatrio precisa de somente um conjunto de dados (consulta)
- o nmero de nveis de agrupamento de dados ilimitado
- possvel ordenar os dados
- uso mais otimizado dos recursos de BD (a consulta retorna apenas um conjunto de dados
para sada e a filtragem executada pela consulta).
A nica desvantagem a necessidade de escrever consultas na linguagem SQL. No entanto, o
conhecimento bsico de SQL praticamente obrigatrio para qualquer programador que
trabalhe com bancos de dados.

3.2

Outros recursos de grupos


Vamos ver como o grupo exibido quando o relatrio precisa de uma pgina nova:

Ao olhar para o relatrio, n o claro a qual cliente se refere a lista de pedidos no topo da

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Grupos e agregados

59

segunda pgina. FastReport permite que o cabealho do grupo seja exibido na pgina nova (o
que em nosso caso identifica o cliente). Para fazer isso, habilite a propriedade
"ReprintOnNewPage" da banda "Cabealho do Grupo" usando o inspetor de objetos ou o menu
de contexto. Isso ir alterar o relatrio desta maneira:

H outra maneira de evitar quebrar grupos nos limites de pginas, que habilitar a propriedade
"KeepTogether" do cabealho do grupo no inspetor de objetos ou no menu de contexto. Dessa
maneira, se o grupo inteiro n o couber no espao livre na pgina de sada, ele movido inteiro
para uma pgina nova. Em nosso exemplo, ele exibido deste modo:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

60

FastReport VCL 5 User's Manual

Pode haver muito espao vazio em algumas pginas, mas, sempre que possvel, o grupo
exibido de forma completa em uma pgina.
A propriedade "StartNewPage" do cabealho de grupo permite a exibi o de grupos em pginas
separadas. Isso pode levar a um desperdcio de papel, mas pode ser til em algumas
situaes.

3.3

Redefinir nmeros de pginas


A banda "Cabealho de Grupo" possui a propriedade "ResetPageNumbers", que nos permite
redefinir nmeros de pginas ou imprimir um grupo. Para que serve?
Aqui est um exemplo: voc criou um relatrio que coloca o nome do cliente em um cabealho
de grupo e os pedidos do cliente na banda de dados. Agora voc precisa imprimir o relatrio e
envi-lo a todos os seus clientes, e cada cliente deve receber apenas as pginas do relatrio
que se referem a ele. Lamentavelmente, a numera o das pginas contnua no relatrio,
ent o um cliente que receber as pginas 50 a 52 perguntar "Onde est o as primeiras 49
pginas?". Para evitar este tipo de situa o, necessrio numerar as pginas de cada cliente
com sua prpria sequncia. No relatrio, cada grupo ter pginas numeradas a partir de 1.
Observe: se configurar "ResetPageNumbers" como True, tambm dever configurar
"StartNewPage" como True, para que cada grupo inicie em uma pgina nova. Para imprimir o
nmero da pgina ou as pginas totais, voc deve usar as variveis de sistema [Page] e
[TotalPages], e n o [Page#] e [TotalPages#].

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Grupos e agregados

3.4

61

Grupos de drill down


O cabealho de grupo possui uma propriedade chamada DrillDown. Se ela for configurada
como True, o grupo se torna interativo. Isso significa que possvel clicar no cabealho do
grupo na janela de visualiza o e o grupo ir se expandir (exibir todos os registros no grupo) ou
recolher (exibir somente o cabealho e, se ShowFooterIfDrillDown for True, o rodap).
Segue um exemplo deste tipo de grupo com um cabealho expandido:

possvel controlar se todos os grupos s o recolhidos ou expandidos quando o relatrio


executado pela primeira vez. Como padr o, um grupo permanece recolhido, mas possvel
configurar ExpandDrillDown como True se desejar que seja expandido. Tambm possvel
usar o menu de contexto da visualiza o para expandir ou recolher todos os grupos ao mesmo
tempo.

3.5

Numera o de linhas
Vamos usar nosso exemplo para mostrar como numerar as linhas em um grupo. Para fazer
isso, adicionamos um objeto "Texto" que contm uma varivel de sistema [Line] a ambas as
bandas (a maneira mais fcil de fazer isso ao arrastar e soltar da guia "Variveis" no painel
"rvore de Dados").

Ao visualizer o relatrio, podemos ver que ambos os nveis de dados agora possuem seus

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

62

FastReport VCL 5 User's Manual

prprios nmeros de linha:

Para numerar de maneira contnua as linhas de dados do segundo nvel, use a varivel [Line#]
em vez de [Line] no objeto "Texto" na banda de dados. O resultado ent o ter este aspecto:

3.6

Funes de agrega o
Na maioria dos casos, relatrios de grupo precisam exibir algum resumo das informaes
(como: "total de um grupo", "nmero de elementos do grupo", etc.). FastReport fornece funes
de agrega o para calcular valores de agrega o em um intervalo de dados. As funes de
agrega o s o:
SUM
MIN
MAX

retorna o total de uma express o


retorna o valor mnimo de uma express o
retorna o valor mximo de uma express o

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Grupos e agregados

AVG
COUNT

63

retorna o valor mdio de uma express o


retorna o nmero de linhas (fileiras) no intervalo de dados

A sintaxe de todas as funes de agrega o (exceto COUNT) similar quela da fun o SUM:
SUM(express o, banda, sinalizadores)
SUM(express o, banda)
SUM(express o)
Os parmetros s o:
express o a express o a ser calculada
banda o nome da banda de dados na qual executado o clculo
sinalizadores um campo de bits com os valores
1 : incluir bandas invisveis no clculo
2 : acumular o agregado como uma soma acumulada
(n o redefinir o agregado quando o intervalo de dados atual for redefinido)
3 : (ambas as opes anteriores)
Uma express o o nico parmetro obrigatrio, os outros dois s o opcionais. No entanto, para
evitar cometer erros recomendado que os parmetros da banda sejam sempre fornecidos.
A fun o de agrega o "COUNT" possui a seguinte sintaxe:
COUNT(banda, sinalizadores)
COUNT(banda)
na qual os parmetros tm o mesmo significado explicado acima.
H uma regra geral para todas as funes de agrega o: uma fun o de agrega o somente
pode ser calculada sobre uma banda de dados, e ela somente pode ser usada no rodap da
banda, que pode pertencer a estas categorias: rodap, rodap da pgina, rodap do grupo,
rodap da coluna ou rodap do relatrio (banda de resumo).
Como funcionam as funes de agrega o? Abordaremos isso com nosso relatrio de grupo
como exemplo. Vamos adicionar alguns elementos novos ao relatrio:

O campo Group."ItemsTotal" na banda de dados exibe o total de pedidos atual. Coloque um


objeto "Texto" no rodap do grupo com a fun o de agrega o SUM exibida acima. Ele exibir o
total de todos os pedidos feitos por um cliente. Usando uma calculadora, podemos verificar que
o resultado est correto:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

64

FastReport VCL 5 User's Manual

Funes de agrega o funcionam desta maneira: antes de exibir o relatrio, FastReport


examina o contedo do objeto "Texto" para encontrar funes de agrega o. As funes
encontradas s o vinculadas s bandas de dados em seus parmetros (em nosso exemplo,
"SUM" vinculada banda "DadosMestre1"). Na exibi o do relatrio (quando a banda de
dados exibida) s o calculados os valores das funes de agrega o vinculadas. Em nosso
caso, os valores do campo Group."ItemsTotal" s o acumulados. Quando o rodap do grupo
com a fun o de agrega o tenha sido exibido, o valor da fun o redefinido para zero, e o
ciclo repetido para o prximo grupo, e assim por diante.
Qual o propsito do parmetro opcional "Sinalizadores" em funes de agrega o? Os
relatrios podem ocultar algumas ou at todas as bandas de dados. Podemos, no entanto,
precisar calcular as funes de agrega o de todas as bandas de dados, estejam elas visveis
ou n o. Em nosso exemplo, configure a propriedade "Visible" da banda de dados como false,
prevenindo sua exibi o. Para que esta banda de dados oculta seja includa nos clculos,
necessrio configurar o terceiro parmetro opcional na chamada da fun o como 1:
[SUM(<Group."ItemsTotal">,MasterData1,1)]
Isso produz um relatrio com o seguinte aspecto:

Se o parmetro "Sinalizadores" for configurado como 2, o valor da fun o de agrega o n o


redefinido imediatamente aps a exibi o: a fun o se torna um clculo "contnuo" para cada
sada sucessiva. Vamos modificar a chamada da fun o desta maneira:
[SUM(<Group."ItemsTotal">,MasterData1,3)]
O valor "3" uma combina o de bits de "1" e "2", o que significa que precisamos incluir as
bandas invisveis sem redefinir o total aps cada grupo. Como resultado obtemos:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Grupos e agregados

3.7

65

Totais da pgina e do relatrio


Com frequncia necessrio exibir totais de resumo de uma pgina ou um relatrio inteiro.
Tambm possvel usar funes de agrega o nesta situa o. Demonstraremos isso ao fazer
algumas alteraes em nosso exemplo:

Como voc pode ver, adicionamos uma banda "Sumrio do Relatrio" que contm um objeto
"Texto" com a fun o de agrega o SUM tanto na banda "Sumrio do Relatrio" como na
banda "Rodap da Pgina". Isso tudo que precisamos fazer:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

66

3.8

FastReport VCL 5 User's Manual

Inserir funes de agrega o


At agora inserimos as funes de agrega o manualmente em objetos "Texto". Agora vamos
dar uma olhada em outras maneiras de inserir funes de agrega o.
Primeiramente, podemos usar o objeto "Texto do Sistema" para exibir uma fun o de
agrega o. Na verdade, este objeto parecido com um objeto "Texto" e possui seu prprio
editor especial para especificar variveis de sistema ou funes de agrega o com mais
facilidade:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Grupos e agregados

67

Selecione um tipo de fun o, depois uma banda de dados (sobre a qual ser calculada a
fun o de agrega o) e finalmente um campo de BD ou uma express o cujo valor deve ser
calculado. Tambm possvel configurar os sinalizadores "Contar bandas invisveis" e "Total de
execu o", se necessrio.
O segundo mtodo usar um objeto "Texto" e clicar no bot o
em seu editor. Isso abre uma
caixa de dilogo parecida com o editor do objeto "Texto do Sistema". Ao clicar no bot o OK,
inserida uma chamada da fun o de agrega o no texto do objeto.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

IV
Formatar,
realar

Formatar, realar

4.1

69

Formatar valores
Um recurso de funes de agrega o que os valores numricos de retorno n o s o
formatados, como mostrado no primeiro exemplo, que usa "SUM":

Os campos de dados normalmente retornam um valor formatado, que exibido pelo objeto
"Texto" sem nenhuma altera o. Para aplicar a formata o ao resultado de "SUM", vamos usar
as ferramentas de formata o de valores do FastReport.
Selecione o objeto que contm a fun o Sum e abra o editor de formata o ao clicar em
'Formato de Exibi o...' em seu menu de contexto ou usar a propriedade "DisplayFormat" no
inspetor de objetos.

Este editor lista as categorias de formata o esquerda, os formatos correspondentes direita


e a cadeia de formata o e o separador decimal da categoria e formato selecionados abaixo.
Vamos selecionar a categoria "Nmero" e o formato "$1,234.50". A cadeia de formata o e o
separador decimal podem ser alterados. Se o separador decimal for deixado em branco,
utilizado o valor da configura o regional atual.
Aps clicar em OK e visualizar o relatrio, voc ver que a fun o Sum no relatrio agora est
formatada corretamente:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

70

FastReport VCL 5 User's Manual

Observe a caixa de combina o no topo da caixa de dilogo. Se houver mais de uma


express o em um objeto, possvel configurar formataes diferentes para cada express o.

4.2

Formata o embutida
A formata o embutida permite configurar uma formata o diferente para cada express o
contida no objeto. Ela era usada em verses anteriores do FastReport e agora obsoleta.
Utilize a caixa de dilogo de formata o para configurar uma formata o diferente para cada
express o.
Usando o exemplo, redimensione o rodap e seu objeto e altere o texto do objeto para isto:
Total: [SUM(<Group."ItemsTotal">,MasterData1)]
Number: [COUNT(MasterData1)]
O total e o nmero de pedidos ser o exibidos no objeto.
Na visualiza o do relatrio, ambos os valores s o exibidos no formato monetrio que
configuramos anteriormente. Isso errado:

Para exibir cada valor em seu formato correto, eles devem ser formatados individualmente.
Para fazer isso usamos tags de formata o, que s o colocadas antes do colchete de
fechamento da express o. Em nosso exemplo, desabilite a formata o no objeto (selecione a
categoria "Texto (sem formata o)" no editor de formata o). Agora somente precisamos
especificar o formato da primeira express o, j que a segunda ser exibida corretamente por
padr o (como nmero inteiro). Modifique o texto do objeto deste modo:
Sum: [SUM(<Group."ItemsTotal">,MasterData1) #n%2,2m]
Number: [COUNT(MasterData1)]
Visualize o relatrio para certifica-se de que o objeto exibido corretamente:

A sintaxe geral de tags de formata o :

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Formatar, realar

71

[expression #formattag]
Observe que o caractere de espao entre a express o e o smbolo "#" obrigatrio! A tag de
formata o em si pode ter este aspecto:
#nformat_string formato numrico
#dformat_string formato data/hora
#bFalse,True formato booleano
Em todos os casos, Format_string o argumento da fun o usado para a formata o. Desta
maneira, a fun o Format usada na formata o numrica, e a fun o FormatDateTime
usada para data/hora. Abaixo s o mostrados diversos valores usados no FastReport:
para formata o numrica:
%g nmero com dgitos mnimos aps o ponto decimal
%2.2f nmero com um nmero fixo de dgitos aps o ponto decimal
%2.2n como o anterior, mas com separador de milhares
%2.2m formato monetrio, aceito pelo SO Windows, depende das configuraes regionais
no painel de controle
para formata o de data/hora:
dd.mm.yyyy data como '23.12.2003'
dd mmm yyyy data como '23 Nov 2003'
dd mmmm yyyy data como '23 Novembro 2003'
hh:mm hora como '23:12'
hh:mm:ss hora como '23:12:00'
dd mmmm yyyy, hh:mm data e hora como '23 Novembro 2003, 23:12'
Pode ser usada uma vrgula ou um hfen em vez do ponto em format_string para a formata o
numrica. Este smbolo usado como separador entre o nmero inteiro e a fra o do valor.
Nenhum outro caractere permitido.
Para a formata o do tipo "#b" (booleana), a cadeia format_string inserida como dois valores
separados por vrgula. O primeiro valor corresponde a "False" e o segundo a "True".

4.3

Realce condicional
H a possibilidade de alterar a aparncia do objeto "Texto" dependendo das condies

existentes. Por exemplo, um objeto pode ser realado com a cor vermelha se ele possuir um
valor negativo. Este recurso chamado de "realce condicional". Para configur-lo, selecione o
objeto "Texto" e clique no bot o
dilogo exibida:

FastReport v4 1998-2014 Fast Reports Inc.

na barra de ferramentas "Texto". A seguinte caixa de

Manual v5.0.0

72

FastReport VCL 5 User's Manual

possvel definir uma ou mais condies e configurar o estilo de cada condi o. O estilo pode
conter uma ou mais configuraes:
borda;
preenchimento;
fonte;
visibilidade do objeto.
Voc pode indicar quais configuraes devem ser alteradas quando a condi o for cumprida.
Para isso necessrio marcar a configura o desejada usando a caixa de sele o.
Para criar uma condi o nova, clique no bot o "Adicionar". O editor de expresses exibido.
Nele possvel escrever qualquer express o que retornar um resultado booleano. Em muitos
casos voc usar a varivel "Value", que contm o valor de impress o atual.
Vamos dar uma olhada no seguinte exemplo: temos um objeto "Texto", o qual imprimimos a
quantidade de produtos em estoque:
[Products."UnitsInStock"]
Queremos deixar o objeto vermelho se a quantidade de produtos = 0. Para isso criaremos a
seguinte condi o:
Value = 0
Aten o: se voc selecionou C++Script como a linguagem de script (veja maiores
detalhes no captulo "Script"), voc deve escrever a condi o usando C++Script:
Value == 0

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Formatar, realar

73

Neste caso usamos a varivel "Value", que possui um valor impresso. Se houver diversas
expresses em um objeto, esta varivel ter o valor da ltima express o. Em vez de "Value",
possvel usar uma coluna de dados:
<Products."UnitsInStock"> = 0
Configure o estilo da condi o de maneira que somente preenchimento pode ser usado, e
escolha a cor vermelha:

Ao imprimir um objeto com valor zero, ele ser vermelho. Vamos tornar nosso exemplo mais
complexo, adicionando outra condi o. Se as unidades em estoque forem menores que 10,
elas devem ser impressas em amarelo. Para fazer isso, abra o editor de condies e clique no
bot o "Adicionar". A segunda condi o ser como esta:
Value < 10
Se diversas condies tiverem sido indicadas, FastReport verifica todas as condies,
comeando pela primeira. Se uma condi o for cumprida, o FastReport aplica suas
configuraes de estilo ao objeto, e o processo concludo. importante colocar as condies
na ordem correta. A ordem que vimos neste exemplo est correta:
1. Value = 0
2. Value < 10
Se trocarmos as condies, o realce n o funcionar corretamente.
1. Value < 10
2. Value = 0
Neste caso, "Value = 0" n o ser executado, j que quando o valor for zero, a primeira condi o

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

74

FastReport VCL 5 User's Manual

ser cumprida. Para alterar a ordem das condies, use os botes

4.4

Colorindo fileiras de dados alternadas


Ao usar o realce condicional, fcil criar relatrios que possuam um visual "listrado", nos quais
as linhas de dados s o coloridas de forma alternada. Para ter menos esforo, vamos usar o
exemplo "Lista de Clientes" que criamos anteriormente.
Remova todos os objetos "Texto" da banda "DadosMestre". Coloque um objeto "Texto" na
banda de dados e estenda-o para cobrir quase todo o espao da banda:

Este objeto ir modificar sua cor em dependncia do nmero da linha de dados. Selecione o
objeto e configure a express o condicional a seguir na guia Realce do editor de objetos:
<Line> mod 2 = 1
Observa o: se voc selecionou C++Script como a linguagem de script (veja maiores
detalhes no captulo "Script"), voc deve escrever a condi o usando C++Script:
<Line> % 2 == 1
Selecione cinza n o muito saturado e claro como a cor de realce. Agora possvel adicionar
outros objetos banda de dados em cima do primeiro objeto "Texto" vazio:

Na visualiza o o relatrio produz esta sada:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Formatar, realar

FastReport v4 1998-2014 Fast Reports Inc.

75

Manual v5.0.0

Chapter

V
Relatrios
aninhados
(sub-relatrios)

Relatrios aninhados (sub-relatrios)

5.1

77

Relatrios aninhados (sub-relatrios)


s vezes necessrio criar relatrios muito complexos, que contm blocos de dados
adicionais inseridos em pontos especficos no design. Apesar de muitos relatrios deste tipo
poderem ser criados usando um arranjo de bandas do FastReport, s vezes isso se torna
complicado demais. Nessas circunstncias necessrio usar o objeto "Sub-relatrio".
Quando um objeto "Sub-relatrio" inserido em um design no FastReport, ele automaticamente
adiciona uma pgina nova que conectada ao "Sub-relatrio". Este relatrio aninhado
parecido a um relatrio de pginas mltiplas em termos da estrutura de design. A nica
diferena que o relatrio aninhado exibido em um local especfico na pgina de design
bsica, e n o aps a pgina. Quando este relatrio exibido, quando o objeto "Sub-relatrio"
encontrado, o mecanismo de relatrios exibe toda a pgina do sub-relatrio conectada. Depois
disso, a exibi o continua com o resto da pgina de design bsica.
Alm disso, objetos "Sub-relatrio" podem ser inseridos em uma pgina de design de subrelatrio, aumentando a profundidade do aninhamento. Um exemplo de um relatrio aninhado
pode ser encontrado no programa de demonstra o, no relatrio "Sub-relatrio".
importante observar que a capacidade de FastReport de usar sub-relatrios permite o
aninhamento profundo de dados. Lembre-se de que o nmero de nveis de dados no
FastReport limitado a somente seis quando bandas de dados Detalhe s o usadas em vez do
objeto "Sub-relatrio".

5.2

Sub-relatrios lado a lado


possvel colocar dois ou mais objetos "Sub-relatrio" lado a lado na mesma banda de dados:

Este design habilita relatrios nos quais a sada de dados de cada "Sub-relatrio" possui fileiras/
registros de diversos comprimentos, alturas e graus de extens o:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

78

FastReport VCL 5 User's Manual

Conforme ilustrado, FastReport continua exibindo a pgina de design bsica somente aps
concluir o Sub-relatrio mais longo. Tambm possvel usar a propriedade Vertical Alignment
para ajustar o alinhamento do objeto "Texto" em cada sub-relatrio.

5.3

Limitaes na utiliza o de sub-relatrios


J que sub-relatrios s o colocados na pgina de design bsica, eles n o podem conter
nenhuma das bandas a seguir: "Ttulo do Relatrio/Rodap do Relatrio", "Ttulo da Pgina/
Rodap da Pgina/Plano de Fundo" ou "Ttulo da Coluna/Rodap da Coluna". Se estas bandas
forem colocadas em uma pgina com um relatrio aninhado, elas n o ser o reconhecidas. Por
esta mesma raz o n o h motivo em alterar as opes de pginas de relatrios aninhados, j
que as opes da pgina de relatrio bsica substituem as opes de pginas aninhadas.
N o coloque objetos abaixo do objeto "Sub-relatrio":

Se fizer isso, os objetos criados no sub-relatrio ir o se sobrepor a tudo que for colocado
abaixo do objeto sub-relatrio na pgina de design principal, e a sada ser parecida com isto:

Para exibir objetos abaixo ou aps um relatrio aninhado, utilize uma banda filho:

Este mtodo tambm usado quando diversos Sub-relatrios devem ser colocados um
embaixo do outro. Utilize uma banda filho para cada Sub-relatrio e conecte-os em cadeia,
configurando a propriedade child de Child1 como Child2, e assim por diante.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios aninhados (sub-relatrios)

5.4

79

Op o PrintOnParent
O objeto "Sub-relatrio" possui a propriedade "PrintOnParent" que s vezes pode ser til. Esta
propriedade configurada como False por padr o.
Normalmente um sub-relatrio exibido como um conjunto de bandas na pgina de relatrio
bsica. Quando isso acontece, a altura da banda pai que contm o objeto "Sub-relatrio" n o
controlada pelas bandas no sub-relatrio, ou seja, ela n o pode ser estendida. Se a propriedade
"PrintOnParent" do sub-relatrio for configurada como True no inspetor de objetos ou no menu
de contexto, os objetos no sub-relatrio s o impressos fsicamente na banda que contm o
objeto "Sub-relatrio". Esta banda pode ser estendida e pode ter objetos estendidos colocados
nela:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

VI
Script

Script

81

Um script um programa escrito em uma linguagem de alto nvel que faz parte do relatrio.
Conforme o relatrio executado, o script tambm executado. Um script pode gerenciar
dados de maneiras que n o s o possveis usando as operaes normais do nucleo do
FastReport; por exemplo, um script pode ocultar dados redundantes dependendo de uma
condi o predefinida. Tambm possvel utilizar um script para controlar as propriedades de
formulrios de dilogo que fazem parte de um relatrio.
Um script escrito em uma das linguagens suportadas pelo mecanismo de scripts
(FastScript). Estas s o as linguagens que s o suportadas atualmente:
- PascalScript
- C++Script
- BasicScript
- JScript
Os recursos a seguir s o suportados pelo mecanismo FastScript:
- conjunto padr o da linguagem: variveis, constantes, procedimentos, funes (que podem
ser aninhadas e podem possuir variveis, constantes, parmetros padr o), todos os
operadores padr o (incluindo case, try, finally, except, with), tipos (integral, fracional, lgico,
caractere, linha, arrays multidimensionais, variante), classes (com mtodos, eventos,
propriedades, ndices e propriedades padr o)
- verifica o de compatibilidade de tipos
- acesso a todos os objetos do relatrio
No entanto, o FastScript n o suporta o seguinte:
- declaraes deste tipo: registros, classes
- ponteiros, conjuntos (porm possvel usar o operador 'IN' em expresses como "a in
['a'..'c','d']")
- tipo shortstring
- saltos incondicionais (GOTO)
Os scripts podem ser criados no designer do FastReport, que contm um editor de scripts com
realce de sintaxe. Tambm h um depurador embutido que possui as seguintes funes:
"Step", "Breakpoint", "Run to cursor" e "Evaluate".

6.1

Um gostinho de script
As ferramentas para trabalhar com os scripts est o localizadas na guia "Cdigo" do designer
do FastReport. Ao abrir esta guia, o IDE tem este aspecto:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

82

FastReport VCL 5 User's Manual

Legenda dos rtulos acima:


1
2
3
4

guia "Cdigo"
painel do editor de scripts
lista suspensa para selecionar a linguagem na qual escrito o script
barra de ferramentas do depurador
- executar o relatrio no modo de depura o (F9)
- executar at o cursor (F4)
- executar a linha de cdigo regular (Seguir Dentro, F7)

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

83

- interromper a execu o de um script (Ctrl+F2)


- visualizar o valor de uma express o (Avaliar, Ctrl+F7)
- alternar o ponto de parada (F5)
5 painel "Relgios"
6 os indicadores e pontos de parada s o exibidos nesta coluna; a linha do cdigo em
execu o tambm realada aqui
A lista de teclas de atalho que podem ser usadas no editor de scripts:
Tecla

Significado

teclas de dire o

movem o cursor

PageUp, PageDown

ir para a pgina anterior/prxima

Ctrl+PageUp

ir para o incio do texto

Ctrl+PageDown

ir para o final do texto

Home

ir para o incio da linha

End

ir para o fim da linha

Enter

ir para a prxima linha

Delete

excluir smbolo na posi o do cursor; excluir texto selecionado

Backspace

excluir o smbolo esquerda do cursor

Ctrl+Y

excluir a linha atual

Ctrl+Z

desfazer a ltima a o (at 32 eventos)

Shift+teclas de dire o

selecionar um bloco de texto

Ctrl+A

selecionar todo o texto

Ctrl+U

deslocar o bloco selecionado 2 smbolos para a esquerda

Ctrl+I

deslocar o bloco selecionado 2 smbolos para a direita

Ctrl+C, Ctrl+Insert

copiar o bloco selecionado para a rea de transferncia

Ctrl+V, Shift+Insert

colar texto da rea de transferncia

Ctrl+X, Shift+Delete

cortar o bloco selecionado para a rea de transferncia

Ctrl+Shift+<nmero>

definir um indicar com <nmero> 0..9 na linha atual

Ctrl+<nmero>

saltar para o indicador <nmero>

Ctrl+F

pesquisar uma linha

Ctrl+R

substituir uma linha

F3

pesquisa/substitui o repetida a partir da posi o do cursor

F4

definir ponto de parada para a execu o do script (Executar at


o cursor)

Ctrl+F2

redefinir o script

Ctrl+F7

visualizar o valor da varivel (Avaliar)

F9

executa o script (Executar)

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

84

6.2

FastReport VCL 5 User's Manual

F7 or F8

executar a linha de cdigo (Seguir dentro)

Ctrl + Espao

exibir lista de mtodos e propriedades do objeto

Ctrl+Shift+Delete

excluir a palavra direita do cursor

Ctrl+Shift+Backspace

excluir a palavra esquerda do cursor

Estrutura de um script
A estrutura de um script depende da linguagem utilizada. No entanto, h alguns elementos que
as linguagens tm em comum: o ttulo e o corpo do script, e o procedimento principal que
executado quando o relatrio executado. Abaixo h exemplos de scripts nas quatro
linguagens suportadas:
Estrutura de PascalScript:
#language PascalScript // opcional
program MyProgram;
// opcional
// o captulo "uses" deve estar localizado antes de qualquer outro captulo
uses 'unit1.pas', 'unit2.pas';
var
qualquer lugar
i, j: Integer;

// o captulo "variables" pode ser colocado em

const
pi = 3.14159;

// captulo "constants"

procedure p1;
var
i: Integer;

// procedimentos e funes

procedure p2;
begin
end;

// procedimento aninhado

begin
end;
begin
end.

// procedimento principal.

Estrutura de C++Script:
#language ++Script

// opcional

// o captulo "include" deve ser colocado antes de qualquer outro captulo


#include "unit1.cpp", "unit2.cpp"

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

85

int i, j = 0;
qualquer lugar

// o captulo "variables" pode ser colocado em

#DEFINE pi = 3.14159

// captulo "constants"

void p1()
{
}

// funes
// sem procedimentos aninhados

{
}

// procedimento principal.

Estrutura de JScript:
#language JScript

// opcional

// o captulo "import" deve ser colocado antes de qualquer outro captulo


import "unit1.js", "unit2.js"
var i, j = 0;
qualquer lugar

// o captulo "variables" pode ser colocado em

function p1()
{
}

// funes
//

// procedimento principal.
p1();
for (i = 0; i < 10; i++) j++;

Estrutura de BasicScript:
#language BasicScript

' opcional

' o captulo "imports" deve ser colocado antes de qualquer outro captulo
imports "unit1.vb", "unit2.vb"
Dim i, j = 0
qualquer lugar

' o captulo "variables" pode ser colocado em

Function p1()
{
}

' funes
'
' procedimento principal.

For i = 0 To 10
p1()
Next

Mais adiante iremos dar uma olhada em scripts escritos na linguagem "PascalScript". Quando
um relatrio novo criado, esta linguagem selecionada por padr o.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

86

6.3

FastReport VCL 5 User's Manual

Script "Ol, Mundo!"


J vimos um exemplo de um relatrio "Ol, Mundo!". Agora vamos ver como criar um script
simples que exibe uma janela com a mesma sauda o.
Abra o designer e clique no bot o "Novo Relatrio" para que o FastReport crie automaticamente
um modelo bsico. Abra a guia "Cdigo" e escreve o script a seguir:
PascalScript:
begin
ShowMessage('Ol, Mundo!');
end.

C++ Script:
{
ShowMessage("Ol, Mundo!");
}

Depois disso execute o relatrio. Conforme esperado, o FastReport exibe uma pequena caixa
de dilogo com a sauda o:

Vamos explicar alguns detalhes. Criamos um script que composto de um nico bloco "begin
end". Desta forma, nosso script possui uma estrutura muito simples; ele composto apenas
de um procedimento principal (consulte a se o "Estrutura de um script" acima). O
procedimento principal executado assim que o relatrio executado. Neste caso, ele exibiu
uma caixa de dilogo de sauda o, e o procedimento concludo aps fechar a caixa de
dilogo. Depois do trmino da execu o do procedimento principal, a cria o normal do
relatrio iniciada.

6.4

Usando objetos no script


Qualquer objeto do relatrio pode ser acessado por um script. Deste modo, se houver uma
pgina "Page1" e um objeto "Memo1", por exemplo, eles podem ser usados no script ao
cham-los usando seus nomes:
PascalScript:
Memo1.Color := clRed

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

87

C++Script:
Memo1.Color = clRed

A lista de objetos do relatrio que podem ser acessados pelo script exibida no painel "rvore
do Relatrio". Quais propriedades do objeto est o disponveis para um script? A resposta
simples: todas que est o visveis no inspetor de objetos. O inspetor de objetos tambm mostra
dicas de cada propriedade na parte inferior. Ambos os painis (a rvore do relatrio e o inspetor
de objetos) permanecem disponveis ao trabalhar em um script. Para obter ajuda detalhada
sobre as propriedades do objeto e os mtodos, consulte o arquivo de ajuda do FastReport que
includo no kit de distribui o.
Aqui h um exemplo simples. Coloque um objeto "Texto" com o nome "MyTextObject" que
contm "Test" na pgina de design do relatrio. Ent o escreva este script:
PascalScript:
begin
MyTextObject.Color := clRed
end.

C++Script:
{
MyTextObject.Color = clRed
}

Execute o relatrio e veja que a cor do objeto vermelha.

6.5

Chamando as variveis da lista de variveis do relatrio


Toda varivel que definida na lista de variveis do relatrio (item de menu "Relatrio >
Variveis...") pode ser referenciada em um script. O nome da varivel deve estar entre
chevrons:
PascalScript:
if <minha varivel> = 10 then ...

C++ Script:
if (<minha varivel> == 10) { ... }

Uma maneira alternativa utilizar a fun o "Get":


PascalScript:
if Get('minha varivel') = 10 then ...

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

88

FastReport VCL 5 User's Manual

C++ Script:
if (Get("minha varivel") == 10) { ... }

O valor de uma varivel alterado apenas atravs do procedimento "Set":


PascalScript:
Set('minha varivel', 10);

C++ Script:
Set("minha varivel", 10);

Vale a pena observar que para atribuir um valor de string varivel, voc deve colocar o valor
entre aspas:
PascalScript:
Set('minha varivel', '''' + 'String' + '''');

C++ Script:
Set("minha varivel", "\"String\"");

Variveis de sistema, como "Page#", devem ser referenciadas exatamente da mesma maneira:
PascalScript:
if <Page#> = 1 then ...

C++ Script:
if (<Page#> == 1) { ... }

6.6

Referenciando os campos de BD
Assim como nas variveis, necessrio usar chevrons ao referenciar campos de BD em um
relatrio:
PascalScript:
if <Table1."Field1"> = Null then...

C++ Script:
if (<Table1."Field1"> == Null) { ... }

De forma alternativa, possvel usar a fun o "Get" para acessar campos de BD (na verdade
esta fun o usada implicitamente por FastReport ao calcular expresses dentro de

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

89

chevrons).

6.7

Utilizar funes de agrega o no script


uma peculiaridade das funes de agrega o que elas devem ser usadas dentro de objetos
"Texto"; uma vez usadas desta maneira, elas podem ser usadas no script em si. Se uma
fun o de agrega o aparecer apenas em um script (sem aparecer em um objeto "Texto"),
gerada uma mensagem de texto. Isso acontece porque uma fun o de agrega o deve estar
conectada a uma banda especfica. Se ela estiver conectada, ela ir funcionar corretamente.

6.8

Exibir o valor de uma varivel em um relatrio


Variveis podem ser declaradas e usadas localmente dentro de um script. Uma vez declarada,
uma varivel de script pode ter um valor atribudo a ela. Aqui segue um exemplo simples de
uma varivel de script sendo utilizada:
PascalScript:
var
MyVariable: String;
begin
MyVariable := 'Ol!';
end.

C++ Script:
string MyVariable;
{
MyVariable = "Ol!";
}

O valor da varivel pode ser exibido em um objeto "Texto", por exemplo, ao digitar '[MyVariable]'
no objeto.
O nome de uma varivel deve ser nico. Isso significa que o nome n o deve duplicar o nome de
outro objeto do relatrio, de uma fun o padr o ou constante. Se houver um erro em um script,
exibida uma mensagem quando o relatrio for executado e a cria o do relatrio parada.

6.9

Eventos
At agora nos vimos scripts com apenas um procedimento principal que executado quando o
relatrio executado. No procedimento principal possvel efetuar configuraes iniciais e
inicializar variveis. No entanto, isso n o suficiente para obter o controle total sobre o
processo da gera o de relatrios. Para obter o mximo de controle possvel sobre a gera o
de relatrios, cada objeto possui diversos eventos aos quais possvel atribuir manipuladores
(ou seja, procedimentos no script). Por exemplo, conectar um manipulador banda de dados
permite a filtragem de registros, de modo que a banda pode ser ocultada ou revelada de acordo

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

90

FastReport VCL 5 User's Manual

com condies especficas.


Vamos demonstrar o processo da cria o do relatrio e os eventos disparados atravs de um
relatrio simples que contm uma pgina e possui uma banda "Dados Mestre", com dois
objetos "Texto" na banda:

Conforme descrito acima, o procedimento principal do script chamado no incio da


execu o do relatrio. Depois disso comeam as partes essenciais da cria o do relatrio.
Primeiro chamado o evento "OnStartReport" do objeto "Relatrio". Ent o, antes de criar uma
pgina de sada, o evento "OnBeforePrint" chamado. Este evento chamado uma vez para
cada pgina de design no modelo do relatrio (pginas de design n o devem ser confundidas
com as pginas de sada de um relatrio!). Em nosso exemplo, o evento chamado uma vez,
j que o design do relatrio composto de apenas uma pgina de design.
Ent o os eventos das bandas de dados s o chamados na seguinte ordem:
1. o evento "OnBeforePrint" da banda chamado
2. o evento "OnBeforePrint" de cada objeto contido na banda chamado
3. cada objeto preenchido com dados (em nosso exemplo, com valore dos campos
"Company" e "Addr1")
4. o evento "OnAfterData" de cada objeto chamado
5. aes como posicionar objetos na banda (se houver objetos extensveis entre eles),
calcular a altura da banda e estend-la (se ela for extensvel) s o executadas
6. o evento "OnAfterCalcHeight" da banda chamado
7. criada uma nova pgina de sada se a banda n o possuir espao suficiente no espao em
branco da pgina
8. a banda e todos os seus objetos s o exibidos na pgina de sada
9. o evento "OnAfterPrint" de cada banda chamado
10. o evento "OnAfterPrint" da banda em si chamado
As bandas continuam a ser impressas enquanto a fonte conectada banda tiver dados. Depois
que a impress o do relatrio concluda, chamado o evento "OnAfterPrint" da pgina do
relatrio, e finalmente o evento "OnStopReport" do objeto "Relatrio".
Dessa maneira, ao usar os eventos de objetos diferentes, praticamente cada etapa do
processo de cria o de um relatrio pode ser gerenciado. O mais importante ao usar eventos
um entendimento profundo do processo de sada de bandas, que discutido nas prximas
nove sees. A maior parte das aes pode ser executada usando apenas o evento
"OnBeforePrint" da banda; qualquer modifica o efetuada em um objeto exibida
imediatamente. No entano, se a banda for extensvel, impossvel afirmar em que pgina ser
impressa a banda neste evento, j que o clculo da altura da banda executada na etapa 5. No
entanto, isso pode ser feito no evento "OnAfterCalcHeight" na etapa 6 ou no evento
"OnAfterPrint" na etapa 9. Observe que no ltimo evento a banda j vai ter sido exibida, ent o a
modifica o de objetos n o ter nenhum efeito visvel.
essencial entender claramente "onde e quando" as bandas s o exibidas, e entender o timing

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

91

(ordem de chamada) de cada um de seus eventos. Isso tambm vlido para cada um dos
objetos contidos nas bandas.

6.10

Exemplo de uso do evento "OnBeforePrint"


Para demonstrar esse evento, crie um relatrio que apresenta uma lista de clientes. Este
relatrio ir incluir apenas as empresas cujo nome comece com "A".
Abra o designer de relatrios e crie um relatrio como este:

Selecione a banda de dados e abra a guia "Eventos" no inspetor de objetos:

Para criar um manipulador de eventos "OnBeforePrint" (que o mais apropriado para ns),
clique duas vezes no campo em branco direita do nome do evento:

Isso adiciona um manipulador em branco ao script e o designer abre a guia "Cdigo".

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

92

FastReport VCL 5 User's Manual

Tudo que precisamos fazer agora digitar o seguinte cgido no corpo do manipulador:
PascalScript:
if Copy(<Customers."Company">, 1, 1) = 'A' then
MasterData1.Visible := True
else
MasterData1.Visible := False;

C++Script:
if (Copy(<Customers."Company">, 1, 1) == "A")
MasterData1.Visible = true;
else
MasterData1.Visible = false;

Execute o relatrio e certifique-se de que o script est funcionando corretamente:

Vamos explicar diversas coisas. Um manipulador pode ser atribudo aos eventos de mais de
um objeto
o parmetro "Sender" exibe qual objeto iniciou o evento. Para atribuir um
manipulador existente ao um evento, digite-o diretamente no inspetor de objetos ou selecione-o
na lista suspensa:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

93

fcil excluir o link para um manipulador - selecione o manipulador atribudo no inspetor de


objetos e aperte a tecla "Delete".

6.11

Imprimir um total de grupo no cabealho do grupo


Este mtodo usado com frequncia e requer o uso de um script, j que o valor de um total de
grupo somente conhecido aps processar todos os registros no grupo. Para exibir o total no
cabealho do grupo (ou seja, antes que o grupo seja exibido no relatrio) utilizado o seguinte
algoritmo:
- ative a op o de relatrio dois passos (item de menu "Relatrio > Opes...")
- no primeiro passo, calcule o total de cada grupo e salve-os em um array
- no segundo passo, extraia os valores do array e exiba-os nos cabealhos dos grupos
Vamos demonstrar dois mtodos de executar esta tarefa. Crie um relatrio novo. Coloque o
componente "Consulta ADO" na pgina e configura sua propriedade SQL:
SQL =
select * from customer, orders
where orders.CustNo = customer.CustNo
order by customer.CustNo, orders.OrderNo
UserName = 'Group'
Habilite dois passos nas configuraes do relatrio (item de menu "Relatrio > Opes...").
Adicione duas bandas ao relatrio: "Cabealho de Grupo" e "Dados Mestre". No editor da banda
"Cabealho de Grupo", insira o campo de dados Group."CustNo". Conecte a banda de dados
fonte de dados "Group" e arranje alguns objetos da seguinte maneira:

Para exibir o total, usamos o objeto com a seta no design (em nosso exemplo ele chamado
de "Memo8").

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

94

FastReport VCL 5 User's Manual

O primeiro mtodo.
Usaremos a classe "TStrigList" como um array para armazenar os totais vamos armazenar
os valores numricos como cadeias. O primeiro item na StringList corresponder ao total do
primeiro grupo, etc. Uma varivel de nmero inteiro (que iremos incrementar aps imprimir
cada grupo) usada para calcular o nmero de ndice do grupo.
Ent o nosso script ter o seguinte aspecto:
PascalScript:
var
List: TStringList;
i: Integer;
procedure frReport1OnStartReport(Sender: TfrxComponent);
begin
List := TStringList.Create;
end;
procedure frReport1OnStopReport(Sender: TfrxComponent);
begin
List.Free;
end;
procedure Page1OnBeforePrint(Sender: TfrxComponent);
begin
i := 0;
end;
procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);
begin
if Engine.FinalPass then
Memo8.Text := 'Sum: ' + List[i];
end;
procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
begin
if not Engine.FinalPass then
List.Add(FloatToStr(SUM(<Group."ItemsTotal">,MasterData1)));
Inc(i);
end;
begin
end.

C++ Script:
TStringList List;
int i;
void frReport1OnStartReport(TfrxComponent Sender)

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

95

{
List = TStringList.Create();
}
void frReport1OnStopReport(TfrxComponent Sender)
{
List.Free();
}
void Page1OnBeforePrint(TfrxComponent Sender)
{
i = 0;
}
void GroupHeader1OnBeforePrint(TfrxComponent Sender)
{
if (Engine.FinalPass)
Memo8.Text = "Sum: " + List[i];
}
void GroupFooter1OnBeforePrint(TfrxComponent Sender)
{
List.Add(FloatToStr(SUM(<Group."ItemsTotal">,MasterData1)));
i++;
}
{
}

Os nomes dos procedimentos no script mostram quais eventos utilizamos. Eles s o: "Report.
OnStartReport",
"Report.OnStopReport",
"Page1.OnBeforePrint",
"GroupHeader1.
OnBeforePrint" e "GroupFooter1.OnBeforePrint". Os primeiros dois eventos s o chamados no
incio e no final do relatrio, respectivamente. Para criar manipuladores para estes dois eventos,
selecione o objeto "Report" na lista suspensa do inspetor de objetos e suas propriedades ser o
exibidas no inspetor de objetos. Ent o abra a guia "Eventos" do inspetor de objetos e crie os
manipuladores.
Por que n o criamos a varivel "List" no procedimento principal do script? Nos a criamos no
evento "OnStartReport" porque variveis criadas dinamicamente devem ser destrudas aps
concluir o relatrio. lgico criar variveis dinmicas no evento "OnStarReport" e destru-las no
evento "OnStopReport". Em outros casos (quando a memria n o precisa ser liberada na
conclus o do script) possvel usar o procedimento principal do script para a inicializa o de
variveis.
A cria o e destrui o da varivel "List" simples. Agora vamos ver como o script funciona. No
incio da pgina, o contador do grupo atual (a varivel "i") redefinida como zero e
incrementada aps a impress o de cada grupo (no evento "GroupFooter1.OnBeforePrint"). O
total calculado adicionado a "List" neste evento antes de incrementar o contador. O evento
"GroupHeader1.OnBeforePrint" n o faz nada no primeiro passo (condi o if "Engine.
FinalPass"), mas durante o segundo passo (quando "List" foi preenchida com valores) o total
que corresponde ao grupo atual recuperado de "List" e a sada enviada para o objeto
"Memo8" para exibir o total no cabealho do grupo. No relatrio concludo, o total exibido desta

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

96

FastReport VCL 5 User's Manual

maneira:

Este algoritmo bastante simples. No entanto, ele pode ser simplificado ainda mais.
O segundo mtodo.
Vamos usar a cole o de variveis do relatrio como um array para armazenar os totais dos
grupos. Lembre-se de que as variveis do relatrio s o acessadas atravs das funes "Get" e
"Set". Usar estas funes tambm nos poupa de ter que criar e destruir estas variveis de
maneira explcita. Este ser nosso script:
PascalScript:
procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);
begin
if Engine.FinalPass then
Memo8.Text := 'Sum: ' + Get(<Group."CustNo">);
end;
procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
begin
Set(<Group."CustNo">,
FloatToStr(SUM(<Group."ItemsTotal">,MasterData1)));
end;
begin
end.

C++ Script:
void GroupHeader1OnBeforePrint(TfrxComponent Sender)
{
if (Engine.FinalPass)
Memo8.Text = "Sum:" + Get(<Group."CustNo">);
}
void GroupFooter1OnBeforePrint(TfrxComponent Sender)
{
Set(<Group."CustNo">,

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

97

FloatToStr(SUM(<Group."ItemsTotal">,MasterData1)));
}
{
}

Como voc pode ver, este script um pouco mais simples. O cdigo no manipulador
"GroupFooter1.OnBeforePrint" define o valor de uma varivel que possui um nome derivado do
nmero do cliente (tambm possvel usar qualquer outro identificador que identifique o cliente
de maneira n o ambgua, por exemplo <Group."Company">). Se n o existir nenhuma varivel
com este nome, o script a cria automaticamente; de outro modo, se ela existir, seu valor
atualizado. O valor da varivel apropriada recuperado no manipulador "GroupHeader1.
OnBeforePrint".

6.12

Evento "OnAfterData"
Este evento disparado depois que um objeto do relatrio tenha sido preenchido com os dados
da fonte qual est conectado. Use este evento para acessar o valor de um campo de BD ou
uma express o contida no objeto. Este valor colocado na varivel de sistema "Value", que
disponibilizada somente neste evento. Ent o, se dois objetos "Textos" possuirem as
expresses [Table1."Field1"] e [<Table2."Field1"> + 10], os valores destas expresses podem
ser utilizados ao se referir varivel "Value" dos objetos:
PascalScript:
if Value > 3000 then
Memo1.Color := clRed

C++ Script:
if (Value > 3000)
Memo1.Color = clRed;

o que mais simples do que escrever algo parecido com isto:


PascalScript:
if <Table1."Field1"> > 3000 then
Memo1.Color := clRed

C++ Script:
if (<Table1."Field1"> > 3000)
Memo1.Color = clRed;

Usar "Value" em vez de uma express o habilita voc a escrever um manipulador multiuso para
o evento "OnAfterData", que pode ser conectado a diversos objetos.
Observe tambm outra coisa: se um objeto possuir diversas expresses (por exemplo '[expr1]

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

98

FastReport VCL 5 User's Manual

[expr2]'), o valor da ltima express o transferido varivel "Value".


O evento "OnAfterData" ideal para calcular a altura e largura de objetos como "Texto". Isto ,
se em um script for necessrio obter a altura exata de um objeto "Texto" estendido que contm
uma express o, possvel usar este cdigo no evento "OnAfterData":
PascalScript:
var
MemoHeight: Extended;
begin
MemoHeight := TfrxMemoView(Sender).CalcHeight;
end;

C++ Script:
float MemoHeight;
MemoHeight = TfrxMemoView(Sender).CalcHeight;

Se este cdigo fosse usado no evento "OnBeforePrint", o resultado seria a altura do objeto que
contm a express o antes da express o ser avaliada, e n o seu valor real na impress o.

6.13

Objetos de servio
H outros objetos de sistema que podem ser utilizados em script, junto aos objetos de relatrio
normais como pginas, bandas, "Texto" e outros. Eles podem ser teis no gerenciamento da
constru o do relatrio. O objeto "Engine", usado no captulo anterior, um objeto deste tipo, e
todos s o listados aqui:
- Report : o objeto "Relatrio"
- Engine : o link ao "Mecanismo" do relatrio
- Outline : o link ao elemento "rvore do Rlatrio" em um relatrio visualizado
Vamos dar uma olhada em cada um destes objetos.

6.13.1 Objeto "Report"


Este objeto representa um link para o relatrio atual. As propriedades deste objeto podem ser
vistas ao selecionar o elemento "Report" na janela "rvore do Relatrio".
Mtodos:
Mtodo
function Calc
(const Expr: String): Variant

function GetDataSet

FastReport v4 1998-2014 Fast Reports Inc.

Descri o
retorna o valor de "Expr", que uma express o
por exemplo, Report.Calc('1+2') retorna "3"
qualquer express o vlida do FastReport pode ser
passada no parmetro
retorna o conjunto de dados que possuir o nome

Manual v5.0.0

Script

(const Alias: String): TfrxDataSet

99

especificado
o conjunto de dados deve ser exibido na lista de
conjuntos de dados do relatrio
(caixa de dilogo "Relatrio > Dados...")

6.13.2 Objeto "Engine"


Os mtodos e as propriedades deste objeto.
Propiedade

Tipo

Descri o

CurColumn

Integer

CurX

Extended

CurY

Extended

DoublePass

Boolean

FinalPass

Boolean

PageHeight

Extended

o ndice da coluna atual em um relatrio com diversas


colunas
possvel atribuir um valor a esta propriedade.
a posi o de impress o atual no eixo X
possvel atribuir um valor a esta propriedade.
a posi o de impress o atual no eixo Y
possvel atribuir um valor a esta propriedade.
igual a "True" se o relatrio for de dois passos
anloga a Report.EngineOptions.DoublePass.
igual a "True" quando estiver no ltimo passo de um
relatrio de dois passos
altura de impress o da rea, em pixels

PageWidth

Extended

largura de impress o da rea, em pixels

StartDate

TDateTime tempo de execu o do relatorio


igual varivel de sistema <Date>
StartTime
TDateTime tempo de execu o do relatorio
igual varivel de sistema <Time>
TotalPages
Integer
o nmero de pginas em um relatrio
igual varivel de sistema <TotalPages>
o relatrio deve ser de dois passos se esta varivel for
usada
SecondScriptcall Boolean
sinalizador que retorna o status 'repeat-call' de um evento
(em alguns casos um evento pode ser chamado
repetidamente durante o agrupamento)
se for igual a True, o script j foi chamado
Mtodos:
Mtodo
procedure AddAnchor
(const Text: String)
procedure NewColumn

FastReport v4 1998-2014 Fast Reports Inc.

Descri o
adiciona "Text" lista de ncoras
veja mais abaixo
cria uma nova coluna em um relatrio com vrias colunas
aps a ltima coluna, uma quebra de pgina inserida
automaticamente

Manual v5.0.0

100

FastReport VCL 5 User's Manual

procedure NewPage

cria uma pgina nova (quebra de pgina)

procedure ShowBand
(Band: TfrxBand)

exibe uma banda com o nome especificado


aps exibir a banda, a posi o "CurY" incrementada
automaticamente
function FreeSpace: Extended retorna a altura do espao em branco que sobra na pgina
em pixels.
function GetAnchorPage
retorna o nmero da pgina onde foi colocada a ncora
(const Text: String): Integer
especificada

6.13.3 Objeto "Outline"


Este objeto representa o elemento de controle "rvore do Relatrio" em um relatrio
visualizado.

"Outline" exibe uma estrutura tipo rvore do relatrio concludo. Quando um n da rvore
clicado, o painel de visualiza o abre a pgina referida no n. Para exibir "Outline", ele deve ser
habilitado ao clicar no bot o na barra de ferramentas da janela de visualiza o ou ao configurar
a propriedade "Report.PreviewOptions.OutlineVisible" como True. A largura de "Outline" em
pixels tambm pode ser configurada ali: "Report.PreviewOptions.OutlineWidth".
Estes s o os mtodos de "Outline":

Mtodo
procedure AddItem
(const Text: String)

Descri o

procedure LevelRoot

adiciona um elemento que possui o nome "Text" na posi o atual da


rvore
a pgina atual do relatrio e a posi o na pgina s o vinculados ao
elemento
move a posi o atual na rvore para o nvel raiz

procedure LevelUp

eleva a posi o atual na rvore por um nvel

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

6.14

101

Utiliza o do objeto "Engine"


J dissemos que o objeto "Engine" representa o mecanismo do relatrio que gerencia a
constru o do relatrio. O processo de arranjar as bandas na pgina pode ser gerenciado ao
usar as propriedades e mtodos de Engine. Primeiro vamos ver um pouco de teoria.
O diagrama abaixo mostra diversas dimenses da pgina do relatrio.

As dimenses fsicas da pgina s o as propriedades "PaperWidth" e "PaperHeight", que se


tornam visveis no inspetor de objetos quando a pgina for selecionada. Ent o o tamanho de
uma pgina A4 210 x 297 mm.
"PageWidth" e "PageHeight" s o as dimenses da rea de impress o, que normalmente
menor que as dimenses fsicas da pgina. O tamanho da rea de impress o depende das
prpriedades da pgina do relatrio "LeftMargin", "TopMargin", "RightMargin" e "BottomMargin".
O tamanho da rea de impress o em pixels retornado pelas funes "Engine.PageWidth" e
"Engine.PageHeight".
Finalmente, "FreeSpace" a altura do espao livre em uma pgina. Se houver uma banda
"Rodap da Pgina" na pgina, sua altura includa no clculo de "FreeSpace". A altura
retornada em pixels na fun o "Engine.FreeSpace". Observe que aps exibir a prxima banda,
o espao livre reduzido na pgina, e isto levado em conta ao calcular "FreeSpace".
Como s o construdas as pginas do relatrio? O ncleo do FastReport exibe bandas em uma
pgina enquanto houver espao livre suficiente. Quando n o sobrar mais espao livre, a banda
"Rodap da Pgina" impressa (se necessrio) e uma nova pgina em branco criada. Como
j foi dito, aps exibir a prxima banda, a altura do espao livre reduzida. Alm disso, a
exibi o da prxima banda comea na posi o atual, que definida pelas coordenadas no eixo
X e Y. A posi o atual retornada por "Engine.CurX" e "Engine.CurY", respectivamente. Aps
imprimir a prxima banda, CurY incrementada com a altura da banda impressa. Aps a

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

102

FastReport VCL 5 User's Manual

cria o de uma nova pgina, "CurY" igual a "0". "CurX" alterada ao imprimir relatrios com
diversas colunas.
"Engine.CurX" e "Engine.CurY" est o disponveis n o somente para a leitura, mas tambm para
a grava o. Isso significa que as bandas podem ser deslocadas ao incrementar ou reduzir
estes valores. Por exemplo, em um relatrio parecido com este:

ele pode ser impresso desta maneira:

Isso obtido ao escrever um manipulador do evento "OnBeforePrint" da banda:


PascalScript:
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
Engine.CurX := Engine.CurX + 5;
end;

C++ Script:
void MasterData1OnBeforePrint(TfrxComponent Sender)
{
Engine.CurX = Engine.CurX + 5;
}

Alterar "CurY" pode sobrepor as bandas, por exemplo:

obtido por este script:


PascalScript:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

103

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);


begin
Engine.CurY := Engine.CurY - 15;
end;

C++ Script:
void MasterData1OnBeforePrint(TfrxComponent Sender)
{
Engine.CurY = Engine.CurY - 15;
}

O mtodo "Engine.NewPage" insere uma quebra de pgina em qualquer ponto necessrio em


um relatrio, depois da qual a impress o continua do topo da nova pgina de sada. Em nosso
exemplo possvel inserir uma quebra aps imprimir o segundo registro:
PascalScript:
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
begin
if <Line> = 2 then
Engine.NewPage;
end;

C++ Script:
void MasterData1OnAfterPrint(TfrxComponent Sender)
{
if (<Line> == 2)
Engine.NewPage();
}

Observe que usamos o evento "OnAfterPrint" (ou seja, aps imprimir a pgina). Tambm
observe que a varivel de sistema "Line" retorna o nmero sequencial do registro.
O mtodo "Engine.NewColumn" insere uma quebra de coluna em relatrios com diversas
colunas. Se n o houver mais colunas livres na pgina, uma nova pgina criada.

6.15

ncoras
Uma ncora um dos elementos no sistema de hiperlinks que permite saltar para qualquer
elemento conectado ao objeto do relatrio concludo ao clicar nele (na janela de visualiza o).
A ncora pode ser configurada atravs do mtodo "Engine.AddAnchor". Uma ncora possui um
nome e uma posi o na pgina de um relatrio. Para saltar para uma ncora com um nome
especificado, digite a seguinte linha na propriedade URL de qualquer objeto do relatrio:
#AnchorName
ou

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

104

FastReport VCL 5 User's Manual

#[AnchorName]
No segundo caso o FastReport substitui um valor pela express o.
Ao clicar no objeto, um salto executado para o local do relatrio onde foi adicionada a ncora.
Use ncoras ao construir uma tabela de "Contedo", por exemplo com links para captulos
correspondentes. Vamos ilustrar isso no exemplo a seguir. Primeiro precisamos da familiar
tabela "Clientes".
Nosso relatrio ter diversas pginas (com duas pginas de design). Colocaremos a tabela de
"Contedo" na primeira pgina e a lista de clientes na segunda pgina. Um clique em qualquer
linha de Contedo executa um salto at o elemento correspondente do relatrio.
A primeira pgina de design:

Coloque o seguinte texto na propriedade URL do objeto "Texto" contido na banda de dados
#[Customers."Company"]
e configure as propriedades da fonte como azul e sublinhado para simular o aspecto de um
hiperlink.
A segunda pgina de design:

Para adicionar uma ncora, crie um manipulador de eventos "MasterData2.OnBeforePrint" no


script:
PascalScript:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

105

procedure MasterData2OnBeforePrint(Sender: TfrxComponent);


begin
Engine.AddAnchor(<Customers."Company">);
end;

C++ Script:
void MasterData2OnBeforePrint(TfrxComponent Sender)
{
Engine.AddAnchor(<Customers."Company">);
}

Isso tudo que necessrio. Visualize o relatrio e certifique-se de que todos os "hiperlinks"
estejam funcionando.
O ltimo item a ser mencionado a fun o "Engine.GetAnchorPage". Esta fun o retorna o
nmero da pgina qual foi adicionada a ncora correspondente, e util ao criar a tabela
"Contedo". O relatrio deve ter dois passos ou a fun o n o pode ser utilizada.

6.16

Utiliza o do objeto "Outline"


Como foi afirmado anteriormente, o objeto "Outline" representa a rvore do relatrio que pode
ser exibida na janela de visualiza o. Clicar em um elemento da rvore executa um salto para a
pgina de sada do relatrio que contm o elemento correspondente. N o necessrio usar um
script para trabalhar com um "Outline", j que algumas bandas s o capazes de criar uma
rvore automaticamente. Vamos dar uma olhada em dois exemplos que mostram como
"Outline" pode ser utilizado com a ajuda de bandas e um script.
Quase todas as bandas possuem a propriedade "OutlineText" para conter uma express o que
cria a rvore automaticamente. A express o avaliada ao criar o relatrio, e seu valor
adicionado rvore quando a banda impressa. Desta maneira a hierarquia de elementos na
rvore similar hierarquia de bandas no relatrio, o que significa que a rvore ter elementos
principais e subordinados que correspondem s bandas principais e subordinadas no relatrio
(por exemplo, onde o relatrio tiver dois nveis de dados ou tiver grupos). Vamos usar nosso
exemplo anterior para mostrar a opera o de uma rvore em um relatrio que possui grupos.

Configure o valor da propriedade da banda "GroupHeader1.OutlineText" como


"<Group."Company">". Para deixar a rvore visvel quando a janela de visualiza o for aberta,
configure a propriedade "PreviewOptions.OutlineVisible" do objeto "Report" como True. Ao
visualizar o relatrio, voc ver o seguinte:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

106

FastReport VCL 5 User's Manual

Clicar em qualquer elemento da rvore executa um salto para a pgina correspondente no


relatrio, com o elemento selecionado no topo da janela.
Vamos adicionar o segundo nvel rvore do relatrio. Apenas configure a propriedade
"OutlineText" da banda "DadosMestre" como "<Group."OrderNo">" e a rvore ser alterada
desta maneira:

evidente possvel obter uma navega o at os nmeros dos pedidos, e que a hierarquia
dos elementos na rvore similar quela no relatrio.
Agora criaremos uma rvore parecida, mas usando um script em vez da propriedade
"OutlineText". No relatrio, limpe as propriedades "OutlineText" de ambas as bandas e crie dois
manipuladores de eventos:
"GroupHeader1.OnBeforePrint" e "MasterData1.OnBeforePrint":

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

107

PascalScript:
procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);
begin
Outline.LevelRoot;
Outline.AddItem(<Group."Company">);
end;
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
Outline.AddItem(<Group."OrderNo">);
Outline.LevelUp;
end;
begin
end.

C++ Script:
void GroupHeader1OnBeforePrint(TfrxComponent Sender)
{
Outline.LevelRoot;
Outline.AddItem(<Group."Company">);
}
void MasterData1OnBeforePrint(TfrxComponent Sender)
{
Outline.AddItem(<Group."OrderNo">);
Outline.LevelUp;
}
{
}

Visualize o relatrio para certificar-se de que ele funciona da mesma maneira como no exemplo
anterior, no qual a rvore foi criada automaticamente. Vamos ver como a rvore criada pelo
script.
O mtodo "Outline.AddItem" adiciona um n filho ao n da rvore atual e depois torna o n filho
o n atual. Ent o, se "AddItem" fosse chamada diversas vezes em sequncia, ela iria criar a
"escada" mostrada aqui:
Item1
Item2
Item3
...
Os mtodos de Outline "LevelUp" e "LevelRoot" s o usados para controlar qual elemento o
atual. O primeiro mtodo move o cursor para o elemento localizado um nvel acima. Ent o este

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

108

FastReport VCL 5 User's Manual

script:
Outline.AddItem('Item1');
Outline.AddItem('Item2');
Outline.AddItem('Item3');
Outline.LevelUp;
Outline.AddItem('Item4');

cria uma rvore como esta:


Item1
Item2
Item3
Item4
Isso mostra que "Item4" um elemento filho do elemento "Item2". No entanto, o mtodo
"LevelRoot" move o cursor at a raiz da rvore. Por exemplo, o script:
Outline.AddItem('Item1');
Outline.AddItem('Item2');
Outline.AddItem('Item3');
Outline.LevelRoot;
Outline.AddItem('Item4');

cria esta rvore:


Item1
Item2
Item3
Item4
Ao entender isso se torna claro como o relatrio funciona. Antes de cada ttulo de grupo (nome
da empresa) exibida a raiz da rvore, que transformada no elemento atual. Depois exibida
a lista de pedidos, e cada pedido adicionado como um elemento filho da empresa. Para
assegurar que todos os pedidos estejam localizados em um nvel e n o exibidos como uma
"escada", chamado o mtodo "Outline.LevelUp" aps cada adi o de pedido para deslocar o
cursor de volta ao nvel da empresa.

6.17

Evento de pgina "OnManualBuild"


Normalmente, o ncleo do FastReport responsvel pela constru o do relatrio. Ele exibe as
bandas do relatrio em uma ordem especfica e quantas vezes for necessrio para os dados,
criando assim um relatrio completo. s vezes necessrio exibir um relatrio de forma n o
padr o, que o ncleo do FastReport n o consegue realizar. Neste caso possvel construir um
relatrio manualmente usando o evento "OnManualBuild" da pgina de design do relatrio. Se o
manipulador deste evento for definido, ent o o ncleo do FastReport transfere controle a ele
quando a sada de dados for necessria. Ao mesmo tempo, o ncleo do FastReport gerencia a
exibi o das bandas localizadas na pgina automaticamente, como "Ttulo do Relatrio", "Ttulo
da Pgina", "Ttulo da Coluna", "Rodap do Relatrio", "Rodap da Pgina, "Rodap da Coluna"

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

109

e "Plano de Fundo". O ncleo tambm gerencia a cria o de novas pginas e colunas. O


propsito do manipulador de eventos "OnManualBuild" exibir bandas de dados, seus ttulos e
seus rodaps na ordem controlada pelo usurio.
Isso quer dizer que a essncia do manipulador "OnManualBuild" dar comandos ao ncleo do
FastReport para exibir bandas em momentos especficos. O ncleo faz o resto sozinho: ele
cria novas pginas quando n o houver espao livre na pgina atual, gerencia os scripts
anexados a eventos, etc.
Vamos demonstrar um manipulador usando um exemplo simples. Este relatrio possui duas
bandas de dados mestre que n o est o conectados a dados:

O manipulador exibir estas bandas em ordem alternada (seis vezes para cada). Aps exibir
seis bandas, uma pequena lacuna ser inserida.
PascalScript:
procedure Page1OnManualBuild(Sender: TfrxComponent);
var
i: Integer;
begin
for i := 1 to 6 do
begin
{ exibir duas bandas }
Engine.ShowBand(MasterData1);
Engine.ShowBand(MasterData2);
{ criar uma lacuna }
if i = 3 then
Engine.CurY := Engine.CurY + 10;
end;
end;

C++ Script:
void Page1OnManualBuild(TfrxComponent Sender)
{

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

110

FastReport VCL 5 User's Manual


int i;
for (i = 1; i <= 6; i++)
{
// exibir duas bandas
Engine.ShowBand(MasterData1);
Engine.ShowBand(MasterData2);
// criar uma lacuna
if (i == 3)
Engine.CurY = Engine.CurY + 10;
}
}

O exemplo a seguir exibe as mesmas bandas, com uma segunda cpia deslocada para a
direita.
PascalScript:
procedure Page1OnManualBuild(Sender: TfrxComponent);
var
i, j: Integer;
SaveY: Extended;
begin
SaveY := Engine.CurY;
for j := 1 to 2 do
begin
for i := 1 to 6 do
begin
Engine.ShowBand(MasterData1);
Engine.ShowBand(MasterData2);
if i = 3 then

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

111

Engine.CurY := Engine.CurY + 10;


end;
Engine.CurY := SaveY;
Engine.CurX := Engine.CurX + 200;
end;
end;

C++Script:
void Page1OnManualBuild(TfrxComponent Sender)
{
int i, j;
Extended SaveY;
SaveY = Engine.CurY;
for (j = 1; j <= 2; j++)
{
for (i = 1; i <= 6; i++)
{
Engine.ShowBand(MasterData1);
Engine.ShowBand(MasterData2);
if (i == 3)
Engine.CurY = Engine.CurY + 10;
}
Engine.CurY = SaveY;
Engine.CurX = Engine.CurX + 200;
}
}

Como voc pode ver, nestes exemplos controlamos apenas a sada das bandas de dados. O

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

112

FastReport VCL 5 User's Manual

resto das bandas (em nosso caso, o "Ttulo do Relatrio") foi exibido automaticamente.
Finalmente mostraremos como construir um relatrio com uma "Lista de clientes" (j
demonstramos diversas verses anteriormente) utilizando o evento "OnManualBuild". Desta
vez conecte a banda de dados fonte de dados.

E use este script:


PascalScript:
procedure Page1OnManualBuild(Sender: TfrxComponent);
var
DataSet: TfrxDataSet;
begin
DataSet := MasterData1.DataSet;
DataSet.First;
while not DataSet.Eof do
begin
Engine.ShowBand(MasterData1);
DataSet.Next;
end;
end;

C++Script:
void Page1OnManualBuild(TfrxComponent Sender)
{
TfrxDataSet DataSet;
DataSet = MasterData1.DataSet;
DataSet.First();
while (!DataSet.Eof)
{
Engine.ShowBand(MasterData1);
DataSet.Next();

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Script

113

}
}

Visualize o relatrio para certificar-se de que o script produz um relatrio idntico ao relatrio
padr o. Observe que temos um link para o conjunto de dados ns conectamos uma varivel
do conjunto de dados fonte de dados com este cdigo:
DataSet := MasterData1.DataSet;

Se a banda DadosMestre n o estiver conectada fonte de dados, ent o o link fonte de dados
necessria pode ser feito da seguinte maneira:
DataSet := Report.GetDataSet('Customers');

6.18

Cria o de objetos no script


possvel adicionar objetos novos a um relatrio usando um script. Vamos demonstrar como
isso feito atravs de um exemplo simples. Crie um relatrio em branco e insira este cdigo no
procedimento principal do script:
PascalScript:
var
Band: TfrxReportTitle;
Memo: TfrxMemoView;
begin
Band := TfrxReportTitle.Create(Page1);
Band.Height := 20;
Memo := TfrxMemoView.Create(Band);
Memo.SetBounds(10, 0, 100, 20);
Memo.Text := 'Este memorando foi criado por cdigo';
end.

C++ Script:
TfrxReportTitle Band;
TfrxMemoView Memo;
{
Band = TfrxReportTitle.Create(Page1);
Band.Height = 20;
Memo = TfrxMemoView.Create(Band);
Memo.SetBounds(10, 0, 100, 20);
Memo.Text = "Este memorando foi criado por cdigo";
}

Visualize o relatrio:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

114

FastReport VCL 5 User's Manual

Observe que n o destrumos os objetos FastReport que criamos neste exemplo. Isso n o
necessrio, j que objetos do FastReport s o destrudos automaticamente pelo aplicativo
Delphi aps concluir o relatrio. Tambm observe que quando criamos objetos Delphi padr o
em um script (como TStringLists), tambm precisamos destru-los no script, j que isso n o
feito automaticamente pelo aplicativo.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

VII
Relatrios tipo
tabela de
referncia
cruzada

116

FastReport VCL 5 User's Manual

Este tipo de relatrio possui uma estrutura em tabela, o que significa que ele consiste de fileiras
e colunas. Ao criar o design n o possvel saber quantas linhas e colunas ter o relatrio de
sada. por isso que um relatrio n o estendido apenas para baixo (como nos tipos de
relatrio descritos anteriormente), mas tambm para os lados. Um exemplo tpico de um
relatrio tipo tabela de referncia cruzada mostrado abaixo.
Vamos dar uma olhada nos elementos da tabela:

Na ilustra o vemos uma tabela com duas linhas (fileiras) e quatro colunas, onde "a" e "b" s o
ttulos de linhas, "1", "2", "3" e "4" s o ttulos de colunas, e "a1".."a4" e "b1".."b4" s o clulas.
Para criar um relatrio deste tipo, precisamos de apenas um conjunto de dados (de uma
consulta ou uma tabela) que possua trs campos e contenha os seguintes valores:
a
a
a
a
b
b
b
b

1
2
3
4
1
2
3
4

a1
a2
a3
a4
b1
b2
b3
b4

Voc pode ver que o primeiro campo contm a letra da linha, o segundo contm o nmero da
coluna e o terceiro contm o contedo da clula na interse o da linha e coluna especificadas.
Ao exbir o relatrio, FastReport cria uma tabela na memria e a preenche com dados. Deste
modo a tabela estendida dinamicamente, criando linhas e colunas onde elas ainda n o
existirem.
Ttulos podem estar presentes em mais de um nvel, conforme ilustrado aqui:

Neste exemplo, o nmero (ou ndice) da coluna composto, ou seja, ele composto de dois
valores. Este relatrio gerado dos seguintes dados:
a
a
a
a

10
10
20
20

1
2
1
2

a10.1
a10.2
a20.1
a20.2

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada

b
b
b
b

10
10
20
20

1
2
1
2

117

b10.1
b10.2
b20.1
b20.2

Aqui o primeiro campo contm o ndice da linha como no caso anterior, o segundo e terceiro
campo contm os ndices das colunas e o ltimo campo contm o valor da clula. Veja como
FastReport constri a tabela de memria ao usar dados de tabela de referncia cruzada com
ttulos complexos:

Ao exibir o relatrio desta tabela de memria, FastReport une as clulas de ttulo que possuem
o mesmo valor e est o localizadas no mesmo nvel.
Aqui h um relatrio de tabela de referncia cruzada mais complexo, que incorpora totais
intermedirios e gerais:

Este relatrio derivado dos mesmos dados dos relatrios anteriores. Os valores nas clulas
que s o destacadas com a cor nova s o calculados automaticamente, e n o est o presentes
no conjunto de dados original.

7.1

Constru o de um relatrio de tabela de referncia cruzada


Agora vamos passar da teoria para a prtica. Vamos construir um relatrio de tabela de
referncia cruzada que exiba os salrios dos funcionrios em um perodo de quatro anos. Para
fazer isso, precisamos da tabela "crosstest". A tabela contm dados como:
Name Year
Ann
1999
Ben 2002

Salary
3300
2000

.
Crie um relatrio novo. Coloque um componente "Tabela ADO" na pgina e configure suas
propriedades:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

118

FastReport VCL 5 User's Manual

TableName = ' crosstest'


UserName = 'SimpleCross'
Ent o selecione o objeto "Tabela de Referncia Cruzada de BD" na barra de ferramentas de
objetos do designer e clique na pgina de design para colocar o objeto nela:

Todas as configuraes s o efetuadas no editor de tabela de referncia cruzada. Abra-o ao


clicar duas vezes no objeto:

Legenda dos itens mostrados acima:


1
2

uma lista suspensa das fontes de dados disponveis


a lista de campos na fonte de dados selecionada; os campos desta lista podem ser
arrastados para as listas nmero 3, 4 ou 5
3 a lista de campos que geram cabealhos de linhas (fileiras)

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada

4
5
6
7

119

a lista de campos que geram cabealhos de colunas


a lista de campos que geram clulas da tabela
visualiza o da estrutura da tabela
opes da estrutura: exibi o de ttulos, totais, etc.

Somente o mouse pode ser usado neste editor para fazer alteraes. Para nosso exemplo
apenas necessrio arrastar campos da lista 2 para as listas 3, 4 e 5 (no diagrama acima).
Depois disso feche o editor ao clicar no bot o OK. O objeto tabela de referncia cruzada agora
exibe sua estrutura:

Quando o relatrio for visualizado, voc ver uma tabela parecida com esta:

7.2

Modificar a aparncia
Vamos modificar a aparncia do objeto tabela de referncia cruzada. A primeira coisa que
queremos fazer mudar a cor dos ttulos e exibir "Total" em vez de "Grand Total". Isso muito
fcil: para alterar a cor do ttulo, clique nas clulas "Year", "Name" e "Grand Total" e selecione
cinza usando o bot o de plano de fundo na barra de ferramentas.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

120

FastReport VCL 5 User's Manual

Tambm podemos usar um conjunto de estilos predefinidos. Eles est o disponveis no editor
de tabela de referncia cruzada clique em "Selecionar estilo" e escolha um.

Para alterar os dois textos "Grand Total", clique duas vezes em cada clula, o que abre o editor
de texto onde podemos digitar "Total":

Para formatar os valores da moeda, selecione a primeira clula (interse o de [Name] e [Year]
em nosso exemplo), clique com o bot o direito para exibir o menu de contexto e selecione
"Formato de Exibi o...":

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada

121

Selecione o formato necessrio e feche o editor de formato. Tudo isso produz o seguinte
relatrio:

7.3

Utiliza o de funes
Em nosso exemplo podemos ver a soma do salrio de cada funcionrio em um intervalo de
quatro anos na linha "Total". possvel usar qualquer uma das seguintes funes de
agrega o:
SUM soma de valores
MIN valor mnimo
MAX valor mximo
AVG valor mdio
COUNT nmero de valores
Vamos usar a fun o "MIN" em nosso exemplo. Abra o editor de tabela de referncia cruzada e
na lista 5 (o item de campo "Salary") clique na seta para baixo.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

122

FastReport VCL 5 User's Manual

Selecione a fun o "MIN" na lista suspensa. Agora podemos mudar o texto nas clulas de totais
de "Total" para "Mnimo". O relatrio concludo tem o seguinte aspecto:

7.4

Classifica o de valores
Por padr o, linhas e colunas s o arranjadas em ordem ascendente, de maneira numrica ou
alfabtica dependendo do tipo de dados. possvel configurar modos de classifica o
independentes para linhas e colunas. Estes s o os modos de classifica o: "arranjar em
ordem crescente", "arranjar em ordem decrescente" e "n o classificar". Sem classifica o, as
linhas/colunas s o exibidas na ordem padr o do banco de dados.
Vamos alterar a classifica o das colunas em nosso exemplo. Coloque os anos em ordem
decrescente. Para fazer isso, abra o editor de tabela de referncia cruzada, selecione o
elemento de coluna "Year" e altere o modo de classifica o ao clicar na seta para baixo e
selecionar Decrescente:

Feche o editor e visualize o relatrio. Ele ter este aspecto:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada

7.5

123

Tabelas com cabealhos compostos


Nosso exemplo anterior possua um nico valor por linha e cabealhos nicos de colunas.
Vamos dar uma olhada em um design de tabela de referncia cruzada que possui um
cabealho composto com mais de um valor. Os dados de origem possuem o seguinte formato:
Name Year
Ann
1999
Ben 2002
.

Month
2
1

Days Salary
3
1000
5
2000

Adicionamos os campos "Month" e "Days" que contm o nmero do ms e o nmero de dias


teis, respectivamente. possvel criar diversos relatrios com estes dados, por exemplo:
salrios de funcionrios em cada ano, divididos por meses.
Que tipo de relatrio iremos obter? Ele deve se parecido ao relatrio do exemplo anterior,
porm os dados anuais devem ser divididos por meses. O objeto tabela de referncia cruzada
deve ser configurado da mesma maneira como antes. Desta vez tambm arrastaremos o
campo "Month" at a lista de cabealhos de colunas, conforme mostrado aqui:

Na visualiza o vemos o relatrio a seguir:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

124

FastReport VCL 5 User's Manual

Observe que o FastReport automaticamente adicionou uma coluna de totais intermedirios,


que s o exibidos aps cada ano. Isso pode ser desativado no editor da tabela de referncia
cruzada ao desmarcar o sinalizador "Subtotal" do elemento de coluna "Year":

Tambm observe que o ltimo elemento de coluna na lista de cabealhos de colunas nunca
possui um sinalizador "Subtotal" (incluindo no caso de um elemento nico). Em nosso exemplo,
n o precisamos dos totais intermedirios de cada ms, ent o o sinalizador "Subtotal" pode ser
desmarcado.
H outro recurso de totais intermedirios, se eles forem usados: pode ser melhor colocar o
cabealho do total intermedirio como "Ano + total do ano" em vez de "Total". No objeto tabela
de referncia cruzada na pgina do relatrio, clique duas vezes na clula de total intermedirio
e digite no editor de texto:
Total for [Value]
Na cria o do relatrio, a express o "[Value]" substituda pelo valor real do cabealho da
coluna na clula acima:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada

7.6

125

Ajustar a largura da clula


Na ilustra o acima vemos que FastReport ajusta as larguras das clulas de maneira
automtica, de modo que valores maiores de clulas caibam nas clulas. No entanto, isso pode
n o ser desejado em alguns casos, j que colunas muito largas podem ser feias. O que pode
ser feito a respeito? Vamos dar uma olhada em trs mtodos de controle da largura das
clulas.
O mtodo mais simples para controlar a largura da clula adicionar quebras de linha ao texto
dos totais intermedirios:
Total
for[Value]
A tabela resultante mais compacta:

No entanto, h circunstncias nas quais difcil ou impossvel quebrar linhas manualmente. Por
isso o objeto tabela de referncia cruzada possui as propriedades "MinWidth" e "MaxWidth"
(que se referem largura das clulas). Estas propriedades podem ser acessadas apenas
atravs do inspetor de objetos.
Por padr o, "MinWidth" 0 e "MaxWidth" 200, o que suficiente na maioria dos casos. O
segundo mtodo de controlar a largura das clulas alterar estes valores de acordo com
necessidades especiais.
Ent o, em nosso exemplo podemos configurar "MinWidth" e "MaxWidth" como 50. Isso significa
que uma clula de dados deve ter pelo menos 50 pixels de largura, mesmo se o valor da clula
couber em um espao com menos pixels. Para valores grandes de clula, a largura da clula
est limitada ao valor de "MaxWidth", e o texto na clula quebrado conforme for necessrio.
Logo, nosso exemplo agora tem este aspecto:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

126

FastReport VCL 5 User's Manual

O terceiro mtodo de controlar a largura da clula modificar as laguras das clulas


manualmente. Para poder fazer isso, a propriedade Tamanho Automtico deve ser configurada
como False. A clula da tabela de referncia cruzada pode ent o ser modificada usando o
mouse. No objeto tabela de referncia cruzada da pgina do relatrio, o cursor do mouse muda
quando estiver sobre bordas de clulas, permitindo que as bordas sejam arrastadas. Segue um
exemplo do que pode ser obtido:

Lembre-se: se Tamanho Automtico estiver desabilitado, a tabela de referncia cruzada n o ir


ajustar as larguras e alturas das clulas de forma automtica. Assim voc pode obter algo
parecido com isto na visualiza o do relatrio:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada

127

Se isso acontecer, apenas aumente um pouco a largura das clulas.

7.7

Cor da fonte e realce


s vezes necessrio realar valores ou mudar a cor da fonte. Isso foi abordado no exemplo
do relatrio de grupo, no qual usamos o realce condicional para objetos "Texto". No exemplo
atual, o realce condicional tambm pode ser til para ns.
Para adicionar realce a nosso relatrio de exemplo, e assumindo que precisamos mudar a cor
da fonte para valores maiores que 3000, selecione o objeto que representa a clula da tabela e
configure os parmetros de realce ao clicar no bot o de realce na barra de ferramentas. A
janela familiar do editor de realce ser aberta, e nela podemos configurar esta condi o:
Value > 3000
e configurar a cor da fonte como vermelho:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

128

FastReport VCL 5 User's Manual

Isso tudo. Feche o editor clicando no bot o OK e visualize o relatrio:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada

129

possvel realar os valores totais de maneira similar, se necessrio, e tambm clulas e


linhas, usando os botes plano de fundo e cor da borda.

7.8

Gerenciar uma tabela de referncia cruzada em um script


Se os mtodos demonstrados acima n o forem capazes de criar o aspecto necessrio para o
relatrio, possvel usar um script. O objeto "Tabela de Referncia Cruzada" possui os
seguintes eventos:
Evento

Descri o

OnAfterPrint

o evento chamado aps imprimir uma tabela

OnBeforePrint

o evento chamado antes de imprimir uma tabela

OnCalcHeight

o evento chamado antes de calcular a altura de uma fileira na


tabela
o manipulador do evento pode ser configurado com a altura
necessria ou "0" se a fileira precisa ser ocultada
o evento chamado antes de calcular a largura da coluna em
uma tabela
o manipulador do evento pode ser configurado com a largura
necessria ou "0" se a coluna precisa ser ocultada
o evento chamado antes de exibir uma clula da tabela
o manipulador do evento pode modificar o design da clula ou
seu contudo
o evento chamado antes de exibir o ttulo da coluna
o manipulador do evento pode modificar o design ou o contudo
da clula ttulo
o evento chamado antes de exibir o ttulo da fileira
o manipulador do evento pode modificar o design ou o contudo
da clula ttulo

OnCalcWidth

OnPrintCell

OnPrintColumnHeader

OnPrintRowHeader

possvel usar os seguintes mtodos do objeto "Tabela de Referncia Cruzada" nestes


eventos:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

130

FastReport VCL 5 User's Manual

Mtodo

Descri o

function ColCount: Integer

retorna o nmero de colunas na tabela

function RowCount: Integer

retorna o nmero de fileiras na tabela

function IsGrandTotalColumn
(Index: Integer): Boolean
function IsGrandTotalRow
(Index: Integer): Boolean
function IsTotalColumn
(Index: Integer): Boolean
function IsTotalRow
(Index: Integer): Boolean
procedure AddValue
(const Rows, Columns, Cells
: array of Variant)

retorna "True" se a coluna 'Index' for um total


retorna "True" se a fileira 'Index' for um total
retorna "True" se a coluna 'Index' for um subtotal
retorna "True" se a fileira 'Index' for um subtotal
adiciona um valor tabela

Agora vamos demonstrar como realar a terceira coluna (em nosso exemplo, a data
"November 1999"). Selecione o objeto tabela de referncia cruzada na pgina de design do
relatrio, clique na guia Eventos no inspetor de objetos, localize o evento "OnPrintCell" e crie
um manipulador na pgina Cdigo ao clicar duas vezes na lista vazia direita do nome do
evento. O editor de script ser aberto com a declara o bsica criada para voc. Ent o
adicione o cdigo necessrio no bloco 'begin...end' vazio da declara o:
Pascal script:
procedure Cross1OnPrintCell(Memo: TfrxMemoView;
RowIndex, ColumnIndex, CellIndex: Integer;
RowValues, ColumnValues, Value: Variant);
begin
if ColumnIndex = 2 then
Memo.Color := clRed;
end;

C++ Script:
void Cross1OnPrintCell(
TfrxMemoView Memo,
int RowIndex,
int ColumnIndex,
int CellIndex,
Variant RowValues,
Variant ColumnValues,
Variant Value)
{
if (ColumnIndex == 2) { Memo.Color = clRed; }
}

Veremos o seguinte ao visualizar o relatrio:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada

131

Para realar o ttulo de uma coluna, crie um manipulador do evento "OnPrintColumnHeader" de


maneira similar:
Pascal script:
procedure Cross1OnPrintColumnHeader(Memo: TfrxMemoView;
HeaderIndexes, HeaderValues, Value: Variant);
begin
if (VarToStr(HeaderValues[0]) = '1999') and
(VarToStr(HeaderValues[1]) = '11') then
Memo.Color := clRed;
end;

C++ Script:
void Cross1OnPrintColumnHeader(
TfrxMemoView Memo,
Variant HeaderIndexes,
Variant HeaderValues,
Variant Value)
{
if ((VarToStr(HeaderValues[0]) == "1999") &&
(VarToStr(HeaderValues[1]) == "11"))
{
Memo.Color = clRed;
}
}

A visualiza o do relatrio agora exibe:

O script funciona deste modo: o manipulador do evento "OnPrintCell" chamado antes de


imprimir uma clula na rea de dados da tabela (observe que as clulas ttulo da tabela

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

132

FastReport VCL 5 User's Manual

chamam o manipulador "OnPrintColumnHeader" ou "OnPrintRowHeader"). Os parmetros do


manipulador "OnPrintCell" incluem: um link para o objeto "Texto" que representa a clula da
tabela (o parmetro "Memo") e o "endereo" da clula como a localiza o da fileira, coluna e
clula (a clula relevante se sua tabela de referncia cruzada conter clulas com vrios
nveis) como os parmetros "RowIndex", "ColumnIndex" e "CellIndex", respectivamente. A lista
de parmetros tambm especifica os valores dos cabealhos como Variant (os parmetros
"RowValues" e "ColumnValues") e o parmetro Variant "Value", que contm o contedo da
clula.
Em nosso exemplo mais fcil especificar o "endereo" usando "RowIndex" e "ColumnIndex".
A numera o de colunas e fileiras comea em "0", ent o "ColumnIndex = 2" se refere terceira
coluna. Tambm possvel especificar a coluna correta ao ver os dados de seu contedo
(precisamos do 11 ms de 1999):
Pascal script:
procedure Cross1OnPrintCell(Memo: TfrxMemoView;
RowIndex, ColumnIndex, CellIndex: Integer;
RowValues, ColumnValues, Value: Variant);
begin
if (VarToStr(ColumnValues[0]) = '1999') and
(VarToStr(ColumnValues[1]) = '11') then
Memo.Color := clRed;
end;

C++ Script:
void Cross1OnPrintCell(
TfrxMemoView Memo,
int RowIndex,
int ColumnIndex,
int CellIndex,
Variant RowValues,
Variant ColumnValues,
Variant Value)
{
if ((VarToStr(ColumnValues[0]) == "1999") &&
(VarToStr(ColumnValues[1]) == "11"))
{
Memo.Color = clRed;
}
}

Os parmetros "RowValues" e "ColumValues" s o arrays do tipo Variant com base zero. O


elemento "0" est no nvel mais alto do ttulo da tabela, o elemento "1" est no prximo nvel, etc.
Em nosso exemplo, "ColumnValues[0]" contm anos e "ColumnValues[1]" contm meses.
Por que a fun o "VarToStr" necessria? Ela previne erros durante a convers o de tipos. Ao
trabalhar com o tipo Variant, FastReport tenta converter cadeias para o formato numrico
automaticamente, o que pode causar erros ao converter os valores das colunas "Total" e
"Grand Total".

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada

133

O manipulador do evento "OnPrintColumnHeader" chamado durante a sada das clulas de


ttulo das colunas. A lista de parmetros parecida do manipulador "OnPrintCell", apesar do
"endereo" da clula (os parmetros "HeaderIndexes" e "HeaderValues") ter um formato
diferente. O parmetro "HeaderValues" contm os mesmos valores que "ColumnValues" e
"RowValues" do manipulador "OnPrintCell". O parmetro "HeaderIndexes" tambm um array
de valores do tipo Variant, e ele contm o endereo da clula ttulo em um formato diferente: o
elemento "0" o ndice no nvel mais alto do ttulo da tabela, o elemento "1" est no prximo
nvel, etc. Para entender melhor o princpio de numera o das clulas, consulte a figura abaixo:

Em nosso exemplo foi mais fcil usar o parmetro "HeaderValues", mas seria possvel usar o
seguinte manipulador em seu lugar:
Pascal script:
procedure Cross1OnPrintColumnHeader(Memo: TfrxMemoView;
HeaderIndexes, HeaderValues, Value: Variant);
begin
if (HeaderIndexes[0] = 0) and (HeaderIndexes[1] = 2) then
Memo.Color := clRed;
end;

C++ Script:
void Cross1OnPrintColumnHeader(
TfrxMemoView Memo,
Variant HeaderIndexes,
Variant HeaderValues,
Variant Value)
{
if ((HeaderIndexes[0] == 0) && (HeaderIndexes[1] == 2)) { Memo.Color =
clRed; }
}

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

134

7.9

FastReport VCL 5 User's Manual

Ajustar o tamanho da fileira/coluna


A largura e altura das colunas e fileiras da tabela podem ser ajustadas atravs dos
manipuladores de evento "OnCalcWidth" e "OnCalcHeight". Vamos ver como aumentar a
largura da coluna que contm o 11 ms de 1999 com o exemplo a seguir. Crie um
manipulador de evento "OnCalcWidth":
Pascal script:
procedure Cross1OnCalcWidth(ColumnIndex: Integer;
ColumnValues: Variant; var Width: Extended);
begin
if (VarToStr(ColumnValues[0]) = '1999') and
(VarToStr(ColumnValues[1]) = '11') then
Width := 100;
end;

C++ Script:
void Cross1OnCalcWidth(
int ColumnIndex,
variant ColumnValues,
Extended &Width)
{
if ((VarToStr(ColumnValues[0]) == "1999") &&
(VarToStr(ColumnValues[1]) = "11"))
{
Width = 100;
}
}

E o relatrio ser:

Para ocultar uma coluna em nosso exemplo, configure Width como zero. Observe que os totais
n o s o calculados novamente, j que a tabela j est preenchida com valores nesse ponto.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada

7.10

135

Preencher uma tabela manualmente


H duas verses do objeto tabela de referncia cruzada, "Tabela de Referncia Cruzada de
BD" e "Tabela de Referncia Cruzada". At agora ns usamos o primeiro objeto conectado a
dados de uma tabela de BD. O objeto preenchido automaticamente quando o relatrio
executado. Vamos dar uma olhada no segundo objeto, "Tabela de Referncia Cruzada".
O objeto "Tabela de Referncia Cruzada" n o conectado a uma tabela de BD. Por isso ela
deve ser preenchida manualmente com dados. O objeto "Tabela de Referncia Cruzada"
possui um editor parecido ao objeto "Tabela de Referncia Cruzada de BD", apesar de haver
uma diferena, j que as dimenses dos ttulos das tabelas e das clulas devem ser
especificadas em vez de serem configuradas pelos campos do BD:

Vamos demonstrar a utiliza o de um objeto "Tabela de Referncia Cruzada" com um


exemplo. Coloque um objeto "Tabela de Referncia Cruzada" na pgina de design do reltrio e
configure suas propriedades conforme mostrado acima: o nmero de nveis do ttulo das
fileiras 1, no ttulo das colunas ele 2 e nas clulas 1. Vamos preencher a tabela com
dados usando o manipulador de evento "OnBeforePrint":
PascalScript:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

136

FastReport VCL 5 User's Manual


procedure Cross1OnBeforePrint(Sender: TfrxComponent);
begin
with Cross1 do
begin
AddValue(['Ann'], [2001, 2], [1500]);
AddValue(['Ann'], [2001, 3], [1600]);
AddValue(['Ann'], [2002, 1], [1700]);
AddValue(['Ben'], [2002, 1], [2000]);
AddValue(['Den'], [2001, 1], [4000]);
AddValue(['Den'], [2001, 2], [4100]);
end;
end;

C++ Script:
void Cross1OnBeforePrint(TfrxComponent Sender)
{
Cross1.AddValue(["Ann"], [2001, 2], [1500]);
Cross1.AddValue(["Ann"], [2001, 3], [1600]);
Cross1.AddValue(["Ann"], [2002, 1], [1700]);
Cross1.AddValue(["Ben"], [2002, 1], [2000]);
Cross1.AddValue(["Den"], [2001, 1], [4000]);
Cross1.AddValue(["Den"], [2001, 2], [4100]);
}

No manipulador, os dados sao adicionados tabela atravs do mdoto "TfrxCrossView.


AddValue". Este mtodo tem trs parmetros, e todos s o um array do tipo Variant. O primeiro
parmetro o valor da fileira, o segundo o valor da coluna e o terceiro o valor da clula.
Observe que o nmero de valores em cada array deve corresponder s configuraes do
objeto! Em nosso exemplo, o objeto possui um nvel no ttulo da fileira, dois nvel no ttulo da
coluna e um nvel de clulas, ent o os parmetros do array Variant do mtodo AddValue
precisam de um valor para as fileiras, dois valores para as colunas e um valor para as clulas.
Ao visualizar, o relatri exibido deste modo:

O mtodo "AddValue" tambm pode ser usado para o objeto "Tabela de Referncia Cruzada de
BD". Isso possibilita inserir dados que n o sejam derivados da fonte de dados conectada ao
objeto. Se dados forem adicionados desta maneira, eles tambm ser o resumidos junto aos
dados da fonte de dados.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada

7.11

137

Adicionar objetos externos tabela


possivel colocar objetos externos (como linhas, formas e figuras) na tabela de referncia
cruzada. Pode ser necessrio mostrar alguns dados de forma grfica, por exemplo. Vamos dar
uma olhada em um exemplo que usa formas para exibir uma barra de progresso rudimentar:

Uma barra vermelho-escuro exibida se o valor da clula for menor que 100, amarela se for
menor que 3000 ou verde ser for maior que 3000.
Vamos comear com nosso relatrio. Coloque um objeto "Tabela de Referncia Cruzada de
BD" na pgina do relatrio e configure suas propriedades desta maneira:

Desative a propriedade "Tamanho Automtico" e configure a largura das colunas conforme


exibido abaixo:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

138

FastReport VCL 5 User's Manual

Agora adicione o objeto forma a nossa tabela. Selecione o objeto "Retngulo" na barra de
ferramentas de objetos e coloque-o dentro da clula:

Modifique sua altura e largura para 0,2 cm e configure suas propriedades Top e left. Adicione
dois retngulos parecidos.
Agora crie um script que exibir o nmero correto de formas coloridas (dependendo do valor da
clula). Para fazer isso, selecione a clula e crie um manipulador de evento "OnBeforePrint":

Escreva o cdigo a seguir no manipulador de evento (preste aten o aos nomes das formas,
de modo que eles correspondam a seus objetos):
procedure DBCross1Cell0OnBeforePrint(Sender: TfrxComponent);
begin
// 'Value' o valor atual da clula atual
if Value < 100 then
begin
// primeiro objeto forma
DBCross1Object1.Color := clMaroon; // vermelho-escuro
// segundo objeto forma
DBCross1Object2.Color := clWhite;
// terceiro objeto forma
DBCross1Object3.Color := clWhite;

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada


end
else if Value < 3000 then
begin
DBCross1Object1.Color :=
DBCross1Object2.Color :=
DBCross1Object3.Color :=
end
else
begin
DBCross1Object1.Color :=
DBCross1Object2.Color :=
DBCross1Object3.Color :=
end;
end;

$00CCFF;
$00CCFF;
clWhite;

// amarelo

$00CC98;
$00CC98;
$00CC98;

// verde

139

Isso tudo. Visualize o relatrio, que ser parecido quele que foi mostrado no incio desta
se o.

7.12

Algumas configuraes teis


Vamos dar uma olhada em outras configuraes que est o disponveis no editor de tabela de
referncia cruzada.

As primeiras seis opes permitem exibir ou ocultar diversos elementos da tabela.


A op o "Tamanho automtico" j bem conhecida. Ela permite configurar a largura e altura da
tabela de forma manual.
A op o "Borda em volta das clulas" permite desenhar um quadro em volta dos elementos da
clula. Este uma tabela de exemplo com uma borda (observe que as clulas em si n o tm
bordas):

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

140

FastReport VCL 5 User's Manual

A op o "Imprimir para baixo depois para os lados" determina como uma tabela impressa em
vrias pginas. Aqui seguem dois exemplos que mostram o funcionamento desta fun o
(observe a ordem das pginas):
1) "Imprimir para baixo depois para os lados" est desabilitado:

2) "Imprimir para baixo depois para os lados" est habilitado:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios tipo tabela de refer ncia cruzada

141

A op o "Reimprimir cabealhos em nova pgina" determina se cabealhos de tabelas s o


impressos em cada pgina nova de visualiza o.
A op o "Clulas lado a lado" usada se houver dois ou mais valores em uma clula da tabela.
Ela determina se esses valores da clula s o impressos lado a lado ou empilhados um acima
do outro (o padr o).
A op o "Unir clulas iguais" une as clulas horizontalmente se elas tiverem o mesmo valor:

Outras propriedades tambm est o disponveis no inspetor de objetos:


- AddWidth, AddHeight: adiciona uma quantidade de espao especificado largura ou altura
da clula. Este nmero includo quando o mecanismo do FastReport calcula o tamanho da
clula (a op o "Tamanho automtico" deve estar habilitada)
- NextCross: um ponteiro para outro objeto tabela de referncia cruzada que ser impresso ao
lado do atual
- NextCrossGap: o espao entre dois objetos tabela de referncia cruzada adjacentes

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

VIII
Grficos

Grficos

143

O FastReport pode inserir grficos em um relatrio. Vamos fazer um relatrio de exemplo com
um grfico simples. O grfico ir utilizar a tabela "Country". Esta tabela contm dados sobre
pases, suas reas e populaes.
Name
Argentina
Bolivia
.

Area
2 777 815
1 098 575

Population
32 300 003
7 300 000

Adicione um objeto "Grfico" pgina de design do relatrio e defina seu tamanho como 18 cm
de largura e 8 cm de altura. Abra seu editor de objeto ao clicar duas vezes nele.

Legenda do editor de grfico acima:


1
2

estrutura do grfico; um grfico pode conter uma ou mais sries


inspetor de objetos que exibe as propriedades do elemento selecionado na janela;
configure as propriedades do grfico aqui
3 rea de opes para a conex o das sries aos dados; ativada ao selecionar uma srie
na rea 1

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

144

FastReport VCL 5 User's Manual

Quando for aberto pela primeira vez, o editor de grfico ser exibido como na imagem
mostrada acima. A primeira tarefa adicionar uma ou mais sries ao grfico (apenas uma
srie em nosso exemplo). Faa isso ao clicar no bot o adicionar e selecionar o grfico de
pizza na Galeria:

As setas verticais alteram a ordem das sries na lista. Para modificar o nome de uma srie,
selecione a srie e, um segundo depois, clique nele novamente (observe que isso n o um
clique duplo).
H muitos tipos diferentes de sries disponveis. Depois de adicionar uma srie, a rea de
opes 3 ativada. Nela voc especifica quais dados devem ser usados para a plotagem do
grfico. Primeiro vamos escolher o conjunto de dados na lista suspensa "Conjunto de Dados".
Ent o escolha os campos "Rtulo" e "Pizza", usando suas listas suspensas, conforme
mostrado abaixo:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Grficos

145

Clique em OK para fechar o editor e visualizar o relatrio:

O que pode ser melhorado neste relatrio? Seria bom classificar as populaes em ordem
decrescente. Abra o editor do grfico novamente, selecione a srie na estrutura do grfico e

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

146

FastReport VCL 5 User's Manual

altere a ordem de classifica o de Nenhuma para Descrescente:

Se visualizarmos o relatrio agora, veramos que os dados na tabela de legendas foram


classificados em ordem decrescente.

8.1

Limitar o nmero de valores do grfico


Nosso grfico est cheio de valores pequenos, o que deixou muitos deles invisveis. FastReport
permite limitar o nmero de valores exibidos no grfico. Todos os valores que excederem um
nmero especfico s o exibidos como um nico valor composto, que criado da soma de
todos esses valores.
Em nosso exemplo, o grfico possui 18 valores, mas na verdade apenas 8 deles podem ser
vistos. Abra o editor do grfico e configure o limite como 8:

Se "Maiores N valores" for configurado como zero, n o haver nenhuma limita o.


necessrio inserir um nome em "Maiores N rtulos" para que os valores agregados sejam
identificados corretamente na lista de legendas. O modo de classifica o irrelevante, j que
os valores sempre ser o classificados como decrescentes como padr o.
Este ser o aspecto do relatrio:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Grficos

8.2

147

Algumas configuraes teis


Vamos dar uma olhada em algumas configuraes teis para controlar a aparncia do grfico.
Estas configuraes podem ser acessadas somente no inspetor de objetos do editor do
grfico.
Estas propriedades bsicas est o disponveis quando 'Chart' for selecionado na Estrutura do
Grfico:
- Gradient: as configuraes do preenchimento de plano de fundo como gradiente. Habilite a
propriedade "Gradient.Visible" para exibir gradientes
- Legend: as configuraes da Lista de Legendas. A Lista pode ser ocultada com a
propriedade "Legend.Visible", e sua posi o configurada atravs da propriedade "Legend.
Alignment".
As propriedades a seguir est o disponveis quando uma srie foi selecionada:
- ColorEachPoint: dar uma cor diferente a cada valor
- ExplodeBiggest: deslocar o valor mais alto (funciona somente em grficos de pizza)
- Marks: as configuraes da aparncia dos rtulos do grfico
- ValueFormat: a linha de formata o dos valores

8.3

Grfico com valores inseridos manualmente


No exemplo anterior criamos um grfico usando dados de uma tabela de BD. Tambm
possvel criar um grfico com dados inseridos manualmente. Este mtodo pode ser
conveniente se o grfico for pequeno.
Vamos demonstrar como isso funciona com um exemplo simples. Coloque um grfico na
pgina de design do relatrio e abrea o editor do grfico. Adicione uma srie de tipo "Grfico de
barras" e configure as seguintes propriedades, usando um ponto e vrgula para separar valores
individuais:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

148

FastReport VCL 5 User's Manual

O grfico resultante :

8.4

Cria o de grficos com um script


Vamos ver como criar o grfico anterior usando um script. Deixe os campos Rtulo e Y vazios
no editor de grficos. Insira o cdigo a seguir no script do relatrio:
PascalScript:
begin
Chart1.SeriesData[0].XSource := 'Jan;Feb;Mar;Apr';
Chart1.SeriesData[0].YSource := '31;28;31;30';
end.

C++Script:
{
Chart1.SeriesData[0].XSource = "Jan;Feb;Mar;Apr";
Chart1.SeriesData[0].YSource = "31;28;31;30";

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Grficos

149

Neste caso, SeriesData[0] nos permite configurar parmetros para a primeira srie do grfico.
Se o grfico tiver mais de uma srie, refira-se a elas com SeriesData[1], etc.

8.5

Imprimir um grfico criado em Delphi


Se voc j criou um grfico em seu cdigo Delphi e deseja imprim-lo no relatrio, necessrio
usar o objeto "Figura" na barra de ferramentas de objetos do FastReport. Coloque o objeto no
lugar requerido na pgina de design do relatrio e crie o seguinte manipulador de eventos
"TfrxReport.OnBeforePrint" no aplicativo Delphi:
procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent);
begin
if Sender.Name = 'Picture1' then
TfrxPictureView(Sender).Picture.Assign(
Chart1.TeeCreateMetafile(False,
Rect(0, 0, Round(Sender.Width), Round(Sender.Height))));
end;

no qual Figura1 o nome do objeto "Figura" e Grfico1 seu grfico Delphi.


Observa o: Quando cdigo atribudo aos manipuladores de eventos do componente
TfrxReport em um aplicativo Delphi, necessrio visualizar o relatrio ao executar o aplicativo
Delphi compilado. N o possvel visualizar o relatrio dentro do designer de relatrios do
FastReport.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

IX
Relatrios
interativos

Relatrios interativos

151

possvel tornar interativo um relatrio criado no FastReport. Isso significa que ele ir reagir s
aes do usurio na janela de visualiza o. possvel usar as interaes a seguir:
ao clicar no objeto do relatrio, um tipo de opera o executada. Por exemplo, possvel
executar um relatrio detalhado e exib-lo em uma janela separada;
a janela de visualiza o pode exibir a estrutura de tpicos do relatrio, que pode ser usada
para navegar o relatrio.

9.1

Hiperlink
Quase todos os objetos do relatrio possuem a propriedade "Hyperlink". Ao usar esta
propriedade, possvel definir a rea o de um objeto ao clique do mouse na janela de
visualiza o.
Ao clicar em um objeto desse tipo, uma das aes a seguir pode ocorrer:
navegar at a URL;
enviar um e-mail;
executar qualquer comando de sistema;
navegar at a pgina do relatrio que possui o nmero indicado;
navegar at a ncora que foi adicionada em um script;
executar um relatrio detalhado em uma janela de visualiza o separada;
a o padr o, definida em um script.

9.2

Configura o de um hiperlink
Para configurar um hiperlink, selecione o objeto que deseja tornar interativo e clique nele com o
bot o direito do mouse. No menu de contexto, selecione o item "Hiperlink...". O editor de
hiperlinks ser aberto:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

152

FastReport VCL 5 User's Manual

Escolha o tipo de hiperlink ao selecionar o bot o de op o no lado esquerdo da janela. Aps


fazer isso, voc pode clicar na caixa de sele o "Modificar a aparncia do objeto..." na parte
inferior da janela. A aparncia do objeto ser alterada da seguinte maneira:
o texto se tornar azul e ser sublinhado;
ser definido um cursor do tipo m o.
Em alguns casos o hiperlink precisa ser exibido na janela de visualiza o, mas n o h
necessidade de imprim-lo. fcil fazer isso ao configurar a propriedade "Visibility". Isso pode
ser fieto na janela "Inspetor de Objetos".

9.3

Link para a URL


Ao usar este tipo de link, possvel:
navegar at o endereo da Internet fornecido;
executar alguns comandos do sistema, por exemplo "mailto:" para enviar um e-mail.
O valor do link pode ser indicado com dois mtodos:
indique o valor diretamente, por exemplo "http://www.fast-report.com";
indique uma express o que retorne o valor do link. Esta express o ser calculada ao
executar o relatrio.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios interativos

9.4

153

Link para o nmero da pgina


Ao usar este tipo de link, possvel organizar a navega o nas pginas de um relatrio
preparado. Na maioria das vezes criado um link para a primeira pgina. Para fazer isso,
indique o nmero da pgina (1 neste caso) como o valor do link.
possvel indicar o nmero da pgina com dois mtodos:
indicar o nmero diretamente, por exemplo 1;
indicar uma express o que retorne o nmero da pgina. Esta express o ser calculada ao
executar o relatrio.

9.5

Link para uma ncora


Ao usar este tipo de link, possvel navegar at uma ncora que foi adicionada em um script.
Uma ncora possui um nome e uma posi o especfica em um relatrio (nmero de pgina e
posi o na pgina). Ao saltar at uma ncora usando seu nome, voc ser levado at a
posi o indicada.
Para usar este tipo de link, primeiro necessrio definir uma ncora. Para fazer isso, use um
script e o mtodo Engine.AddAnchor (consulte o tpico "Script/ncoras" para maiores
detalhes). Agora possvel indicar seu nome na janela de configuraes do hiperlink. Isso pode
ser feito por dois mtodos:
indicar o nome da ncora diretamente;
indicar uma express o que retorne o nome da ncora. Por exemplo, isso pode ser a coluna
de dados. A express o ser calculada quando o relatrio for executado.

9.6

Link para um relatrio detalhado


Ao usar este tipo de link, possvel executar outro relatrio e exib-lo em uma janela de
visualiza o separada.
necessrio configurar os seguintes parmetros para este tipo de hiperlink:
o nome do relatrio detalhado;
o nome da varivel do relatrio, que ficar com o valor do hiperlink;
o valor do hiperlink.
Quando o link for clicado, acontecer o seguinte:
o relatrio indicado ser carregado;
a varivel do relatrio ser configurada com o valor do hiperlink;
o relatrio ser criado e executado em uma janela de visualiza o separada.
O valor da varivel do relatrio pode ser indicado por dois mtodos:
indicar o valor diretamente;
indicar uma express o que retorne o valor. Esta express o ser calculada quando o relatrio

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

154

FastReport VCL 5 User's Manual

for executado.

9.7

Link a uma pgina detalhada


Este tipo de link funciona da mesma maneira, exceto que outra pgina no relatrio atual usada
como um relatrio detalhado. Para fazer isso, seu relatrio deve conter pelo menos duas
pginas: uma com o relatrio principal e outra com o relatrio detalhado.
necessrio configurar os parmetros a seguir para este tipo de hiperlink:
nome da pgina no relatrio;
nome da varivel do relatrio, que ficar com o valor do hiperlink;
o valor do hiperlink.
Ao clicar no link, acontecer o seguinte:
a varivel do relatrio ser configurada com o valor do hiperlink;
a pgina do relatrio indicada ser criada e exibida em uma janela de visualiza o separada.
O valor da varivel do relatrio pode ser indicado com dois mtodos:
indicar o valor diretamente;
indicar uma express o que retorne o valor. A express o ser calculada quando o relatrio for
executado.
Ao escollher uma pgina do relatrio, sua propriedade "Visible" redefinida como False. Isso
significa que ao criar o relatrio principal, esta pgina ignorada.

9.8

Link personalizado
Ao usar este tipo de link, possvel definir uma rea o personalizada ao clicar com o mouse.
Para isso, utilize o manipulador de evento "OnClick" do objeto.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

X
Relatrios
matriciais

156

FastReport VCL 5 User's Manual

Anteriormente ns abordamos relatrios que foram projetado para serem impressos em


impressoras modernas padr o (stylus, laser, etc.). Um relatrio enviado a uma impressora
matricial ser impresso muito lentamente. FastReport permite a cria o de relatrios especiais
destinados a impressoras matriciais, onde somente os smbolos padr o das fontes s o
impressos e nenhum elemento grfico; isso resulta em uma velocidade de impress o mais
rpida.
Vamos ver como criar um relatrio do tipo "Lista" projetado para a impress o em impressoras
matriciais. Anteriormente ns criamos este tipo de relatrio, consulte o relatrio "Lista de
clientes". Usaremos os mesmos dados no relatrio.
Abra o designer de relatrios. Selecione "Arquivo > Novo..." para abrir a caixa de dilogo do
assistente de relatrios e selecione o item "Relatrio Matricial":

Ao clicar em OK, exibida uma pgina de design vazia, marcada para uma fonte matricial:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios matriciais

157

A barra de ferramentas de objetos tambm alterada para exibir os objetos disponveis para a
impress o matricial, que s o "Banda", "Texto", "Linha", "Comando Matricial", "Sub-relatrio",
"Tabela de Referncia Cruzada" e "Tabela de Referncia Cruzada de BD". Outros objetos n o
podem ser usados em uma impressora matricial.

Coloque as bandas "Ttulo do Relatrio", "Cabealho da Pgina" e "Dados Mestre" na pgina do


relatrio:

Coloque objetos "Texto" nas bandas conforme mostrado a seguir:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

158

FastReport VCL 5 User's Manual

A coloca o de objetos matriciais similar coloca o em relatrios normais. No entanto,


estes objetos s o limitados em sua posi o e aparncia. Os objetos se ajustam grade, o
tamanho da fonte (altura) n o pode ser alterado e eles n o podem ser coloridos. Porm, alguns
atributos de fonte podem ser modificados ao selecionar o objeto "Texto" e clicar no bot o "Tt"
na barra de ferramentas:

Estes atributos de fonte s o especficos para a impress o matricial. A pgina do relatrio e


todos os objetos matriciais, exceto bandas, possuem estes atributos.
Observa o: no designer e na visualiza o, somente os atributos "Negrito", "Itlico" e
"Sublinhado" s o implementados na tela. O conjunto inteiro de atributos
implementado somente na impress o.
Vamos modificar nosso relatrio ao usar o estilo "Negrito" nos cabealhos. O relatrio est
concludo e est pronto para ser visualizado:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios matriciais

10.1

159

Tabelas de referncia cruzada em relatrios matriciais


A gama de objetos utilizveis em relatrios matriciais restrita queles que podem ser exibidos
de forma textual. Entre estes objetos se econtram os objetos "Tabela de Referncia Cruzada".
Vamos dar uma olhada em um relatrio simples de tabela de referncia cruzada, parecido com
aquele que foi criado anteriormente na se o "Tabelas com cabealhos compostos".
Crie um relatrio matricial como na se o anterior, escolhendo um "Relatrio Matricial".
Coloque um objeto "Tabela de Referncia Cruzada de BD" na pgina do relatrio e abra seu
editor:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

160

FastReport VCL 5 User's Manual

O editor da tabela de referncia cruzada exibe a estrutura da tabela de sada no modo matricial.
Os atributos da fonte da clula podem ser configurados usando o bot o "Tt" na barra de
ferramentas. Quanto aos demais aspectos, os objetos tabela de referncia cruzada se
comportam como foi descrito anteriormente. O relatrio visualizado tm a seguinte aparncia:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Relatrios matriciais

10.2

161

Impress o de um relatrio matricial


A seguinte caixa de dilogo de impress o usada ao imprimir um relatrio matricial:

A caixa de dilogo de impress o parecida com a normal, mas possui elementos especficos
para impressoras matriciais. O sistema de comandos da impressora deve ser escolhido na
lista a seguir antes da impress o (os comandos ESC):

Tambm h outras op o para a impress o matricial:


- Imprimir para arquivo: controla se o fluxo de impress o enviado a um arquivo no disco
rgido. Se for habilitada, a caixa de dilogo "Salvar Como..." exibida
- Quebra de pgina: controla se um comando "Quebra de pgina" enviado ao alcanar o final
da pgina. Se for desabilitada, a impress o n o interrompida em folhas contnuas
- Pgina de cdigo OEM: controla a convers o de smbolos
- Pseudogrfico: especifica como desenhar linhas verticais e horizontais. Se for desabilitada
as linhas s o desenhadas usando os smbolos -, | e +

10.3

Objeto "Comando"
Conforme foi descrito antes, possvel configurar os seguintes atributos em objetos de
relatrios matriciais:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

162

FastReport VCL 5 User's Manual

Este um conjunto padr o que aceito por todos os modelos de impressoras matriciais.
Alguns modelos de impressoras podem suportar outros comandos que n o est o presentes no
conjunto padr o, por exemplo a impress o na resolu o de 20 caracteres por polegada. Para
poder enviar estes atributos adicionais impressora, use o objeto "Comando Matricial" no
relatrio.
Coloque o objeto "Comando Matricial" no local correto na pgina do relatrio, antes de objetos
que usem atributos fora do padr o (ou seja, no canto superior esquerdo da pgina). Para
configurar um comando, edite a propriedade Command do objeto no inspetor de objetos:

A propriedade pode ser configurada com um dos seguintes formatos:


decimal (por exemplo, #27#40) ou hexadecimal (por exemplo, 1B28).

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

XI
Formulrios de
dilogo

164

FastReport VCL 5 User's Manual

Alm das pginas de design do relatrio normais, possvel usar formulrios de dilogo em um
relatrio. Formulrios de dilogo s o criados no designer de relatrio normal com o bot o na
barra de ferramentas do designer. O bot o adiciona uma nova guia de pgina de dilogo ao
relatrio. Ao abrir a guia da pgina de dilogo, o espao de trabalho do designer alterado para
exibir o formulrio, e a barra de ferramentas de objetos alterada para mostrar os objetos de
controle que podem ser colocados no formulrio:

11.1

Controles
Elemento

Nome

Descri o

TfrxLabelControl

controle para exibir textos fixos no formulrio de


dilogo

TfrxEditControl

controle para inserir texto usando o teclado

TfrxMemoControl

controle para inserir vrias linhas de texto com o


teclado

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Formulrios de dilogo

165

TfrxButtonControl

controle que representa um bot o

TfrxCheckBoxControl

controle que representa um sinalizador, que possui


dois estados habilitado ou desabilitado, alm de um
rtulo adjacente

TfrxRadioButtonControl

controle que representa um bot o de op o. Deve


haver mais de um controle de bot o de op o no
formulrio

TfrxListBoxControl

controle que representa uma lista de itens, da qual um


item pode ser selecionado

TfrxComboBoxControl

controle que representa uma lista suspensa de itens,


na qual possvel selecionar um item

TfrxDateEditControl

controle que representa um campo com um calendrio


suspenso para a entrada de datas

TfrxGroupBoxControl

controle que representa uma caixa com rtulo que


pode conter outros objetos

TfrxPanelControl

controle que representa um painel que pode conter


outros objetos

TfrxBitBtnControl

controle que representa um bot o que contm uma


figura

TfrxSpeedButtonControl

controle que representa um bot o de velocidade que


contm uma figura

TfrxMaskEditControl

controle para inserir texto usando o teclado e usando


um modelo

TfrxCheckListBoxControl controle que representa uma lista de itens que s o


selecionados por uma caixa de sele o

11.2

TfrxBevelControl

controle usado para exibir linhas e bordas no


formulrio

TfrxImageControl

controle que representa uma figura no formato "BMP",


"ICO", "WMF" ou "EMF"

Relatrio "Ol, Mundo!"


Neste exemplo criaremos um relatrio que exibe uma janela de sauda o usando o formulrio
de dilogo, antes de criar a visualiza o. Crie um relatrio novo e adicione um formulrio de
dilogo ao relatrio. Coloque os objetos "TfrxLabelControl" e "TfrxButtonControl" no formulrio:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

166

FastReport VCL 5 User's Manual

Configure as propriedades dos objetos:


TfrxLabelControl:
Caption = 'Ol, Mundo!'
TfrxButtonControl:
Caption = 'OK'
Default = True
ModalResult = mrOk
Configure a propriedade "BorderStyle = bsDialog" para o formulrio.
Quando o design do formulrio de dilogo estiver concludo, volte para a guia Pgina1 do design
do relatrio e coloque um objeto "Texto" que contenha a sauda o na pgina. Visualize o
relatrio e voc ver o formulrio de dilogo:

Aps clicar no bot o OK, a caixa de dilogo fechada e o relatrio construdo e exibido. Se a
caixa de dilogo for fechada ao clicar no bot o "X" do menu do sistema, o relatrio n o ser
criado. O FastReport funciona deste modo: se houver formulrios de dilogo em um relatrio, o
relatrio somente construdo depois que todas as caixas de dilogo terem sido fechadas com
ModalResult
mrOk, ou seja, neste exemplo ao clicar no bot o OK. por isso que a
propriedade "ModalResult" do bot o tem que ser configurada como "mrOk".

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Formulrios de dilogo

11.3

167

Inserir parmetros e transferi-los para um relatrio


Vamos tornar este exemplo mais complicado para demonstrar como transferir valores
inseridos na caixa de dilogo do relatrio. Modifique a caixa de dilogo conforme mostrado
aqui:

Coloque um objeto "Texto" que contenha este texto na Pgina1 do relatrio, e configure
"AutoWidth" como True:
Voc inseriu: [Edit1.Text]
Visualize o relatrio e certifique-se de que o texto digitado nele exibido com xito no relatrio.
possvel acessar outros objetos na caixa de dilogo de maneira parecida. J que cada objeto
possui um nome nico em todo o relatrio, ele pode ser usado em qualquer lugar dentro do
mesmo relatrio.

11.4

Intera o com controles


Ao usar um script, possvel incorporar lgica complexa na opera o de uma caixa de dilogo.
Vamos ilustrar isso com um exemplo simples. Modifique o formulrio desta maneira:

Clique duas vezes no objeto "Caixa de Sele o" para criar um manipulador de evento
"OnClick", e insira o script a seguir:
PascalScript:
procedure CheckBox1OnClick(Sender: TfrxComponent);
begin
Button1.Enabled := not CheckBox1.Checked;

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

168

FastReport VCL 5 User's Manual


end;

C++ Script:
void CheckBox1OnClick(TfrxComponent Sender)
{
Button1.Enabled = !CheckBox1.Checked;
}

Ao executar o relatrio, o bot o responde ao estado da caixa de sele o.

11.5

Diversos formulrios de dilogo


Vamos ver como funciona um relatrio com duas caixas de dilogo. Crie um relatrio com duas
caixas de dilogo e uma pgina de design:

Configure a propriedade "ModalResult" dos botes OK e Cancelar como mrOk e mrCancel,


respectivamente. Agora execute o relatrio. Primeiro o usurio dever responder perguntas da
primeira caixa de dilogo (nome, se tem filhos) e aps clicar em OK, ele dever responder as
perguntas da segunda caixa de dilogo (nomes dos filhos). Aps clicar em OK na segunda

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Formulrios de dilogo

169

caixa de dilogo, o relatrio ser criado. O FastReport lida com vrias caixas de dilogo da
seguinte maneira: as caixas de dilogo s o exibidas na ordem de cria o; cada caixa de
dilogo exibida somente aps fechar a anterior com "ModalResult = mrOk" (neste exemplo,
ao clicar no bot o OK). Se alguma caixa de dilogo for fechada com o bot o Cancelar ou o
bot o "X" do menu do sistema, o relatrio n o criado.

11.6

Gerenciar formulrios de dilogo


No exemplo anterior, a segunda caixa de dilogo exibida independentemente do fato se "Tem
filhos" foi marcada. Vamos mostrar como ocultar a segunda caixa de dilogo se esta caixa de
sele o n o for marcada. Crie um manipulador de evento "OnClick" para o bot o OK na
primeira caixa de dilogo (clique duas vezes no bot o para criar o manipulador):
PascalScript:
procedure Button1OnClick(Sender: TfrxComponent);
begin
DialogPage2.Visible := CheckBox1.Checked;
end;

C++Script:
void Button1OnClick(TfrxComponent Sender)
{
DialogPage2.Visible = CheckBox1.Checked;
}

Este cdigo oculta a segunda caixa de dilogo (DialogPage2) se a caixa n o for marcada.
Visualize o relatrio para ver se ele funciona corretamente.
Outra maneira de gerenciar formulrios e usar o evento do relatrio "OnRunDialogs". Para criar
este manipulador de evento, selecione o objeto Report na rvore do relatrio ou no inspetor de
objetos e abra a guia "Eventos" no inspetor de objetos. Clique duas vezes no evento
"OnRunDialogs" para criar um manipulador:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

170

FastReport VCL 5 User's Manual

Escreva o cdigo a seguir no manipulador:


PascalScript:
procedure frxReport1OnRunDialogs(var Result: Boolean);
begin
Result := DialogPage1.ShowModal = mrOk;
if Result then
begin
if CheckBox1.Checked then
Result := DialogPage2.ShowModal = mrOk;
end;
end;

C++Script:
void frxReport1OnRunDialogs(bool &Result);
{
Result = DialogPage1.ShowModal == mrOk;
if (Result)
{
if (CheckBox1.Checked)
Result = DialogPage2.ShowModal == mrOk;
}
}

O manipulador funciona deste modo: a primeira caixa de dilogo exibida; se ela for fechada
com o bot o OK, o estado de CheckBox1 avaliado; se o estador for Checked, ent o a
segunda caixa de dilogo exibida; se a segunda caixa de dilogo for fechada com o bot o OK,
Result configurado como True. Se o manipulador retornar Result = True, ent o a visualiza o
criada; se Result = False, a execu o do relatrio parada e nenhuma visualiza o criada.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

XII
Componentes
de acesso a
dados

172

FastReport VCL 5 User's Manual

Normalmente, a maioria dos relatrios s o baseados em dados que tm origem em um BD.


Delphi fornece uma variedade de componentes para vincular dados de BD, e FastReport utiliza
estas conexes. Aqui iremos discutir a utiliza o dos componentes "TTable" e "TQuery" como
fontes de dados para relatrios, mas em geral qualquer descendente de TDataSet pode ser
utilizado.
Alm dos componentes de acesso a dados de projetos Delphi, como "TfrxDBDataset" que
usamos em nossos exemplos at agora, h diversos componentes de BD especficos no
FastReport que podem ser ussados em relatrios, e seu uso depende das escolhas feitas
durante a instala o. Os princpios do acesso aos dados no FastReport s o praticamente os
mesmos do ambiente Delphi. Assim como em Delphi, componentes s o colocados em um
formulrio de dilogo, e suas propriedades s o configuradas no inspetor de objetos. O design
de componentes bastante flexvel e fcil criar componentes novos para suportar
mecanismos de banco de dados diferentes (consulte o Manual do Desenvolvedor). Com o
suporte do componente "TfrxDesigner", eles permitem que os usurios de um aplicativo criem
o design de um relatrio no tempo de execu o.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Componentes de acesso a dados

12.1

173

Descries de componentes
Vamos ver como os componentes s o usados para o acesso de dados atravs de ADO. Eles
s o disponibilizados no FastReport ao adicionar o componente "TfrxADOComponents"
da
paleta Delphi do FastReport ao formulrio do projeto. Os seguintes objetos ser o ent o exibidos
na barra de ferramentas de objetos ao clicar na guia "Dados" no designer de relatrios:
"TfrxADOTable", "TfrxADOQuery" e "TfrxADODataBase". Estes componentes s o similares
aos componentes Delphi correspondentes ("TADOTable", "TADOQuery" e "TADOConnection")
em rela o sua funcionalidade. H tambm um controle "TfrxDBLookupComboBox" que pode
ser usado em formulrios de dilogo.
cone

Nome

Descri o

Usado em

TfrxDBLookupComboB controle usado para selecionar um valor de formulrios


ox
um diretrio
de dilogo
TfrxADOTable

controle usado para acessar uma tabela de guia "Dados"


BD

TfrxADOQuery

controle usado para executar uma consulta guia "Dados"


SQL

TfrxADODataBase

controle usado para conectar a um BD

guia "Dados"

Vamos dar uma olhada em cada componente.

12.1.1 TfrxDBLookupComboBox
Este componente usado para selecionar um valor de um conjunto de dados de consulta.

O componente tem as seguintes propriedades:


Propriedade
DataSet
ListField
KeyField
KeyValue
Text

Descri o
fonte de dados qual o controle est conectado
nome do campo de BD exibido no controle
nome do campo-chave do BD que identifica o registro
selecionado
valor do campo-chave do BD que retornado pela sele o
da lista
valor do campo da lista do BD exibido na lista

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

174

FastReport VCL 5 User's Manual

AutoOpenDataSet se for True, a fonte de dados conectada aberta


automaticamente aps o evento OnActivate da caixa de
dilogo
Para conectar o controle ao conjunto de dados de consulta, insira valores para estas trs
propriedades: "DataSet", "ListField" e "KeyField".
Observe que o valor retornado disponibilizado atravs das propriedades "Text" ou "KeyValue",
que n o s o exibidas no inspetor de objetos. Elas somente podem ser acessadas atravs do
cdigo. A posi o inicial do cursor no conjunto de dados de consulta pode ser configurado por
cdigo usando "KeyValue".

12.1.2 TfrxADOTable
Este componente usado para acessar uma tabela de BD usando ADO. O componente possui
as seguintes propriedades:
Propriedade

Descri o

DatabaseName
FieldAliases

nome da conex o (nome do componente TfrxADODatabase)


permite que aliases sejam configurados para os campos do
conjunto de dados
Filter
express o para filtrar registros
Filtered
se filtrado ou n o
IndexFieldNames nomes dos campos de ndice (para classifica o)
IndexName
nome do ndice secundrio
MasterFields
campos conectados ao conjunto de dados mestre
Master
conjunto de dados mestre
TableName
nome da tabela de BD
UserName
alias do conjunto de dados, usado no cdigo
Estas propriedades s o parecidas quelas do componente "TADOTable" de Delphi. Para
conectar o componente a uma tabela de BD, configura as propriedades "DatabaseName" e
"TableName". A tabela aberta ao configurar a propriedade "Active" como True ou ao chamar o
mtodo "Open".
O editor da propriedade "FieldAliases" aberto no inspetor de objetos ao clicar duas vezes no
componente. O editor permite a sele o dos campos que ficar o disponveis para serem
usados no cdigo e a configura o dos aliases destes campos e do conjunto de dados como
um todo.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Componentes de acesso a dados

175

O editor da propriedade "MasterFields" usado para criar conexes mestre-detalhe entre duas
tabelas. Para conectar duas tabelas com a rela o mestre-detalhe, necessrio configurar
uma segunda tabela na propriedade "Master" da tabela dependente e abrir o editor da
propriedade "MasterFields". Se a tabela possuir ndices secundrios que devem ser usados,
configure antes a propriedade "IndexName".

O editor vincula visualmente os campos "mestre" e "detalhe" dos conjuntos de dados. Quando

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

176

FastReport VCL 5 User's Manual

dois conjuntos de dados s o conectados em um relacionamento "Mestre-Detalhe", a


movimenta o no conjunto de dados mestre filtra o conjunto de dados detalhe
automaticamente, e somente os registros que pertencem ao registro atual do conjunto de
dados mestre s o exibidos.
Para conectar campos nos dois conjuntos de dados, selecione um campo na lista esquerda
(o conjunto de dados detalhe), depois um campo da lista direita (o conjunto de dados mestre)
e clique no bot o Adicionar. O vnculo entre os dois campos exibido na lista inferior. Para
limpar a lista inferior use o bot o Limpar. Os campos vinculados devem ser indexados e de
tipos compatveis.

12.1.3 TfrxADOQuery
Este componente executa consultas SQL em um BD. Ele tem as seguintes propriedades:
Propriedade

Descri o

DatabaseName
FieldAliases

nome da conex o (nome do componente TfrxADODatabase)


permite que aliases sejam definidos para os campos do
conjunto de dados
Filter
express o para filtrar registros
Filtered
se filtrado ou n o
Master
conjunto de dados mestre
Params
lista dos parmetros da consulta
SQL
texto da consulta
UserName
alias do conjunto de dados, usado no cdigo
IgnoreDupParams se for True, permite usar parmetros com nomes duplicados.
O nome dos parmetros da consulta n o editado no editor de
parmetros
As propriedades "Active", "DatabaseName", "FieldAliases", "Filter", "Filtered" e "Master" s o
parecidas s do componente "TfrxADOTable" descrito acima. A propriedade "SQL" possui seu
prprio editor para inserir a consulta SQL.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Componentes de acesso a dados

177

A propriedade "Params" tambm possui seu prprio editor. Ela habilitada quando o texto de
uma consulta tiver parmetros.

Um parmetro pode ter dois tipos: seu valor derivado da fonte mestre ou ele configurado
como um valor discreto (seja como um valor absoluto, como foi mostrado acima, ou vinculado
a uma varivel ou propriedade de um objeto).

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

178

FastReport VCL 5 User's Manual

Quando um parmetro derivado do conjunto de dados mestre, necessrio configurar a


propriedade "TfrxADOQuery.Master". Este conjunto de dados deve conter um campo com o
mesmo nome do parmetro. N o necessrio especificar o tipo de parmetro ou seu valor.

12.1.4 TfrxADODataBase
Este componente usado para a conex o a um banco de dados. Sua fun o parecida do
componente Delphi "TADOConnection". O componente possui as seguintes propriedades:
Propriedade
Connected
DatabaseName
LoginPrompt

Descri o
se for True, a conex o ativada
a cadeia de conex o ADO
se a senha deve ser solicitada ao conectar ao BD

A propriedade "LoginPrompt" define se a senha deve ser solicitada ao efetuar uma conex o ao
BD. Se "LoginPrompt" for False, necessrio incluir um nome de usurio e uma senha devem
ser includos na cadeia de conex o ADO.

12.2

Designer de relatrios
Vamos dar uma olhada no design de um relatrio simples usando componentes de acesso a
dados durante o tempo de execu o. Ele usar o banco de dados Demo.mdb, que fornecido
com o FastReport, como a fonte de dados - {FR}\Demos\Main\demo.mdb.
Crie um novo projeto Delphi e adicione um componente de cada ao formulrio: "TfrxReport",
"TfrxDesigner", "TfrxDialogControls", "TfrxADOComponents", "TADOConnection" e "TButton".

Configure a conex o ao banco de dados clicando duas vezes em "TADOConnection" e


escolhendo "Criar cadeia de conex o", o fornecedor ("Microsoft Jet 4.0 OLE DB Provider") e o
banco de dados ({FR}\Demos\Main\demo.mdb). Feche a caixa de dilogo de conex o ao clicar
em OK e configure as propriedades do componente aqui:
ADOConnection1:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Componentes de acesso a dados

179

LoginPrompt = False
frxADOComponents1:
DefaultDatabase = ADOConnection1

Defina o seguinte manipulador para o bot o "Design":


procedure TForm1.Button1Click(Sender: TObject);
begin
frxReport1.DesignReport;
end;

Depois disso, compile e execute o projeto. Isso tudo que voc precisa fazer para criar o
designer de relatrios de tempo de execu o para o usurio final.
Ao clicar no bot o "Design", o desiger de relatrios do FR aberto, contendo um relatrio em
branco. Vamos dar uma olhada no design de um relatrio simples neste ambiente.

12.3

Relatrio simples do tipo "Lista"


Este relatrio ir conter dados de uma nica tabela de BD. Para criar o relatrio, siga as etapas
a seguir:
Clique no bot o "Novo Relatrio" na barra de ferramentas do designer, e o FastReport criar um
relatrio vazio contendo as guias "Cdigo", "Dados" e "Pgina1". Clique na guia "Dados" e
coloque um componente "Tabela ADO" na pgina:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

180

FastReport VCL 5 User's Manual

Observe que a propriedade "Database" j est conectada a nosso banco de dados, porque isso
foi especificado na propriedade "TfrxADOComponents.DefaultDatabase". O nome da tabela,
porm, deve ser configurado agora:
TableName = 'Customer'
V para a guia Pgina1. Conecte a banda "DadosMestre" tabela ao clicar duas vezes nela e
selecionar "ADOTable1" na caixa de dilogo.
Arraste os campos exibidos abaixo da janela "rvore de dados" para a pgina do relatrio, que
ficar parecido com isto:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Componentes de acesso a dados

181

Visualize o relatrio com o bot o "Visualizar" na barra de ferramentas.

12.4

Relatrio com consulta paramtrica


Vamos fazer o design de um relatrio mais complicado, no qual os parmetros da consulta s o
solicitados em uma caixa de dilogo antes de criar o relatrio. Use o mesmo projeto da se o
anterior e clique no bot o Novo Relatrio no designer de relatrios para limpar o antigo.
Abra a guia "Dados" e coloque um componente "Consulta ADO" na pgina. Clique duas vezes
nele para abrir seu editor e insira o seguinte texto SQL:
select * from Customer where CustNo > :p1

Adicione um formulrio de dilogo ao relatrio e coloque os componentes "Label", "Edit" e dois


componentes "Button" no formulrio:

Configure as propriedades do componente:


Label1:
Caption = 'Select if CustNo greater than'
Edit1:
Text = '2000'
Button1:
Caption = 'OK'

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

182

FastReport VCL 5 User's Manual

ModalResult = mrOk
Button2:
Caption = 'Cancel'
ModalResult = mrCancel
Abra o editor da propriedade "Params" do componente "Query" e configure o parmetro:

Depois disso v para a Pgina1 do design do relatrio e crie o relatrio conforme foi mostrado
no exemplo anterior:

Quando o relatrio visualizado, exibida uma caixa de dilogo solicitando o nmero do


cliente. Aps inserir um nmero e fechar a caixa de dilogo com o bot o OK, o relatrio
criado. Todos os clientes com nmeros CustNo maiores que o inserido s o exibidos.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Componentes de acesso a dados

12.5

183

Outros recursos teis


Os elementos "Texto" e "Desenhar" podem ser colocados na pgina "Dados". Com o uso
destes elementos, possvel desenhar diagramas bsicos de explica o, conforme
mostrado abaixo:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

XIII
Herana do
relatrio

Herana do relatrio

185

Muitas vezes um grupo de relatrios compartilha dados comuns por exemplo, o cabealho/
rodap com o logo da empresa ou outros dados, como o e-mail ou o endereo, etc. Se houver
a necessidade de modificar os dados da empresa, por exemplo o endereo de e-mail, ent o
isso teria que ser feito em cada relatrio! Para evitar essa tarefa entediante, possvel usar a
herana do relatrio. O que a herana do relatrio?
Como exemplo, relatrios normalmente possuem elementos (logo, nome da empresa, e-mail,
etc.) colocados no ttulo do relatrio ou no cabealho da pgina. possvel criar um relatrio
base que contm somente estes elementos comuns. Todos os outros relatrios podem ent o
usar o relatrio base e assim conter todos os elementos comuns, assim como outros
elementos que forem adicionados especificamente a cada relatrio.
Se algo precisar ser alterado (como o logo ou e-mail), o relatrio base aberto e as alteraes
necessrias ser o feitas ali. Todos os relatrios com herana do relatrio base ser o ent o
alterados automaticamente. Na verdade, quando um relatrio baseado em herana aberto, o
relatrio base aberto primeiro, seguido do relatrio derivado.

13.1

Criar um relatrio base


Vamos criar um relatrio simples que utilize a herana. Nosso relatrio final deve ter esta
aparncia:

Primeiro necessrio criar o relatrio base. Que elementos ele deve conter? Os elementos
s o o bitmap do logo, o ttulo "Nossa empresa" e o endereo de e-mail. Crie um relatrio novo e
coloque os objetos comuns em "TtuloDoRelatrio":

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

186

FastReport VCL 5 User's Manual

Salve o relatrio como "base.fr3". Em que pasta? Isso depende de como voc configurou o
componente "TfrxDesigner". Por padr o, o FastReport procura os relatrios de base na pasta
que contm o arquivo .exe do aplicativo. De forma alternativa, possvel especificar uma pasta
para modelos na propriedade "TfrxDesigner.TemplateDir".
Agora crie o relatrio derivado. Para fazer isso, use "Arquivo > Novo...", selecione a guia
"Modelos" na caixa de dilogo e procure o relatrio base ("base.fr3"). Clique em "Herana do
relatrio" e pressione OK:

O FastReport criar um relatrio que contm todos os objetos do relatrio base. Eles s o
marcados com o smbolo de "cadeado":

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Herana do relatrio

187

O que significa o smbolo de "cadeado"? Ele significa que estes objetos n o podem ser
renomeados ou excludos, e tambm n o podem ser movidos para outra banda. possvel
efetuar alteraes em qualquer outra propriedades (como texto, cor e borda). Observe que se
voc alterar alguma propriedade de um objeto bloqueado (por exemplo a cor), esta altera o
ser armazenada no relatrio derivado. Se voc depois alterar a cor deste objeto no relatrio
base, a altera o ser ignorada pelo relatrio derivado. Por exemplo: abra o relatrio derivado,
altere a cor de "Nossa empresa" para vermelho e salve o relatrio. Agora abra o relatrio base e
configure a cor de "Nossa empresa" como verde. Quando o relatrio derivado for aberto
novamente, a cor de "Nossa empresa" ainda ser vermelho. Por isso, prefervel alterar as
propriedades de objetos que possuem o smbolo de "cadeado" no relatrio base, e n o no
relatrio derivado.
Vamos concluir nosso relatrio. Tudo que necessrio adicionar as bandas cabealho de
pgina e dados mestre:

E o relatrio est concludo.

13.2

Alterar um relatrio base


Vamos ver como alterar um relatrio base. Abra o relatrio base ("base.fr3" em nosso exemplo)
e altere alguns campos. Vamos alterar o endereo de e-mail:

Salve o relatrio. Agora abra o relatrio derivado e veja que o endereo de e-mail foi alterado

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

188

FastReport VCL 5 User's Manual

nele tambm:

O que acontece se for necessrio adicionar alguns objetos ao relatrio base? H uma regra
simples: os relatrios de base e os relatrios derivados n o podem conter nenhum objeto com
o mesmo nome. Ao alterar o relatrio base, pode n o ser possvel saber quantos relatrios
utilizam o relatrio base nem quais nomes de objetos foram usados nos relatrios derivados.
Neste caso, siga uma estratgia simples: ao adicionar objetos a relatrios de base, nomeie os
objetos usando um modelo, como 'NomeRelatrio_NomeObjeto'. Em nosso exemplo, adicione
um objeto "Texto" a nosso relatrio e configure seu nome como 'BaseMemo3'.
N o h nenhuma restri o em excluir objetos de um relatrio base ou mov-los.

13.3

Controle de herana
Seguimos a cria o de um relatrio derivado do zero. O que acontece se um relatrio existente
deve ser modificado para ter a herana de um relatrio diferente? Para fazer isso, abra o
relatrio e em "Relatrio > Opes..." escolha a guia "Herana":

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Herana do relatrio

189

Selecione a op o "Herana do relatrio base" e escolha o relatrio base na lista. Se


necessrio, altere o caminho do modelo para ver um conjunto de modelos diferente. Aperte OK
e FastReport ir combinar os dois relatrios. A seguinte mensagem de erro pode aparecer:

Isso acontece se os dois relatrios tiverem objetos com o mesmo nome. Os objetos com
nomes duplicados podem ser excludos ou renomeados no relatrio derivado.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

XIV
Assistentes

Assistentes

191

O FastReport fornece assistentes que simplificam o processo de cria o do relatrio. Os


assistentes podem ser encontrados em "Arquivo > Novo...":

14.1

Assistente de relatrio novo


H dois cones de assistentes para criar relatrios novos, e dois cones para a cria o direta de
novos relatrios:
- Assistente de relatrio padr o
- Assistente de relatrio matricial
- Relatrio padr o
- Relatrio matricial
Os cones do tipo "Relatrio padr o" e "Reltrio matricial" criam relatrios padr o e matriciais
vazios, respectivamente (veja mais informaes sobre relatrios matriciais nas sees
anteriores). Os relatrios novos contm um pgina vazia.
Os cones do tipo "Assistente de Relatrio Padr o" e "Assistente de Relatrio Matricial" guiam o
processo de escolher o conjunto de dados e os campos necessrios do relatrio, a cria o
opcional de grupos e a sele o do layout de dados. Vamos dar uma olhada em um relatrio
criado com a ajuda do "Assistente de Relatrio Padr o".
Escolha "Arquivo > Novo..." e clique no cone "Assistente de Relatrio Padr o". A caixa de
dilogo do assistente de relatrio exibida:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

192

FastReport VCL 5 User's Manual

A caixa de dilogo possui diversas guias. Na primeira guia, escolha a fonte de dados do
relatrio. Escolha a tabela customer e aperte o bot o "Prximo >>".
Na prxima guia selecione os campos a serem exibidos no relatrio:

No lado esquerdo h uma lista de campos disponveis; no campo direito h uma lista de
campos que foram selecionados para serem exibidos no relatrio. Use os botes "Adicionar >",

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Assistentes

193

"Adicionar todos >>", "< Remover" e "<< Remover todos" para mover os campos de uma lista
para a outra. Use os botes para mover os campos selecionados para cima ou para baixo na
lista. Adicione os campos "Company", "Contact", "Phone" e "FAX" lista de campos
selecionados e aperte o bot o "Prximo >>".
Na prxima guia possvel criar um ou mais grupos. O FastReport adicionar o cabealho do
grupo e as bandas de rodap do grupo ao relatrio.

A cria o de grupos opcional. Ignore-a ao pressionar o bot o "Prximo >>".


A prxima guia define a orienta o da pgina e a escolha de um entre dois layouts de pgina
tabular e em colunas:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

194

FastReport VCL 5 User's Manual

O layout escolhido ilustrado na parte direita da caixa de dilogo.


Finalmente, a ltima guia lista os esquemas de cores disponveis para seu relatrio, que
novamente s o ilustrados no lado direito da caixa de dilogo.

Ao pressionar o bot o "Concluir", o assistente criar o seguinte relatrio:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Assistentes

195

Agora possvel visualizar o relatrio.

14.2

Assistente de nova conex o


Este assistente adiciona uma nova conex o de banco de dados a um relatrio existente.
Podem ser necessrias duas ou mais conexes se for necessrio exibir dados de dois ou mais
bancos de dados no relatrio. O assistente adiciona o componente de banco de dados (por
exemplo "TfrxADODatabase") ao relatrio.

necessrio criar a cadeia de conex o com o bot o ..., que abre a caixa de dilogo de conex o
padr o do Windows para configurar os parmetros do banco de dados e da conex o. Depois
disso possvel configurar o nome de usurio e a senha, se forem necessrios.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

196

FastReport VCL 5 User's Manual

Observa o: possvel criar uma nova conex o manualmente


componente "TfrxADODatabase" na guia Dados do relatrio.

14.3

apenas coloque um

Assistente de nova tabela


Este assistente adiciona uma nova tabela de banco de dados a um relatrio existente.

Selecione o nome da tabela. Se necessrio, tambm possvel definir um filtro, por exemplo:
(CustNo > 2000) and (CustNo < 3000)
Observa o: possvel criar uma nova tabela manualmente ao colocar o componente
"TfrxADOTable" na guia Dados do relatrio.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Assistentes

14.4

197

Assistente de nova consulta


Este assistente adiciona uma nova consulta SQL a um relatrio existente.

A consulta SQL deve ser criada aqui. possvel usar o construtor visual de consultas para
fazer isso - clique no bot o . O construtor de consultas descrito mais adiante neste captulo.
Observa o: possvel criar uma nova consulta manualmente ao colocar o componente
"TfrxADOQuery" na guia de Dados do relatrio.

14.5

Constru o da consulta
O FastQueryBuilder pode ser usado para criar consultas visualmente. FastQueryBuilder
includo nas edies FastReport Professional e Enterprise, e tambm pode ser comprado
como um produto independente. O construtor de consultas cria consultas visualmente na
linguagem SQL. O construtor ilustrado abaixo:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

198

FastReport VCL 5 User's Manual

1
2
3
4

barra de ferramentas
espao de trabalho do construtor
lista de tabelas disponveis
propriedades de campo da tabela selecionada

Barra de ferramentas:
- abrir arquivo SQL
- salvar consulta em um arquivo (o diagrama da consulta tambm salvo no arquivo)
- limpar o espao de trabalho do construtor
- bot o OK: salvar e fechar o construtor
- bot o Cancelar: fechar o construtor sem salvar
O espao de trabalho e a lista de tabelas disponveis suportam arrastar e soltar, ou seja,
tabelas podem ser arrastadas para o espao de trabalho com o mouse. Tambm possvel
clicar duas vezes em uma tabela na lista de tabelas disponveis.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Assistentes

199

Para incluir um campo da tabela na consulta, selecione-o na lista:

Os campos selecionados s o exibidos no espao de propriedades do campo (4):

- Visvel: controla se o campo exibido na sada


- Onde: condi o de sele o do campo, por exemplo '> 5'
- Classifica o: dire o de classifica o do campo
- Fun o: fun o aplicada ao campo
- Grupo: agrupamento no campo
Ao "arrastar" campos entre as tabelas no espao de trabalho (2), "linhas de uni o" s o exibidas.
Quando campos s o unidos, a compatibilidade dos tipos dos campos unidos verificada. O
construtor n o permite a uni o de campos de tipos n o compatveis. Para alterar os
parmetros da uni o, mantenha o cursor sobre a "linha de uni o", clique com o bot o direito e
selecione o item Opes. A caixa de dilogo Opes de Link exibida, na qual possvel
configurar a uni o, como mostrado abaixo:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

200

FastReport VCL 5 User's Manual

14.5.1 Utiliza o do construtor de consultas


Vamos criar um relatrio simples usando o construtor de consultas.
Clique em "Novo Relatrio" na barra de ferramentas do designer para criar uma pgina de
relatrio com as bandas "Cabealho do Relatrio", "Dados de 1o. Nvel" e "Rodap da Pgina".
Coloque um componente "Consulta ADO" na guia "Dados". Clique duas vezes no componente
para abrir o editor de consultas.

Clique no bot o
no editor de consultas para abrir a janela do criador de consultas. Selecione
a tabela Customer na lista de tabelas (3) e arraste-a para o espao de trabalho (ou clique duas
vezes na tabela). Selecione os campos CustNo, Company e Phone:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Assistentes

201

Isso tudo que necessrio fazer para criar uma consulta. O texto da consulta exibido na
guia SQL e a guia Resultado exibe os dados retornados pela consulta. Clique em para fechar o
construtor e retornar ao editor de consultas, onde o texto da consulta exibido:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

202

FastReport VCL 5 User's Manual

Aten o! Se o texto da consulta for alterado no editor de consultas, o diagrama da consulta de


tabelas e unies ser perdido. N o altere o texto da consulta manualmente, sempre abra o
construtor de consultas e modifique o diagrama visualmente.
Ao clicar em
no editor de consultas, voc volta para o designer de relatrios. Tudo que resta
fazer conectar a banda "DadosMestre" fonte de dados e colocar os campos necessrios na
banda "DadosMestre".

14.5.2 Construir consultas complexas


No ltimo exemplo criamos um relatrio baseado em uma tabela. Agora vamos ver como criar
uma consulta na qual os dados s o fornecidos por duas tabelas.
Anteriormente abordamos um relatrio que utiliza grupos. Vamos criar uma consulta para este
relatrio com a utiliza o do construtor de consultas. Precisamos criar uma consulta em SQL
que retornar dados de ambas as tabelas, e os dados devem ser agrupados com condies
especficas. Em nosso exemplo a condi o ser os campos CustNo nas duas tabelas.
Assim como no exemplo anterior, crie um relatrio novo e coloque um componente
"ADOQuery" na pgina. Abra o editor de consultas e depois o construtor de consultas.
Arraste duas tabelas para a rea de trabalho Customers e Orders. Ambas possuem o campo
CustNo, que ser usado para unir as tabelas. Arraste o campo CustNo de uma tabela para a
outra para unir as duas tabelas:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Assistentes

203

Agora necessrio configurar os campos que devem ser exibidos e o campo de classifica o.
Marque o campo "*" nas duas tabelas e marque o campo CustNo na tabela Customer. Os
campos selecionados s o exibidos na lista de parmetros de campo. Selecione a ordem de
classifica o do campo CustNo:

Isso tudo que necessrio fazer para concluir a consulta. Esta a aparncia do cdigo SQL:

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

204

FastReport VCL 5 User's Manual

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Chapter

XV
Visualiza o,
impress o e
exporta o de
um relatrio

206

FastReport VCL 5 User's Manual

Um relatrio construdo pode ser exibido e impresso ou exportado para um dos formatos com
suporte. Tudo isso pode ser feito na janela de visualiza o.

Legenda:
1 pginas concludas do relatrio
2 barra de ferramentas
3 barra de status
4 espao da estrutura de tpicos para a rvore da estrutura de tpicos (exibida acima) ou
para miniaturas
A barra de ferramentas possui os seguintes botes:

cone

Nome

Descri o

Imprimir relatrio

imprime o relatrio

Abrir relatrio

abre o arquivo que contm o relatrio concludo (*.


fp3)

FastReport v4 1998-2014 Fast Reports Inc.

atalho: Ctrl+P

Manual v5.0.0

Visualiza o, impress o e exporta o de um relatrio

207

Salvar relatrio

salva o relatrio em um arquivo (*.fp3) ou exporta o


relatrio para um dos formatos suportados

Exportar para PDF

exporta o relatrio para um arquivo Adobe Acrobat


(*.pdf)

Enviar por e-mail

exporta o relatrio para um dos formatos


suportados e o envia por e-mail como anexo

Localizar texto

pesquisa o texto no relatrio

Aumentar Zoom

aumenta o zoom na visualiza o

Zoom

seleciona uma escala arbitrria para o zoom

Diminuir Zoom

diminui o zoom da visualiza o

Tela Cheia

exibe o relatrio em tela cheia


retorne ao tamanho normal clicando duas vezes
no relatrio

atalho: Ctrl+F

Estrutura de tpicos exibe ou oculta a estrutura de tpicos do relatrio


do relatrio

15.1

Miniaturas

exibe ou oculta a exibi o das miniaturas

Propriedades da
Pgina

abre a caixa de dilogo com as configuraes da


pgina

Editar Pgina

edita a pgina atual

Primeira Pgina

salta para a primeira pgina do relatrio

Pgina Anterior

salta para a pgina anterior do relatrio

Nmero da Pgina

salta para o nmero da pgina do relatrio


digite o nmero e aperte Enter

Prxima Pgina

salta para a prxima pgina do relatrio

ltima Pgina

salta para a ltima pgina do relatrio

Fechar janela

fecha a visualiza o

Teclas de controle
Teclas
Ctrl+S
Ctrl+P
Ctrl+F
F3
Arrows
PageUp, PageDown
Ctrl+PageUp, PageDown

FastReport v4 1998-2014 Fast Reports Inc.

Descri o
salvar relatrio em um arquivo *.fp3
imprimir relatrio
pesquisa de texto
pesquisar novamente
rolagem suave do relatrio
rolagem para cima/para baixo do
relatrio
rolagem para a prxima pgina/

Manual v5.0.0

208

FastReport VCL 5 User's Manual

Home
End

15.2

pgina anterior do relatrio


incio do relatrio
final do relatrio

Controle do mouse
A o
Descri o
Bot o esquerdo clique no objeto selecionado (no relatrio interativo)
rolagem do relatrio no modo "m o" (mova o mouse com o bot o
apertado)
aumentar o zoom no modo "lupa"
Bot o direito
menu de contexto
diminuir o zoom no modo "lupa"
Dois cliques
retornar ao tamanho normal quando estiver no modo tela cheia
Roda do mouse rolagem do relatrio

15.3

Impress o do relatrio
Para imprimir um relatrio, clique no bot o
aberta.

(ou no atalho Ctrl+P). A caixa de dilogo padr o

Vamos dar uma olhada nas opes disponves nesta caixa de dilogo.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Visualiza o, impress o e exporta o de um relatrio

209

Painel "Impressora": selecione a impressora na qual ser impresso o relatrio; configure as


propriedades da impressora, por exemplo a qualidade de impress o; escolha a impress o para
um arquivo.

Painel "Pginas": selecione quais pginas ser o impressas (todas, a pgina atual ou um
intervalo selecionado).

Painel "Cpias": configure o nmero de cpias a serem impressas. Ao imprimir mais de uma
cpia, se Agrupar estiver marcado, a primeira cpia impressa completamente, ent o a
segunda impressa completamente, etc. Se Agrupar n o estiver marcado, ent o todas as
cpias da primeira pgina s o impressas, seguidas de todas as cpias da segunda pgina, etc.

Painel "Outras Opes":


- Imprimir: seleciona quais pginas ser o impressas (Todas as pginas, Pginas pares,
Pginas mpares)
- Ordem: imprimir pginas na ordem direta ou inversa (primeira pgina at a ltima, ltima
pgina at a primeira)
- Duplex: gerenciar duplex por padr o (as configuraes do relatrio s o usadas) ou escolha
uma das opes de duplex: vertical, horizonal, simplex

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

210

FastReport VCL 5 User's Manual

Painel "Modo de impress o": selecione o modo de impress o.

- Modo padr o: imprime na folha definida no relatrio. Uma pgina de relatrio impressa em
cada folha

- Repartir pginas grandes: este modo til ao imprimir um relatrio A3 em uma folha A4.
Uma pgina do relatrio impressa em mais de uma folha. Quando este modo escolhido,
o tamanho da folha ("Imprimir na folha") tambm deve ser especificado.

- Juntar pginas pequenas: este modo til ao imprimir um relatrio A4 em uma folha A3.
Duas ou mais pginas de visualiza o s o impressas em uma folha. Quando este modo
escolhido, o tamanho da folha ("Imprimir na folha") tambm deve ser especificado.

- Modo escala: o relatrio impresso em uma folha de tamanho especificado. Toda a sada do
relatrio dimensionada. Uma pgina da visualiza o impressa por folha. Quando este
modo escolhido, o tamanho da folha ("Imprimir na folha") tambm deve ser especificado.
Ao clicar em OK, a impress o do relatrio iniciada. Se "Imprimir para arquivo" for marcado, a
caixa de dilogo padr o "Salvar Como..." aberta. O relatrio salvo em um arquivo de
extens o *.prn. O arquivo contm uma cpia das informaes enviadas impressora.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Visualiza o, impress o e exporta o de um relatrio

15.4

211

Pesquisa de texto em relatrios


O FastReport pode pesquisar uma frase especfica no texto de um relatrio visualizado.
Pesquise usando o bot o
na barra de ferramentas (ou o atalho Ctrl+F). A caixa de dilogo de
pesquisa aberta:

Insira a frase que deve se pesquisada e seleciona as opes se necessrio:


- Pesquisar do incio: pesquisar o relatrio desde o incio; se n o for marcado, a pesquisa
efetuada a partir da pgina atual
- Diferenciar maisculas de minsculas: as maisculas e minsculas da frase de pesquisa
devem corresponder com o resultado da pesquisa
Clique em OK e a pesquisa iniciada. O primeiro resultado (se houver) realado:

Para continuar a pesquisa, clique em F3. O prximo resultado (se houver) ser realado.

15.5

Exportar o relatrio
O FastReport pode exportar um relatrio visualizado para diversos formatos para permitir a
edi o adicional, arquivamento ou o envio por e-mail, etc. Para habilitar a exporta o, os
componentes de exporta o do FR apropriados devem ser adicionados ao formulrio Delphi.
O FastReport pode exportar para os seguintes formatos: PDF, Planilha Open Document, Texto
Open Document, Excel 97/2000/XP, Excel XML, Excel 2007, RTF, Word 2007, PowerPoint
2007, HTML, texto, CSV, BMP, Jpeg, Tiff e Gif. Relatrios tambm podem ser enviados por email em qualquer um dos formatos listados.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

212

FastReport VCL 5 User's Manual

O FastReport usa um dos seguintes trs mtodos para exportar relatrios:


- 'Camada': cada objeto do relatrio exportado para uma camada separada. A sada
exportada parecida com a visualiza o original.
- 'Tabela': a exporta o para o arquivo de sada feita atravs da cria o de uma grade de
transi o na memria, seguido da sada dessa grade. A sada exportada corresponde
visualiza o original, contanto que os princpios do bom design de um relatrio tenham sido
seguidos (consulte o captulo "Consideraes do design do relatrio").
- 'Desenho': objetos exportados s o capturados da imagem da pgina. A sada exportada
uma cpia direta da visualiza o. este mtodo usado ao exportar para formatos grficos.

15.5.1 Exportar para o formato PDF


PDF (Portable Document Format): um formato independente de plataforma para documentos
eletrnicos criado por Adobe Systems. O pacote gratuito Adobe Reader usado para a
visualiza o. Este formato flexvel - ele permite a inclus o das fontes necessrias e imagens
de vetor e bitmap; uma maneira de distribuir e armazenar documentos que foram criados
para a visualiza o ou impress o.
O mtodo de exporta o 'camada por camada'.
Ao exportar para o formato PDF, uma caixa de dilogo aberta que solicita as configuraes do

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Visualiza o, impress o e exporta o de um relatrio

213

arquivo de sada.

Configuraes de exporta o:
- Compactado: o arquivo de sada compactado; o tamanho do arquivo reduzido, porm o
tempo de exporta o aumenta
- Fontes embutidas: todas as fontes usadas no relatrio est o contidas no arquivo PDF de
sada, o que permite a renderiza o precisa em computadores nos quais as fontes est o
ausentes; o tamanho do arquivo de sada aumenta consideravelmente
- Plano de fundo: a imagem grfica configurada como plano de fundo exportada ao arquivo
PDF; o tamanho do arquivo de sada aumenta consideravelmente
- Impress o otimizada: imagens grficas s o exportadas em alta resolu o para obter uma
impress o precisa; esta op o somente necessria quando um documento possuir
grficos e precisar ser impresso; o tamanho do arquivo de sada aumenta
consideravelmente
- Estrutura de tpicos: esta op o somente habilitada se o relatrio conter uma estrutura de
tpicos; a estrutura de tpicos exportada ao arquivo PDF
- Abrir depois de exportar: o arquivo exportado aberto imediatamente aps a exporta o
usando o visualizador de PDF padr o instalado no computador (por exemplo o Adobe
Reader).
Recurso da exporta o: objetos RichText s o exportados como grficos.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

214

FastReport VCL 5 User's Manual

15.5.2 Exportar para Open Document


O formato Open Document (ODF, OASIS Open Document Format for Office Application) foi
projetado pela OASIS e baseado no formato XML usado no OpenOffice.
O FastReport suporta a exporta o para arquivos de tabela (.ods) e texto (.odt). Estes arquivos
podem ser abertos no OpenOffice.
O mtodo de exporta o 'tabela'.
Ao exportar para o formato ODF, aberta uma caixa de dilogo que solicita as configuraes
do arquivo de sada.

Configuraes de exporta o:
- Contnuo: exporta como um documento contnuo, sem quebras de pgina e sem
cabealhos/rodaps de pgina
- Quebra de pgina: habilita quebras de pgina no documento
- WYSIWYG: uma representa o precisa do relatrio visualizado; se esta op o for
desabilitada, a otimiza o habilitada, o que reduz o nmero de linhas e colunas no arquivo
de exporta o
- Plano de fundo: a imagem grfica configurada como o plano de fundo da pgina exportada
ao arquivo ODF; o tamanho do arquivo de sada aumenta consideravelmente
- Abrir depois de exportar: o arquivo exportado aberto imediatamente aps a exporta o.
Recurso da exporta o: objetos RichText s o exportados como texto simples, e a exporta o
de imagens grficas suportada.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Visualiza o, impress o e exporta o de um relatrio

215

15.5.3 Exportar ao formato RTF


RTF (Rich Text Format) foi desenvolvido pela Microsoft como o padr o para o intercmbio de
documentos de texto. Documentos RTF s o suportados por muitos editores de texto e
sistemas operacionais modernos.
O mtodo de exporta o 'tabela'.
Ao exportar para o formato RTF, uma caixa de dilogo aberta que solicita as configuraes do
arquivo de sada.

Configuraes de exporta o:
- Figuras: habilita a exporta o de imagens grficas ao arquivo
- Quebra de pgina: habilita quebras de pgina no documento
- WYSIWYG: uma representa o precisa do relatrio visualizado; se esta op o for
desabilitada, a otimiza o habilitada, o que reduz o nmero de linhas e colunas no arquivo
de exporta o
- Contnuo: exporta como um documento contnuo, sem quebras de pgina e sem
cabealhos/rodaps de pgina
- Cabealho/rodap da pgina: modo de exporta o do cabealho/rodap; os modos s o:
Texto (c/r exportados como texto normal), Cabealho/rodap (c/r s o exportados) e Nenhum
(c/r n o s o exportados).
- Abrir depois de exportar: o arquivo exportado aberto imediatamente aps a exporta o
usando o visualizador de RTF padr o instalado no computador (por exemplo Microsoft
WordPad).
Recurso da exporta o: objetos RichText s o completamente integrados no formato RTF; a
precis o da renderiza o e do tamanho do arquivo depende do design do relatrio. Consulte o
captulo "Consideraes do design do relatrio".

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

216

FastReport VCL 5 User's Manual

15.5.4 Exportar para Word 2007


Word 2007 um aplicativo para trabalhar com documentos de texto. Ele est includo no
Microsoft Office 2007.
O mtodo de exporta o 'tabela'.
Ao exportar para o formato Word 2007, uma caixa de dilogo aberta que solicita as
configuraes do arquivo de sada.

Configuraes de exporta o:
- Abrir depois de exportar: o arquivo exportado aberto imediatamente aps a exporta o.

15.5.5 Exportar para Excel 97/2000/XP


Excel

um aplicativo para trabalhar com planilhas eletrnicas. includo no Microsoft Office.

O mtodo de exporta o 'tabela'.


Ao exportar para o formato Excel, uma caixa de dilogo aberta que solicita as configuraes
do arquivo de sada.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Visualiza o, impress o e exporta o de um relatrio

217

Agrupamento de Dados:
- Como no relatrio: cada pgina do relatrio exportada em uma planilha Excel separada;
- Tudo em uma pgina: gera um documento contnuo sem quebras de pgina e cabealhos/
rodaps de pgina;
- Pedaos. Cada pedao possui (fileiras): cada pedao exportado em uma planilha Excel
separada.
Configuraes de exporta o:
- WYSIWYG: uma representa o precisa do relatrio visualizado; se esta op o for
desabilitada, a otimiza o habilitada, o que reduz o nmero de linhas e colunas no arquivo
de exporta o
- Figuras: inclui imagens grficas exportadas na tabela de sada;
- Linhas da grade: ativa/desativa linhas de grade no Excel;
- Ajustar tamanho da pgina: ajusta o tamanho da clula ao contedo;
- Excluir fileiras vazias: exclui fileiras vazias da tabela de sada;
- Exportar frmulas: se o texto de uma clula comear com o smbolo "=", ele exportado
como uma frmula Excel;
- Abrir depois de exportar: o arquivo exportado aberto imediatamente aps a exporta o.
Recursos da exporta o: objetos RichText s o transferidos como texto simples, e a
transferncia de imagens grficas suportada.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

218

FastReport VCL 5 User's Manual

15.5.6 Exportar para o formato Excel XML


XML (Extensible Markup Language) uma linguagem de marca o extensvel. XML foi projetada
para o armazenamento estruturado de dados e tambm para o intercmbio de dados entre
programas diferentes. O FastReport usa o formato XML para a transferncia de dados para o
Excel vers o 2003 e posterior.
O mtodo de exporta o 'tabela'.
Ao exportar para o formato XML, exibida uma caixa de dilogo para a configura o dos
parmetros do arquivo de sada.

Parmetros de exporta o:
- Contnuo: gera um documento contnuo, sem quebras de pgina e sem cabealhos/rodaps
de pgina
- Quebra de pgina: habilita quebras de pgina no documento
- WYSIWYG: uma representa o precisa do relatrio visualizado; se esta op o for
desabilitada, a otimiza o habilitada, o que reduz o nmero de linhas e colunas no arquivo
de exporta o
- Plano de fundo: a cor de plano de fundo da pgina do relatrio exportada para a planilha
- Abrir o Excel depois de exportar: o arquivo exportado aberto imediatamente aps a
exporta o.
Recursos da exporta o: objetos RichText s o exportados como texto simples; imagens
grficas n o s o suportadas.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Visualiza o, impress o e exporta o de um relatrio

219

15.5.7 Exportar para Excel 2007


Excel 2007 um aplicativo para trabalhar com planilhas eletrnicas. includo no Microsoft
Office 2007.
O mtodo de exporta o 'tabela'.
Ao exportar para o formato Excel, uma caixa de dilogo aberta que solicita as configuraes
do arquivo de sada.

Dividir em planilhas:
- N o dividir: todas as pginas do relatrio s o exportadas para uma nica planilha Excel
- Usar pginas do relatrio: cada pgina do relatrio exportada para uma planilha Excel
separada
- Nmero de fileiras: cada conjunto de fileiras exportado para uma planilha Excel separada
Parmetros de exporta o:
- Contnuo: gera um documento contnuo, sem quebras de pgina e sem cabealhos/rodaps
de pgina
- Quebra de pgina: inclui quebras de pgina no documento resultante
- WYSIWYG: uma representa o precisa do relatrio visualizado; se esta op o for
desabilitada, a otimiza o habilitada, o que reduz o nmero de linhas e colunas no arquivo
de exporta o
- Abrir o Excel depois de exportar: o arquivo exportado aberto imediatamente aps a

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

220

FastReport VCL 5 User's Manual

exporta o
Recursos da exporta o: objetos RichText s o exportados como texto simples; imagens
grficas s o suportadas.

15.5.8 Exportar para PowerPoint 2007


PowerPoint 2007 um aplicativo para trabalhar com apresentaes eletrnicas. Ele includo
no Microsoft Office 2007.
O mtodo de exporta o em camadas.
Ao exportar para o formato PowerPoint, uma caixa de dilogo aberta que solicita as
configuraes do arquivo de sada.

Configuraes de exporta o:
- Abrir depois de exportar: o arquivo exportado aberto imediatamente aps a exporta o.

15.5.9 Exportar para o formato CSV


Arquivos CSV contm dados em tabelas (nmeros e texto) no formato texto sem formata o.
Um separador especificado inserido entre valores de colunas, e as fileiras comeam em uma
linha nova. Este formato pode ser aberto por diversos editores de tabelas/diagramas.
O mtodo de exporta o 'tabela'.
Ao exportar para o formato CSV, uma caixa de dilogo aberta que solicita as configuraes do
arquivo de sada.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Visualiza o, impress o e exporta o de um relatrio

221

Configuraes de exporta o:
- Pgina de cdigo OEM: a codifica o OEM do arquivo exportado
- Separador: o separador usado entre as colunas
- Abrir depois de exportar: o arquivo exportado aberto imediatamente aps a exporta o
usando o visualizador CSV padr o instalado no computador.
Recursos de exporta o: nenhuma informa o de layout (o design do relatrio) includa no
arquivo de exporta o; imagens grficas n o s o suportadas.

15.5.10 Exportar para o formato HTML


HTML (Hypertext Markup Language) considerada a linguagem padr o para documentos na
Internet. Ela usada para criar documentos relativamente simples porm com bom design.
HTML suporta links de hipertexto, assim como um layout de documento simples.
O mtodo de exporta o 'tabela'.
Ao exportar para o formato HTML, uma caixa de dilogo aberta que solicita as configuraes
do arquivo de sada.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

222

FastReport VCL 5 User's Manual

Configuraes de exporta o:
- Estilos: estilos de design dos objetos texto exportados; quando desabilitados, a velocidade
de exporta o maior, mas a aparncia n o igual a uma planilha
- Todos em uma pasta: arquivos adicionais s o salvos na mesma pasta do arquivo principal
- Navegador de pginas: um navegador especial para criar saltos rpidos entre pginas
- Largura fixa: bloqueia o ajuste de largura automtico de tabelas/diagramas ao alterar o
tamanho da janela de exibi o
- Multi-pgina: cada pgina exportada como um arquivo separado
- Plano de fundo: a imagem grfica configurada como o plano de fundo da pgina exportada
para o arquivo HTML
- Figuras: imagens grficas s o exportadas para o arquivo HTML
- Abrir depois de exportar: o arquivo exportado aberto imediatamente aps a exporta o
usando o visualizador HTML padr o instalado no computador.
Recursos da exporta o: a exporta o pode ser composta de diversos arquivos; cada imagem
grfica exportada para seu prprio arquivo; objetos RichText s o exportados como texto
simples; a precis o da renderiza o e do tamanho do arquivo dependem do design do relatrio,
consulte o captulo "Consideraes do design do relatrio".

15.5.11 Exportar para o formato texto


Um arquivo de texto sem formata o sem nenhum grfico.
O mtodo de exporta o 'tabela'.
Ao exportar para o formato texto, uma caixa de dilogo aberta que solicita as configuraes
do arquivo de sada.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Visualiza o, impress o e exporta o de um relatrio

223

Configuraes de exporta o:
- Quebra de pgina: exporta as quebras de pgina ao arquivo resultante
- Linhas vazias: habilita quebras de pgina no documento
- Bordas: habilita a exporta o de bordas do objeto texto
- Pgina de cdigo OEM: codifica o OEM do arquivo exportado
- Abrir depois de exportar: o arquivo exportado aberto imediatamente aps a exporta o
usando o visualizador de texto padr o instalado no computador.
Recursos da exporta o: nenhuma informa o de layout (o design do relatrio) includa no
arquivo de exporta o; imagens grficas n o s o suportadas; a largura da pgina configurada
automaticamente em dependncia ao tipo de objetos texto na pgina do relatrio.

15.5.12 Exportar para os formatos grficos Jpeg, BMP, Gif, Tiff


O FastReport exporta para formatos grficos.
- JPEG (Joint Photographic Experts Group): um formato compactado baseado em um
algoritmo que registra as diferenas entre os pixels. Ele caracterizado pela compacta o
alta em detrimento precis o grfica.
- BMP (Windows Device Independent Bitmap): usado para armazenar imagens bitmap usadas
no Windows. Um formato de arquivo padr o em computadores que utilizam o Windows.
- GIF (Graphics Interchange Format): um formato independente de hardware que foi
desenvolvido para a transmiss o de imagens bitmap atravs de redes. apropriado para
compactar contedo homogneo (logos, inscries, esquemas).
- TIFF, TIF (Target Image File Format): um formato independente de hardware. Hoje em dia

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

224

FastReport VCL 5 User's Manual

um dos formatos mais difundidos e confiveis na transmiss o de poligrafia e facsimile.


O mtodo de exporta o 'envolver'.
Ao exportar para os formatos exibidos acima, uma caixa de dilogo aberta que solicita as
configuraes do arquivo de sada.

Configuraes de exporta o:
- Arquivos separados: quando habilitado, cada pgina do relatrio exportada para um arquivo
separado; os nomes de arquivo s o derivados do nome de arquivo especificado com um
sufixo de um caractere de sublinhado + o nmero da pgina
- Monocromtico: exporta como uma imagem monocromtica
- Reduzir pgina: o espao em branco nas bordas da pgina s o cortados
- Qualidade JPEG: a taxa de compacta o JPEG; somente habilitada ao exportar para o
formato JPEG
- Resolu o: a resolu o grfica da imagem exportada
Recursos da exporta o: se Arquivos separados for desabilitado, criado um arquivo muito
grande.

15.6

Enviar um relatrio por e-mail


O FastReport pode enviar um relatrio concludo por e-mail em qualquer formato necessrio,
sem precisar de um aplicativo de e-mail separado.
Ao exportar por e-mail, a caixa de dilogo de configura o de e-mail aberta. Antes de exportar,
necessrio configurar os detalhes da conta de e-mail do remetente na guia "Conta":

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Visualiza o, impress o e exporta o de um relatrio

225

- Nome: o nome do remetente


- Endereo de e-mail: o endereo de e-mail do remetente
- Organiza o: a organiza o do remetente
- Assinatura: a assinatura do e-mail; ela pode ser gerada ao clicar no bot o "Criar" depois de
preencher os campos anteriores
- Host: servidor SMTP
- Porta: porta do servidor SMTP
- Login: nome de acesso para a autoriza o no servidor SMTP, se requerido pelo servidor
SMTP especificado
- Senha: senha para a autoriza o, se requerido pelo servidor SMTP especificado
- Lembrar propriedades: lembrar de todos os campos para uso posterior
Aps preencher os campos necessrios na guia "Conta", necessrio preencher os campos
de mensagem na guia "E-mail":

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

226

FastReport VCL 5 User's Manual

- Destinatrio: endereo de e-mail do destinatrio; possvel selecionar endereos usados


anteriormente na lista suspensa
- Assunto: o assunto da mensagem; possvel selecionar assuntos usados anteriormente na
lista suspensa
- Texto: o texto da mensagem
- Formato: o formato do relatrio anexado ao e-mail; selecione um dos formatos disponveis; o
formato FastReport (FR3) tambm pode ser selecionado
- Configuraes de exporta o avanadas: quando habilitadas, o bot o OK abre a caixa de
dilogo das configuraes do formato de exporta o apropriada; quando desabilitadas, as
configuraes de exporta o padr o s o usadas
Recursos da exporta o por e-mail: somente a autentica o simples nos servidores SMTP
suportada. Se a autentica o n o for requerida, n o necessrio inserir o "Login" e "Senha".

15.7

Consideraes do design do relatrio


A qualidade da sada do relatrio em qualquer formato depende da qualidade do design do
relatrio original. O FastReport pode manipular objetos de muitas maneiras durante a cria o
do relatrio. Isso fornece a vantagem do desenvolvimento rpido de relatrios e sua impress o
posterior. Documentos impressos tm a aparncia exata da visualiza o. Este o objetivo
principal do mecanismo do FastReport. A desvantagem dessa liberdade de desenvolvimento
a complexidade da exporta o de documentos FastReport para outros formatos de dados, dos
quais cada um possui seus prprios requerimentos e limitaes, que s vezes podem ser

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Visualiza o, impress o e exporta o de um relatrio

227

complexos. Neste captulo discutiremos os requerimentos de design especiais de relatrios que


precisam ser exportados.
Muitos formatos usam uma apresenta o de dados em tabela, como HTML, XLS, XML, RTF e
CSV. Ao contrrio da liberdade permitida no design da pgina no FastReport, ao exportar para
estes formatos, as clulas de sada criadas para estas tabelas n o podem ter intersees ou
serem arranjadas em camadas. Os filtros de exporta o normalmente levam esses
requerimentos em conta quando os objetos s o exportados pelo FastReport, atravs da
utiliza o de algoritmos especiais que lidam com intersees e o melhor posicionamento de
clulas. Nas intersees de objetos s o criadas novas linhas e colunas na tabela de sada. Isso
necessrio para permitir que o FastReport posicione os objetos de maneira exata e para obter
a maior correspondncia com a pgina de visualiza o original. Um grande nmero de objetos
com interse o no design de um relatrio resulta em um grande nmero de colunas e fileiras
adicionais na tabela de sada. Isso, por sua vez, pode levar necessidade de editar o arquivo
exportado em seu prprio editor antes que ele possa ser utilizado para outros fins.

Por exemplo, veja um relatrio onde o design possui uma sobreposi o pequena entre dois
objetos na mesma banda, e o nmero de registros no relatrio 150. Ao exportar para o
formato RTF, 450 linhas ser o criadas (150 fileiras para cada objeto e 150 fileiras para a
interse o). Se removermos a sobreposi o, haveria apenas 300 fileiras. Em relatrios
grandes com um grande nmero de objetos, a diferena seria muito maior. Isso, claro, afeta o
tamanho do arquivo de sada.

Objetos no relatrio

Exportar para o Excel - resultado

Tenha isso em mente ao criar relatrios que devem ser exportados para qualquer um dos
formatos que usa o mtodo de sada de 'tabela'.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

228

FastReport VCL 5 User's Manual

Ao fazer o design de tabelas nos relatrios, fique ciente das bordas de clulas adjacentes.
importante que clulas n o se sobreponham e n o sejam arranjadas em camadas. O algoritmo
de exporta o pode lidar com as clulas de maneira inesperada e fornecer um resultado que
n o o desejado. melhor arranjar objetos de maneira que sejam colocados em linha tanto
verticalmente como horizontalmente. As linhas guia podem ajudar com isso.

Usando linhas guia no designer


Para usar linhas guia no designer do FastReport, clique na rgua horizontal ou vertical no topo
ou no lado esquerdo da pgina do relatrio e arraste a rgua at a posi o desejada na pgina,
onde a linha guia ser exibida. Ent o voc poder posicionar objetos que estejam alinhados
com essas linhas guia horizontais e verticais.
O alinhamento da grade tambm pode ajudar no posicionamento de objetos "Texto", para evitar
sua sobreposi o. A grade habilitada nas Opes do designer, onde tambm possvel
ajustar a densidade: "Exibir > Opes... > Grade".

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

Visualiza o, impress o e exporta o de um relatrio

229

Ao usar bordas em objetos "Texto", melhor usar as propriedades de borda do objeto em vez
de adicionar objetos grficos como linhas e retngulos ao redor do texto. Tambm tente n o
usar objetos no plano de fundo, embaixo de objetos de texto transparentes.
Manter essas regras simples em mente ajudar voc a criar um relatrio que ter uma
aparncia perfeita aps ser exportado para um formato que utilize o mtodo de sada baseado
em tabela.
Abaixo seguem alguns exemplos de um arranjo bom e ruim de objetos.

Ruim
Os objetos s o deslocados horizontalmente
linha guia vertical.

Bom
eles n o est o alinhados horizontalmente com a

Ruim

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0

230

FastReport VCL 5 User's Manual

Bom
Os objetos est o sobrepostos ao exportar para um formato de tabela/diagrama, ser o criadas
fileiras e colunas adicionais e desnecessrias, alm de trs clulas adicionais na rea de
sobreposi o.
Recomendamos o estudo dos relatrios de demonstra o includos na instala o do
FastReport para ajudar voc a dominar os princpios bsicos do bom design de relatrios.

FastReport v4 1998-2014 Fast Reports Inc.

Manual v5.0.0