Você está na página 1de 106

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report.

_____________________________________________________________________________________

E-BOOK: Desenvolvendo relatrios em Delphi com Rave Report.

Por Ramos de Souza Janones


www.ramosdainformatica.com.br

_________________________________________________________________________ Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Dedicatria : Aos meus sobrinhos Gabriel e Lucas. Que eles percam o medo do lobo mau.

_________________________________________________________________________ Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Indice
NOTAS DO AUTOR.............................................................................................................6 CAPTULO 1 DESENVOLVENDO UMA APLICAO EXEMPLO .......................................8 Criando o projeto ........................................................................................................................................................8 Formulrio de Cadastro e Manuteno de Clientes ............................................................................................9 Formulrios de Cadastro de Setor........................................................................................................................14 Formulrio de Cadastro e Manuteno de Funcionrios..................................................................................17 ltimos ajustes em nossa aplicao exemplo .................................................................................................... 23 Criando um Splash Screen do sistema exemplo ................................................................................................23 Alterando cursores ..................................................................................................................................................24 CAPTULO 2 INTRODUO AO RAVE REPORT ............................................................ 26 Os componentes Rave Report do Delphi ........................................................................................................... 26 Conhecendo o Visual Designer do Rave ............................................................................................................. 27 Testando o relatrio ................................................................................................................................................ 34 Sobre os arquivos do Rave ..................................................................................................................................... 35 Gerando o relatrio no Delphi .............................................................................................................................. 36 CAPTULO 3 CRIANDO RELATRIOS COM RAVE REPORT .......................................... 37 Relatrio Lista Geral de Funcionrios ............................................................................................................... 37 Preparando a Aplicao .........................................................................................................................................37 Configurao dos componentes Rave na Aplicao.........................................................................................37 Configuraes Gerais do Rave .............................................................................................................................38 Acesso aos bancos de dados..................................................................................................................................40 Construindo o Relatrio .........................................................................................................................................41 Montando o cabealho............................................................................................................................................ 44 Utilizando imagem no Rave sem armazena-la ...................................................................................................45 Data de Impresso do Relatrio ...........................................................................................................................45 Inserindo os campos do banco de dados ............................................................................................................ 47 Numerao de Pginas............................................................................................................................................ 49 Imprimindo o relatrio........................................................................................................................................... 50 Relatrio Listagem Geral de Funcionrios com quebra de grupo ............................................................. 51 Economizando tempo de desenvolvimento em relatrios que utilizem o mesmo banco de dados de um relatrio desenvolvido anteriormente..................................................................................................................51 Construindo o Relatrio .........................................................................................................................................51 Montando o cabealho...........................................................................................................................................55 Data de Impresso do Relatrio ...........................................................................................................................56

_________________________________________________________________________ Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________ Imprimindo o relatrio ...........................................................................................................................................59 Etiqueta de Clientes................................................................................................................................................. 60 Preparando a Aplicao .........................................................................................................................................60 Configurao dos componentes Rave na Aplicao.........................................................................................60 Acesso aos bancos de dados..................................................................................................................................61 Configurando a Etiqueta no Rave ........................................................................................................................62 Imprimindo as etiquetas.........................................................................................................................................65 Relatrio com Mltiplas Pginas ......................................................................................................................... 66 Relatrio Mestre Detalhe ....................................................................................................................................... 70 CAPTULO 4 CONHECENDO OS COMPONENTES DO RAV E ......................................... 74 Palheta de componentes Drawing ........................................................................................................................ 74 Palheta de componentes Bar Code ...................................................................................................................... 75 Palheta de componentes Standard ...................................................................................................................... 76 Exemplo de utilizao do componente PageNumInit .......................................................................................77 Palheta de componentes Report........................................................................................................................... 79 Exemplo de utilizao do componente CalcOp .................................................................................................81 Palheta de componentes Zoom............................................................................................................................. 85 Palheta de componentes Colors............................................................................................................................ 86 Palheta de componentes Lines .............................................................................................................................. 86 Palheta de componentes Fills................................................................................................................................ 87 Palheta de componentes Fonts.............................................................................................................................. 87 Palheta de componentes Alignment .................................................................................................................... 87 CAPTULO 5 DICAS E SOLUES ................................................................................. 89 Traduzindo o Preview............................................................................................................................................. 89 Gerao e Impresso de Cdigo de Barras ....................................................................................................... 91 Impresso de Grficos ............................................................................................................................................ 92 Gerando relatrios em formato PDF.................................................................................................................. 93 Gerando Relatrios em formato HTML ............................................................................................................ 94 Gerando Relatrios em formato RTF ................................................................................................................ 94 Gerando Relatrios em formato TXT................................................................................................................ 95 Mirroring Espelhamento.................................................................................................................................... 95 Pgina Global ..........................................................................................................................................................95

_________________________________________________________________________ Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________ Passagem de Parmetros........................................................................................................................................ 96 Controle de Acesso a relatrios ............................................................................................................................ 97 A partir de relatrios...............................................................................................................................................97 A partir de banco de dados....................................................................................................................................99 Indicar pgina inicial ............................................................................................................................................100 Mensagem de Erro: Unable to gain control of Rave data Communication System. ...........................101 Mensagem de Erro: No datalink drivers have been loaded. ......................................................................101 Mensagem de Erro: Drive C: not exist. Please verify the correct drive was given. .............................101 Carregar imagem via programao..................................................................................................................102 Imprimir em Duplex .............................................................................................................................................102 Testar valor antes de imprimir ..........................................................................................................................102 Campos Calculados no Rave ...............................................................................................................................103 Imprimindo Bitmap usando o RAVE em modo cdigo...............................................................................103 Imprimindo RichText em mltiplas pginas..................................................................................................104 Convertendo arquivos NDR para PDF............................................................................................................105 Convertendo arquivos NDR para HTML .......................................................................................................105 Imprimindo em Matricial ....................................................................................................................................106

_________________________________________________________________________ Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Notas do Autor
Este livro foi desenvolvido com o objetivo de atender membros da comunidade Delphi, que necessitam estar atualizados com mudanas de mercado. A partir da verso 7 do Delphi, a Borland deixa de adotar o Quick Report que acompanha o Delphi desde sua primeira verso para adotar o Rave Report. Apesar de ser mais fcil e poderoso que o Quick Report, desenvolvedores encontram dificuldades com esta nova ferramenta, apenas problemas que toda mudana costuma causar, e pode ter certeza, instalar o Install Shield no Delphi 7 no uma grande soluo, preciso acompanhar as mudanas de mercado.. Este livro tem como objetivo principal auxiliar o desenvolvedor na migrao destas ferramentas. A fim de auxiliar o leitor, em futuras dvidas e questes referentes ao contedo deste livro e do prprio Rave, foi criado no site do autor (www.ramosdainformatica.com.br) um frum de discusso a respeito, ao qual o autor freqentar uma vez por semana, e uma rea de downloads com arquivos teis e novos exemplos de utilizao sobre Rave Report que possam surgir ao leitor, dando maior cobertura sobre o assunto. possvel encontrar nesta seo de downloads, um conversor de relatrios de Quick Report para Rave Report, que poder economizar muito tempo de desenvolvimento e transao de verses das aplicaes desenvolvidas em verses anteriores ao Delphi 7. importante fazer um comentrio geral sobre cada captulo do livro, para que o leitor possa navegar e compreender melhor o contedo, servindo tambm como um guia de consulta. O primeiro Captulo montado uma pequena aplicao exemplo, que ser utilizado para a gerao dos primeiros relatrios exemplos. Caso o leitor j possua conhecimentos na linguagem Delphi aconselhvel prosseguir para o prximo captulo. O Captulo a seguir, uma introduo ao Rave Report, onde ser gerado, atravs de Wizards, o primeiro relatrio no Rave, e comentrios em geral sobre o Designer do Rave. No Captulo: Criando Relatrio com Rave Report, iniciada uma srie de exemplos prticos sobre a gerao de relatrios, como pode ser observado atravs do ndice deste

_________________________________________________________________________ Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

livro. Onde o leitor conhecer e trabalhar com diversos componentes do Rave e compreender sua funcionalidade. O captulo 4 feito uma breve discusso sobre cada componente do Rave Report, e os componentes que ainda no foram utilizados at ento, nos captulos anteriores, so montados exemplos que ilustraro melhor a utilizao destes componentes. O ltimo captulo composto de dicas e solues a respeito de dvidas freqentes que podem ocorrer ao dia a dia do desenvolvedor, tornando este livro uma referncia ao leitor. Espero que este livro seja muito til aprendizado e utilizao desta nova ferramenta do Delphi, e aguardo sua visita ao site.

_________________________________________________________________________ Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Captulo 1 Desenvolvendo uma aplicao exemplo


Neste primeiro captulo, ser desenvolvida uma pequena aplicao exemplo para a gerao de relatrios. Caso o leitor j tenha conhecimentos em programao Delphi recomendvel ao prximo captulo. Ser desenvolvida uma aplicao simples de cadastro de Clientes e Funcionrios, com o banco de dados em Paradox. Porm, os exemplos deste livro no se basearo somente nesta simples aplicao, sero desenvolvidas, no decorrer do livro, diversas outras aplicaes exemplos para uma melhor ilustrao sobre a utilizao do Rave Report.

Criando o projeto
Para iniciar o desenvolvimento da aplicao exe mplo, deste livro, v ao menu do Delphi File | New | Application. Ser criado um novo formulrio, no Object Inspector faa as seguintes modificaes: Caption = Aplicao Exemplo Name = frmMainForm

Inicialmente deve ser criado um menu, com o componente MainMenu da paleta de componentes Standard. Com um duplo clique neste componente dever ser criada a opo do menu:

_________________________________________________________________________ Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Onde, na opo de Cadastro temos: Clientes, Funcionrios, Setores e Sair. Para a criao do menu, na propriedade Caption, do Object Inspector, de cada opo escreva respectivamente: &Cadastro, Clien&tes, &Funcionrios, S&etores e &Sair. Onde o smbolo & utilizado para habilitar a navegao pelo menu atravs do teclado, utilizando a tecla ALT mais a letra correspondente, que no caso, ser a letra antes do smbolo &. Observe, na figura a cima, que foi criado uma separao entre as opes de Funcionrios e Sair. Para criar esta separao, basta colocar, na propriedade Caption, o smbolo de menos -. Em seguida, crie as opes de relatrios que, inicialmente, teremos: Etiquetas para clientes em Geral, Etiquetas para Aniversariantes, Relao de Funcionrios por Departamento.

Formulrio de Cadastro e Manuteno de Clientes


Ento h trs tabelas, de clientes, funcionrios e departamentos. Ser criado agora suas telas de manuteno e cadastro. Primeiramente, crie o formulrio de clientes, indo ao menu File | New | Form do Delphi, ser apresentado um novo Form, configure, no object inspector, as propriedades do formulrio: Caption = Cadastro de Clientes

_________________________________________________________________________ Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Name = frmClientes Coloque um componente Panel, da aba de componentes Standard, no formulrio com as seguintes propriedades, no Object Inspector: Align = alTop Caption = (Vazio) Name = pnlClientes Na palheta de componentes, da aba Win32, coloque o componente PageControl, com a seguinte propriedade, no Object Inspector: Align = alClient Em seguida, clique com o boto direito do mouse, sobre o componente PageControl, e escolha a opo New Page, ser criada uma pasta. Mude a propriedade Caption de TabShit1 para &Geral. Crie, novamente uma nova pasta clicando com o boto direito do mouse, sobre o componente PageControl, e escolha a opo New Page, ser criado uma segunda pasta. Mude a propriedade Caption de TabShit2 para &Manuteno. Devendo ficar assim:

Deve-se criar, neste momento, a conexo com o banco de dados. Como estamos utilizando neste exemplo tabela Paradox, utilize o componente Table, da aba de componentes BDE, em seguida, coloque as seguintes propriedades, no Object Inspector: DataBaseName = [Nome do Alias] Name = tblClientes TableName = Clientes.db

_________________________________________________________________________ 10 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Agora, coloque um componente DataSource, da aba de componentes Data Access, que faz a comunicao entre o banco de dados e outros componentes que iremos utilizar, com o banco de dados em questo. Coloque as seguintes propriedades, no Object Inspector: DataSet = tblClientes Name = dtsrcClientes Da aba de componentes Data Controls, coloque um DBGrid. Configure as propriedades deste componente, no Object Inspector, como: Align = alClient DataSource = dtsrcClientes Selecione o componente tblClientes, e no Object Inspector, mude a propriedade Active de False para True. No Panel, de nosso formulrio, coloque um componente DBNavigator, que utilizado para navegar por nossa aplicao, da aba de componente Data Controls e, altere suas propriedades para: DataSource = dtsrcClientes Flat = True ShowHint = True Ainda nas propriedades do DBNavigator, clique em Hints, ser apresentada a tela a seguir:

