Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Thank You
Lo r d
For My
Two
Lovely
Blessed Sons
Delphi Aplicado by Jurandir A. Pellin Timb (E-mail: delphiewb@gmail.com) 635
Rave Criando relatrio
No artigo anterior apresentei minhas experincias com ferramentas de relatrios para desenvolvimento de
projetos Delphi. Neste estarei apresentando os componentes da paleta RAVE e, no prximo, partirei para a
prtica da construo de relatrios usando essa ferramenta.
Ficou bastante claro que essa sute de componentes se distingue das demais pelo fato de possibilitar um
desenvolvimento estritamente baseado em cdigo de programao Delphi.
Essa tcnica, apesar de trabalhosa, bastante flexvel, pois possibilita ao programador mais experiente
desenvolver seus prprios mtodos de criao de relatrios, sem muita dependncia dos recursos
disponibilizados pelo ambiente
grfico da ferramenta.
Preciso montar um Relatrio de Vendas e apresente o movimento dirio por Cidade e por Vendedor.
Seu layout dever obedecer aos seguintes critrios de impresso:
Os pessimistas diro que estou sendo extremista. Claro, estou... as dificuldades que o desenvolvedor enfrenta
na construo de projetos corporativos costumam ser maiores e os prazos cada vez menores! Esta a nossa
realidade. Estaremos sempre nos deparando com questes de difcil e trabalhosa soluo. Precisamos aplicar
a ferramenta certa para cada problema. No existe uma ferramenta mgica que atenda a uma
heterogeneidade de propsitos.
Se a construo de relatrios difceis um dos seus problemas, ento, com certeza, o RAVE veio para
facilitar bastante o seu trabalho de desenvolvimento.
Quem o RAVE?
A incorporao do RAVE pelo Delphi 7.0 foi feita de uma forma bastante confusa (creio que foi feita s
pressas). Os componentes da paleta RAVE no Delphi 7.0 no so compatveis com o pacote oficial
disponibilizado pela Nevrona em seu site. L voc encontrar o RAVE 4.09 trial para download e a 5.0 para
a compra.
Os arquivos demos disponveis para download no so compatveis com o Delphi 7.0 e RAVE 5.0, pois
foram baseados no RAVE 4.09.
Houve uma mudana no nome das classes da verso 4.09 para 5.0 e alguns componentes simplesmente
desapareceram. Isto inviabilizar o uso dos exemplos de demonstrao da verso 4.09. Quem j utilizava o
RAVE (ou, no meu caso, o ReportPrinter) ter que modificar seus projetos para garantir a compatibilizao
do Delphi 5/6 com o 7.0.
Delphi Aplicado by Jurandir A. Pellin Timb (E-mail: delphiewb@gmail.com) 636
Produtos de terceiros, tipo o excelente Rave for Renders da Pragnaam (http://www.pragnaan.com) no so
compatveis. Devero ser rescritos. A Borland no disponibiliza o cdigo fonte do RAVE. Este dever ser
adquirido junto Nevrona. At a, nada de novo, j era assim com o QuickReport. a tcnica que a Borland
usa para promover seus parceiros de solues.
Percebi alguns pequenos bugs na verso 5.0 do RAVE, principalmente na sua IDE de criao de relatrios.
A Nevrona est prometendo para breve um patch de correo.
Um bug interessante (se que Bugs podem ser interessantes) acontece na verso 98 do Windows. quando o
usurio tenta salvar um relatrio criado na IDE. Uma mensagem de erro o informar que no existe espao
livre no disco rgido (!). O relatrio s ser salvo se voc apont-lo para a pasta raiz do drive. Cheguei a essa
concluso depois de perder vrios trabalhos desenvolvidos na IDE.
No percebi mudanas substanciais na engine bsica do componente. Acredito que essa evoluo tenha
caminhado basicamente para o lado do design de relatrios usando a IDE do RAVE.
Para conhecer melhor o produto RAVE, recomendo o download da documentao oficial da Nevrona nos
endereos abaixo. So dois arquivos PDF (mais de 600 pginas) com uma excelente descrio tcnica e
funcional das classes do pacote.
No deixe de visitar tambm a seo de Tips & Tricks. A maioria das dicas esto
desatualizadas, porm o cdigo compatvel com as novas verses.
http://www.nevrona.com/rave/tips.shtml
O Delphi 7.0 traz alguns demos de relatrios do RAVE na pasta RAVE5\\DEMOS, porm a
Borland se esqueceu de um arquivo importante, o arquivo de projeto do demo (arquivo
.DPR), dificultando assim sua compilao pelos usurios com pouco conhecimento do Delphi.
Crie o formulrio de entrada de dados com o Form Wizard e insira um boto para abrir o relatrio.
Usaremos a aba Report e alguns componetes de aba. Siga os passo de acordo com os nmeros.
Demarca a regio onde sero definidas as bandas e onde mostrar / listar os registros do relatrio.
Band Component - Insira um Banda ( Band1 ) e nesta banda vamos inserir um cabealho.
Vamos usar a aba Drawing para definir uma linha abaixo do ttulo Relatrio de Clientes Teste 1 Delphi 7.0
Usando Rave.
DataBand Component - Banda onde dados da tabela so mostrados, impressos. Insira uma
DataBand Component que esta na aba Report.
Data Text component - Insira trs componentes Data Text component. Este componente permite
associar ao campo da tabela.
Clique em Database Connection, aps clique no boto Next, ser aberta a pgina ao lado.
Clique em Direct Data View, aps clique no boto Next, ser aberta a pgina ao lado.
Agora vamos associar os campos da tabela, clique no componente Data Text1.
Clique nos 3 pontinhos [...], ser aberta a tela abaixo, escolha o campo e clique em Insert Field
Delphi Aplicado by Jurandir A. Pellin Timb (E-mail: delphiewb@gmail.com) 644
Definindo campo Clie_Codigo ( cdigo do cliente ). Clique no componente DataText1, clique em
DataField escolha o nome do campo Clie_Codigo, clique no boto Insert Field. Aps clique em
DataView e defina DataView1.
Clique na primeira banda ( Band1 ), clique em BandStyle, ser aberta a tela abaixo, aps clique em
ControllerBand e defina DataBand1.
Clique na banda DataBand1, clique na propriedade DataView e defina DataView1, clique DataBand1,
clique na propriedade BandStyle, ser aberta a tela abaixo:
Clique na opo
Detail
Clique no cone Save Project para salvar o relatrio, neste arquivo sero salvas todas as propriedades
etc do o projeto Rave como o nome de Project2.rav.
Clique duplo sobre o componente , clique na aba Report, insira um componente Data Text Component.
Clique no componente
DataText Component ,
clique na propriedade
DataField [...], ser aberta
a tela abaixo.
Digite Data: +
Digite + Pgina +
No evento OnClick
do boto Bitbtn acima
( OK ) digite o cdigo
que est na direita.
Abra seu projeto, clique no cone View Unit ou pressione Ctrl F12 e coloque duas barrinhas diante do
nome do formulrio da senha para cancelar esta linha.
Aps a senha qual o formulrio que voc deseja abrir ?, neste exemplo abriremos o Menu de opes.
No evento OnActivate do
formulrio do Menu digite o
cdigo abaixo.
Senha_Frm o
formulrio da senha.
1) Faa download dos Agentes no site da Microsoft. Para instalar basta dar um clique duplo em cada um
dos agentes e Ok, very easy , existem vrios agentes e no somente agentes da Microsoft mas tambm de
outras empresas.
2) Abra o Delphi, na opo Component Import ActiveX Control, clique em Microsoft Agent Control
2.0 e Install ( para instalar o componente )
Selecione o Agente
clicando, aps clique
no boto Install.
Se o campo Nome no for preenchido faremos com que o Agente Papagaio aparea mostrando uma
mensagem.
Se no for preenchido o
campo Nome o Papagaio
aparecer e far as aes
definidas e desaparecer.
Clique no Agente e no
evento OnBallonHide
digite o cdigo ao lado.
Se voc preferir usar o agente Merlin, instale o agente e no programa fonte substitua o nome Peedy para
Merlin.
Agente: Merlin
Insira um MainMenu, e
os componentes Dialog
( aba Dialogs )
Digite
Observe a linha Uses no incio do programa, deve conter todas as bibliotecas abaixo.
// Localizar
Executa_Prog('shell32.dll,Control_RunDLL findfast.cpl');
// Internet: geral
Executa_Prog('shell32.dll,Control_RunDLL inetcpl.cpl,,0');
// Internet: segurana
Executa_Prog('shell32.dll,Control_RunDLL inetcpl.cpl,,1');
// Internet: contedo
Executa_Prog('shell32.dll,Control_RunDLL inetcpl.cpl,,2');
// Internet: conexo
Executa_Prog('shell32.dll,Control_RunDLL inetcpl.cpl,,3');
// Internet: programas
Executa_Prog('shell32.dll,Control_RunDLL inetcpl.cpl,,4');
// Internet: avanado
Executa_Prog('shell32.dll,Control_RunDLL inetcpl.cpl,,5');
// Mouse
Executa_Prog('shell32.dll,Control_RunDLL main.cpl @0');
// Teclado
Executa_Prog('shell32.dll,Control_RunDLL main.cpl @1');
// Fontes
Executa_Prog('shell32.dll,Control_RunDLL main.cpl @3');
// Multimedia: audio
Executa_Prog('shell32.dll,Control_RunDLL mmsys.cpl,,0');
// Multimedia: video
Executa_Prog('shell32.dll,Control_RunDLL mmsys.cpl,,1');
// Multimedia: midi
Executa_Prog('shell32.dll,Control_RunDLL mmsys.cpl,,2');
// Multimedia: cd music
Executa_Prog('shell32.dll,Control_RunDLL mmsys.cpl,,3');
// Multimedia: dispositivos
Executa_Prog('shell32.dll,Control_RunDLL mmsys.cpl,,4');
// Rede
Executa_Prog('shell32.dll,Control_RunDLL netcpl.cpl');
// Dialup-networking
Executa_Prog('rnaui.dll,RnaWizard');
// Administrao odbc
Executa_Prog('shell32.dll,Control_RunDLL odbccp32.cpl'W);
// Configurando senhas
Executa_Prog('shell32.dll,Control_RunDLL password.cpl');
// System: general
Executa_Prog('shell32.dll,Control_RunDLL sysdm.cpl,,0');
// System: performance
Executa_Prog('shell32.dll,Control_RunDLL sysdm.cpl,,3');
// Temas
Executa_Prog(,'shell32.dll,Control_RunDLL themes.cpl');
Delphi Aplicado by Jurandir A. Pellin Timb (E-mail: delphiewb@gmail.com) 689
// Propriedades data e hora: geral
Executa_Prog('shell32.dll,Control_RunDLL timedate.cpl');
Windows Explorer
Executando os programas, utilitrios do Painel de Controle do Windows, abrindo arquivos, opes etc. Na
linha Uses digite ShellApi.
Clique na lateral
do formulrio e
arraste-o.
Insira um componente
TImage e na propriedade
Stretch defina o valor
para True.
No mesmo boto
criptografar e
decriptografar a imagem.
Digite linha na
seo public
Gere um cdigo de
segurana para o seu
sistema.
Insira um
componente Image
( aba Additional ) e
um componente
SaveDialog
( aba Dialogs )
Insira um componente
RichEdit ( aba Win32 )
e na propriedade Lines
digite um texto para
converter para .bmp
Delphi Aplicado by Jurandir A. Pellin Timb (E-mail: delphiewb@gmail.com) 708
Delphi Aplicado by Jurandir A. Pellin Timb (E-mail: delphiewb@gmail.com) 709
Como criar formulrio com cor gradiente ?
Tarefas que
esto na
memria do
computador.
Digite
Digite
Digite ...
Digite ...
Formulrio Invisvel
Clique em no menu do Delphi em Run, clique em Run Parameters, clique no campo Parameters e digite o
parmetro parmetro_senha77
Digite o parmetro
.
.
Insira um DriveComboBox1
( aba Win 3.1 )
Insira um DirectoryListBox1
( aba Win 3.1 )
Clique no boto direito para ativ-lo, aps clicado no boto direito ser aberta uma tela de atalho.
Quando chegar a hora dos lembretes definidos soar o som programado, aps clique no lembrete
programa e clique no boto Remove, para remover este lembrete.
Posicione o ponteiro do mouse sobre a opo
Site da Web padro, clique no boto direito,
clique em Novo, Diretrio virtual, clique para
prosseguir, clique no boto Avanar, ser aberta
uma tela, digite o nome do Alias isapi1, clique em
Avanar, digite no nome do caminho / pasta onde
se encontra o projeto que voc fez no Delphi,
neste exemplo o caminho c:\aaa , clique no boto
Avanar, marque os quadrinhos abaixo...
Arquivos que
compe este
projeto.
Este o resultado.
File New Other, clique em Web Server Application, ser aberta a tela abaixo, clique na opo
ISAPI/NSAPI Dynamic Link Library.
ou
Clique na propriedade HTMLDoc TStrings, ser aberta uma pequena tela, dentro desta so colocados os
cdigos Html.
Crie um alias para testar o projeto em sua mquina, aps testado poder ser enviado para um servidor na
Internet. Estou usando o Inernet Information Server ( Windows XP Pro ), se voc estiver usando o
Windows 98 poder usar o servidor PWS que se encontra em uma sub-pasta do cd do Windows.Abra o
Painel de Controle, abra Ferramentas Administrativas, d um clique duplo em Internet Information
Services, vamos criar um Alias e apontar para pasta / diretrio onde esta o projeto que fizemos no Delphi.
ATENO:
Se alterar o programa e compil-lo novamente o Delphi mostrar uma mensagem de erro abaixo...
e se tentar apagar o arquivo projeto_hora.dll o Windows
no permitir. Este problema tinha no Windows 98, este exemplo foi feito no Windows XP Pro, portanto se
algum tiver alguma dica para resolver este problema ficaria contente
Se fizer 5 alteraes, terei que salvar o mesmo projeto com 5 nomes diferentes ... this makes me stressed ! ...
File New Other, clique em Web Server Application, ser aberta a tela abaixo, clique na opo
ISAPI/NSAPI Dynamic Link Library.
Abra o Internet Information Server ( ou IIS ) com um clique duplo, posicione o ponteiro do mouse sobre
a opo Site da Web padro, clique no boto direito, clique em Novo, Diretrio virtual, clique para prosseguir,
clique no boto Avanar, ser aberta uma tela, digite o nome do Alias lista1, clique em Avanar, digite no nome do
caminho / pasta onde se encontra o projeto que voc fez no Delphi, neste exemplo o caminho c:\Isapi_dados ,
clique no boto Avanar, marque os quadrinhos abaixo...
Antes de alterar as
propriedades da coluna clique
no campo desejado, neste caso
Clie_Codigo.
Alterei a cor de fundo do
primeiro campo, e cor de toda a
coluna, o nome da coluna,
alinhamento para direita da
coluna.
Insira um Splitter
( aba Additional )
Clique no componente
ClientSocket1 e na propriedade
Port digite 9923 Insira um Memo e nomeie a
Este componente esta na aba propriedade Name para
Internet Memo_Resultado
Este um componente
Memo e logo abaixo
uma StatusBar.
Servidor
A propriedade Port
deste componente devet
tambm ser 9923 para
que haja comunicao
entre ambos.
Este componente esta na
aba Internet
Aps digitado a
mensagem esta ser
enviada para o Outlook
Express e para enviar
basta clicar no boto
Enviar
Insira um RadioGroup
(aba Standard )
Insira um
ListBox
( aba Standard
)
Insira um
ListView
( aba Win32 )
Insira um componente
Insira dois componentes
OpenDialog ( aba Dialogs )
NMSMTP ( aba FastNet )
Insira um componente
Insira um
Animate ( aba Win32 )
componente Insira 4
ProgressBar componentes
TImage ( aba
Insira um Additional )
NMSMTP1
( aba FastNet )
Digite estas
linhas.
Insira um
Defina a propriedade Port para componente
35000 para os dois compoentes Memo1
Cliente e Servidor.
Insira um
componente
ImageList ( aba
Additional )
Insira um componente
MainMenu
Clique no menu Opes, clique em conectar ao servidor, ser aberta uma caixa de dilogo, digite o ip local
padro 127.0.0.1 e ok
Este componente
est na aba FastNet.