Substitua o texto desta caixa de dilogos, traduzindo para o portugus. A apresentao de hints importante para auxiliar o usurio do sistema a compreender sua utilizao. Terminamos a primeira parte deste formulrio de Cadastro de Clientes, devendo este formulrio ficar como mostra a figura a seguir:

_________________________________________________________________________ 11 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Clique na pasta de Manuteno. Sero colocados os componentes para cadastramento, edio e visualizao dos dados cadastrados, em relao aos clientes. Para isso, d um duplo clique no componente Table de nosso formulrio, o t lClientes, onde dever b aparecer uma janela, nesta janela, clique com o boto direito do mouse e escolha a opo Add Fields , ser apresentado uma nova janela que contm os campos da tabela de clientes, clique no boto de OK. Selecione o campo Telefone, que iremos colocar uma mascara neste campo com as formataes de um telefone, no Object Inspector, altere a propriedade EditMask para !\(99\)0000-0000;1;_. Agora, devemos colocar os campos, na pasta de manuteno do formulrio de clientes. Para isso, selecione todos os campos:

Agora arraste estes campos selecionados para o formulrio, devendo ficar como mostra a imagem a seguir:

_________________________________________________________________________ 12 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

preciso colocar um boto para fechar o nosso formulrio. Da aba de componentes Additional, coloque um componente BitBtn e altere suas propriedades, no Object Inspector, para: Kind = bkClose Caption = &Fechar

Selecione o DBNavigator e, no Object Inspector na aba Events, no evento OnClick escreva o cdigo que apresentado figura a seguir, este cdigo diz que sempre que o usurio desejar cadastrar um novo cliente, dever ser apresentada pasta de Manuteno.

_________________________________________________________________________ 13 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Salve o formulrio como Clientes.

Formulrios de Cadastro de Setor


O cadastro de setor importante neste exemplo porque ser relacionado com o de funcionrios. Diferente do cadastro de Clientes ser utilizado Wizards. V ao menu File | New | Other, do Delphi. Ser apresentada a janela New Items. Selecione, na aba Business, a opo Database Form Wizard e clique no boto OK:

Ser apresentado um formulrio, onde poder ser configuradas as preferncias na gerao do novo formulrio, com acesso a banco de dados que ser criado. Em Form Options, deixe selecionada a opo Create a simple form, esta opo ir criar um formulrio simples. Na opo, mais a baixo, deixe selecionada a opo Create a form using Ttable objects, esta opo ir fazer a conexo com os bancos de dados utilizando o componente Table.

_________________________________________________________________________ 14 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Clique em Next.

Ser apresentada uma tela onde poder localizar e selecionar o banco de dados que ser usado na criao do novo formulrio. Neste exemplo a tabela Setores.db. Clique em Next.

Nesta outra tela, deve-se passar os campos que se deseja que seja apresentado no formulrio, de Avaliable Fields para Ordered Selected Fields, utilizando os botes entre estes campos. Em seguida, clique em Next.

_________________________________________________________________________ 15 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Neste exemplo escolha Horizontally. Clique em Next.

Escolha gerar o formulrio com a opo Form Only e clique em Finish. Ser criado ento o nosso formulrio de cadastro de Setores:

_________________________________________________________________________ 16 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Altere as propriedades deste formulrio, no Object Inspector, para: Caption = Cadastro e Manuteno de Setores Name = frmSetores Selecione o componente Table do formulrio e altere as propriedades deste formulrio, no Object Inspector, para: Name = tblSetores Active = True Selecione o componente DataSource do formulrio e altere as propriedades deste formulrio, no Object Inspector, para: Name = dtsrcSetores Salve este formulrio como: Setores.

Formulrio de Cadastro e Manuteno de Funcionrios


Este processo bastante parecido com o de clientes, porm, neste cadastro haver o relacionamento com a tabela de Setores. Primeiramente, criamos o formulrio de funcionrio, indo ao menu File | New | Form, do Delphi, ser apresentado um novo Form, configure as propriedades do formulrio como: Caption = Cadastro de Funcionrios

_________________________________________________________________________ 17 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Name = frmFuncionarios Coloque um componente Panel, da aba Standard, no formulrio com as seguintes propriedades no Object Inspector: Align = alTop Caption = (Vazio) Name = pnlFuncionarios Na palheta de componentes, da aba Win32, coloque o componente PageControl, com as seguintes propriedades, no Object Inspector: Align = alClient Em seguida, clique com o boto direito do mouse sobre o componente PageControl e, escolha a opo New Page, ser criado uma pasta. Mude a propriedade Caption de TabShit1 para &Geral. Crie novamente uma nova pasta, clicando com o boto direito do mouse, sobre o componente PageControl, e escolha a opo New Page, ser criada uma pasta. Mude a propriedade Caption de TabShit2 para &Manuteno. Devendo ficar assim:

Deve-se criar, neste momento, a conexo com o banco de dados. Como estamos utilizando tabela Paradox utilize o componente Table, na aba de componentes BDE, em seguida, coloque as seguintes propriedades no Object Inspector: DataBaseName = [Nome do Alias] Name = tblFuncionarios TableName = Funcionarios.db Agora, coloque um componente DataSource, da aba de componentes Data Access, que faz a comunicao entre o banco de dados e outros componentes que iremos utilizar,

_________________________________________________________________________ 18 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

com o banco de dados em questo. Coloque as seguintes propriedades, no Object Inspector: DataSet = tblFuncionarios Name = dtsrcFuncionarios Da aba de componentes Data Controls, coloque um DBGrid. Configure as propriedades deste componente, no Object Inspector, como: Align = alClient DataSource = dtsrcFuncionarios Selecione o componente tblFuncionarios e na propriedade, do Object Inspector, mude a propriedade Active de False para True. No Panel, do formulrio, coloque um componente DBNavigator, que utilizado para navegar por nossa aplicao, da aba de componentes Data Controls, e altere suas propriedades para: DataSource = dtsrcFuncionarios Flat = True ShowHint = True Ainda nas propriedades do DBNavigator, clique em Hints, ser apresentada a seguinte tela:

Substitua o texto desta caixa de dilogos, traduzindo para o portugus. A apresentao de hints importante para auxiliar o usurio do sistema a compreender sua utilizao. Terminamos a primeira parte deste formulrio de Cadastro de Funcionrios, devendo ficar como mostra a figura a seguir:

_________________________________________________________________________ 19 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Clique na pasta de Manuteno. Deve-se colocar os componentes para cadastramento, edio e visualizao dos dados cadastrados em relao aos clientes. Para isso, d um duplo clique no componente Table de nosso formulrio, o tblFuncionarios, onde dever aparecer uma janela, nesta janela, clique com o boto direito do mouse e v opo Add Fields, ser apresentado uma nova janela que contm os campos da tabela de clientes, clique no boto de OK. Selecione o campo Telefone, que iremos colocar uma mascara neste campo com as formataes de um telefone, no Object Inspector, altere a propriedade EditMask para !\(99\)0000-0000;1;_. Agora iremos colocar os campos na pasta de manuteno do formulrio de funcionrios. Para isso, selecione todos os campos:

Arraste estes campos selecionados para o formulrio, devendo ficar como mostra a imagem a seguir:

_________________________________________________________________________ 20 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

preciso colocar um boto para fechar o formulrio. Da aba de componentes Additional, coloque um componente BitBtn e altere suas propriedades, no Object Inspector, para: Kind = bkClose Caption = &Fechar

Selecione o DBNavigator, e no Object Inspector da aba de componentes, Events, no evento OnClick escreva o cdigo que apresentado na figura a seguir, este cdigo diz, que sempre que o usurio desejar cadastrar um novo cliente, dever ser ativada a pasta de Manuteno.

_________________________________________________________________________ 21 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Salve o formulrio como Funcionarios. Ainda no est pronto o formulrio de funcionrios. preciso realizar um relacionamento entre a tabela de setores, onde, atravs de um componente BDLookup o usurio possa escolher um setor de onde trabalha este funcionrio. Para isso, acrescente um novo componente Table ao formulrio, e configure suas propriedades como: DataBaseName = [Nome do Alias] TableName = Setores.db Name = tblSetores Adicione um componente DataSource e configure suas propriedades: DataSet = tblSetores Name = dtsrcSetores D um duplo clique sobre o componente Table, tblClientes, ser apresentado janela com os campos da tabela de clientes. Pressione o boto direito do mouse e escolha a opo New Field. Faa as configuraes como mostra a figura a baixo:

Em seguida, pressione o boto OK. Observe, que na janela dos campos da tabela, foi criado o campo SetorLookup, em seguida arraste-o para o formulrio, no lugar do DBEdit, de Setor, assim estar pronto o nosso relacionamento com a tabela de Funcionrios e Setores:

_________________________________________________________________________ 22 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

ltimos ajustes em nossa aplicao exemplo


Criando um Splash Screen do sistema exemplo
Para criar um Splash Screen para o sistema exemplo, crie um novo formulrio para a aplicao, indo ao menu File | New | Form, do Delphi. Altere as seguintes propriedades deste formulrio: Name = frmSplash BorderStyle = bsNone Color = clBtnHighlight Agora coloque um componente Image, da aba de componente Additional, e na propriedade Picture, do Object Inspector, ser apresentado janela Picture Editor:

_________________________________________________________________________ 23 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Clique no boto Load, e escolha uma imagem, em seguida, clique sobre o boto OK. Agora, v a propriedade do componente Image, chamada Stretch e altere de False para True. Com isso, voc poder redimensionar o tamanho da imagem ao formulrio. Agora, devemos fazer com que, sempre que executar o sistema, abrir primeiro nosso Splash Screen. Ento, v ao menu do Delphi: Project | View Source. Ser apresentado o cdigo do projeto, acrescente o seguinte cdigo, que est em negrito: begin Application.Initialize; frmSplash := TfrmSplash.Create(Application); frmSplash.Show; frmSplash.Refresh; Application.CreateForm(TfrmMainForm, frmMainForm); Application.CreateForm(TfrmClientes, frmClientes); Application.CreateForm(TfrmSetores, frmSetores); Application.CreateForm(TfrmFuncionarios, frmFuncionarios); frmSplash.Free; Application.Run; end. Est pronto o Splash Screen.

Alterando cursores
Com o passar do tempo, a quantidade de registros em uma tabela pode aumentar consideravelmente, o que pode causar uma certa demora ao abrir os formulrios. preciso comunicar ao usurio para que ele aguarde enquanto o formulrio est sendo carregado. A melhor forma de comunicar alterando o cursor, de seta para ampulheta. Para realizar esta operao faa o seguinte: Voltando ao formulrio principal da aplicao, no evento OnClick da opo de menu Clientes, digite o cdigo a seguir:
procedure TfrmMainForm.Clientes1Click(Sender: TObject); var OldCursor : TCursor; // Varivel para criar cursor begin OldCursor := Screen.Cursor; // Pega cursor Atual Screen.Cursor := crHourglass; // Define novo cursor try frmClientes := TfrmClientes.Create(Application); // Cria formulrio frmClientes.show; // Chama formulrio finally // Depois de carregado novo formulrio Screen.Cursor := OldCursor; // Volta ao cursor antigo. end; end;

_________________________________________________________________________ 24 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Voltando ao formulrio principal da aplicao, no evento OnClick da opo de menu Setores, digite o cdigo a seguir:
procedure TfrmMainForm.Clientes1Click(Sender: TObject); var OldCursor : TCursor; // Varivel para criar cursor begin OldCursor := Screen.Cursor; // Pega cursor Atual Screen.Cursor := crHourglass; // Define novo cursor try frmSetores := TfrmSetores.Create(Application); // Cria formulrio frmSetores.show; // Chama formulrio finally // Depois de carregado novo formulrio Screen.Cursor := OldCursor; // Volta ao cursor antigo. end; end;

Voltando ao formulrio principal da aplicao, no evento OnClick da opo de menu Funcionrios, digite o cdigo a seguir:
procedure TfrmMainForm.Clientes1Click(Sender: TObject); var OldCursor : TCursor; // Varivel para criar cursor begin OldCursor := Screen.Cursor; // Pega cursor Atual Screen.Cursor := crHourglass; // Define novo cursor try frmFuncionarios := TfrmFuncionarios.Create(Application); // Cria formulrio frmFuncionarios.show; // Chama formulrio finally // Depois de carregado novo formulrio Screen.Cursor := OldCursor; // Volta ao cursor antigo. end; end;

_________________________________________________________________________ 25 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Captulo 2 Introduo ao Rave Report


Os componentes Rave Report do Delphi
A partir da verso 7 do Delphi, a Borland deixou de trabalhar com o Quick Report, que acompanhava desde sua primeira verso. Esta mudana foi necessria para acompanhar a evoluo, que a Borland vem realizando com o decorrer das verses. Com o Rave Report o desenvolvedor pode criar e visualizar relatrios, tanto em CLX quanto VCL (plataformas Linux e Windows), alem de permitir que o desenvolvedor inclua os projetos de relatrios em seus executveis.

_________________________________________________________________________ 26 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________ Aba de componentes do Rave Report no Delphi.

O primeiro componente da palheta Rave o TRvProject. Este controla a impresso e visualizao dos relatrios. este componente que possibilita trabalhar com a criao e visualizao de relatrios. O Componente TrvSystem um componente fundamental para integrao e funcionalidade de uma pr-visualizaco, antes da impresso. este componente que manda o relatrio para impresso ou visualizao. , tambm, com este componente que se faz ligao entre os componentes TRvNDRPreview, TRvNDRPrinter e TRvNDRWriter. Todos fceis de trabalhar. O Componente TRvNDRWriter usado em conjunto com os componentes TRvNDRPreview e TRvNDRPrinter. Os prximos 4 componentes da lista so: TrvCustomConnection, TRvDataSetConnection, TRVTableConection e TrvQueryConection, que so utilizados para realizar conexo a banco de dados para gerao dos relatrios. Onde temos: - TrvCustomConnection: Este componente realiza a conexo tradicional em seu banco de dados. - TRvDataSetConnection: Seta o acesso ao banco de dados. - TRVTableConection: Implementa a conexo ao banco de dados. - TRvQueryConection: Faz conexo como se fosse um Query. Os prximos 2 componentes so: - TRvRenderPreview: Componente que realiza os controles do preview. - TRvRenderPreview: Componente que realiza a administrao (funcionamento) de previews. Os quatros ltimos componentes so: - TRvRenderPDF: Gera relatrios em formato de PDF. - TRvRenderHTML: Gera relatrios em HTML. - TRvRenderRTF: Gera relatrios no formato Rich-Text. - TRvRenderTEXT: Gera relatrios em formato de texto (ASCII).

Conhecendo o Visual Designer do Rave


Neste primeiro exemplo ainda no ser usado o sistema exemplo desenvolvido no captulo anterior, ser criado um relatrio simples utilizando os bancos de dados, que acompanham o Delphi.

_________________________________________________________________________ 27 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

O melhor caminho para se aprender a trabalhar corretamente com Rave iniciando o trabalho com um simples relatrio: Com o Delphi ativo v ao menu File | New | Application, do Delphi. Em seguida, coloque um componente Table e configure suas propriedades como: DataBaseName = DBDemos TableName = customer.db Name = tblCustomers Active = True Coloque um componente DataSource e faa a ligao com o componente Table. Em seguida, coloque um componente RvTableConnection, configure suas propriedades, no Object Inspector, como: Name = rvtblcnctnRelSimples Table = tblCustomers Em seguida, coloque um componente RvProject e altere a propriedade Name para RelatorioSimples.

Componentes requeridos para desenvolvimento deste exemplo.

Ser aberto o Visual Designer do Rave para a criao deste primeiro relatrio. Clique sobre o componente RvProject, do formulrio, e com o boto direito do mouse v a opo Rave Visual Designer...

Iniciando o Rave Visual Designer.

_________________________________________________________________________ 28 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Ser apresentada a tela de design de rela trio, como mostra a imagem a seguir:

O Report Authoring Visual Environment (R.A.V.E).

Neste captulo, no ser dada nfase sobre a utilizao desta ferramenta, ser criado apenas um relatrio simples com a utilizao de Wizard, o leitor perceber como fcil sua criao. Uma vez com o Rave aberto, a primeira coisa que necessitamos fazer criar uma conexo com o banco de dados para o relatrio. Selecione File | New Data Object, no menu do Rave. Ser aberta a janela Data Connection, que oferece ao desenvolvedor diversas opes de conexo com banco de dados.

_________________________________________________________________________ 29 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Selecione Direct Data View, e pressione o boto de Next. O Rave checa no formulrio do Delphi, onde foi chamado, e mostra uma lista de opes:

Lista de opes que o Rave detectou dos componentes do Delphi.

Se o desenvolvedor fez tudo certo, ser mostrado o componente de conexo utilizado para os bancos de dados. Clique no boto Finish. O desenvolvedor poder visualizar todos os campos da tabela, ao lado direito do Rave, em uma rvore de objetos, com um dicionrio de definies:

_________________________________________________________________________ 30 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Visualizao, da rvore, com os campos da tabela.

Agora, para finalizar a criao de um simples relatrio, utilize o Wizard do Rave. V a Tools | Report Wizard | Simple Table, no menu do Rave, para gerar o primeiro relatrio. A primeira tela que ser apresentada, perguntado qual Data View ser utilizado para a gerao:

Aqui temos somente uma opo, a escolha fcil: Selecione DataView1, e clique no boto Next.

_________________________________________________________________________ 31 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Em seguida, preciso definir quais campos sero apresentados no relatrio:

Campos selecionados para a gerao do relatrio.

Uma vez selecionado os campos que desejamos para o relatrio, clique no boto Next.

Janela de ordenao dos campos.

A prxima janela apresentada oferece a oportunidade de ordenar em que ordem deseja que os campos sejam apresentados no relatrio. Neste caso, deixe na ordem que est e clique no boto Next.

_________________________________________________________________________ 32 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Opes de Layout do Relatrio.

Ser apresentadas uma tela com opes de layout do relatrio, onde possvel alterar o ttulo e as margens, se tiver a gosto, clique em Next.

Seleo de fontes.

Nesta janela possvel selecionar os tipos de fontes que sero usados no relatrio. Estes so os tipos de fontes padres do Rave que podero ser alteradas pressionando os botes de Change Font. Em seguida, clique no boto Generate, para que o relatrio seja criado:

_________________________________________________________________________ 33 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

A definio do primeiro relatrio.

Estas so as definies do primeiro relatrio. No prximo captulo, voc conhecer estas opes. Aconselho no momento, que voc observe as propriedades de cada objeto deste relatrio em seu Rave e comece a analisar. Este um excelente exerccio pessoal para compreenso de qualquer programa de computador, que deveria ser exercitado por todos para tirar concluses prprias a respeito para posteriormente aprofundar a respeito do assunto e ter um raciocnio intuitivo.

Testando o relatrio
Uma vez criado o relatrio, preciso ver como ele ser impresso para poder alterar posies e fazer sua manuteno de forma correta. Podemos fazer isso dentro do prprio Rave. Para visualizar ou imprimir, como teste, selecione File | Execute Report, no menu do Rave.

_________________________________________________________________________ 34 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Previews do Rave Report.

Podemos, nesta opo de Preview do Rave, enviar o relatrio para a impressora, visualizar ou enviar para arquivo. Sendo que nesta ltima opo o usurio poder definir tambm o formato do arquivo. Deixe na opo de Preview, e clique sobre o boto de OK.

O relatrio final (Preview).

Sobre os arquivos do Rave


Uma vez desenvolvido relatrio com o Rave Report, quando se salva, gerado arquivos com extenso.rav, que dever ser enviado junto com o sistema desenvolvido em Delphi. Permitindo que sempre que haja alteraes nos relatrios desenvolvidos, somente a substituio dos arquivos basta para atualizar o sistema.

_________________________________________________________________________ 35 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

possvel, tambm, anexar os projetos de relatrios ao executvel do Delphi, porm esta opo impossibilita a atualizao dos relatrios somente com a substituio dos arquivos, deixando o executvel grande.

Gerando o relatrio no Delphi


Retorne ao Delphi, e selecione o componente RvProject inserido na aplicao exemplo, e na sua propriedade ProjectFile, selecione o arquivo que acabou de ser gerado no Rave Report. Em seguida, armazenar o arquivo RAV dentro do projeto Delphi, desta forma, no ser preciso instalar o arquivo RAV na mquina do usurio. Selecione a propriedade StoreRAV e clique no boto Load para que leia o arquivo. Observao: Se houver qualquer alterao posterior do arquivo RAV, este processo dever ser repetido. Coloque um componente de boto no formulrio, e no evento OnClick deste componente escreva o cdigo a seguir:
procedure TForm1.Button1Click(Sender: TObject); begin rvProject1.ProjectFile := 'Project1.rav'; rvProject1.Execute; end;

Agora basta compilar a aplicao e testar sua execuo.

_________________________________________________________________________ 36 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Captulo 3 Criando Relatrios com Rave Report


Neste captulo, o leitor conhecer, de forma prtica, a gerao de diversos relatrios, e a utilizao dos componentes do Ra ve Report, e entender suas funes e utilidades, no captulo a seguir so dados comentrios gerais sobre cada componente do Rave, onde o leitor poder realizar consultas a respeito dos componentes mencionados no decorrer deste captulo para maior compreenso.

Relatrio Lista Geral de Funcionrios


O primeiro relatrio ser uma listagem geral de funcionrios, e utilizaremos a aplicao de exemplo criada no comeo deste livro.

Preparando a Aplicao
Com o projeto da aplicao exemplo aberta, crie um novo formulrio onde colocaremos os componentes de conexo com o banco de dados de funcionrios. Para ilustrao, ser montada a configurao deste exemplo. Insira um componente Table ao formulrio e configure suas propriedades, fazendo a ligao ao banco de dados de Funcionrios: Alias = Exemplo TableName = funcionarios.db Active = True Insira um componente DataSource e ligue com o componente Table. Uma vez colocados e configurados estes componentes, vamos adicionar componentes do Rave Report. Sero 3 componente do Rave a serem adicionados: RvProject, RvTableConnection e RvSystem.

Configurao dos componentes Rave na Aplicao


As configuraes, no object inspector do Delphi, de cada um dos trs componentes que sero utilizados so: RvTableConnection : Name = rvtblcnctnRelFuncionarios Table = tblFuncionarios

RvSystem:

Name = rvsystmRelFunc

_________________________________________________________________________ 37 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

TitlePreview = Visualizao do Relatrio TitleSetup = Opes de Impresso TitleStatus = Status de Impresso RvProject: Name = rvprjctRelFunc Engine = rvsystmRelFunc

Agora, com duplo clique no componente RvProject, ser aberto o Rave Visual Designer.

Configuraes Gerais do Rave


Barra de Ferramentas Palhetas de Componentes

Painel da rvore de objetos.

Painel de Propriedades

Explicao sobre a propriedade atual.

Viso geral do Rave Visual Designer.

Salve o projeto como Funcionarios.rav em File | Save. Antes de continuar o desenvolvimento deste relatrio, interessante fazer um comentrio geral sobre a tela do Designer do Rave, baseando pela imagem a cima, acompanhando cada balo de informaes da imagem, onde temos: Barra de Ferramentas: comum em aplicaes Windows, pois so o que em Delphi poderia ser chamado de ToolBars, onde possvel encontrar atalhos para operaes mais comuns na aplicao, como salvar, abrir, executar e outras operaes.

_________________________________________________________________________ 38 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Palheta de componentes: So os componentes para desenvolvimento de relatrios no designer do Rave. Painel de Propriedades: Onde possvel configurar as propriedades tanto de relatrio, quando de cada um dos componentes da Palheta de componentes do Rave Report. Exibio sobre a propriedade atual: Este depende do Painel de Propriedades, como um mini help do Rave Report que descreve sobre a utilizao de determinada propriedade. Painel de rvore de objetos: Onde possvel visualizar todos elementos inseridos ao desenvolvimento de relatrios no Rave, possibilitando uma fcil localizao de determinado componente para manuteno e configurao de suas propriedades. Continuando o desenvolvimento deste relatrio, na rvore de objetos, selecione RaveProject, e altere a propriedade Units para unMM (Milmetros).

Propriedade

rvore de Objetos.

Na rvore de objetos, selecione Report Libary, e dentro dele selecione Report1, e altere as seguintes propriedades: FullName = Relao Geral de Funcionarios Name = rprtRelFunc Devolta a rvore de objetos, selecione Page1, e altere as seguintes propriedades: GridLines = 1 GridSpacing = 10,000 PageHeight = 297,000 PageWidth = 210,000

_________________________________________________________________________ 39 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Observe a propriedade PaperSize. Esta propriedade permite que voc escolha um tipo de papel j padronizado. Neste exemplo, ao utilizarmos as propriedades PageHeight e PageWidth criamos um tamanho de papel personalizado.

Acesso aos bancos de dados


Para ter acesso ao banco de dados, para impresso e gerao de relatrios, preciso criar um Data Object. Para isso, selecione File | New Data Object, no menu do Rave. Ser apresentada a janela Data Connections:

Janela Data Connections.

Onde temos as seguintes opes: Data Lookup Security Controller Permite colocar Username e Password para conectar com banco de dados. Database Connection Permite fazer a conexo com banco de dados, independente de seu projeto em Delphi. Direct Data View o mais utilizado, que permite pegar os bancos de dados configurados no projeto do Delphi, realizando uma ligao entre a aplicao e o Rave. Driver Data View Utilizado logo aps a utilizao da opo de Direct Data View para pegar parmetros SQL de banco de dados. Simple Security Controller - Permite colocar Username e Password para conectar com banco de dados. Utilizado junto com a opo Data Lookup Security Controller.

_________________________________________________________________________ 40 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Neste exemplo, escolha a opo Direct Data View, que dar acesso s conexes realizadas com os componentes de acesso a banco de dados configurados no Delphi, e clique no boto Next. Na tela seguinte, aparecer todos os componentes de conexes a banco de dados do Rave que foi colocado no projeto do Delphi. Como neste exemplo s colocamos um, aparecer somente uma opo, Selecione-a e clique no boto Finish.

Na rvore de objetos, possvel visualizar todos os campos de tblFuncionarios. Selecione DataView1, e altere a propriedade FullName para Registro de Funcionarios.

rvore de Objetos com os campos da tabela tblFuncionarios.

Construindo o Relatrio

_________________________________________________________________________ 41 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Na palheta de componentes, da aba Report, selecione, e leve a rea do relatrio o componente Region. Este componente determina e delimita a rea de impresso da pgina.

Palheta de componentes na aba Report.

Redimensione o componente Region na rea de criao do relatrio ocupando quase a folha inteira, deixando um espao para a criao de um rodap, como mostra a imagem a seguir:

Tela com o componente Region dimensionado em toda rea da folha com espao no final da folha para criao de rodap.

Adicione outros dois componentes: Band e DataBand ao relatrio, tambm da aba de componentes Report, que sero utilizados para criar as reas de impresso do relatrio, e a conexo aos bancos de dados.

Os componentes Band e DataBand respectivamente.

_________________________________________________________________________ 42 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Estes componentes adicionados devero ficar no topo do relatrio:

Os componentes Band e DataBand inseridos no relatrio.

Selecione o componente Band1 inserido no relatrio, e altere as seguintes propriedades: BandStyle =

_________________________________________________________________________ 43 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Janela de propriedades de BandStyle

Nesta propriedade selecione: Body Header (Cabealho); First (Primeira Pgina); New Page (Nova Pgina);

Controle Band = DataBand1 Name = PaginaCabecalho Agora, selecione o outro componente inserido ao relatrio: DataBand1 e altere as seguintes propriedades: DataView = DataView1 Name = Contedo

Montando o cabealho
Construa primeiro o cabealho do relatrio que ficar no Band1. Neste cabealho ser inserido um logotipo. Da aba Standard da ferramenta de componentes, coloque um componente BitMap.

_________________________________________________________________________ 44 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

O componente BitMap inserido no relatrio.

Na propriedade Image do componente BitMap, selecione uma imagem qualquer a ser carregada. Em seguida, altere a propriedade MatchSide para msBoth que faz com que a figura ocupe toda rea do componente.

O componente BitMap j com suas propriedades definidas.

Insira um nome para o cabealho, utilizando o componente Text da aba de componentes Standard, e altere as seguintes propriedades: Text = LISTAGEM GERAL DE FUNCIONRIOS FontJustify = pjCenter Font = Altere tamanho, tipo de fonte e cor que desejar.

Utilizando imagem no Rave sem armazena-la


Caso voc no queira armazenar a imagem nos arquivos do Rave, basta definir a propriedade FileLink do componente BitMap, com o caminho onde se encontrar a imagem. Assim, poder ser trocada a imagem sempre que desejar, atravs deste caminho.

Data de Impresso do Relatrio


Devemos colocar a data de impresso do relatrio. Para isso, insira um componente DataText, da aba de componente Report, ao cabealho, e na propriedade DataField ser apresentado janela Data Text Editor. Clique sobre a opo Report Variables e escolha a opo DateShort:

_________________________________________________________________________ 45 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Janela Data Text Editor com a varivel DateShort.

Em seguida, clique no boto Insert Report Var, da opo Report Variables. Observe que em Data Text aparece Report.DateShort, antes deste comando coloque Emitido em:, como mostra a imagem a baixo, em seguida clique no boto OK.

Data Text Editor com o Data Text preenchido.

_________________________________________________________________________ 46 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Para finalizar a construo do cabealho, desenhe uma linha para separar o cabealho dos dados dos funcionrios, escolhendo o componente Line, da aba de componentes Drawing, e configure-a como desejar.

O cabealho pronto.

Inserindo os campos do banco de dados


Neste relatrio ser criada uma ficha de cada funcionrio. Caso seja necessrio criar uma relao, bastaramos colocar logo a baixo da linha desenhada, a descrio dos campos que sero apresentados no relatrio. No componente DataBand, inserido ao relatrio, ser desenvolvida a ficha. Monte o nome dos campos que aparecero. Para isso, coloque seis componentes Text, da aba Standard de componentes, e configure-os como mostra a imagem a seguir:

Os componentes Text no relatrio.

Agora preciso inserir os campos do banco de dados em frente a cada opo. Para isso, na rvore de objetos, selecione os campos correspondentes, e com a tecla Control (Ctrl) pressionada arraste at o relatrio posicionando os campos de banco de dados:

_________________________________________________________________________ 47 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Os campos de banco de dados posicionados.

Agora para testar, v ao menu File | Execute Report, do Rave. possvel fazer este processo de inserir os campos do banco de dados ao relatrio manualmente, porm a opo mostrada anteriormente mais simples e rpida. Porm, importante ilustrar como fazer o mesmo processo manualmente. Para isso, insira um componente DataText, da palheta de componentes Report, e insira onde ser apresentado o campo de Nome. Nas propriedades deste componente configure como mostra a seguir: DataView = DataView1 Onde a propriedade DataView chama a conexo com o banco de dados. DataField = Nome Onde a propriedade DataField busca a lista de campos do banco de dados. E assim pode ser feito com cada campo a ser impresso no relatrio.

_________________________________________________________________________ 48 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

A execuo do relatrio.

Numerao de Pginas
Para finalizar a criao deste relatrio preciso colocar a numerao da pgina. Este um processo simples e rpido: Coloque um componente DataText, da aba Report da barra de componentes, no final da pgina fora do componente Region, e coloque na propriedade DataField do componente DataText: Pgina + Report.CurrentPage + / + Report.TotalPages

O rodap do relatrio com a numerao de pginas.

E assim est pronto o relatrio.

_________________________________________________________________________ 49 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

O relatrio sendo executado com a relao de pginas no rodap.

Imprimindo o relatrio
Retorne ao Delphi, e selecione o componente RvProject inserido na aplicao exemplo, e na sua propriedade ProjectFile, selecione o arquivo que acabamos de gerar no Rave Report. Em seguida, vamos pedir para armazenar o arquivo RAV dentro do projeto Delphi, desta forma, no precisaremos instalar o arquivo RAV na mquina do usurio. Selecione a propriedade StoreRAV e clique no boto Load para que leia o arquivo. Observao: Se houver qualquer alterao posterior do arquivo RAV, este processo dever ser repetido. Coloque um componente de boto no formulrio e no evento OnClick deste componente escreva o cdigo a seguir:
procedure TForm1.Button1Click(Sender: TObject); begin rvtblcnctnRelFuncionarios.ProjectFile := Funcionarios.rav'; rvtblcnctnRelFuncionarios.Execute; end;

Agora basta compilar a aplicao e testar sua execuo.

_________________________________________________________________________ 50 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Relatrio Listagem Geral de Funcionrios com quebra de grupo


Economizando tempo de desenvolvimento em relatrios que utilizem o mesmo banco de dados de um relatrio desenvolvido anteriormente.
possvel economizar tempo de desenvolvimento com o Rave, caso o desenvolvedor crie um novo relatrio, utilizando o mesmo banco de dados do relatrio anterior. Como vamos utilizar o mesmo banco de dados de funcionrios, para no precisar fazer novamente a chamada ao banco de dados. Selecione File | New Report no menu do Rave, e observe na rvore de objetos, que continuamos conectados ao banco de dados de funcionrios. Mas, se o desenvolvedor escolher a opo File | New, seria necessrio realizar uma nova conexo ao banco de dados, neste caso ficaremos com a primeira opo. Observe, tambm, que a rea do relatrio est toda escura, inclusive os componentes que formos inserindo, tambm ficaro escuros. Este segundo relatrio da aplicao exemplo ser uma listagem de funcionrios, porm com quebra de grupos, ou seja, ser impressa uma lista de funcionrios por setores. Alm disto, ser mostrado os valores dos salrios de cada funcionrio, e o total de cada setor, e ao final o total de todos salrios.

Construindo o Relatrio
Na rvore de objetos selecione RaveProject e altere a propriedade Units para unMM (Milmetros).

Propriedade

rvore de Objetos.

_________________________________________________________________________ 51 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Na rvore de objetos, selecione o Report1 e altere suas propriedades: FullName = Funcionrios por Setores Name = rprtRelFuncSetores Devolta a rvore de objetos, selecione Page1 e altere as seguintes propriedades: GridLines = 1 GridSpacing = 10,000 PageHeight = 297,000 PageWidth = 210,000 Nas palhetas de componentes, da aba Report, selecione e leve rea do relatrio o componente Region. Este componente determina e delimita a rea de impresso da pgina.

Palheta de componentes na aba Report.

Redimensione o componente Region na rea de criao do relatrio ocupando quase a folha inteira, deixando um espao para a criao de um rodap.

_________________________________________________________________________ 52 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Tela com o componente Region dimensionado em toda rea da folha com espao no final da folha para criao de rodap.

Insira no relatrio cinco componentes, da palheta de componentes Report, respectivamente: 2 Componentes Band; 1 Componente DataBand; 2 Componentes Band.

Os componentes da palheta Report inseridos no relatrio.

Agora, altere as propriedades Name de cada banda inserida no relatrio, respectivamente:

_________________________________________________________________________ 53 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

CabecalhoPagina CabecalhoGrupo Detalhe RodapeGrupo RodapeRelatorio

Vamos trabalhar as propriedades de cada banda inserida: Para a banda CabecalhoPagina, configure as seguintes propriedades: BandStyle = Selecione Body Header e First. ControllerBand = Detahe Para a banda CabecalhoGrupo, configure as seguintes propriedades: BandStyle = Selecione Body Header e First. ControllerBand = Detalhe GroupDataView = DataView1 GroupKey = Setor StartNewPage = True Para a banda Detalhe, configure as seguintes propriedades: DataView = DataView1 Para a banda RodapeGrupo, configure as seguintes propriedades: BandStyle = Selecione Body Header e First. ControllerBand = Detalhe GroupDataView = DataView1 GroupKey = Setor Para a banda RodapeGrupo, configure as seguintes propriedades: BandStyle = Selecione Body Header e First. ControllerBand = Detalhe

_________________________________________________________________________ 54 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Edio do relatrio depois dos componentes de banda configurados.

Em seguida, monte a banda CabecalhoPagina, semelhante ao relatrio anterior:

Montando o cabealho
Construa primeiro o cabealho do relatrio que ficar no Band1 (CabecalhoPagina). Este cabealho ser inserido um logotipo. Da aba Standard da ferramenta de componentes, coloque um componente BitMap.

O componente BitMap inserido no relatrio.

Na propriedade Image do componente BitMap, selecione uma imagem qualquer a ser carregada. Em seguida, altere a propriedade MatchSide para msBoth que faz com que a figura ocupe toda a rea do componente.

O componente BitMap j com suas propriedades definidas.

Insira nome para o cabealho, utilizando o componente Text da aba de componentes Standard, e altere as seguintes propriedades: Text = LISTAGEM GERAL DE FUNCIONRIOS FontJustify = pjCenter Font = Altere tamanho, tipo de fonte e cor que desejar.

_________________________________________________________________________ 55 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Data de Impresso do Relatrio


Devemos colocar a data de impresso do relatrio. Para isso, insira um componente DataText, da aba de componente Report, ao cabealho, e na propriedade DataField ser apresentado janela Data Text Editor. Clique sobre a opo Report Variables e escolha a opo DateShort:

Janela Data Text Editor com a varivel DateShort.

Em seguida, clique n boto Insert Report Var, da opo Report Variables. Observe, o que em Data Text aparece Report.DateShort, antes deste comando coloque Emitido em:, como mostra a imagem a baixo, em seguida clique no boto OK.

_________________________________________________________________________ 56 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Data Text Editor com o Data Text preenchido.

Para finalizar a construo do cabealho, desenhe uma linha para separar o cabealho dos dados dos funcionrios, escolhendo o componente Line da aba de componentes Drawing, e configure-a como desejar.

O cabealho pronto.

Para a banda CabecalhoGrupo, coloque um componente Text, e altere suas propriedades: Text = Setores Font = Altere como desejar. BandStyle = Ativar Group Header e First.

_________________________________________________________________________ 57 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Na rvore de objetos, selecione o campo Setor, e com a tecla CONTROL pressionada arraste para frente do componente Text que foi colocado. Desenhe uma linha, com o componente Line logo a baixo. Em seguida, coloque 3 componentes Text, respectivamente, e altere as propriedades Text de cada como: Nome, Telefone e Salrio. Como mostra a imagem a seguir:

A banda CabecalhoGrupo com seus componentes.

Para a banda Detalhe, coloque os campos do banco de dados, correspondentes a: Nome, Telefone e Salrio, na rvore de objetos, selecionando os campos, e com a tecla CONTROL pressionada, arrastando para o relatrio. Altere a propriedade FontJustify do campo de SALARIO direita.

A banda Detalhe com seus respectivos componentes posicionados.

Para as bandas RodapeGrupo e RodapeRelatorio, utilize o componente CalcText da palheta de componentes Report, para realizarmos os clculos de totalizao.

_________________________________________________________________________ 58 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

As bandas RodapeGrupo e RodapeRelatorio com o componente CalcText j configurado.

Precisamos configurar as propriedades de cada um dos componentes CalcText. O Componente CalcText um componente que realiza contato com campos de um banco de dados. utilizado para fazer e mostrar clculos de mnimo, mximo, soma e contagem. No primeiro componente CalcText configure as seguintes propriedades: CalcType = ctSum ControllerBand = Detalhe DataView = DataView1 DataField = SALARIO DisplayFormat = #,##0,00 FontJustify = pjRight No segundo componente CalcText configure as seguintes propriedades: CalcType = ctSum DataView = DataView1 DataField = SALARIO DisplayFormat = #,##0,00 FontJustify = pjRight Assim est pronto o relatrio por grupo com totalizao.

Imprimindo o relatrio
Retorne ao Delphi, e selecione o componente RvProject inserido na aplicao exemplo, e na sua propriedade ProjectFile, selecione o arquivo que acabamos de gerar no Rave Report. Em seguida, vamos pedir para armazenar o arquivo RAV dentro do projeto Delphi, desta forma, no precisaremos instalar o arquivo RAV na mquina do usurio. Selecione a propriedade StoreRAV e clique no boto Load para que leia o arquivo.

_________________________________________________________________________ 59 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Observao: Se houver qualquer alterao posterior do arquivo RAV, este processo dever ser repetido. Coloque um componente de boto no formulrio e no evento OnClick deste componente escreva o cdigo a seguir:
procedure TForm1.Button1Click(Sender: TObject); begin rvprjctRelFunc.ProjectFile := 'FUNCIONARIOS2.RAV'; rvprjctRelFunc.Execute; end;

Agora basta compilar a aplicao e testar sua execuo.

Etiqueta de Clientes
Ser criado etiqueta para clientes em geral. Porm, para fazer etiqueta de cliente aniversariante, basta utilizar, no Delphi, sua rotina para filtragem e chamada de relatrio no Rave. Neste exemplo, ser montado no Delphi o procedimento para filtragem dos campos para gerao de etiqueta para aniversariantes, aproveitando o relatrio que ser criado para etiqueta. Caso deseje criar etiqueta para clientes em geral, basta no colocar nenhuma rotina de filtragem, somente a chamada ao banco de dados e os componentes do Rave. Existem diversas formas, no Delphi, de criar uma filtragem de clientes aniversariantes. Por este motivo esse livro se limitar a tratar somente da criao no Rave Report.

Preparando a Aplicao
Uma vez criado no Delphi o formulrio para gerao e filtragem de aniversariantes, preciso colocar os componentes do Rave no formulrio para criao e gerao das etiquetas. Vamos adicionar componentes do Rave Report. Sero 3 componente do Rave a serem adicionados: RvProject, RvTableConnection e RvSystem.

Configurao dos componentes Rave na Aplicao


As configuraes dos trs componentes que sero utilizados so: RvTableConnection: Name = rvtblcnctnEtiquetaClientes

_________________________________________________________________________ 60 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Table = tblClientes (Nome do componente de ligao com banco de dados utilizado no Delphi). RvSystem: Name = rvsystmEtiquetaClientes TitlePreview = Visualizao do Relatrio TitleSetup = Opes de Impresso TitleStatus = Status de Impresso Name = rvprjctEtiquetaClientes Engine = rvsystmEtiquetaClientes

RvProject:

Agora, com duplo clique no componente RvProject, ser aberto o Rave Visual Designer.

Acesso aos bancos de dados


Para ter acesso ao banco de dados para impresso preciso criar um Data Object. Para isso, File | New Data Object, selecione no menu do Rave. Ser apresentada a janela Data Connections:

Janela Data Connections.

Neste exemplo, escolha a opo Direct Data View, que dar acesso s conexes realizadas no projeto do Delphi, e clique no boto Next.

_________________________________________________________________________ 61 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Na tela seguinte, aparecer todos os componentes de conexo a banco de dados do Rave, que foi colocado no projeto do Delphi. Como neste exemplo s colocamos um, aparecer somente uma opo, Selecione-a e clique no boto Finish.

Na rvore de objetos, possvel visualizar todos os campos de tblFuncionarios. Selecione DataView1, e altere a propriedade FullName para Registro de Funcionarios.

rvore de Objetos com os campos da tabela Clientes.

Configurando a Etiqueta no Rave


Na rvore de objetos, selecione Page1, e altere as seguintes propriedades: PaperSize = A4 Sheet, 210- by 297- millimeters

_________________________________________________________________________ 62 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Name = EtiquetaClientes FullName = Etiqueta Clientes

Propriedade de Page1

rvore de Objetos com Page1 configurado.

Na palheta de componentes, da aba Report, insira um componente Region rea de design do relatrio e ajuste para toda a rea de impresso. Em seguida, insira um componente DataBand, e altere suas propriedades: Collumns = 2 DataView = DataView1

O Componente DataBand depois de configurado.

_________________________________________________________________________ 63 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Para inserir os campos necessrios para a gerao das etiquetas, basta selecionar os campos na rvore de objetos, e com a tecla CONTROL (Ctrl) pressionada arrastar para a rea de design do relatrio.

O relatrio j com os campos de etiqueta j colocados na rea de design.

E assim est pronta a etiqueta para impresso. Execute o relatrio selecionando File | Execute Report, no menu do Rave:

_________________________________________________________________________ 64 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Visualizao de impresso de etiquetas.

Ser preciso que o desenvolvedor faa testes para verificar se os campos da etiqueta esto saindo corretamente. Caso o espao entre etiquetas no esteja correto, aconselhvel ir fazendo testes e corrigindo. Na propriedade ColumnSpace do componente DataBand possvel alterar o espao entre colunas das etiquetas.

Imprimindo as etiquetas
Retorne ao Delphi e selecione o componente RvProject inserido na aplicao exemplo e, na sua propriedade ProjectFile, selecione o arquivo que acabamos de gerar no Rave Report. Em seguida, vamos pedir para armazenar o arquivo RAV dentro do projeto Delphi, desta forma, no precisaremos instalar o arquivo RAV na mquina do usurio. Selecione a propriedade StoreRAV e clique no boto Load para que leia o arquivo. Observao: Se houver qualquer alterao posterior do arquivo RAV, este processo dever ser repetido. Coloque um componente de boto no formulrio e no evento OnClick deste componente escreva o cdigo a seguir:
procedure TForm1.Button1Click(Sender: TObject); begin rvprjctEt iquetaClientes.ProjectFile := EtiquetasClientes.RAV';

_________________________________________________________________________ 65 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________ rvprjctEtiquetaClientes.Execute; end;

Agora basta compilar a aplicao e testar sua execuo.

Relatrio com Mltiplas Pginas


A partir de agora, no mais ser detalhada conexo com banco de dados no Rave por ser sempre igual, com algumas excees que sero explicadas. Tambm no ser mais explicada a utilizao dos componentes do Rave at agora explicados, para tornar o livro mais objetivo. Neste exemplo ser mostrado como criar um relatrio com mltiplas pginas no Rave, onde possvel criar relatrios com folhas de rosto, contedo e at mesmo sumrio. Para ilustrar ser criado um relatrio de funcionrios com folha de rosto. Primeiramente preciso configurar o relatrio, como fizemos at o momento em todos exemplos: Na rvore de objetos selecione RaveProject e altere a propriedade Units para unMM (Milmetros).

Propriedade

rvore de Objetos.

Na rvore de objetos, selecione o Report1 e altere suas propriedades: FullName = Funcionrios por Setores Name = rprtRelFuncSetores Devolta a rvore de objetos, selecione Page1 e altere as seguintes propriedades: GridLines = 1 GridSpacing = 10,000 PageHeight = 297,000

_________________________________________________________________________ 66 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

PageWidth = 210,000 Agora, precisamos criar duas pginas no Rave. Observe, na rvore de objetos, que o padro do Rave somente uma pgina: Page1.

rvore de Objetos, mostrando o padro do Rave, com somente uma pgina (Page1).

preciso criar uma nova pgina para o relatrio. Selecione File | New Report Page, no menu do Rave, ser inserido uma nova pagina (Page2) rvore de objetos. Assim teremos em Page1 nossa folha de rosto, e em Page2 o relatrio que ser uma listagem de funcionrios. E assim, o desenvolvedor pode ir criando diversas pginas para seu relatrio. No Page1, altere a propriedade FullName para Folha de Rosto, e Page2 para Contedo.

rvore de objetos com as propriedades das pginas alteradas.

Montaremos, primeiramente, a folha de rosto. Coloque, no Designer do Rave, um componente Region ajustando pgina do relatrio. Em seguida, coloque um componente Data, e ajuste para toda a pgina. Insira um componente BitMap, e na propriedade Image escolha uma imagem qualquer, e na propriedade MatchSize altere para msBoth para a imagem se ajustar rea do componente, e ajuste a imagem como desejar. Insira um componente Text, da aba de componentes Standard, e coloque informaes sobre o relatrio. Devemos colocar a data de impresso do relatrio. Para isso, insira um componente DataText, da aba de componente Report, ao cabealho, e na propriedade DataField ser apresentado janela Data Text Editor. Clique sobre a opo Report Variables e escolha a opo DateShort:

_________________________________________________________________________ 67 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Janela Data Text Editor com a varivel DateShort.

Em seguida, clique no boto Insert Report Var, da opo Report Variables. Observe que em Data Text aparece Report.DateShort, antes deste comando coloque Emitido em:, como mostra a imagem a baixo, em seguida clique no boto OK.

_________________________________________________________________________ 68 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Data Text Editor com o Data Text preenchido.

E altere suas propriedades de Font, como desejar. Para finalizar, faa na pgina dois, como foi feito no tpico Relatrio de Listagem Geral de Funcionrios. E assim estar pronto seu relatrio com pginas mltiplas.

_________________________________________________________________________ 69 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Folha de Rosto da Pgina 1 do relatrio com pginas Mltiplas.

Relatrio Mestre Detalhe


Ser criado um relatrio mestre detalhe, onde ser buscada informao de duas tabelas. Para este exemplo, no utilizaremos nossa aplicao exemplo desenvolvida no comeo deste livro, mas utilizaremos banco de dados que acompanham a instalao do prprio Delphi. Primeiramente preciso fazer uma conexo com banco de dados utilizando instrues SQL com o comando Join. Para isso, ser inserido um componente Query na aplicao do Delphi, com as seguintes propriedades: DatabaseName = DBDemos A instruo SQL para este componente ser:

_________________________________________________________________________ 70 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Instruo SQL do componente Query.

Esta instruo liga as tabelas Customer e Country, aos campos Country de Customer, e Name de Country. Em seguida, insira no projeto do Delphi o componente RvQueryConnection, da palheta de componentes do Rave, e interligue em suas propriedades com a Query. Em seguida, insira o componente RvProject, e com duplo clique abra o Rave Report. Para iniciar o relatrio, preciso fazer uma conexo com Banco de dados, utilizaremos Database Connection. Selecione File | New Data Object, no menu do Rave, e escolha a opo Database Connection:

Clique no boto Next. Escolha a opo que estiver trabalhando, neste exemplo ser BDE:

_________________________________________________________________________ 71 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Clique no boto Finish. Novamente, selecione File | New Data Object, no menu do Rave, e em seguida escolha a opo Direct Data View e clique no boto Next. Clique no boto Finish para finalizar a conexo. Observe, na rvore de objetos do Rave, que ser apresentado os campos tanto da tabela de Customer quanto de Country.

_________________________________________________________________________ 72 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

rvore de Objetos com os campos de Customer e Country.

Agora ser construdo o relatrio. Insira um componente Region ao Designer do Rave, e ajuste folha. Coloque um componente Band, e em seguida, um componente Data Band. Nas propriedades do componente Band faa as seguintes modificaes: Em ControllerBand faa a ligao com DataBand, propriedade BandStyle, ative a opo GroupHeader, a propriedade GroupDataView para o DataView1 do banco de dados, e a propriedade GroupKey para o nome da tabela que ir fazer a conexo com o outro campo da tabela, neste exemplo ser o campo Country. Configurando agora o componente DataBand: Basta alterar a propriedade DataView ligando a conexo do banco de dados DataView1. E pronto. Agora basta inserir os campos das tabelas no relatrio, selecionando os campos na rvore de objetos e com a tecla CONTROL (Ctrl) pressionada arrastar para o relatrio, como feito at o momento nos relatrios anteriores. Observe na figura a baixo como ficou este relatrio exemplo. Onde na Band foi colocadas o Nome do pas e sua capital e na DataBand foi colocada informao da empresa.

_________________________________________________________________________ 73 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Designer do Rave, com o relatrio Mestre Detalhe.

O resultado final apresentado o nome do Pas e a capital, e os dados das empresas que pertencem a este pas.

Captulo 4 Conhecendo os componentes do Rave


Ao decorrer do livro, o leitor teve a oportunidade de conhecer na prtica a criao de relatrios, utilizando muitos de seus componentes, podendo ter uma grande noo sobre suas funcionalidades. Este captulo uma explicao sobre cada componente do Rave Report. No ser dada muita nfase sobre a utilizao dos mesmos, porm, se o leitor acompanhou a leitura deste livro, no encontrar dificuldades em suas utilizaes.

Palheta de componentes Drawing

Palheta de componentes Drawing.

_________________________________________________________________________ 74 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

A primeira aba, das ferramentas de componentes do Rave, Drawing. utilizada para desenhar formas no Designer do Rave. Onde temos: Line Ferramenta de desenhar linhas de um ponto ao outro de uma coordenada desenhada com o mouse. HLine Desenha linhas retas, horizontais. VLine Desenha linhas retas, verticais. Rectangle Desenha um retngulo. Square Desenha um quadrado. Ellipse Desenha formas em Elipse. Circle Desenhas formas circulares.

Palheta de componentes Bar Code

Palheta de componentes Bar Code.

A palheta de componentes Bar Code permite gerar e imprimir cdigo de barras. No prximo captulo mostrando um exemplo sobre gerao e impresso de cdigo de barras. Entre as vrias opes, existe a mais usada no Brasil, que EAN13. Entre as opes temos: PostNetBarCode Tipo de cdigo de barras utilizado por servios postais. 12of5BarCode Cdigo de 18 dgitos, interlaado. Code39BarCode Este tipo de cdigo permite dgitos em letras, smbolos e nmeros. Code128BarCode Aceita letras, smbolos e nmero com at 128 caracteres.

_________________________________________________________________________ 75 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

UPCBarCo de Trata de um cdigo universal para produtos. EANBarCode o tipo de barras mais usado no Brasil. Permite 13 dgitos, sendo 10 caracteres numricos e dois caracteres que identifica o pas de origem do produto.

Palheta de componentes Standard

Barra de componentes Standard.

A palheta de componentes Standard possui os componentes padres, que permitem ao desenvolvedor, criar uma interface amigvel com o usurio, passando informaes sobre o relatrio. Onde temos: Text Permite a insero de textos no Designer do Rave. Tem as mesmas caractersticas de um componente Label do Delphi. No permite a insero de dados de um campo de banco de dados. Pode ser utilizando junto com a aba de componentes do Rave: Fonts. Memo um campo Memo para insero de textos mais longos com mltiplas linhas. utilizado para fazer comentrios. Porm, no possvel configurar somente uma parte do texto, somente como um todo. No permite a insero de dados de um campo de banco de dados. Pode ser utilizando junto com a aba de componentes do Rave: Fonts.

Section Utilize Section para inserir componentes no Designer do Rave e poder mover todos os componentes inseridos dentro da Section de forma fcil e rpida. BitMap Usado para inserir imagens Bitmap (.BMP) aos relatrios. MetaFile Usado para inserir imagens do tipo.emf e .wmf. FontMaster Componente no visual (Todos botes verdes so de componentes no visuais). utilizado para poupar tempo na configurao da Propriedade Font dos componentes. Exemplo: Insira um componente FontMaster, no Designer do Rave, e altere sua propriedade Font como desejar. Insira, novamente, um componente FontMaster, e altere sua propriedade Font como desejar, porm, diferente da propriedade do primeiro

_________________________________________________________________________ 76 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

componente inserido. Assim, sempre que inserir um componente no Designer do Rave o desenvolvedor ter j uma propriedade pr-definida, economizando bastantes cliques. Insira agora, por exemplo, um componente Text e na propriedade FontMirror escolha qual configurao FontMaster deseja para este componente. PageNumInit - Componente no visual (Todos botes verdes so de componentes no visuais). Onde possvel, alm de inserir o nmero e a quantidade de pginas de um relatrio, determinar qual o nmero da pgina que iniciar a impresso, via programao no Delphi.

Exemplo de utilizao do componente PageNumInit


Para ilustrar a utilizao deste componente ser desenvolvido um exemplo, j no Rave Report. Primeiro crie uma nova pgina de relatrio e faa a conexo o banco de dados e configure seu relatrio inserindo um componente Region, deixando um espao ao final da pgina para inserir a numerao da pgina, em seguida os componentes Band e DataBand, e monte seu relatrio como desejar. Uma vez montado o relatrio, insira um componente DataText, da palheta de componentes Report, na regio onde foi deixado um espao para inserir a numerao de pgina. Em seguida, na propriedade DataField deste componente DataText, na opo Report Variables escolha a opo Relative Page, e clique no boto Insert Report Var, observe que na caixa de texto ser apresentado o comando Report.RelativePage. A frente deste comando insira: + de +. Em seguida, devolta a opo Report Variables escolha a opo TotalPages, e clique no boto Insert Report Var, observe que ser inserido outro comando na caixa de textos, como mostra a imagem a seguir:

_________________________________________________________________________ 77 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Em seguida, clique no boto OK. O componente DataText inserido ao relatrio ficar apresentando: Report.RelativePage + ' de ' + Report.TotalPages. Como mostra a imagem a seguir:

_________________________________________________________________________ 78 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Assim est pronto o exemplo. Agora insira um componente PageNumInit, da palheta de componentes Standard, ao relatrio. Observe que este componente no aparece no visual designer do Rave, isso porque trata-se de um componente no visual. Para visualiza- lo, necessrio ir a rvore de objetos do Rave, como mostra a imagem a seguir:

O Componente PageNumInit na rvore de Objetos do Rave.

Nas propriedades do componente PageNumInit, a propriedade InitValue informa qual a pgina inicial que o relatrio ser impresso.

Palheta de componentes Report

Palheta de Componentes Report.

_________________________________________________________________________ 79 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Os componentes da aba Report permitem fazer a conexo entre o Designer do Rave e os campos de banco de dados. Os componentes no visuais, que esto em verde, permitem realizar operaes programveis em relatrios. Onde temos: DataText Utilizado para inserir os dados de um campo, de banco de dados. DataMemo Utilizado para inserir os dados de um campo, de banco de dados, do tipo Memo. CalcText Componente que realiza contato com campos de um banco de dados. utilizado para fazer e mostrar clculos de mnimo, mximo, soma e contagem. DataMirrorSection Tem a mesma funo que o componente Section da aba Standard. Porm, possvel inserir, tambm, componentes de acesso banco de dados. Region Determina a rea de impresso de um relatrio. Band Este um componente que permanece fixo no relatrio, onde possvel inserir componente de texto e o componente CalcText. Nos exemplos deste livro possvel conhecer com maiores detalhes e exemplo a utilizao deste componente. DataBand - Este um componente que permanece fixo no relatrio. Neste componente que so impressos os dados dos campos de um banco de dados. Nos exemplos deste livro possvel conhecer com maiores detalhes e exemplo a utilizao deste componente. DataCycle - Trata-se de um componente no visual que permite fazer diversos tipos de filtros aos relatrios. Em geral, o componente DataCycle permite realizar um Loop ou circular em um DataView at que uma condio seja finalizada. CalcOp Trata-se de um componente no visual que permite fazer diversos tipos de operaes matemticas. No prximo captulo mostrado um exemplo de como trabalhar com este componente. Em sua propriedade temos: Src1Function - H uma lista de operaes matemticas que possvel realizar. Src1DataView - Define a DataView que ser utilizado para clculo. Src1DataField: - Define o campo que contm informaes que ser utilizado no clculo. DisplayFormat - Define uma mscara de formatao para apresentao do valor. DisplayType - Define o tipo do campo que ser apresentado. Operator - Define o tipo de operao que ser utilizada.

_________________________________________________________________________ 80 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

DestPIVar - Define o nome da varivel criada no relatrio. Src2Function - H uma lista de operaes matemticas que possvel realizar. Src2DataView - Define a DataView que ser utilizado para clculo. Src2DataField - Define o campo que contm informaes que ser utilizado no clculo.

Propriedades do Componente CalcOp.

Exemplo de utilizao do componente CalcOp


Para ilustrar a utilizao deste componente, ser montado um relatrio onde ser realizada a multiplicao de dois valores, e em seguida, ser dividido por cem. Para fazer esse clculo dentro do Rave Report ser utilizada a seguinte configurao: Selecione o componente CalcOp, da palheta de componentes Report, e arraste para o designer do Rave. Observe que este componente no ficar visvel, mas se voc ir rvore de objetos, na raiz Report, possvel visualizar este componente, selecione o componente:

_________________________________________________________________________ 81 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

rvore de Objetos com o componente CalcOp1.

Neste componente CalcOp, chamado CalcOp1 ser configurado suas propriedades: Operator - coMul A propriedade Operator indica qual operao matemtica ser realizada, neste caso ser de multiplicao, por isso foi escolhida a opo coMul. Src1DataView - Indique o DataView que contm o primeiro campo para clculo. Src1DataField - Indique o primeiro campo do clculo. Agora preciso colocar o prximo campo que ser multiplicado por este selecionado: Src2DataView - Indique o DataView que contm o segundo campo para clculo. Src2DataField - Indique o segundo campo do clculo. DisplayFormat - Indique a mscara, podendo ser ###,##0.00. Somente essas propriedades sero ligadas. Observe que assim j esta definida o clculo de multiplicao entre um campo e outro.

_________________________________________________________________________ 82 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

As propriedades de CalOp1 configuradas.

Agora coloque um segundo componente CalcOp, que ser chamado automaticamente pelo Rave de CalcOp2, onde ser complementada a frmula de clculo, ou seja, pegaremos o resultado de CalcOp1 e dividiremos por 100. Com CalcOp2 selecionado, configure as seguintes propriedades: Operator - coDiv A propriedade Operator indica que ser feita diviso. Src1CalcVar - CalcOp1 A propriedade Src1CalcVar onde estar pegando o resultado da operao de CalcOp1. Src2Value - 100,000 A propriedade Src2Value onde indica o valor que ser dividido. DestPIVar vCalculo.

_________________________________________________________________________ 83 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

As propriedades de CalOp2 configuradas.

A propriedade DestPIVar onde criado o nome da varivel no relatrio. Essa varivel vCalculo deve ser criada da seguinte maneira: Selecione o relatrio no Treeview da rvore de objetos do Rave, logo abaixo da opo Report Library, na opo Report1 v a propriedade PIVars, e escreva o nome da varivel desejada, no caso vCalculo, e pronto est criada a varivel que receber o resultado do clculo.

String Editor onde criado a varivel vCalculo.

Para finalizar este clculo, preciso somente mostrar o valor que est na varivel ao relatrio. Para isso coloque um componente DataText, da aba de componente Report.

_________________________________________________________________________ 84 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Neste componente, na propriedade DataField, pressione o boto com reticncias (...). Agora na tela Data Text Editor selecione no combo Post Initialize Variables a varivel que guardamos o resultado do clculo, pressione o boto Insert_PIVar e depois pressione o boto OK.

Data Text Editor configurado para o componente DataText, na propriedade DataField.

Pronto o resultado do clculo armazenado na varivel ser impresso no relatrio.

CalcTotal Trata-se de um componente no visual que realiza a soma total de um determinado campo. Um exemplo para a utilizao deste componente pde ser observada no captulo anterior.

CalcController - Trata-se de um componente no visual que deve ser utilizado junto com os componentes CalcText e CalcTotal, atravs da propriedade Controller destes componentes. utilizado para realizar clculos por grupos. No captulo anterior, foi demonstrado como trabalhar com este componente.

Palheta de componentes Zoom

_________________________________________________________________________ 85 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Palheta de componentes Zoom.

Zoom Permite alterar a quantidade de Zoom digitando na caixa de texto deste componente. Zoom Tool Permite realizar um Zoom de aproximao de duas formas: selecionando ou clicando. Zoom In Permite realizar um Zoom de aproximao, conforme quantidade de vezes que clicado neste componente. Zoom Out - Permite realizar um Zoom de afastamento, conforme quantidade de vezes que clicado neste componente.

Zoom to Selected - Permite realizar um Zoom de aproximao, em uma rea selecionada. Zoom to Page Width Permite alterar o tamanho de visualizao do relatrio. Zoom to Whole Page - Permite alterar o tamanho de visualizao do relatrio.

Palheta de componentes Colors

Palheta de componentes Colors.

Permite alterar as cores de objetos inseridos no Designer do Rave, tais como linhas e formas.

Palheta de componentes Lines

_________________________________________________________________________ 86 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Palheta de componentes Lines.

Line Width Permite alterar a espessura de linhas e contornos de formas desenhadas pelo desenvolvedor. Line Style - Permite alterar o estilo de linhas e contornos de formas desenhadas pelo desenvolvedor.

Palheta de componentes Fills

Palheta de componentes Fills.

Permite inserir texturas a formas desenhadas no Designer do Rave.

Palheta de componentes Fonts

Palheta de componentes Fonts.

Permite alterar as configuraes de tipo de fonte, tamanho, negrito, itlico, sublinhado e centralizao de componentes do tipo texto inseridos ao designer do Rave.

Palheta de componentes Alignment

Palheta de componentes Alignment.

Uma srie de componentes que permite alinhas um componente, ou conjunto de componentes selecionados, no designer do Rave.

_________________________________________________________________________ 87 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

- Conjunto de componentes que permite alinhar componentes inseridos no designer do Rave, na vertical. - Conjunto de componentes que permite alinhar componentes inseridos no designer do Rave, na horizontal.

- Permite mover componentes inseridos no designer do Rave para: frente e para trs, - Permite mover um componente inserido no designer do Rave, conforme posio das setas de cada componente, de acordo com a quantidade de cliques.

_________________________________________________________________________ 88 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Captulo 5 Dicas e Solues


Traduzindo o Preview
Uma das formas de se traduzir o preview do Rave alterando seus arquivos. Na pasta Lib de sua instalao do Rave Report, que acompanha o Delphi 7, existem os arquivos do preview para o Delphi. Mais exatamente em: C:\Arquivos de programas\Borland\Delphi7\Rave5\Lib. Abra os arquivos com extenso.XFM em um editor de texto, ou mesmo no Delphi, e altere as propriedades Caption e Hint com suas devidas tradues.

_________________________________________________________________________ 89 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Arquivo QrpFormPreview.xfm aberto e com suas propriedades Captions traduzidas.

Uma vez alterado seus Caption e Hints, salve e compile o arquivo. Assim estar seu preview traduzido para o portugus.

_________________________________________________________________________ 90 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Tela de Preview traduzida para o portugus.

Gerao e Impresso de Cdigo de Barras


Para impresso de cdigo de barras, preciso que no cadastro de produtos de seu banco de dados tenha j o nmero do cdigo de barras. Tendo isso, com o Rave Report, fcil a gerao e impresso. Uma vez realizada a conexo com o banco de dados, no Rave, basta colocar um componente Code Bar no designer do Rave e configurar o componente realizando a conexo com o banco de dados e o campo onde esto contidos os nmeros para gerao. Exemplo: Insira um componente Region ao designer do rave e ajuste-o para a rea do relatrio. Insira um componente DataBand e faa suas configuraes, como desejar, podendo ser etiqueta ou no. Insira um componente EANBarCode e altere as seguintes propriedades: DataView para o banco de dados referente conexo j realizada. DataField para o campo que contm os nmeros para gerao do cdigo de barras. E, assim est pronto para gerar e imprimir.

_________________________________________________________________________ 91 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Impresso de Grficos
A impresso de grficos no Rave fcil. Suponha que o desenvolvedor j tenha em sua aplicao um componente Chart ou DBChart devidamente configurados e necessita imprimi- los. Uma vez inseridos os componentes bsicos ao formulrio, como de conexo ao banco de dados e chamada do Rave Report. Insira tambm um componente RvCustomConnection. No evento OnGetCols deste componente insira o cdigo a seguir:

No evento OnGetRow, escreva o cdigo a seguir:

No esquea de declarar na clusula USES RTPChart. Agora rode a aplicao, com a aplicao estando rodada, abra o Rave Designer e crie um Direct Data View, fazendo conexo ao componente RvCustomConnection, como mostra a figura a seguir. Monte o relatrio utilizando todos os componentes que desejar: Region, Ba nd, DataBand, etc. Para inserir o grfico, coloque um componente MetaFile, da aba de componentes Standard, ajuste-o como quiser no designer do Rave e, configure suas propriedades

_________________________________________________________________________ 92 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

DataView e DataField. E assim est pronto. Salve o projeto e chame o relatrio no Delphi.

Direct Data View com RVCustomConnection sendo criado.

Visualizao do grfico a ser impresso pelo Rave.

Gerando relatrios em formato PDF


Para gerar relatrios em formato PDF, preciso do componente RVRenderPDF. Ser necessrio utilizar tambm os componentes RvProject e RvSystem. Uma vez inseridos estes trs componentes, altere a propriedade Engine de RVProject apontando para o componente RvSystem1 e selecione o arquivo .rav que ser usado na propriedade ProjectFile. Insira um componente de boto ao formulrio e, em seu evento OnClick, insira o cdigo a seguir:

_________________________________________________________________________ 93 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________ procedure TForm1.Button1Click(Sender: TObject); begin rvSystem1.DefaultDest := rdFile; rvSystem1.DoNativeOutput := false; rvSystem1.RenderObject := RvRenderPDF1; rvSystem1.OutputFileName := 'TestedeGrafico.RAV'; rvProject1.ExecuteReport('TestedeGrafico'); rvProject1.Execute; end;

E assim est pronto para gerar relatrios em PDF.

Gerando Relatrios em formato HTML


Para gerar relatrios em formato HTML, preciso do componente RVRenderHTML. Ser necessrio utilizar tambm os componentes RvProject e RvSystem. Uma vez inseridos estes trs componentes, altere a propriedade Engine de RVProject apontando para o componente RvSystem1 e selecione o arquivo.rav que ser usado na propriedade ProjectFile. Insira um componente de boto ao formulrio e, em seu evento OnClick, insira o cdigo a seguir:
procedure TForm1.Button1Click(Sender: TObject); begin rvSystem1.DefaultDest := rdFile; rvSystem1.DoNativeOutput := false; rvSystem1.RenderObject := RvRenderHTML1; rvSystem1.OutputFileName := 'TestedeGrafico.RAV'; rvProject1.ExecuteReport('TestedeGrafico'); rvProject1.Execute; end;

E assim est pronto para gerar relatrios em HTML.

Gerando Relatrios em formato RTF


Para gerar relatrios em formato RTF, preciso do componente RVRenderRTF. Ser necessrio utilizar tambm os componentes RvProject e RvSystem. Uma vez inseridos estes trs componentes, altere a propriedade Engine de RVProject apontando para o componente RvSystem1 e selecione o arquivo.rav que ser usado na propriedade ProjectFile. Insira um componente de boto ao formulrio e, em seu evento OnClick, insira o cdigo a seguir:
procedure TForm1.Button1Click(Sender: TObject); begin rvSystem1.DefaultDest := rdFile; rvSystem1.DoNativeOutput := false; rvSystem1.RenderObject := RvRenderRTF1; rvSystem1.OutputFileName := 'TestedeGrafico.RAV'; rvProject1.ExecuteReport('TestedeGrafico');

_________________________________________________________________________ 94 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________ rvProject1.Execute; end;

E assim est pronto para gerar relatrios em RTF.

Gerando Relatrios em formato TXT


Para gerar relatrios em formato TXT, preciso do componente RVRenderTXT. Ser necessrio utilizar tambm os componentes RvProject e RvSystem. Uma vez inseridos estes trs componentes, altere a propriedade Engine de RVProject apontando para o componente RvSystem1 e selecione o arquivo .rav que ser usado na propriedade ProjectFile. Insira um componente de boto ao formulrio e, em seu evento OnClick, insira o cdigo a seguir:
procedure TForm1.Button1Click(Sender: TObject); begin rvSystem1.DefaultDest := rdFile; rvSystem1.DoNativeOutput := false; rvSystem1.RenderObject := RvRenderTXT1; rvSystem1.OutputFileName := 'TestedeGrafico.RAV'; rvProject1.ExecuteReport('TestedeGrafico'); rvProject1.Execute; end;

E assim est pronto para gerar relatrios em TXT.

Mirroring Espelhamento
Ser mostradas duas formas de espelhamento. A primeira, para pgina e, a segunda, para componentes. O leitor perceber como esta tcnica pode ajudar bastante o desenvolvimento e atualizao de sistemas.

Pgina Global
O desenvolvimento de sistemas tudo pode ser inesperado e, necessrio preparar a aplicao para qualquer tipo de situao com o usurio. Imagine a seguinte situao: Voc tem seu sistema desenvolvido com mais de 100 relatrios. Todos com cabealho, rodap e outras caractersticas especificas. Seu cliente resolve mudar alguma coisa, um slogan, um logotipo, etc. Voc teria que mudar relatrio por relatrio. Para evitar o problema mencionado indicado utilizar um recurso chamado mirroring, ou espelhamento. uma tcnica onde, qualquer alterao nas propriedades do componente ou pgina espelho Para melhor compreenso, ser desenvolvido um relatrio simples como exemplo.

_________________________________________________________________________ 95 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Ser utilizado, neste exemplo, os bancos de dados que acompanham do Delphi no Alias DBDemos. Faa as configuraes com o banco de dados clients.db. Insira os componentes da palheta Rave de conexo ao banco de dados e o RvProject. Abra o Rave. J no Rave Designer, v ao menu File | New Global Page, observe na rvore de objetos que foi criado uma raiz de Global Page Catalog, clique na Raiz GlobalPage1.

rvore de Objetos com GlobalPage.

Agora, selecione Page1 e insira um componente Region e redimensione a pgina. Insira um componente Band. Em seguida, coloque um componente Section no componente Band e na propriedade Mirror o desenvolvedor poder colocar uma chamada ao Componente Section da GlobalPage: GlobalPage1.Section1, ser colocado o cabealho criado na Section da GlobalPage criado anteriormente.

O componente Section da Global Page inserido ao relatrio.

Esta tcnica, como pde ser observada, uma grande ajuda no desenvolvimento e manuteno de relatrios.

Passagem de Parmetros
possvel passar parmetros no Delphi para validao de dados em de relatrios no Rave. Para exemplificar, inicie um novo projeto e monte o seguinte exemplo: Utilizando os bancos de dados que acompanham a instalao do Delphi no Alias DBDemos, faa a conexo com a tabela orders.db. Em seguida, insira os componente de conexo com banco de dados do Rave e o RvProject e configure-os. Em seguida, abra o Rave Designer e crie um relatrio simples com os dados da tabela orders.db. Depois de criado o relatrio, volte ao Delphi e, na propriedade OnValidateRow do componente do Rave de conexo a banco de dados, podendo ser RvTableConnection, RvQueryConnection, RvCustomConnection e RvDataSetConnection, todos possuem

_________________________________________________________________________ 96 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

este evento. Neste exemplo est sendo usado RvDataSetConection, mas funciona para qualquer um dos componentes citados. Escreva o cdigo a seguir:

O evento OnValidateRow onde possvel fazer a validao de registros, antes da impresso. No cdigo a cima, foi definida que dever ser impresso somente os dados em que o campo do banco de dados AmountPaid forem maiores que zero.

Controle de Acesso a relatrios


possvel restringir o acesso a relatrios do Rave de duas formas: A partir dos relatrios no Rave ou, a partir de uma tabela de banco de dados. Para o acesso no Rave utilizado Simple Security Controller. Para acesso a partir de banco de dados utilizada Data Lookup Security. Vamos partir para exemplos:

A partir de relatrios
Depois que seu relatrio j tiver sido criado, v ao menu do Rave File | New Data Object e escolha a opo Simple Security Controller:

_________________________________________________________________________ 97 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Assim, o desenvolvedor poder especificar, dentro do Rave, os usurio que podero ter acesso aos relatrios. Observe na rvore de objetos que foi criado a raiz SimpleSecurity1:

Nas propriedades de SimpleSecurity1, escolha UserList e o desenvolvedor podero definir os usurios e senhas:

_________________________________________________________________________ 98 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Agora se deve definir quais relatrios tero controle de acesso. Por isso, selecione, na rvore de objetos, a raiz Report1 e, altere a propriedade SecurityControl para SimpleSecurity. Observao: Pode-se definir controle de acesso a todo projeto do Rave, selecionando a raiz, da rvore de objetos, RaveReport e alterar a propriedade SecurityControl para SimpleSecurity. Para finalizar, preciso fazer a va lidao de usurios no Delphi. Isso feito na chamada do relatrio no Delphi, onde deve ser inserido o cdigo a seguir:
with RvProject.SecurityControl do if not lsValidUser(ramos, senhamaster) then Showmessage(Usurio no autorizado.) else RvProject1.Execute(MeuRelatorio); end;

Agora s rodar e testar a aplicao.

A partir de banco de dados


Depois que seu relatrio j tiver sido criado, v ao menu do Rave File | New Data Object e escolha a opo Data Lookup Security Controller:

Assim, o desenvolvedor poder especificar, dentro do Rave, os usurio que podero ter acesso aos relatrios. Observe na rvore de objetos que foi criado a raiz LookupSecurity1:

_________________________________________________________________________ 99 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Nas propriedades de LookupSecurity1, altere a propriedade UserField para o banco de dados que contenha os nveis de acesso. Agora se deve definir quais relatrios tero controle de acesso. Por isso, selecione, na rvore de objetos, a raiz Report1 e, altere a propriedade SecurityControl para LookupSecurity1. Observao: Pode-se definir controle de acesso a todo projeto do Rave, selecionando a raiz, da rvore de objetos, RaveReport e alterar a propriedade SecurityControl para LookupSecurity1. Para finalizar, preciso fazer a validao de usurios no Delphi. Isso feito na chamada do relatrio no Delphi, onde deve ser inserido o cdigo a seguir:
RvProject1.Open; RvProject.SelectReport(MeuRelatorio, false); with RvProject.ActiveReport.SecurityControl do if not lsValidUser(ramos, senhamaster) then Showmessage(Usurio no autorizado.) else RvProject1.Execute(MeuRelatorio); end;

Agora s rodar e testar a aplicao.

Indicar pgina inicial


O Rave Reports permite ter vrias pginas de relatrio para um mesmo relatrio. Veja como definir via programao qual pgina ser apresentada como inicial.
uses RVClass, RVProj, RVCsStd; procedure TForm1.btnChamaRelClick(Sender: TObject); var Pagina: TRavePage; Report: TRaveReport; QuePagina: String; begin // Nome da pgina dentro do projeto Rave.

_________________________________________________________________________ 100 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________ QuePagina := Page2; // Abre RvProject. RvProject1.Open; // Pega referncia do Report dentro do projeto Rave. Report := RvProject1.ProjMan.ActiveReport; // Pega referncia da Page dentro do Report. Pagina := RvProject1.ProjMan.FindRaveComponent(Report1.+ QuePagina,nil) as TRavePage; // Indica a pgina inicial. Report.FirstPage := Pagina; // Executa o relatrio. RvProject1.Execute; end;

Mensagem de Erro: Unable to gain control of Rave data Communication System.


Se tentar abrir duas aplicaes que utilizam relatrios Rave simultaneamente, gera o erro acima mencionado. A soluo bastante simples, bastando abrir o arquivo de projeto (DPR) e acrescentar o seguinte:
program Project1; uses SysUtils, RPDefine, Forms, Unit1 in Unit1.pas {Form1}; {$R *.res} begin RPDefine.DataID := IntToStr(Application.Handle); Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.

Mensagem de Erro: No datalink drivers have been loaded.


Para resolver preciso usar o BDE e declarar a seguinte unit no projeto:
RvDLBDE

Mensagem de Erro: Drive C: not exist. Please verify the correct drive was given.
Em contato com o fabricante, Nevrona, este inicialmente um erro do Delphi 7, mais especificamente na Unit Qdialogs, responsvel pela parte de Dialogs no Delphi. Como o

_________________________________________________________________________ 101 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Rave Report uma ferramenta multiplataformas desenvolvida com o Delphi, este erro se estendeu ao Rave. provvel que este problema seja resolvido com uma atualizao do Delphi.

Carregar imagem via programao


uses RVClass, RVProj, RVCsStd;

No evento OnGetRow do RvDataSetConnection:


var B: TRaveBitmap; P: TRavePage; begin P := RvProject1.ProjMan.FindRaveComponent(MeuRelatorio.Page1',nil) as TRavePage; B := RvProject1.ProjMan.FindRaveComponent('Bitmap1', P) as TRaveBitmap; if B <> Nil then B.FileLink := 'C:\Meus Documentos\Minhas Imagens\Ramos.bmp'; Connection.DoGetRow; end;

Imprimir em Duplex
procedure TForm1.RvSystem1BeforePrint(Sender: TObject); begin { dupSimplex Simplex mode (Duplex mode NOT initialized) dupHorizontal Duplex mode initialized - print Head to Toe dupVertical Duplex mode initialized - print Head to Head } if TBaseReport(Sender).SupportDuplex then TBaseReport(Sender).Duplex := dupVertical; end;

Testar valor antes de imprimir


// evento OnGetRow do componente RvDataSetConnection. procedure TForm1.RvDataSetConnection1GetRow(Connection: TRvCustomConnection); begin if Table1.FieldByName('Continent').AsString = 'North America' then Connection.WriteStrData('', Table1.FieldByName('Name').AsString + ' / Amrica do Norte ') else Connection.WriteStrData('', Table1.FieldByName('Name').AsString + ' / Amrica do Sul '); end;

_________________________________________________________________________ 102 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Campos Calculados no Rave


Todos sabem que possvel criar campos calculados em aplicaes Delphi e usa- los em relatrios. Aqui est uma soluo para criar campos calculados em formulrios do Delphi e utiliza- los em relatrios. Este exemplo como gerar relatrios onde uma linha poder esta em branco e voc no deseja as imprimir.
procedure TForm1.CustomerCXNGetCols(Connection: TRPCustomConnection); begin With Connection do begin DoGetCols; WriteField('FullAddress', dtMemo, 30, '', ''); end; { with } end;

Imprimindo Bitmap usando o RAVE em modo cdigo


Veja como imprimir um bitmap (em arquivo ou em um TImage) usando o RAVE do Delphi 7.0 em modo de programao cdigo
//========================================================================== // Esta rotina permite a impresso de Bitmap usando o RAVE no modelo de programao // via cdigo. // // Exemplos: // // PrintImage(RVSystem1,2,1,10,5,nil,'c:\\temp \\teste.bmp') // PrintImage(RVSystem1,2,1,10,5,Image1.Picture.Bitmap); // // Os dois exemplos produzem o mesmo efeito, porm o primeiro busca um arquivo fsico // no disco e o segundo busca o contedo de um objeto TImage colocado do form. No use os // dois simultaneamente; // // Detalhes do exemplo: // RVSystem: Objeto principal do relatrio // 2 : Linha onde a imagem ser impressa // 1 : Coluna onde a imagem ser impressa // 10 : Comprimento da imagem (em CM ou Polegadas, conforme a configurao do parmetro). // RVSystem1.SystemPrinter.Units // 5 : Largura da imagem (em CM ou Polegadas, conforme a configurao do parmetro). // RVSystem1.SystemPrinter.Units // // Para manter o "Aspect Ratio" da imagem, Quando a largura for preenchida, deixe o comprimento // zerado. Se preenchido o comprimento, deixe a largura zerada. //==========================================================================

_________________________________________________________________________ 103 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________ procedure PrintImage(RVSystem:TRvSystem; Row,Col,ImageWidth,ImageHeight: Double; Bitmap: TBitmap; FileName:String=''); var Calc, L1,C1,L2,C2 : Double; InternalBitmap : TBitmap; begin InternalBitmap := TBitmap.Create; Try If not Assigned(Bitmap) Then Begin InternalBitmap.LoadFromFile(FileName); End Else Begin InternalBitmap.Assign(Bitmap); End; With RVSystem.BaseReport do Begin If ImageWidth <= 0.0 then begin Calc := ImageHeight*(InternalBitmap.Width/XDPI)/(InternalBitmap.Height/YDPI); C1 := Col; L1:=Row; C2 := Col+Calc; L2 := Row+ImageHeight; end else if ImageHeight <= 0.0 then begin Calc := ImageWidth * (InternalBitmap.Height / YDPI) / (InternalBitmap.Width / XDPI); C1 := Col; L1 := Row; C2 := Col+ImageWidth; L2 := Row+Calc; end else begin C1 := Col; L1 := Row; C2 := Col+ImageWidth; L2 := Row+ImageHeight; end; PrintBitmapRect(C1,L1,C2,L2,InternalBitmap); end; Finally InternalBitmap.Free; End; end;

Imprimindo RichText em mltiplas pginas


Isso pode ser facilmente realizado com o cdigo a seguir:
uses RPMemo; procedure TForm1.ReportSystem1Print(Sender: TObject); var MemoBuf: TMemoBuf; begin With Sender as TBaseReport do begin MemoBuf := TMemoBuf.Create; MemoBuf.BaseReport := Sender as TBaseReport; try MemoBuf.RichEdit := RichEdit1; MemoBuf.PrintStart := 1.0; MemoBuf.PrintEnd := 7.0; While not MemoBuf.Empty do begin MemoBuf.PrintHeight(SectionBottom - LineTop,false); If not MemoBuf.Empty then begin NewPage; end; { if } end; { while }

_________________________________________________________________________ 104 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________ finally MemoBuf.Free; end; { tryf } end; { with } end;

Convertendo arquivos NDR para PDF


Com um componente TRPRenderPDF inserido ao formulrio da aplicao, renomeie para RenderPDF e insira o cdigo a seguir:
procedure TForm1.Button1Click(Sender: TObject); var NDRStream: TMemoryStream; begin NDRStream := TMemoryStream.Create; try NDRStream.LoadFromFile('teste.ndr'); RenderPDF.PrintRender(NDRStream, 'test.pdf'); finally NDRStream.Free; end; { tryf } ShowMessage('NDR Convertido'); end;

Convertendo arquivos NDR para HTML


Para este exemplo, insira um componente TRPRenderHTML ao formulrio de sua aplicao e renomeie para RenderHTML. Insira um boto ao formulrio e escreva o cdigo a seguir:
procedure TForm1.Button1Click(Sender: TObject); var NDRStream: TMemoryStream; begin NDRStream := TMemoryStream.Create; try NDRStream.LoadFromFile('teste.ndr'); RenderHTML.PrintRender(NDRStream, 'teste.html'); finally NDRStream.Free; end; { tryf } ShowMessage('NDR Convertido); end;

_________________________________________________________________________ 105 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.

E=BOOK: Desenvolvendo Relatrios no Delphi com Rave Report. _____________________________________________________________________________________

Imprimindo em Matricial
O Rave permite imprimir em diversos formatos de arquivos (PDF, HTM L, RTF, Texto, etc). Para imprimir em matricial necessrios utilizar o componente TRvRenderText e o componente TRvSystem ligando ao componente TrvRenderText. Ento insira um componente TrvRenderText ao formulrio, em seguida insira um componente TRvSystem, e ligue a propriedade Engine do componente RvProject ao componente TRvSystem. Ento coloque o cdigo a seguir
// Faz o Setup de RvSystem1 para fazer a sada direto ao componente RvRenderText1 // sem a interveno do usurio. RvSystem1.DefaultDest := rdFile; RvSystem1.DoNativeOutput := false; RvSystem1.RenderObject := RvRenderText1; // Manda direto para a porta da impressora. RvSystem1.OutputFileName := 'LPT1'; RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup]; // Executa o Relatrio. RvProject1.ExecuteReport('Report1');

_________________________________________________________________________ 106 Material registrado e exclusivo Ramos da Informtica, reproduo no autorizada.