Você está na página 1de 183

Borland

Desvendando o Caminho das Pedras


Fernando Anselmo
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Dez 1995 - Mai 1997
Desvendando o Caminho das Pedras
Copyright

1995-97 Fernando Antonio F. Anselo.


!odos os noes dos prod"tos #itados s$o ar#as registradas da %orland &nternational' &n#.
("tros prod"tos #itados s$o ar#as registradas no respe#tivo #a)e*alho
As v+rias Marcas Registradas ,"e apare#e no de#orrer deste livro. Mais do ,"e siplesente listar esses noes e in-orar ,"e poss"i se"s direitos de
e.plora*$o' o" ainda ipriir o logotipo das esas' o a"tor de#lara estar "tilizando tais noes apenas para -ins editoriais' e )ene-/#io e.#l"sivo do dono da
ar#a registrada' se inten*$o de in-ringir as regras de s"a "tiliza*$o.
ii
SUMRIO
Desvendando o Cainho das 0edras
INTRODUO
Delphi' #oo Sol"*$o para Desenvolvedores
CAPTULO I
Conceito de Programao Orientada a Objeto
(rienta*$o a ()1eto
()1e#t 0as#al
S/)olos 2spe#iais
0alavras 3eservadas
45eros
Constantes
2.press6es
&denti-i#adores
De#lara*6es
%lo#os de 0ro#edientos o" F"n*6es
Cara#ter/sti#as de ()1etos
0rograando #o o)1etos Delphi
3enoeando os o)1etos e os #oponentes
CAPTULO II
Conhecendo o Delphi
2leentos 7is/veis
For
Code 2ditor
Coponent 0alette
()1e#t &nspe#tor
Speed%ar
2leentos n$o 7is/veis
0ro1e#t Manager
Men" Designer
Fields 2ditor
3eposit8rio de ()1etos
2str"t"ra de Apli#a*6es #o o Delphi 2.0
&pleenta*$o e-etiva
()1etos Data Mod"le
Di#ion+rio de Dados 2s#al+vel
9erdando os For"l+rios
Ferraentas A".iliares de S:;
Monitor S:;
S:; 2.plorer
&nter%ase 4! - %an#o de Dados 3ela#ional
CAPTULO III
Projeto Piloto
iii
Criando o Modelo 3ela#ional
!ra)alhando #o Data%ase 2ngine Con-ig"ration
Criando o Alias
!ra)alhando #o Data%ase Des<!op
Criando o %an#o de Dados via 2str"t"ra
Criando os 3ela#ionaentos via 2str"t"ra
Criando o %an#o de Dados via S:;
()serva*6es da "tiliza*$o do S:; #o o d%ase
CAPTULO IV
Trabalhando com o Men
Metendo a M$o na Massa
Criando a 1anela do en"
&nserindo os C8digos &ni#iais
&ni#iando os #oandos do Men"
Colo#ando os #oandos para o A"./lio
Criando a 1anela =So)re o Sistea>
Criando e alterando os o)1etos
Asso#iando o -or =So)re o Sistea> ao en"
Criando a 1anela Splash
Criando o a#esso a %ase de Dados
CAPTULO V
!anela para as Tabelas
3ea)rindo o se" 0ro1eto
Alterando as ?anelas Criadas
DataMod"les @
Modi-i#ando as !a)elas e as ;iga*6es
Alterando os #apos da ta)ela
Codi-i#ando o DataMod"le
Controlando a d"pli#a*$o dos Capos-Chave
Finalizando o DataMod"le
Alterando o For"l+rio
Modi-i#ando os ;a)els e Capos
()1eto D%4avigator
Modi-i#ando os 0aineis
Modi-i#ando a ?anela
Criando o ter#eiro 0ainel
0rograando no -or"l+rio
0reservando as +reas de Me8ria
Criando F"n*6es Alo)ais
Alterando o Men" para re#e)er o -or"l+rio
CAPTULO VI
Trabalhando com janela Pai " Filha
Criando a 1anela a"toati#aente
So)re os DataMod"les
!ra)alhando #o as !a)elas
!ra)alhando #o os Capos
Controlando o DataMod"le
iv
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Contadores
7alidando os Capos
Alterando a ?anela Criada
(rganizando os 0anels
Modi-i#ando os #apos e ;a)els
(rganizando os 0anels
Modi-i#ando a ?anela
!ra)alhando #o AridBs
Finalente' a prograa*$o
Cons"lta
!ra)alhando #o a +rea de !rans-erCn#ia
Dtilizando o o)1eto (penDialog
Criando o -or"l+rio para o #adastro das 5si#as
Criando novos 0ro#edientos Alo)ais
Alterando o Men" para re#e)er o -or"l+rio
CAPTULO VII
Trabalhando com consltas
Criando #ons"ltas para ta)elas
!ra)alhando #o AridBs
0rograando no -or"l+rio
2nviando e re#e)endo vari+veis
Alterando o -or"l+rio -Categ
Alterando o -or"l+rio -%asi#o
Criando #ons"ltas para o #adastro
Cons"ltas S:;
3ealizando Cons"ltas #o Filtros
0rograando o -or"l+rio
Criando o -or"l+rio Aerente do Filtro
0rograando o -or"l+rio
2ditando os registros
CAPTULO VIII
Relat#rios
!ra)alhando #o o 3eportSith
Criando relat8rio #o o 3eportSith
(rganizando os #apos do relat8rio
Asso#iando o relat8rio ao apli#ativo
0rograando o -or"l+rio
&priindo atravEs do For"l+rio
Criando o C8digo
!ra)alhando #o o :"i#<3eport
CAPTULO IX
Mltim$dia
( ,"e E "lti/dia @
Delphi and M"ltiedia
()1eto !Media0layer
Colo#ando as propriedade e odo 3"ntie
0es,"isando vari+veis e odo 3"n!ie
&nserindo o "lti/dia para o Sistea
Desenvolviento do CD 0layer
v
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
CAPTULO X
%ovos Componentes
Criando Coponentes
A Classe !Coponent
D Coponente Siples
Adi#ionando o Coponente a 0alheta
Criando 0ropriedades
MEtodos de A#esso
Criando novos tipos
0ensando e ()1etos
Constr"indo " ()1eto
Finalente
APNDIC! A
Do#"enta*$o
9ardFare/So-tFare re,"eridos
APNDIC! "
Convers$o de Capos
!ipos de Dados para o &nter%ase
APNDIC! C
Apli#a*$o r+pida #o o ()1eto :"ery
APNDIC! D
&priindo " For"l+rio
APNDIC! !
!ra)alhando #o M+s#aras
APNDIC! #
!ra)alhando #o &porta*$o e 2.porta*$o
APNDIC! $
Doze elhores di#as para o Delphi
vi
In%rod&'(o
%e-vindo ao Delphi' o ais novo prod"to de alta per-oran#e da Borland. Delphi E "
prod"to 5ni#o e s"a #ategoria #o)inando #8digos totalente #opil+veis' -erraentas vis"ais
e te#nologia para a #oposi*$o de )ases de dados es#al+veis' poss"i -a#ilidades para " r+pido
desenvolviento e plata-ora Windows

e apli#a*6es Client/Server.
2ste tra)alho ser+ se" g"ia para "a r+pida aprendizage no desenvolviento de
sisteas ,"e geren#ie )an#os de dados. ( Delphi E en#ontrado e dois prod"tosG
Delphi Client/Server' de alta per-oran#e e -a#ilidade para o desenvolviento de
apli#a*6es e s"porte a )an#os de dados do tipo Cliente/Servidor.
Delphi Desktop' de alta per-oran#e e -a#ilidade para o desenvolviento de apli#a*6es e
s"porte a )an#os de dados lo#ais' peritindo total porta)ilidade H vers$o Client/Server.
Apresento-lhes a seg"ir alg"as in-ora*6es detalhadas para " per-eito
desenvolviento vis"al' sendo ,"e ao -inal de #ada #ap/t"lo pr+ti#o E e.i)ido o #8digo -onte
#opleto seg"ido de " res"o dos prin#ipais #oandos ostrados. Ao -inal deste est"do vo#C
en#ontrar+ apCndi#es ,"e lhe a1"dar$o a resolver pe,"enos pro)leas do dia-a-dia.
Delphi) *omo So+&'(o ,ara Desenvo+vedores
M"itas vezes nos perg"ntaos' e soos ,"estionados' no por,"e de adotar o Delphi
#oo a ling"age para o desenvolviento de sisteas @ &ni#ialente' E ne#ess+rio #onhe#er ,"e
o Delphi o-ere#e " r+pido #ainho para o desenvolviento de apli#a*6es nos a)ientesG
IindoFs

' IindoFs 95

e IindoFs 4!

J
%an#os de dados do tipo Cliente/ServidorG (ra#le

' &n-ori.

' &nter%ase' Sy%ase

e
Mi#roso-t S:; Server

J
Alta per-oran#e' e sisteas #r/ti#osJ
%ase de Dados lo#ais e apli#a*6es do tipo netFor<J
A)iente gr+-i#o' vis"al e "lti/dia.
Mas o ,"e E poss/vel -azer #o ele @ K poss/vel #riar' dentre o"tros' os seg"intes tipos de
apli#a*6es e Delphi G
Ds+-lo #oo a ling"age de desenvolviento para )an#os do tipo Cliente/ServidorJ
A)iente heterogCneo para #apt"ra e envio de in-ora*6es e diversos tipos de ar,"ivos
de dadosJ
7
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
D pa#ote #orporativo de apli#a*6es inteligentes e interpretadores de dados.
&n#orporando D;;Bs e 2L2Bs e.ternosJ
0a#otes "lti/dia #o desenho e ania*$oJ
AenEri#os "tilit+rios do IindoFs

J
Cria*$o de )i)liote#as MD;;N para leit"ra por o"tras apli#a*6es.
Mas por,"e arris#ar e " a)iente novo ,"ando e.iste no er#ado ling"agens ais
di-"ndidas @ 4o "ndo inteiro Delphi -oi testado' e e 15 eses de vida prod"zi" os seg"intes
res"ltadosG
Delphi est+ sendo "tilizado no oento por ais de 1.5OO l"gares in#l"indo as aiores
#orpora*6es' #ons"ltores e organiza*6es de treinaentoJ
2leito pela %yte Magazines #oo %est o- Code. AFardJ
7+rios livros es#ritosJ
Ar"pos de dis#"ss$o e peri8di#os #o di#as de desenvolviento na IorldIi)e MCons"lte
Hs listas da &nter4et atravEs da palavra DELPHINJ
Dezenas de )i)liote#as e -erraentas para o s"porte e DelphiJ
Dezenas de artigos e p")li#a*6es do "ndo inteiro' tais #oo PC Week, InfoWorld,
Computer eseller !ews, PC "a#a$ine, Windows Sour%es e "itas o"tras.
0or t"do a,"i e.posto -i#a #laro ,"e este no prod"to deonstra "a inova*$o para "a
#ria*$o e alta per-oran#e de apli#a*6es. !odos os re#"rsos ,"e vo#C pre#isar+ para o
desenvolviento de se"s prod"tos est$o agora dispon/veis.
Feliz desenvolviento.
Fernando Antonio F. Anselo
Sepre ,"e vo#C lo#alizar este s/)olo signi-i#a ,"e e.iste "a nota ,"e lhe a1"dar+
e #aso de d5vida.
&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Ca,-%&+o I
Conceito de Programao Orientada a Objeto
0ara #opreenderos elhor a novo a)iente de desenvolviento da Borland o Delphi
E ne#ess+rio ,"e vo#C' aprenda e' tenha e ente os #on#eitos de 0(( M0rograa*$o (rientada a
()1etosN' n$o #on-"nda os #on#eitos #o 0(2 M0rograa*$o (rientada a 2ventosN "ito
di-"ndido #o o &%%ess 2.0

M" a)iente )aseado e ()1etosN' as ao longo deste #ap/t"lo


vo#C vai notar as sens/veis di-eren*as ,"e e.iste entre esses dois #on#eitos.
A 0(( e a 0(2 s$o -a#ilente #on-"ndidas' as le)re-se a 0(( #ontE a 0(2 as a
0(2 n$o #ontE a 0((' " o)1eto pode e.istir eso ,"e n$o e.ista nenh" evento asso#iado
a ele' as " evento n$o pode e.istir se n$o ho"ver " o)1eto a ele asso#iado. ("tra
#ara#ter/sti#a ,"e pode #a"sar #on-"s$o s$o a)ientes (rientados a ()1etos e a)ientes
%aseados e ()1etos. 2 a)iente (rientado a ()1etos #onseg"e-se #riar e anip"lar o)1etos
en,"anto ,"e o %aseado e ()1etos n$o E possivel a #ria*$o de o)1etos apenas a s"a
anip"la*$o.
A 0(( E " #on#eito desenvolvido para -a#ilitar o "so de #8digos de desenvolviento
e inter-a#es gr+-i#as. Sendo a Borland' "a das prieiras a entrar neste novo #on#eito' poss"i
s"as prin#ipais ling"agens de prograa*$o Mtais #oo '()e%t Pas%al e C**N' totalente voltadas
para este tipo de prograa*$o. A 0(( atrai" "itos adeptos prin#ipalente pelo po"#o "so de
#8digo ,"e o pro1eto Mdi-erente de sisteaN #arrega no prograa -onte' ao #ontr+rio das
ling"agens ais antigas #oo o Clipper+,-

"ito "tilizado no -inal da dE#ada de 9O e in/#io da


dE#ada de 9O. ( res"ltado desta =lipeza> no #8digo res"lta ,"e a an"ten*$o do pro1eto torna-
se "ito ais siples.
Orien%a'(o a O./e%o
Antes de #oe*aros a -alar realente de ling"age orientada a o)1etos e ne#ess+rio
,"e vo#C poss"a os #on#eitos )+si#os da orienta*$o a o)1etos' s$o elesG
'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Objeto - E ,"al,"er estr"t"ra od"lar ,"e -az parte de " prod"to.
Da 1anela por e.eplo' E " o)1eto de "a #asa' de " #arro
o" de " so-tFare #o inter-a#e gr+-i#a para o "s"+rio.
Atribtos - S$o as #ara#ter/sti#as do o)1eto' #oo #or e taanho' a 1anela' por e.eplo' te
atri)"tos #oo o odelo' taanho' a)ert"ra siples o" d"pla' entre o"tros.
(ncapslao - E " e#aniso interno do o)1eto =es#ondido> do "s"+rio. Da pessoa
pode a)rir "a 1anela girando a tran#a se pre#isar sa)er o ,"e h+ dentro dela.
Ao - E a opera*$o e-et"ada pelo o)1eto. !odas as 1anelas' por e.eplo' #ontrola a
il"ina*$o e teperat"ra a)iente' dependendo do se" design.
)erana - " o)1eto novo ne sepre E #riado do zero. 2le pode =herdar> atri)"tos e a*6es
de o"tros 1+ e.istentes. D )as#"lante herda atri)"tos das 1anelas e das persianas.
Polimor*ismo - E a #apa#idade de o)1etos di-erentes reagire seg"ndo a s"a -"n*$o a "a
orde padr$o. ( #oando =a)re>' por e.eplo' -az " o)1eto entrar e a*$o' se1a ele
"a 1anela' "a porta o" "a tapa de garra-a.
+igao - E ,"ando " o)1eto #one#ta a s"a a*$o a o"tro. D sensor de #laridade' por
e.eplo' ativa o a#endiento a"to+ti#o da il"ina*$o de r"a.
(mbtimento - 0erite a " o)1eto in#orporar -"n*6es de o"tros' #oo " li,Pidi-i#ador
,"e 8i #arne #o a "dan*a do tipo da lQina.
O./e*% Pas*a+
Object Pascal E "a ling"age (rientada a ()1etos n$o p"ra as h/)rida por poss"ir
#ara#ter/sti#as de prograa*$o n$o s8 vis"al as ta)E es#rita' para os prograadores ,"e 1+
#onhe#e tE#ni#as de estr"t"ras de prograa*$o' #o o C' Basi%' Pas%al o" .B&S. entre o"tras
ling"agens a Object Pascal providCn#ia "a igra*$o de -ora nat"ral o-ere#endo " prod"to
de aior #ople.i)ilidade. Object Pascal -or*a a vo#C e.e#"tar passos l8gi#os isto torna ais
-+#il o desenvolviento no a)iente Windows

de apli#a*6es livres o" ,"e "tiliza )an#o de


dados do tipo Cliente/Servidor' tra)alha #o o "so de ponteiros para a alo#a*$o de e8ria e
todo o poder de " #8digo totalente #opil+vel. AlE disso possi)ilita a #ria*$o e re"tiliza*$o
Mvantage de re-"so t$o sonhado #o a Orientao a ObjetosN de o)1etos e )i)liote#as
dinQi#as MD/nami% 0ink 0i(raries - D;;N.
Object Pascal #ontE todo o #on#eito da orienta*$o a o)1etos in#l"indo en#aps"laento'
heran*a e polior-iso. Alg"as e.tens6es -ora in#l"/das para -a#ilitar o "so tais #oo
#on#eitos de propriedades' parti#"lares e p5)li#as' e tipos de in-ora*6es e odo r"n-tie'
an"seaento de e.#e*6es' e re-erCn#ias de #lasses. ( res"ltado de toda esta 1"n*$o -az #o ,"e
Object Pascal #onsiga s"portar as -a#ilidades de " )ai.o n/vel de prograa*$o' tais #ooG
Controle e a#esso das s")#lasses do Windows

MA0&NJ
,-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
0assar por #ia das ensagens de loop do Windows

J
Mensagens seelhantes as do Windows

J
C8digo p"ro da ling"age &ssem(ler.
Coo de" para per#e)er a )ase de toda a prograa*$o Delphi E a ling"age Object
Pascal' ent$o neste #ap/t"lo tratareos e.#l"sivaente deste tipo de prograa*$o.
Smbolos Especiais
A Object Pascal a#eita os seg"intes #ara#teres ASC&&G
;etras - do Al-a)eto &nglCsG A atE . e a atE /.
D/gitos - De#ialG - atE ' e 9e.aDe#ialG - atE ' e A atE F Mo" a atE *N
%ran#os - 2spa*o MA0C11 23N e todos os #ara#teres de #ontrole A0C11 MA0C11 - atE
A0C11 2,N' in#l"indo -inal de linha e 2nter MA0C11 ,2N.
2spe#iais - Cara#teresG 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H
S/)olos - Cara#teresG 98 :8 A8 == ?6 6@ ?= =@ 77
( #ol#hetes es,"erdo M ; N e e,"ivalente ao ?= e o #ol#hetes direito M < N e e,"ivalente a
=@. A #have es,"erda M E N e e,"ivalente ao ?6 e a #have direita M F N e e,"ivalente a 6@.
Palavras Reservadas
A Object Pascal se "tiliza das seg"intes palavras reservadas' n$o podendo as esas
sere "tilizadas o" rede-inidasG
And 2.ports ;i)rary Set
Array File Mod Shl
As Finnaly 4il Shr
As For 4ot String
%egin F"n#tion ()1e#t !hen
Case Aoto (- !o
Class &- (n !ry
Const &pleentation (r !ype
Constr"#tor &n 0a#<ed Dnit
Destr"#tor &nherited 0ro#ed"re Dntil
Div &nitialization 0rogra Dses
Do &nline 0roperty 7ar
DoFnto &nter-a#e 3aise Ihile
2lse &s 3e#ord Iith
2nd ;a)el 3epeat Lor
2.#ept
,,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Da o"tra lista a seg"ir' apresenta as diretivas ,"e s$o "tilizadas e #onte.tos de
identi-i#a*$o de o)1etosG
A)sol"te 2.port 4ae 0")lished
A)stra#t 2.ternal 4ear 3ead
Asse)ler Far 4ode-a"lt 3esident
At ForFard (verride Stored
Cde#l &nde. 0rivate 7irt"al
De-a"lt &nterr"pt 0rote#ted Irite
Dynai# Message 0")li#
Nmeros
K poss/vel de-inir vari+veis e #onstantes de tipos de Inteiro o" eal atravEs de ,"al,"er
de#ial ordin+rio M - a ' N' as a Object Pascal ta)E a#eita a nota*$o 9e.ade#ial "tilizados
#o o pre-i.o dollar M G N o" a nota*$o #ient/-i#a M ( N.
Constantes
Da #onstante E " identi-i#ador #o valorMesN -i.oMsN. D )lo#o de de#lara*6es
#onstante poss"i a seg"inte e.press$oG
RDe#lara*$o ConstanteS R&denti-i#adorS MTN R#onstanteS MJN
A lista a)ai.o apresenta " #on1"nto de -"n*6es ,"e pode ser "tilizadas para a
de#lara*$o das #onstantesG
A) ;ength (rd Size(-
Chr ;o 0red S"##
9i ;oF 0tr SFap
9igh (dd 3o"nd !r"n#
Alg"ns e.eplos para a de-ini*$o de ConstantesG
const Min T OJ
Ma. T 1OOJ
Centro T MMa. - MinN div UJ
%eta T ChrMUU5NJ
4";etras T (rdMVWVN - (rdMVAVN X 1J
Mens(la T V&nstr"*$o inv+lidaVJ
Mens2rro T V 2rroG V X Mens(la X V. VJ
0os2rr T YO - ;engthMMens2rroN div UJ
;n1O T U.ZOU5Y5O9U99[O[5\Y[J
;n1O3 T 1 / ;n1OJ
Dig4"eri#os T RVOV..V9VSJ
;etrasAlpha T RVAV..VWV' VaV..VzVSJ
Alpha4" T ;etrasAlpha X Dig4"eri#osJ
,3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Expresses
As e.press6es e ()1e#t 0as#al M#oo e ,"al,"er ling"ageN E -orada por
operadores e operandosJ os operadores s$o divididos e ,"atro #ategorias )+si#asG
]ni#os ^' 4ot
M"ltipli#ativos _' /' div' od' and' shl' shr' as
Adi#ionais X' -' or' .or
3ela#ionais T' ` _' `' _' ` T' _ T' in' is
As e.press6es o)de#e as regras )+si#as de l8gi#a para a pre#edCn#ia da e.e#"*$o das
opera*6es.
denti!icadores
&denti-i#adores pode ser #onstantes' tipos' vari+veis' pro#ed"res' -"n*6es' "nidades'
prograas e #apos de registros.
4$o e.iste liite de #ara#teres para o noe de " identi-i#ador as apenas os \Z
prieiros #ara#teres s$o signi-i#antes Mn$o podendo ser idCnti#o ao noe das palavras
reservadasN. ( noe de " identi-i#ador deve ser ini#iado por ;etras o" o #ar+#ter "nders#ore M I
N. ( resto E -orado por ;etras' D/gitos' #ar+#ter "nders#ore MASC&& a5FN. 4$o E peritido a
"tiliza*$o de espa*os para a -ora*$o do noe.
2.eplo de identi-i#adores v+lidosG For1' SysDtils.Str;en' ;a)el1.Caption
0i%h111 do1112
Deliita " deterinado )lo#o de de#lara*6es para " identi-i#ador espe#/-i#o evitando a de#lara*$o
deste identi-i#ador. A sinta.e do #oando EG J1T) Enome do identi*icadorF DO EcomandosFB. 2.G
)egin
b ... #oandos ini#iais ... c
Kith *orm, do
)egin
Caption GT d!esteBJ 2,"ivalente a For1.Caption
%orderStyle GT )sSiza)leJ 2,"ivalente a For1.%orderStyle
endJ
endJ
arra3 4 111 5 o6 1112
De-ine " #on1"nto de vari+veis o" #onstantes de " eso tipo. A sinta.e do #oando EG arraL
;EMantidade de ocorrenciasF< o* ETipoFB. (s arrays s$o #ontrolados por trCs -"n*6esG
Fno Nalor de Retorno
;oF 0rieiro eleento
9igh Aponta para o 5ltio eleento
Size(- !aanho do array
2.G
,2
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
#onst
tG arraL ;,==O-< o* Char b De#lara 5O eleentos para o tipo Char c
var
s G arraL;,==,--< o* Real b De#lara 1OO eleentos para o tipo real c
indG &ntegerJ
)egin
-or &nd GT +oKMsN to )ighMsN do sR&ndS GT OJ b Wera os eleentos do array S c
i- 0i/eO*MtN T dCB then e.itJ b Se o 5ltio eleento do array ! -or dCB sai do )lo#o c
b ... o"tros #oandos... c
endJ
"eclaraes
De#lara*6es des#reve a*6es de " algor/to a sere e.e#"tadas.
.e7in111 end2
0rende " #on1"nto de de#lara*6es e " )lo#o de #oandos deterinado. A sinta.e do #oando EG
B(P1% EcomandosF (%DB. 2.G
begin
b ... #oandos ini#iais ... c
begin
b ... )lo#o 1 ... c
endJ
begin
b ... )lo#o U ... c
endJ
b ... #oandos -inais ... c
endJ
i6111 %hen111 e+se1112
2sta e.press$o es#olhe entre o res"ltado de "a #ondi*$o )ooleana o #ainho verdadeiro MthenN o" -also
MelseN. A sinta.e do #oando EG 1F EcondioF T)(% Ebloco de comandosF (+0( Ebloco de
comandosFB. 2.G
)egin
b ... #oandos ini#iais ... c
i* Q : 3 then
b ... %lo#o verdadeiro ... c
else
b ... %lo#o -also ... cB
endJ
7o%o111 2
!rans-ere a e.e#"*$o de " prograa para o ponto deterinado pelo +abel. A sinta.e do #oando EG
POTO E+abelFB. 2.G
label
prieiroJ
,R
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
)egin
b ... #oandos ini#iais ... c
i- . T U then
goto primeiroB
b ... o"tros #oandos ... c
PrimeiroA
b ... #oandos do 0rieiro ... c
endJ
*ase111 o6111 e+se111 end2
Consiste de "a lista de de#lara*6es ,"e satiz-az a #ondi*$o de " seletor de e.press6es' se nenh"a parte
da lista satis-izer ao seletor e.e#"ta os #oandos do s")-#oando else. 0ara o seletor ser$o v+lidos os
tipos de-inidos' tipo &nteiros o" ;ong&nt. A sinta.e do #oando EG CA0( EseletorF OF E(Qpresso ,FA
Ecomando da eQpresso ,FB E(Qpresso 3FA Ecomando da eQpresso 3FB E(Qpresso nFA Ecomando
da eQpresso nF (+0( EcomandoFB endB. 2.G
)egin
b ... #oandos ini#iais ... c
case Q o*
,A b ... %lo#o para . T 1 ... c
3> 2A b ... %lo#o para . T U o" L T Z... c
R==SA b ... %lo#o para [ `T . `T \ ... c
else
b ... %lo#o para . ` 1 o" . _ \ ... cB
endB
endJ
re,ea%111 &n%i+2
3epete " deterinado )lo#o de de#lara*6es atE a #ondi*$o )ooleana do s")#oando ntil ser satis-eita. A
sinta.e do #oando EG R(P(AT EcomandosFB ntil EcondioFB. 2.G
)egin
b ... #oandos ini#iais ... c
. GT OJ
repeat
. GT . X 1
ntil ?Q 8 3@B
endJ
6or111 %o 8do0n%o9111 do1112
&n#reenta e 1 "a deterinada vari+vel inteira' repetindo " )lo#o de #oandos' atE ,"e esta atin1a o
valor -inal do intervalo' o s")#oando doKnto realiza o in#reento reverso. A sinta.e do #oando EG
FOR EvariavelF A8 Evalor inicialF to ?doKnto@ Evalor *inalF do Ebloco de comandosFB. 2.G
)egin
b ... #oandos ini#iais ... c
*or i A8 , to ,- do 2.e#"ta o R#oandos AS para i T 1'U'Z'['5'\'7'Y'9 e 1O
b ... Coandos A ... c
*or s A8 ,- doKnto , do 2.e#"ta o R#oandos %S para i T 1O'9'Y'7'\'5'['Z'U e 1
b ... Coandos %... c
endJ
,O
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
0hi+e111 do1112
3epete " )lo#o de #oandos en,"anto ,"e deterinada #ondi*$o )ooleana se1a satis-eita. A sinta.e do
#oando EG J)1+( EcondioF DO Ebloco de comandosFB. 2.G
)egin
b ... #oandos ini#iais ... c
Khile i A8 , do 3epete o R%lo#o de #oandosS en,"anto i T 1
b ... %lo#o de #oandos ... c
endJ
.rea:2 o& *on%in&e1112
( #oando breaT interrope " )lo#o de repeti*$o *or' Khile o" repeat saindo do )lo#o. A sinta.e do
#oando EG BR(AUB en,"anto ,"e o #oando contine retorna a prieira instr"*$o do )lo#o de
repeti*$o *or' Khile o" repeat. A sinta.e do #oando EG CO%T1%V(B. 2.G
)egin
b ... #oandos ini#iais ... c
-or i GT 1 to 1O do
)egin
i- i T Y then
breaTB Salta para os R#oandos CS
b... #oandos A...c
i- i T 5 then
contineB 3etorna para o #oando *or p"lando os R#oandos %S
b... #oandos % ...c
endJ
b... #oandos C ...c
endJ
#locos de Procedimentos o$ %$nes
As pro#ed"res o" -"n*6es s$o de#laradas na se*$o de tipos de de#lara*6es Ma)ai.o do
#oando tLpeN perten#endo ao o)1eto o" sere do tipo pblic Mp5)li#as - e.e#"tadas por o"tras
"nidadesN o" private Mparti#"lares - restritas a "nidade lo#alN.
Pro*ed&re
procedre EcabealhoFB var Edeclarao das variWveisFB Ebloco de comandosFB
( #a)e*alho da pro#ed"re E #oposto pelo noe do pro#ediento e vari+veis ,"e ser$o
re#e)idas Mo" odi-i#adas atravEs da de#lara*$o var> e.G pro#ed"re testeMvar .GstringNJN.
pro#ed"re soaMa')G integerNJ &n/#io enviando as vari+veis A e % do tipo inteiro.
var De#lara*$o de vari+veis lo#ais.
#G integerJ
)egin Corpo do pro#ediento.
# GT a X )J
endJ
,S
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
#&n*%ion
*nction EcabealhoF A EresltadoFB var Edeclarao das variWveisFB Ebloco de comandosFB
As -"n*6es se di-ere dos pro#edientos pela o)rigatoriedade do retorno de "
res"ltado' podendo este res"ltado ser retornado pela de#la*$oG Enome da *noF A8 valor o"
reslt A8 valor.
-"n#tion soaMa')G integerN G integerJ &n/#io enviando as vari+veis A e % do tipo inteiro.
)egin Corpo do pro#ediento.
soa GT a X )J o" res"lt GT a X )J
endJ
?"nto #o o Delphi 2.0 ve o an"al de Object Pascal e -orato =)+P' #aso a
ling"age se1a novidade para vo#C a#onselho ,"e vo#C dC "a )oa olhada Mo Delphi 1.0 traz o
eso an"al' as e -orato =PDFN' as n$o se preo#"pe #o o ,"e -oi e.pli#ado a#ia 1+
est+ ais do ,"e s"-i#iente para "a )oa ini#ializa*$o #o o Delphi.
!"do o ,"e vios a #ia E o ,"e noralente teos e o"tras ling"agens #o"ns' as
o #ara#teriza realente a ling"age (rientada e ()1etos E o tra)alho e a anip"la*$o #o os
esos.
Cara*%er-s%i*as de O./e%os
Mas a-inal de #ontas' o ,"e E " o)1eto @ Coo -oi dito anteriorente' " o)1eto E
,"al,"er tipo de eleento' o" #oponente' ,"e envolva dados e #8digo dentro de " 5ni#o
pa#ote.
Da vantage de prograar na 0(( e ,"anto a 2eran3a dos o)1etos' este Etodo -az
#o ,"e se1a poss/vel " o)1eto dFilhoB poder herdar todas as #ara#ter/sti#as e #onte5dos de "
o)1eto d0aiB. !irando " po"#o do Pas%al da geladeira Ma partir do Pas%al vers$o 7.O a Borland
torno" poss/vel a "tiliza*$o sipli-i#ada de todo o #on#eito de 0((N a,"i vai " #8digo
#opleto de de#lara*$o de dois o)1etos' o prieiro #haado de !0ai e o seg"ndo de !-ilhoG
!0ai T object
4oeG PCharB
constrctor &nit M0G 0CharNJ
destrctor DoneJ
procedre M"da4oeM0G 0CharNJ
procedre ShoF4aeJ
endJ
!Filho T objectM!0aiN
procedre M"da4oeM0G 0CharNJ
endJ
( seg"ndo o)1eto !Filho herda do o)1eto !0ai o ponteiro vari+vel %ome' a constrctor
1nit' o destrctor Done e a procedre 0hoK%ame' apenas a procedre Mda%ome ter+ o
,X
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
-"n#ionaento #oo "a #ara#ter/sti#a 5ni#a para #ada o)1eto. ( Delphi poss"i in5eros =pais>
M#lasses de o)1etosN prontos para sere "sados por vo#C' tais #ooG
TFormG Centro das apli#a*6es Delphi' "tilizados na #ria*$o de 1anelas' #ai.as de di+logo entre o"tros.
TMenG 3espons+vel pela #on#ep*$o de en"s e en" pop"p.
TBttonControlG Sipli-i#a o re-inaento do #ontrole da 1anela serve de )ase para os #oponentes #ooG %ot6es'
Che#< %o. e 3adio %o..
Pro7ramando *om o./e%os Delphi
:"ando ini#iado o Delphi' E #riado a"toati#aente " novo pro1eto e " o)1eto
-or"l+rio Mderivado da #lasse TFormN para o s"porte dos deais o)1etos. 2.plorando o 2ditor
de C8digos MCode .ditorN vo#C poder+ o)servar a de#lara*$o do novo o)1eto da #lasse 45orm ,"e
-oi prod"zido a"toati#aente #o a #ria*$o do novo -or"l+rio. 2.ainando o #onte5do deste
#8digo #riado para o o)1eto' tereosG
nit Dnit1J A)ert"ra de "a nova "nidade
inter*ace 0arQetros do o)e1etos
ses
SysDtils' Iin!ypes' Iin0ro#s' Messages' Classes' Araphi#s' Controls' Dso de o"tras "nidades
Fors' DialogsJ
tLpe
!For1 T classM!ForN A de#lara*$o do o)1eto ini#ia a,"i
private
6 Private de%larations 7
pblic
6 Pu(li% de%larations 7
endJ A,"i E o -inal da de#lara*$o
var
For1G !For1J Atri)"i a vari+vel For1 as #ara#ter/sti#as do o)1eto !For1
implementation &n/#io da parte a ser ipleentada
68 9.D5"7 Diretiva de #opila*$o ,"e agrega o desenho da tela Me
.DFMN #o o eso noe da "nidade
end. Final da parte ipleentada
D novo tipo de o)1eto 45orm1' E de#larado derivado da #lasse 45orm, ,"e ta)E E
" o"tro o)1eto. 3ele)re " o)1eto E " tipo de eleento #apaz de g"ardar dados e #8digo
dentro de " 5ni#o pa#ote. AtE agora' o tipo 45orm1 n$o #ontE #apos o" Etodos' isso
a#onte#er+ #o a adi*$o de alg"ns #oponentes neste o)1eto.
()servando o #8digo' notaos ,"e e.iste "a vari+vel de#larada #o o noe 5orm1
para o novo tipo de o)1eto 45orm1G
var
For1G !For1J
,&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
5orm1 E a #haada de instQn#ia ao tipo 45orm1. 2sta vari+vel re-ere-se ao -or"l+rio
e si' aonde ser+ adi#ionado #oponentes e desenhado a inter-a#e entre o #op"tador e o
"s"+rio ,"e -or operar o sistea. K sepre notado de#lara*6es de "a o" ais instQn#ias
re-eridas ao tipo de o)1eto. F"t"raente ser+ ostrado o poder deste tipo de de#lara*6es ,"ando
-alaros so)re 1anela MD& M"ultiple Do%ument Interfa%e - &nter-a#e de do#"ento 5ltiplosN
geren#iando v+rias =1anelas -ilhas>' n$o peritindo ,"e estas =1anelas -ilhas> saia do espa*o
#riado pela =1anela pai>.
Adi#ionando alg"ns #oponentes ao -or"l+rio' vereos #oo o Delphi #opletar+ a
apli#a*$o es#revendo a"toati#aente o #8digo' e peritindo ,"e ao -inal tornar-se-+ poss/vel a
#opila*$o Mle)ra-se do Clipper

' #o =("(N' e.e#"*$o e distri)"i*$o da apli#a*$o.


2 nosso -or"l+rio' #olo#areos " )ot$o ,"e' e tepo de e.e#"*$o' ao ser dado "
#li,"e #o o o"se so)re este o)1eto' o -or"l+rio "de s"a #or. Aperte a te#la F,3 para retornar
a vis$o do -or"l+rio e na palheta de o)1etos MComponnent PalleteN #li,"e no o)1eto M(utton
lo#alizado na p+gina StandardN e #li,"e no -or"l+rio. 4a 1anela da '()e%t Inspe%tor #li,"e na
p+gina .vents e #li,"e d"as vezes so)re a a*$o 'nCli%k e insira o seg"inte #8digoG
procedre !For1.%"tton1Cli#<MSenderG !()1e#tNJ
begin
For1.Color GT #lAreenJ
endJ
3eparando no #8digo #opleto da apli#a*$o' vereosG
nit Dnit1J
inter*ace
ses
SysDtils' Iin!ypes' Iin0ro#s' Messages' Classes' Araphi#s' Controls'
Fors' DialogsJ
tLpe
!For1 T classM!ForN
%"tton1G !%"ttonJ D novo dado -oi a,"i inserido
procedre %"tton1Cli#<MSenderG !()1e#tNJ De#larado " novo Etodo
private
6 Private de%larations 7
pblic
6 Pu(li% de%larations 7
endJ
var
For1G !For1J
implementation
68 9.D5"7
procedre !For1.%"tton1Cli#<MSenderG !()1e#tNJ ( #8digo do novo Etodo
,'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
begin
For1.Color GT #lAreenJ
endJ
end.
( novo o)1eto 45orm1 agora apresenta " #apo Button1 - o )ot$o ,"e vo#C adi#iono"
ao -or"l+rio. 4Button e o tipo do o)1eto' e Button1 E o o)1eto )ot$o propriaente dito. Co o
tepo vo#C #olo#ar+ novos #oponentes ao -or"l+rio.
3ode o pro1eto' #li#ando no )ot$o MunN' dC " #li,"e no )ot$o e ve1a o ,"e
a#onte#e. 0are a apli#a*$o -e#hando a 1anela #o Alt4FR.
S8 por #"riosidade' salve este ar,"ivo' -e#he-o e a)ra o ar,"ivo :!I41.D5" M#o a
op*$o File e Open File===N notareos ,"e o Delphi #rio" " ar,"ivo #o todas as propriedades
dos o)1etos #riados e ,"e a de#lara*$o do o)1eto Form, englo)a todos os o"tros' no*6es de
(ncapslamento.
Renomeando os o./e%os e os *om,onen%es
7o#C sepre deve "tilizar a 1anela do '()e%t Inspe%tor para renoear os o)1etos #riados.
0or e.eplo' o noe padr$o do -or"l+rio e 5orm1 "de a propriedade !ame para *Cores. (
Delphi se en#arregar+ de "dar ,"al,"er re-erCn#ia ,"e e.istia ao 5orm1. 2nt$o o #8digo
apresentar+ a seg"inte odi-i#a*6esG
nit Dnit1J
inter*ace
ses
SysDtils' Iin!ypes' Iin0ro#s' Messages' Classes' Araphi#s' Controls'
Fors' DialogsJ
tLpe
!-Cores T classM!ForN A,"i -oi odi-i#ado
%"tton1G !%"ttonJ
procedre %"tton1Cli#<MSenderG !()1e#tNJ
private
6 Private de%larations 7
pblic
6 Pu(li% de%larations 7
endJ
var
-CoresG !-CoresJ A,"i -oi odi-i#ado
implementation
68 9.D5"7
3-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
procedre !-Cores.%"tton1Cli#<MSenderG !()1e#tNJ A,"i -oi odi-i#ado
begin
For1.Color GT #lAreenJ A,"i n$o fff
endJ
end.
( Delphi odi-i#ar+ apenas os #8digos gerados a"toati#aente pgr ele. (s
#8digos para a a*$o 'nCli%k -ora gerados por vo#C e o Delphi n$o os odi-i#ar+. Ca)e a vo#C a
an"ten*$o neste #aso. &sto -oi idealizado para preservar o #onte5do original do se" #8digo.
procedre !-Cores.%"tton1Cli#<MSenderG !()1e#tNJ
begin
-Cores.Color GT #lAreenJ
endJ
Ca,-%&+o II
Con&ecendo o "elp&i
Se vo#C teve alg"as d5vidas no #ap/t"lo anterior so)re a +rea de tra)alho do Delphi n$o
se preo#"pe' neste #ap/t"lo vo#C poder+ san+-las #opletaente' ta)E ser+ ostrado o Etodo
de estr"t"ra de apli#a*6es Client/Server.
Caso vo#C se1a "s"+rio do Delphi 1.0 na )arra de en" sele#ione a op*$o )elp e
1nteractive Ttors' vo#C re#e)er+ "a a"la 'n;0ine so)re a nova +rea de tra)alho.
(s eleentos da inter-a#e Delphi -ora divididos do seg"inte odoG
!+emen%os Vis-veis
( a)iente de tra)alho do Delphi E -orado por o)1etos ,"e est$o vis/veis t$o logo ,"e o
apli#ativo se1a ini#iado -orando a +rea de tra)alho.
3,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
<is=o >eral dos o()etos vis?veis do &m(iente Delphi
%orm
(s -or"l+rios Mo)1eto 5ormN s$o os pontos #entrais para o desenvolviento Delphi.
7o#C se "tilizar+ deles para desenhar s"a #o"ni#a*$o #o o "s"+rio' #olo#ando e organizando
o"tros o)1etos. 2stes o)1etos s$o arrastados da Component Palette' ostrada na 1anela lo#alizada
a#ia.
7o#C pode iaginar ,"e o -or"l+rio E " o)1eto ,"e #ontE o"tros o)1etos. S"a
apli#a*$o -i#ar+ lo#alizada e " -or"l+rio prin#ipal e este interagir+ #o o"tros -or"l+rios
#riados. K poss/vel a"entar' over o" o#"par #opletaente a tela do onitor' o" atE eso
"ltrapass+-la. D -or"l+rio )+si#o in#l"i os seg"intes #oponentesG
Controles de en"J
%ot6es de a.iiza*$o e iniiza*$oJ
%arra de t/t"loJ e
%ordas rediension+veis.
( #8digo gerado' na +rea #onhe#ida #oo Code .ditor' -i#a e.ataente atr+s do o)1eto
-or"l+rio' #li,"e na )arra de notas' e :nit1' se alg"a #oisa -or des#onhe#ida para vo#C' leia
aiores e.pli#a*6es no Cap$tlo 1.
K poss/vel enviar " -or"l+rio para a ipressora' para isto e.iste d"as aneirasG
1. !ipo " PrintS%reen de !ela' #olo,"e o seg"inte #oando =R4oe do
-or"l+rioS.0rintJ> no evento onShow do -or"l+rioJ o"
33
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
U. 0ara ipriir " -or"l+rio no taanho de " papel A[' atravEs do "so de
#oandos da )i)liote#a Printer' ve1a o ApYndice D para aiores detalhes.
Code Editor
( editor de #8digos providCn#ia total a#esso ao #8digo gerado pelo pro1eto' in#l"indo
alg"ns dos ais poderosos re#"rsos para a edi*$o. 0ode ser sele#ionado tipos de #ores para os
eleentos do prograa M#oo por e.eplo #oent+rios' palavras reservadas' #8digos
asse)ler' ...N para tanto a partir do en" prin#ipal entre e Tools e Options===' lo#alize a p+gina
Colors.
0ara o"tras in-ora*6es adi#ionais so)re o odo de "sar este editor' pro#"re
re-erCn#ias no 2elp 'n0ine no t8pi#o Code Editor.
Ao ser a)erto " novo pro1eto' o Delphi gera a"toati#aente na p+gina do Code .ditor
"a :nit #o o ar,"ivo #8digo M.0ASN. 0ara ver o #8digo de "a :nit e parti#"lar'
siplesente Cli%k na ta)"la*$o de p+gina. ( Code .ditor ostrar+ sepre o noe do ar,"ivo
#orrente ativo na ta)"la*$o de p+gina.
K poss/vel alternar entre o o)1eto Form e a Code (ditor atravEs do pressionaento
da te#la F,3' do )ot$o )ot$o M4o##le 5orm/:nitN da SpeedBar' o" ainda atravEs das op*6es
do en" NieK Z Toggle Form7Vnit. M#"riosidadeG o a#esso r+pido atravEs da te#la Alt X ;etra
s")linhada para esta op*$o est+ ar#ado so)re a letra PN
Component Palette
Coponentes Mo" o)1etosN s$o os eleentos ,"e vo#C "sar+ para tra)alhar #o a
apli#a*$o. Fora in#l"/dos o)1etos e v+rias p+ginas' tais #oo #ai.as de di+logos e )ot6es' a
palheta in#l"i ta)E alg"ns espa*os e )ran#o para ser peritida a adi*$o de novos o)1etos.
Alg"ns o)1etos n$o ser$o vis/veis en,"anto a apli#a*$o estiver e.e#"tando' eles -aze parte do
servi*o da DD( MD/nami% Data .@%han#eN.
(s o)1etos da palheta -ora divididos e gr"pos de -"n#ionalidade e di-erentes
p+ginas. 0or e.eplo' os o)1etos ,"e representa as 1anelas tradi#ionais do Windows

Mtais #oo
-ontes' palheta de #ores' ...N -ora #olo#ados na p+gina Dialo#s da palheta.
7o#C poder+ #riar se"s pr8prios o)1etos #oo ta)E instalar o"tros 1+ prontos' para isso
-oi #olo#ado os espa*os vazios. 0or e.eplo poder+ ser instalado novos #ontroles e o)1etos do
Nisal Basic

R=- M()1etos (CL - o" para os portadores do Delphi 1.0 o do Nisal Basic

2=- os
o)1etos 7%LN. Da das prin#ipais vantagens da POO E ,"e "ito e )reve dever+ ser #olo#ado
no er#ado pa#otes de o)1etos prontos para sere integrados aos sisteas o ,"e -a#ilitar+ ainda
ais o desenvolviento e a an"ten*$o dos esos.
32
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Object nspector
0rovidCn#ia a #one.$o entre a inter-a#e vis"al e o #8digo. K Coposto por d"as p+ginas
Properties MpropriedadesN e .vents M2ventosN ,"e ostrar+ as propriedades e eventos do o)1eto
sele#ionado.
Disponi)iliza " -+#il #ainho para a personaliza*$o dos o)1etos. 7o#C "sar+ a p+gina de
Propriedades para personalizar os o)1etos #olo#ados no -or"l+rio Min#l"sive o pr8prio
-or"l+rioN' e a p+gina de (ventos para geren#iar a navega*$o entre #ertas partes do #8digo do
prograa.
( seletor de o)1etos M'()e%t Sele%tor ; lo#alizado e " o)1eto do tipo Com(oBo@ no
topo do '()e%t Inspe%torN ostra o noe e o tipo de todos os #oponentes do -or"l+rio
#orrente Min#l"sive o pr8prioN. 7o#C pode "sar o seletor de o)1etos para lo#alizar -a#ilente
,"al,"er o)1eto no -or"l+rio.
Speed#ar
ContE os )ot6es ais -re,Penteente "tilizados. Forne#endo deste odo " atalho de
navega*$o ao en" prin#ipal do Delphi.
K poss/vel a personaliza*$o da SpeedBar #olo#ando nela os #ainhos do en" prin#ipal
,"e vo#C ais "tiliza' )astando para issoG
1. 3ediensione a SpeedBar. 0ara tanto posi#ione o #"rsor do o"se so)re o ponto de
en#ontro da SpeedBar #o a Component Palette #on-ore o desenho a)ai.oG

U. :"ando o #"rsor do o"se "dar de -orato' #li,"e o )ot$o es,"erdo do o"se e arraste
a)rindo a +rea da SpeedBar.
Z. Cli,"e #o o )ot$o direito do o"se na +rea a)erta' apare*a " en" PullDown
#ontendo entre o"tras op*6es a op*$o Properties' sele#ione-a.
[. As #ategorias e os #oando s$o divididos de a#ordo #o o en"' #li,"e e #ia dos
#oandos dispon/veis e arraste-os para a +rea a)erta de a#ordo #o a s"a ne#essidade'
para retirar os )ot6es da SpeedBar -a*a o pro#esso inverso.
!+emen%os n(o Vis-veis
Alg"ns eleentos n$o est$o prontaente vis/veis ,"ando o Delphi E ini#iado as vo#C
poder+ ter a#esso a eles )astando para isso sele#ionar a op*$o na )arra de en".
3R
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Project 'anager
( Aeren#iador de 0ro1etos #ontE "a lista de -or"l+rios o" "nidades "tilizados pela
apli#a*$o' e serve para #ontrolar estes -or"l+rios o" "nidades' adi#ionando-os o" reovendo-os
do pro1eto' organizando as op*6es do pro1eto' entre o"tros.
7o#C ta)E poder+ #olo#ar " )ot$o para ini#iar o Aeren#iador de 0ro1etos
atravEs da SpeedBar '
'en$ "esigner
( "enu Desi#ner perite a #ria*$o de en"s para os se"s -or"l+rios. 7o#C pode #riar
en"s o" en"s do tipo pulldown atravEs dos o)1etos "ain"enu o" Popup"enu Mlo#alizado na
p+gina Standard na Component paletteN. A #ria*$o #opleta de Mens ser+ #olo#ada de -ora
ais a)rangente no Cap$tlo 1N.
3O
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras

%ields Editor
0ara o Delphi E poss/vel editar e odi-i#ar as propriedades de ,"ais,"er #apos dos
o)1etos de ta)elas asso#iadas ao )an#o de dados' a 5ields .ditor e #on1"nto #o a '()e%t
Inspe%tor #ontrola o odo de ostrar deterinados #apos de ar,"ivos' E iportante le)rar
,"e esta odi-i#a*$o n$o a-etar+ os #apos da ta)ela' apenas para o -or"l+rio ativo e ,"est$o.
S"a "tiliza*$o e-etiva ser+ ostrada a partir do Cap$tlo N.
Add *ields=== E respons+vel pela adi*$o de de-ini*6es de
#apos da ta)ela' E poss/vel inserir " o" ais #apos'
dependendo de s"a "tiliza*$o para o -or"l+rio.
%eK *ield=== perite a #ria*$o de " novo #apo' este pode ser a deriva*$o de " o" ais #apos da
ta)ela.
Ct envia para +rea de trans-erCn#ia e eliina todas as de-ini*6es do #apo sele#ionado.
CopL #opia para a +rea de trans-erCn#ia todas as de-ini*6es do #apo sele#ionado.
Paste re#e)e da +rea de trans-erCn#ia todas as de-ini*6es do #apo sele#ionado #riando-o.
Delete e.#l"i ,"ais,"er de-ini*$o para os #apos.
0elect all sele#iona todas as de-ini*6es dos #apos.
Retrieve Attribtes at"aliza os atri)"tos do #apo sele#ionado #o os #apos do di#ion+rio de dados.
3S
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
0ave attribtes salva os atri)"tos do #apo sele#ionado para o di#ion+rio de dados.
0ave attribtes as=== salva os atri)"tos do #apo sele#ionado para o di#ion+rio de dados peritindo a
renoea*$o do #apo.
Associate attribtes=== -az a asso#ia*$o dos atri)"tos do #apo sele#ionado #o deterinado #apo do
di#ion+rio de dados.
Vnassociate attribtes reove a asso#ia*$o dos atri)"tos do #apo sele#ionado #o deterinado #apo
do di#ion+rio de dados.
Reposit(rio de Objetos
( Reposit#rio de Objetos do Delphi 2.0 arazena e geren#ia os o)1etos da apli#a*$oG
For"l+rios' Data "odules' geradores e@perts' e D;; MDinami% 0inked 0i(rar/ - %i)liote#as de
a#esso dinQi#oN. 4a essCn#ia' ele #entraliza as lo#aliza*6es dos o)1etos envolvidos agr"pado-os.
A proli-era*$o dos o)1etos no reposit8rio in#reenta as seg"intes vantagensG
S"porte a e,"ipe de desenvolviento para re-erCn#ia aos o)1etos da rede.
Da #"stoiza*$o de todo o desenvolviento e gr"pos l8gi#os de o)1etos' -a#ilitando
o re-"so dos esos.
( Delphi poss"i diversas #ara#ter/sti#as ,"anto a s"a "tiliza*$o. !e os 4utors e .@perts
,"e s$o as -erraentas respons+veis para g"iar-nos atravEs de tE#ni#as' tais #oo' anip"la*$o
de #oponentes e #ria*$o de siples apli#a*6es. AlE disso o Delphi o-ere#e "a #ole*$o de
odelos para -or"l+rios' 1anelas de di+logo e atE eso apli#a*6es #opletas na -erraenta
!ew Items. A 1anela do !ew Items E sepre #haada a"toati#aente ,"ando a op*$o File e
%eK=== do en" prin#ipal E e.e#"tada.
3X
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
K poss/vel para vo#C #riar novas 1anelas' o" pro1etos' a"to+ti#os no Delphi. 0ara a
nossa sorte a Borland n$o es#onde o 1ogo e ostra #oo se #ria "a template visite o diret8rio
[BOR+A%D[D(+P)1 3=-[OB!R(PO0' o e,"ivalente no Delphi 1.0 E en#ontrado no diret8rio
[D(+P)1[PA++(R\' todos os e.eplos s$o a"to-e.pli#ativos.
0ara de-inir o pro1eto padr$o ,"e o !ew Items e.e#"tar+ no in/#io de #ada pro1eto'
#li,"e #o o )ot$o direito a#ia da 1anela e es#olha a op*$o Properties apare#er+ as listas Pa#es
e '()e%ts' de-ina ,"ais,"er dos o)1etos #oo !ew 5orm o" "ain 5orm.
()serve ,"e a seg"nda -olha da 1anela !ew Items Mter+ o noe do se" ar,"ivo #o a
e.tens$o =DPRN E o se" pro1eto #orrente' o" se1a' "a nova 1anela poder+ ser derivada' por
#ara#ter/sti#a de heran*a' de "a o"tra 1anela 1+ e.istente.
!s%r&%&ra de A,+i*a';es *om o Delphi 2.0
D dos o)1etivos de desenhar apli#a*6es do tipo Client / Server para o desenvolviento
E a re"tiliza*$o dos o)1etos' das regras de neg8#io e das telas do pro1eto. ( Delphi Client / Server
Suite 2.0 E o 5ni#o ,"e ipleenta "a ar,"itet"ra in#orporando a te#nologia RAD Mapid
&ppli%ation Development - Desenvolviento 3+pido de Apli#a*6esN #o o desenvolviento
totalente OO M'()e%t 'rientation - (rientado a ()1etosN para a red"*$o do tepo de
desenvolviento e an"ten*6es iprov+veis. Adi#ionando' "a ar,"itet"ra aonde E poss/vel a
separa*$o da PV1 M>rafi% :nit Interfa%e - Dnidade de &nter-a#e Ar+-i#aN' das regras de neg8#io
l8gi#as e do desenho do )an#o de dados de a#ordo #o o odelo representado a)ai.oG
3&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Benefcios
1. A separa*$o do desenho da PV1 MatravEs dos o)1etos FormsN #o a +rea de liga*$o
l8gi#a de dados MatravEs dos o)1etos Data ModlesN perite ,"e se #a"se " enor
ipa#to so)re a)as as +reas. As "dan*as pode ser e.e#"tadas nas telas de entrada o"
nas liga*6es' independenteente' de a#ordo #o os re,"erientos do "s"+rio.
U. A separa*$o do desenho da PV1 #o a +rea de liga*$o l8gi#a de dados realizada #o
"a #erta ha)ilidade aos eventos envolvidos' poder+ n$o ne#essariaente dever+ ser
#ontrolada por " ha)ilidoso DBA MData(ase &dministrator - Adinistrador de %an#o
de DadosN' #o s"as -ant+sti#as regras de neg8#io' podendo in#l"sive ser antida por "
=analista de in-ora*6es>.
Z. ( desenho do )an#o de dados' a #onstr"*$o das etodologias de neg8#io e o desenho e a
#ria*$o das 1anelas de entrada s$o e-etivados dentro da apli#a*$o. ( desenvolviento'
ent$o paralelaente' res"ltar+ e "a aior rapidez.
[. 9erdando as 1anelas de entrada' e n/veis de "tiliza*$o' red"z-se drasti#aente o
pro#esso de #odi-i#a*$o' e e #onse,PCn#ia' o pro#esso -"t"ro de an"ten*$o. As
"dan*as l8gi#as das regras de neg8#io o" a in#orpora*$o de novos padr6es' s$o -eitas
a"toati#aente para todos os o)1etos herdados.
5. ( reposit8rio de o)1etos' os -or"l+rios re"s+veis e a "tiliza*$o dos o)1etos Data
Modles' envolve e eliina*$o da d"pli#a*$o de #8digos e de tra)alhos #o desenhos
de 1anelas' e e #onse,PCn#ia na red"*$o da e,"ipe de desenvolviento.
3'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Im,+emen%a'(o e6e%iva
Objetos "ata 'od$le
A partir do Delphi 2.0 -oi in#orporado o "so de o)1etos #onhe#idos por Data Modle'
,"e serve para ,"e s"as apli#a*6es providen#ie " desenho #entralizado da de-ini*$o de
a#esso aos dados e das regras de neg8#io. (s o)1etos Data Modles' ta)E pode ser
separados por neg8#ios l8gi#os M#oo e.eplo por +reasG #opras' vendas' esto,"e' et#.N
-orando #ainhos de #one.6es siples.
(s o)1etos Data Modles pode ser apli#ados a o)1etos tais #oo Tables' 0tored
Procedres' o" ]eries peritindo a #entraliza*$o dos eventos envolvidos e antes e
depois da grava*$o' e.#l"s$o' inser*$o o" edi*$o dos dados. 2 atE eso na #olo#a*$o
de novos o)1etos de #ontrole para aior -a#ilidade.
As rela*6es de dados "aster / Detail s$o de-inidas e enor ,"antidade. 0ossi)ilita
ent$o ao desenvolvedor #riar apli#a*6es do tipo Client / Server de -ora ais -+#il'
r+pida' e seg"ra se "tilizando das propriedades dos o)1etos Datasorces o" "tilizando o
Database Form (Qpert.
(s -or"l+rios das apli#a*6es' pode ser ligados diretaente a " o" ais o)1etos Data
Modle para a propaga*$o das regras de neg8#io se a ne#essidade de e.e#"*$o de "
#8digo e.tra.
(s o)1etos Data Modles s$o #lasses de o)1etos ,"e perten#e a intera*$o dos dados do
data(ase server. &solando totalente o a#esso ao )an#o de dados #o a apli#a*$o Client'
sipli-i#ando deste odo toda a an"ten*$o realizada.
2-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
( A#esso ao Delphi aos )an#os de dados se pro#essa da seg"inte aneiraG
Distrib!i"#o L$%ica da &plica"#o
(s o)1etos Data Modle -ora desenvolvidos para #riar "a #entraliza*$o l8gi#a de
todas as regras de neg8#io' separando a +rea de vis$o do "s"+rio #o a +rea do desenho do %an#o
de Dados. 2ste s8lido -"ndaento de s"porte s$o distri)"/dos e " n-n5ero de apli#a*6es e
ar,"itet"ras servidoras dispon/veis' tais #oo C1C0 da 1BM' Top(nd da ATT' TQedo da
%ovell' Object BroTer da Digital' 1O%A da OrbiQ e "itas o"tras.
"icion)rio de "ados Escal)vel
( dicionWrio de dados E "tilizado para arazenar in-ora*6es so)re o "so dos dados
#ontidos nas s"as ta)elas. ( di#ion+rio deve ser #oo "a +rvore geneal8gi#a tra)alhando #oo
" inspetor de odi-i#a*6es ,"e perite " arazenaento -a#ilitado. ( di#ion+rio deve
#onter in-ora*6es dos atri)"tos dos #apos tais #ooG valores /nio' +.io e #o"ns
Mvalores defaultN' +s#aras "tilizadas' et#. A "tiliza*$o do di#ion+rio de dados traz as seg"intes
vantagensG
1. ConsistYnciaG Capos idCnti#os s$o arazenados #entralente no di#ion+rio isto red"z
o tepo de de-ini*$o das d"pli#idades. D desenvolvedor poder+ #riar os #apos
#opleentares #o do/nios e apli#a*6es apropriadas.
U. Redo do TrW*ico da RedeG ( Delphi perite ,"e a valida*$o dos dados se1a -eita nas
+,"inas %lient o" no servidor. ( Di#ion+rio de dados perite ,"e a an"ten*$o dos
atri)"tos dos #apos do lado %lient se1a validado de -ora e-i#iente red"zindo a
ne#essidade do tr+-ego da rede.
2,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
*erdando os %orm$l)rios
( desenvolviento de apli#a*6es #orporativas de "a -ora padronizada E " -ato de
s"a iportQn#ia para as epresas envolvidas. Mas #onseg"ir e anter este padr$o E "a tare-a
#onsiderada prati#aente iposs/vel' 1+ ,"e as apli#a*6es deve se odernizar na velo#idade
,"e o er#ado de in-or+ti#a e.ige. (s -or"l+rios herdados do Delphi s$o siples e.tens6es da
prograa*$o orientada a o)1etos' #onseg"indo anter' de -ora a"to+ti#a' os padr6es e as
odi-i#a*6es realizadas nos pro1etos. 2 e #on1"nto #o o Reposit#rio de Objetos' padroniza'
organiza e #entraliza os -or"l+rios res"ltando e odi-i#a*6es de #"rt/ssio tepo.
23
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
#erramen%as A&<i+iares de S=L
0ara o tra)alho #o )ases de dados padr$o 0]+ MStru%ture Auer/ 0an#ua#e -
;ing"age estr"t"rada de Cons"ltasN' o Delphi #onta #o as seg"intes -erraentas RAD ,"e
a".ilia ao desenvolviento.
'onitor S+,
D monitor 0]+ E " -erraenta para testes' dep"ra*$o e e.e#"*$o de #ons"ltas 0]+
e apli#a*6es Client / Server. &sto res"lta e " a"ento da prod"tividade de desenvolviento e
elhor per-oran#e da apli#a*$o.
( monitor 0]+' inter#epta as #haadas entre as +,"inas %lient e o servidor. 2sta
in-ora*$o a".ilia ao desenvolvedor e pro)leas rela#ionados as de#lara*6es 0]+ e otiiza
este tipo de transa*$o. Da sErie de #ainhos de inter#epta*6es pode ser tra*ados' dependendo
da ne#essidade do desenvolvedor' para ,"e as in-ora*6es a sere #olo#adas e " relat8rio on;
line se1a as ais ipres#ind/veis o poss/vel. K poss/vel in#l"sive salvar e ipriir o relat8rio
gerado para #ons"ltas o" testes posteriores.
22
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
S+, Explorer
A -erraenta 0]+ (Qplorer providen#ia "a in-ora*$o #entralizada do geren#iaento
das deandas da )ase de dadosJ tais #oo' s"porte a odi-i#a*$o e #ria*$o de ta)elas' singnios'
pro#edientos de grava*$o' tri##ers Mgatilhos disparados pelo )an#oN e e.e#"*$o das regras de
neg8#io interativas do 0]+. Da -erraenta gr+-i#a ,"e propor#iona " es,"ea de integridade
da )ase da dados e #ontE as -erraentas essen#iais para os adinistradores de )an#os de dados.
( 0]+ (Qplorer' "ni#aente para o Delphi' adinistra de -ora int"itiva e -+#il o
)an#o de dados. A sipli#idade de "so da inter-a#e gr+-i#a E " per-eito #ainho para
representar o #ople.o rela#ionaento ,"e e.iste no )an#o de dados do servidor. Apresenta "
es,"ea para in-ora*6es e )an#os #oo Oracle

' 0Lbase

' 1nterBase' 1n*ormiQ

' DB3

e
o"tros. ( desenvolvedor poder+ trilhar #apos' ta)elas e pro#edientos do )an#o dentro da
#onstr"*$o da apli#a*$o Delphi rapidaente' podendo ser dire#ionado para 5ltiplos servidores e
5ltiplos )an#os.
2R
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
( 0]+ (Qplorer' ta)E adinistra o DicionWrio de Dados. S"a inter-a#e de "so
sipli#ado perite -a#ilente de-inir novos do/nios para os atri)"tos dos #apos e asso#ia*$o
entre ta)elas.
nter#ase N- . #anco de "ados Relacional
( Delphi Client / Server Suite 2.0 in#l"i "a li#en*a para dois "s"+rios do "so do )an#o
de dados 1nterBase %T. Desenvolvedores pode #riar e +,"inas standalone apli#a*6es
"sando este poderoso )an#o de dados M#on#orrente de )an#os #oo Oracle

' 0Lbase

'
1n*ormiQ

' DB3

e o"trosN. Co o #res#iento do vol"e de dados e do taanho da apli#a*$o'


a)os' o 1nterBase e o Delphi #onseg"e interagir de -ora haroniosa.
( 1nterBase E " )an#o de dados de alta per-oran#e prod"zido pela Borland' #oo
plata-ora para SA0 Server. 2st+ dispon/vel e ais de 15 sisteas opera#ionais in#l"indoG
DO0 e JindoKs

2=,' JindoKs

'O' JindoKs

%T' %etJare

' 0CO

' 0n O0

' 0n
0olaris

' )P5V"

' 1BM A1"

' 0P1 1R1"

' et#.
( 1nterBase E " )an#o a n/vel &!SI SA0 B2' s"portando eventos prograados e
e.#e*6es o#orridas no odelo por a#esso de 5ltiplos "s"+rios. (-ere#e #haves de #ontrole a
n/vel de registros para ar,"itet"ras M"lti-Aeren#iais #a"sando " per-oran#e "ito s"perior a
"a leit"ra das opera*6es de )an#o' e #ontr+rio das leit"ras de )lo#age de opera*6es es#ritas
realizadas por o"tros )an#os.
A vers$o lo#al do 1nterBase' dispon/vel apenas #o a #8pia Client / Server Suite 2.0'
providen#ia aos desenvolvedores " #ainho r+pido para o desenvolviento de prot8tipos e de
sisteas #o " )an#o de padr$o &!SI B2 SA0. 2sta vers$o propi#ia as esas -"n#ionalidades
da vers$o "lti-"s"+rio para %T e VniQ' in#l"indo #ontroles de transa*6es' pro#edientos de
grava*$o Mstored pro%eduresN' "so de tri##ers Mgatilhos disparados do )an#oN' o" eventos de
2O
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
alerta. &agine o desenvolviento de " grande sistea sendo realizado e " 0aptop dentro
de " tre' avi$o o" atE eso na -rente do #liente' apenas o a#esso ao )an#o de dados -inal E
,"e ser+ odi-i#ado.
Dtilizando o Delphi Client/Server Suite 2.0' desenvolvedores poder$o #on#e)er e
desenhar prot8tipos e testar a apli#a*$o -inal e "a 5ni#a +,"ina. ( 1nterBase o-ere#e "
e.#ep#ional a#esso a inter-a#e gr+-i#a do JindoKs

' in#l"indo a #on-ig"ra*$o das propriedades'


" per-eito geren#iador de )an#os nativo ZU )its' total interatividade #o -erraentas S:;' e
"a #opleta do#"enta*$o e -orato de 2elp do JindoKs

Mar,"ivos .9;0N.

Ca,-%&+o III
Projeto Piloto
K 8)vio ,"e -i#a ais siples o aprendizado de "a nova -erraenta ,"ando se -az
alg" tipo de apli#ativo' prin#ipalente " ,"e se1a 5til' ent$o ao longo deste est"do' ireos
desenvolver " apli#ativo destinado ao Cadastro de Copa#t Dis# MCDBsN. !odas as pessoas ho1e
e dia te ontes de CDBs' viro" "a espE#ie de -e)re' ent$o' por,"e n$o -azer " sistea para
#adastr+-los e #ontrol+-los' ,"anto tepo vo#C 1+ perde" pensando e ,"al deles est+ a,"ela
5si#a ,"e vo#C ,"er o"vir@ (" "a #apa ,"e se" -ilho rasgo"' ,"e tal iprii-la novaente@ 2
no #ap/t"lo "lti/dia aprendereos " Etodo para to#ar o CD.
0ara daros partida ao nosso prieiro apli#ativo M0ro1eto 0ilotoN' de-inireos
ini#ialente as nossas ne#essidadesG
1. 0eritir o #adastro #opleto e a #ons"lta aos CDBsJ
U. Ser poss/vel separar os CDBs e #ategorias' -a#ilitando deste odo a )"s#a e o
arazenaentoJ
Z. :"anto as 5si#as deve ser peritido o #adastro do a"tor e o tepo de d"ra*$oJ
[. 0eritir a in#l"s$o da -oto da #apa do CDJ e
5. Coportar relat8rios de #on-erCn#ia e reipress$o da #apa.
( a#esso Delphi a ar,"ivos pode ser -eito atravEs de d"as aneiras lo#al o" reoto'
sendo a seg"nda apenas poss/vel pela #8pia C0I.!4;S.<. E voltadas a )ases de dados ais
#ople.as #oo '&C0.

o" SCB&S.

' ini#ialente' restringireos o nosso est"do a )ase de


dados lo#ais #onseg"ida atravEs da vers$o Desktop. ;e)re-se ,"e H vers$o Desktop #ontE
a#esso a #ria*$o e a de-ini*$o de )ases dBase e Parado@' alE de o"tras #onseg"idas atravEs de
'DBC.
Co )ase no ,"e -oi s"gerido a#ia' vaos de-inir as ta)elasG
CAT(POR1A
()1etivoG Dados das #ategorias do CD.
CaposG S&A;A DA CA!2A(3&A - A)revia*$o da des#ri*$o da #ategoria.
D2SC3&hi( DA CA!2A(3&A - Des#ri*$o da Categoria.
2S
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
B^01CO
()1etivoG Dados ini#iais do CD.
CaposG CjD&A( D( D&SC( - C8digo do CD' en#ontrado na pr8pia #apa.
4(M2 D( D&SC( - 4oe do CD.
!&0( D( D&SC( - !ipo de Arava*$o do CDG AAA' AAD' ADD o" DDD.
F(!( DA CA0A - Arazenar+ a -oto da #apa do CD.
S&A;A DA CA!2A(3&A - ;iga*$o para o #8digo da Categoria.
M_01CA0
()1etivoG Dados das 5si#as do CD.
CaposG
CjD&A( D( D&SC( - ;iga*$o #o o CD.
4DM23( DA FA&LA - 45ero da -ai.a.
4(M2 DA M]S&CA - !/t"lo da 5si#a.
4(M2 D( AD!(3 - 4oe do a"tor da 5si#a.
!2M0( DA M]S&CA - !epo de d"ra*$o da 5si#a MMSS.
Criando o Mode+o Re+a*iona+
0ara #riar " odelo rela#ional siples e tra)alhar #o )ases lo#ais vo#C pode optar por
dois odos do tipo dBase o" Parado@' parti#"larente e" pre-iro tra)alhar #o Parado@' as
vo#C rapidaente notar+ ,"e tanto -az' tra)alhe #o a,"ela ,"e vo#C se sinta ais a vontade.
2s#olha a )ase de a#ordo #o o porte do sisteaG 0ara sisteas pe,"enos e siples
e #o po"#os dados "se o dBase' para sisteas Edio' "lti-"s"+rio' #o "a )oa ,"antidade
de dados es#olha a )ase Parado@ e para sisteas #ople.os e v+rias plata-oras e a#essos
"lti-"s"+rio opte por InterBase.
7aos agora vis"alizar " odelo ,"e deonstrar+ #oo as ta)elas dever$o se
rela#ionar no sistea' este odelo ta)E -a#ilitar+ as rela*6es e a integra*$o dos -or"l+rios do
sistea ,"ando #onstr"ireos nossas #ons"ltas e relat8rios.
4o odelo de entidade e rela#ionaento a#ia lC-seG
2X
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
1 registro da entidade BWsico se rela#iona #o 1 registro da entidade Categoria en,"anto
,"e 1 registro da entidade Categoria se rela#iona #o n registros da entidade BWsico'
1 registro da entidade M`sicas se rela#iona #o 1 registro da entidade BWsico en,"anto
,"e 1 registro da entidade BWsico se rela#iona #o n registros da entidade M`sica.
Co o M23 nas $os 1+ se te a idEia de #oo deve -i#ar as estr"t"ras das ta)elas'
ent$o' vaos ,"eiar " po"#o de ne"rgnios.
Tra.a+hando *om Da%a"ase !n7ine Con6i7&ra%ion
Criando o /lias
( A+1A0 E siplesente " apelido MsingnioN a ser dado para o )an#o de dados' este
apelido peritir+ ,"e no l"gar de -alaros para ao Delphi ,"e a nossa )ase se en#ontra e
CGkS&S!2MAk... o" DGkD2S247kS&S!2MAk...' siplesente digaos se en#ontra e AliasL o"
Aliasl' isto -a#ilitar+ o se" tra)alho ,"ando vo#C por e.eplo ,"iser odi-i#ar o diret8rio do
sistea' )asta "dar o endere*o do A+1A0 e n$o sair odi-i#ando v+rios -or"l+rios.
("tra vantage e se #riar " Alias est+ na "dan*a da )ase' )asta reapontaros o
Alias para o"tra )ase ,"e o sistea a"toati#aente ver+ estas novas in-ora*6es. ;e)re-se
,"e para isto ser poss/vel E ne#ess+rio ,"e o noe das ta)elas e dos #apos se1a
ne#essariaente os esos' in#l"indo o taanho e o tipo Mno apCndi#e % E en#ontrado "a
ta)ela para a #onvers$o das diversas )ases de dadosN.
0ara tra)alhar #o A+1A0 o #ainho ais interessante e #o o Data(ase .n#ine
Confi#uration' no ar,"ivo de prograas do Delphi dC " d"plo #li,"e so)re o /#one '
a #on-ig"ra*$o do )an#o de dados se divide e v+rias p+ginasG
Drivers - Controla os ar,"ivos de a#esso lo#ais e (D%C dos )an#os de dados "tilizadosJ
Aliases - Controle dos singnios dos sisteasJ
0Lstem - De-ine os re#"rsos do Windows ,"e ser$o alo#ados pela apli#a*$oJ
Date - 2spe#i-i#a os -o ratos "tilizados para #apos tipo dataJ
Time - 2spe#i-i#a os -oratos "tilizados para #apos tipo horaJ e
%mber - 2spe#i-i#a os -oratos "tilizados para #apos tipo n"Eri#o.
Se at"alente vo#C estiver "tilizando a vers$o de desenvolviento' os drivers ,"e
apare#er$o ser$oG d%ase' &nter%ase e 0arado.' na vers$o Client/Server alE desses ser$o
#olo#adosG (ra#le' &n-ori.' Sy%ase entre o"tros.
M"de para a p+gina &liases e #li#< no )ot$o %eK Alias' in-oreG
%eK alias nameA AliasDis#o
Alias tLpeA S!A4DA3D
2&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
%ot$o OU
PathA CGkS&S!2MAkCADD&SC(
De*alt DriverA 0arado.
4este oento o se" A+1A0 AliasDis#o -oi #riado para a )an#o de dados 0arado.' no
-orato 0adr$o lo#alizado no diret8rio CGkS&S!2MAkCADD&SC(' no en" prin#ipal es#olha a
op*$o File e 0ave' o BD. salvo" o se" ar,"ivo de #on-ig"ra*$o #haado &DA0&.CFA.
Crie #o o Aeren#iador de Ar,"ivos o diret8rio CGkS&S!2MAkCADD&SC(' aonde
ser+ lo#alizado o sistea.
0ara a )ase d%ase a 5ni#a di-eren*a seria o #oando De*alt DriverG D%AS2.
2n#erre o Data(ase .n#ine Confi#uration.
Tra.a+hando *om Da%a"ase Des:To,
Criando o #anco de "ados via Estr$t$ra
0ara #riar s"as ta)elas' disp6e-se de d"as aneirasG o odo de#lara*6es e SA0 o" pela
1anela de estr"t"ra' ini#ialente' "tilizareos a 1anela de estr"t"ra' pois alE de ais siples E
ais pr+ti#o' a enos ,"e vo#C tra)alhe #o )ases de a#esso reoto' evite o odo de#lara*6es
e SA0 para an"sear a estr"t"ra de ta)elas' prin#ipalente ta)elas siples #oo E o #aso do
Parado@ o" o dBase' apesar ,"e e.iste "itos -an+ti#os por C.&4. 4&B0.' &04. 4&B0. e
D'P+s. 2 seg"ida ostrarei #oo #riar as esas ta)elas "tilizando o Etodo SA0.
;e)re-se de apagar as ta)elas antes de #ri+-las novaente. Sen$o n$o ser+ poss/vel
e.e#"tar "a 5ni#a de#lara*$o SA0.
3etorne ao Delphi' no en" prin#ipal es#olha a op*$o TOO+0eDataBase DesTTop'
a.iize a tela para peritir "a elhor vis"aliza*$o.
Co o nosso singnio MA+1A0N #riado ireos agora de-inir as nossas ta)elas.
&ni#ialente vaos de-inir #oo nossa +rea de tra)alhoG 4o en" prin#ipal' op*$o FileeJorTing
DirectorL===' na op*$o AliasesA sele#ione AliasDisco' note ,"e a op*$o JorTing DirectorL ser+
a"toati#aente odi-i#ada para AAliasDiscoA' -inalente #on-ire #li#ando no )ot$o (m. (
diret8rio apontado pelo Alias' agora ser+ o de*alt' o" se1a' t"do o ,"e -izeros ser+ apontado
para o diret8rio.
2'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
4o en" prin#ipal' op*$o File' op*$o %eK' e op*$o Table===' ser+ ostrada "a 1anela
#o os tipos de poss/veis reposit8rios de ta)elas no Table TLpe es#olha a op*$o ParadoQ X e
#li,"e no )ot$o OU. &nsira os seg"intes #aposG
Field 4ae !ype Size mey
C(DnD&SC( 4 o
4(MnD&SC( A \O
!&0nD&SC( A Z
F(!nCA0A % Z
S&AnCA!2A A U
Dos #apos' o 5ni#o ,"e ere#e "a e.pli#a*$o e F(!nCA0A ele -oi es#olhido
neste -orato M%inaryN pois g"ardar+ "a iage %itMap Me.tens$o =BMPN da Capa do CD'
todos os o"tros #apos s$o #ara#teres al-an"Eri#os' #o a e.#e*$o do C(DnD&SC( ,"e E "
#apo 4"Eri#o e #have.
0ara esta ta)ela pre#isaos ainda #riar " /ndi#e se#"nd+rio' para tanto na op*$o Table
propertiesA #hae a op*$o 0econdarL 1ndeQes e #li,"e no )ot$o De*ine===' ar,"e no #apo
%omIDisco Mna lista 5ieldsN e #li,"e no )ot$o o #apo passo" para a lista Inde@ed 5ields'
#li,"e no )ot$o OU e digite S&n4oDis#o para o noe do indi#e e #li,"e no )ot$o OU.
0ara salvar s"a ta)ela #li,"e no )ot$o 0ave as=== na op*$o %ome do ArMivoA insira o
noe da ta)ela - %asi#o.
Crie agora as seg"intes ta)elasG
,. Categor
Field 4ae !ype Size mey
S&AnCA!2A A U o
D2SnCA!2A A [O
3. M"si#a
Field 4ae !ype Size mey
C(DnD&SC( 4 o
4DMnFA&LA 4 o
4(MnMDS&CA A \O
R-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
4(MnAD!(3 A [O
!M0nMDS&CA A [
Criando os Relacionamentos via Estr$t$ra
(s rela#ionaentos entre as ta)elas poderia ter sido #riado no oento da #onstr"*$o
das esas' as a#redito ,"e deste odo se1a ais siples' a partir do en" prin#ipal' op*$o
File' op*$o Open' e op*$o Table===' ser+ a)erto "a 1anela #o todas as ta)elas' #li,"e na ta)ela
%AS&C( e s"a estr"t"ra ser+ ostrada' #li,"e no )ot$o Restrctre' o" a partir do en"
prin#ipal' op*$o Table' op*$o Restrctre===' na op*$o Table propertiesA alterne para a op*$o
Re*erential 1ntegritL e #li,"e no )ot$o De*ine...' no lado es,"erdo M;ista Fields@ dC " d"plo
#li,"e no #apo 01PICAT(P e no lado direito M;ista !a)lesN dC " d"plo #li,"e na ta)ela
CAT(POR=DB' #li,"e no )ot$o de (m para #on-irar e ser+ soli#itado o noe para o /ndi#e.
0ara o noe do /ndi#e #rie " padr$o de Fmn X bnoe do #apoc X bnoe ta)ela paic'
"a padroniza*$o dos noes dos /ndi#es -a#ilita a pro#"ra -"t"raente' ent$o para o nosso /ndi#e
#rie FmnSigCategn%asi#o.
Crie agora o o"tro rela#ionaento entre a ta)ela MDS&CA e %AS&C( #on-ore a -ig"ra
a)ai.oG
!a)E E poss/vel a#essar o Data(ase Desktop atravEs do /#one lo#alizado
no gr"po de tra)alho DELPHI.
2n#erre o Data(ase Desktop e retorne ao Delphi' o" apag"e as ta)elas e...
Criando o #anco de "ados via S+,
0ara os -an+ti#os por de#lara*6es SA0' vaos #riar a esa )ase de dados via SA0' se
vo#C ainda n$o o -ez' o)serve no t8pi#o anterior #oo #olo#ar o A+1A0 na +rea de tra)alho. &sto
ser+ de "ita "tilidade ,"ando -oros salvar o nosso tra)alho.
4o en" prin#ipal' op*$o File' op*$o %eK' e op*$o 0]+ File' ser+ ostrada "a 1anela
para ser digitada a de#lara*$o SA0' o)serve na )arra de #oandos o )ot$o 0elect Alias' o" a
partir do en" prin#ipal op*$o 0]+70elect Alias===' apenas o)serve ,"e a +rea de tra)alho JorT
1+ est+ sele#ionada' #li,"e e (m o" Can#el se -azer nenh"a odi-i#a*$o' o)serve ,"e o
t/t"lo da 1anela E 0]+ (ditor AJORUA9Vntitled:.
Digite o seg"inte na 1anelaG
R,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Create !a)le %asi#o
M
C(DnD&SC( 4"eri#M['ON'
4(MnD&SC( 7arCharM\ON'
!&0nD&SC( CharMZN'
F(!nCA0A %lo)MZ'UN'
S&AnCA!2A CharMUN'
0riary meyMC(DnD&SC(N
NJ
Cli,"e no )ot$o Rn 0]+' o" no en" 0]+7Rn 0]+' o" ainda pressione F&'
ap8s e.e#"tado o #oando a ta)ela ser+ #riada. Salve o S:; #o a op*$o File70ave Mdigite
%AS&C( .S:;N
A)ra novas 1anelas e #rie o resto das ta)elasG
Create &nde. S&n4oDis#o on %asi#o M4(MnD&SC(NJ Criando o indi#e se#"nd+rio da %AS&C(
Create !a)le CA!2A(3 Criando a !a)ela CA!2A(3
M
S&AnCA!2A CharMUN'
D2SnCA!2A 7arCharM[ON'
0riary meyMS&AnCA!2AN
NJ
Create !a)le MDS&CA Criando a ta)ela MDS&CA
M
C(DnD&SC( 4"eri#M['ON'
4DMnFA&LA 4"eri#MU'ON'
4(MnMDS&CA 7arCharM\ON'
4(MnAD!(3 7arCharM[ON'
!M0nMDS&CA CharM[N'
0riary meyMC(DnD&SC(' 4DMnFA&LAN
NJ
( S:; para o 0arado. n$o #onseg"e e.e#"tar a #ria*$o de indi#es re-eren#iais Mo"
=Constraints>N ent$o para #riar este tipo de /ndi#e #rie-o atravEs da 1anela de estr"t"ra #on-ore
ostrado anteriorente.
Observaes da $tili0ao do S+, com o d#ase
&n-elizente o dBase n$o s"porta a #l+"s"la Primar/ De/ ,"e perite a #ria*$o dos
/ndi#es "ito enos a #ria*$o de #haves estrangeiras. :"anto as #haves estrangeiras n$o se
preo#"pe pois o Delphi #onseg"e anip"lar rela#ionaentos entre as ta)elas eso ,"e elas n$o
este1e vin#"ladas.
Caso vo#C este1a "tilizando este tipo de )ase os passos para as #ria*6es das ta)elas s$o os
esos as #orte as #l+"s"las Primar/ De/ E ne#ess+rio #riar os /ndi#es separadaente. A)ra
"a nova de#lara*$o S:;' idCnti#a a anterior' e digite o seg"inte na 1anelaG
Create &nde. 0mnDni#a on %asi#o MC(DnD&SC(NJ
R3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
( #oando #orreto para este /ndi#e deveria ser =Create VniMe 1ndeQ PUIVnica
on Basico ?CODID10CO@B> as isto provo#a " erro #olo#ando ,"e n$o E poss/vel esta
de#lara*$o' ent$o #olo,"e a #l+"s"la V%1]V( atravEs da 1anela de estr"t"ra.
Se vo#C es,"e#e" de ativar o 0elect Alias #olo,"e =Create 1ndeQ CodIDisco on
aBasico=db*b ?CODID10CO@B>
As o"tras de#lara*6es s$oG
Create &nde. S&n4oDis#o on %asi#o M4(MnD&SC(NJ Criando o indi#e se#"nd+rio
Create &nde. FmnSigCategn%asi#o on %asi#o MS&AnCA!2ANJ Criando a #have estrangeira
Create &nde. 0mnDni#a on Categor MS&AnCA!2ANJ Criando a #have pri+ria
Create &nde. FmnCodDis#onM"si#a on M"si#a MC(DnD&SC(NJ Criando a #have estrangeira
( #oando #orreto para a #ria*$o da #have d"pla da ta)ela MDS&CA seria =Create
1ndeQ ChvIVnica on Msica ?CODID10CO> %VMIFA1"A@B> as novaente E provo#ado
" erro ostrando a ipossi)ilidade de e.e#"*$o do #oando' ent$o #rie este /ndi#e atravEs da
1anela de estr"t"ra.
K -a#ilente per#e)ido ,"e o DataBase Desk'op atE ,"e tenta #olo#ar todas as )ases
de dados #opat/veis #o a ling"age S:;' as in-elizente ainda n$o -oi nesta vers$o.
0ara as ta)elas do tipo (3AC;2' &4!23%AS2' Sl%AS2 e MS S:; Server a
#ria*$o das ta)elas pode ser -eitas tanto pelo odo de estr"t"ra ,"anto pelas de#lara*6es S:;
as le)re-se ,"e a altera*$o das esas s8 poder+ realizar-se atravEs do odo de de#lara*6es
S:;. A,"i v$o alg"ns e.eplos destas de#lara*6esG
Create !a)le MDS&CA Criando a ta)ela MDS&CA
M
C(DnD&SC( 4"eri#M['ON'
4DMnFA&LA 4"eri#MU'ON'
4(MnMDS&CA 7arCharM\ON'
!M0nMDS&CA CharM[N'
Constraint 0mnDni#a 0riary meyMC(DnD&SC(' 4DMnFA&LAN'
Constraint FmnCodDis#onM"si#a Foreign mey MCodnDis#oN
3e-eren#es DSDA3&(nAA24DA MCodn Dis#oN
NJ
A;!23 !A%;2 MDS&CA ADD 4(MnAD!(3 7arCharM[ON Adi#iona o #apo 4onA"tor
D3(0 !A%;2 MDS&CAJ 2liina a ta)ela MDS&CA
2n#erre o Data(ase Desktop e retorne ao Delphi.
R2
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Ca,-%&+o IV
-rabal&ando com o 'en$
:"al,"er pro1eto pre#isa de " en"' -i#a ais pr+ti#o para o nosso "s"+rio navegar
dentro de " pro1eto ,"ando este E liitado por " en" prin#ipal' ini#iareos o nosso pro1eto
no Delphi #o a #ria*$o do Men" 0rin#ipal do Sistea.
Me%endo a M(o na Massa
A partir deste ponto' nossa a"la se trans-ora e re#eita de )olo' a 5ni#a #oisa ,"e vo#C
pre#isa -azer e seg"ir as orienta*6es passo a passo' no prin#/pio pode pare#er eio idiota' as
a-inal o #op"tador E "a +,"ina idiota. %o' vaos ent$o etendo a $o na assa.
Ao ini#iar o Delphi' -oi #riado a"toati#aente " novo pro1eto' vaos des#art+-lo e
ini#iar " novo. 0ara tantoG
1. +embre5seG no #ap/t"lo anterior #riaos o diret8rio ,"e a)rigar+ o sistea a ser
desenvolvido 5 CA[010T(MA[CADD10CO 5 aprendeos o ,"e E o Alias e
estr"t"raos as nossas ta)elas' se alg" destes #on#eitos -i#ara dispersos e" lhe
a#onselho ,"e retorne ao #ap/t"lo anterior
U. Crie " novo pro1eto digitando File e %eK Application. M3esponda negativaente
,"ais,"er ensage para gravar o pro1eto at"alN.
Criando a janela do men$
A 1anela do en" prin#ipal e )e siples' #oo vo#C 1+ deve ter visto e v+rios
apli#ativos o en" E o o)1eto ,"e -i#a servindo de pano de -"ndo para toda a apli#a*$o' todo o
tra)alho e realizado #o o a"./lio de s"as #haadas' e #on1"nto #o o en" tereos trCs
-or"l+rios geren#iadores ,"e dareos o noe deG
FIMen - Men" prin#ipal propriaente ditoJ
FI0obre - A 1anela =So)re o sistea...>J e
FI1nicio - ?anela Splash ,"e ini#iar+ o nosso apli#ativo.
7aos #riar ini#ialente o nosso en" prin#ipalG
1. Cli,"e no )ot$o MMain Men"N' lo#alizado na Component Palette na p+gina
Standard' e #li,"e dentro do o)1eto Form, Mn$o se preo#"pe #o a posi*$o' pois este
o)1eto -i#ar+ invis/vel ,"ando o apli#ativo -or e.e#"tadoN.
RR
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Foi #riado neste oento o o)1eto "ain"enu1 derivado da #lasse de o)1eto 4"ain"enu'
a partir deste o)1eto vaos #riar nosso en"G
U. DC " d"plo #li,"e e #ia do o)1eto' o" #li,"e na propriedade 1tems da '()e%t
Inspe%tor apare#er+ o )ot$o . Cli,"e neste )ot$o.
()serve a tela de propriedades do '()e%t Inspe%tor' neste oento vo" e #onter e
-alar das ais signi-i#ativas' as -"t"raente retoareos o ass"ntoG
Caption - De-ine o noe do ite de en"' ,"ais,"er noes s$o v+lidos' in#l"indo
a#entos' o #ara#tere espe#ial =p> deve ser #olo#ado "a 5ni#a vez' ele #a"sa o
s")linhado da letra' tornando-a "a letra Me #on1"nto #o a te#la AltN de a#esso a
op*$o.
(nabled - De-ine se o ite est+ dispon/vel o" n$o para o "s"+rio.
%ame - 4oe interno do ite M#olo#ado a"toati#aente na es#olha do CaptionN.
0hortCt - Co)ina*$o de te#las' para " r+pido a#esso ao ite MalE da letra
es#olhida #o =p>N.
&nserindo os itens ini#iaisG
1. Digite =pAr,"ivo> na propriedade Caption' e seg"ida pressione a te#la 2nter.
U. Cli,"e no novo espa*o a)erto' #riado lateralente' e digite =pCons"lta> na
propriedade Caption' e seg"ida pressione a te#la 2nter.
Z. 0ro#eda da esa -ora #riando as op*6esG =p3elat8rio> e =A"p./lio>.
[. Cli,"e na op*$o ArMivo' apare#er+ " espa*o vazio a)ai.o' #li,"e neste espa*o e
digite =p!a)ela> na propriedade Caption. Ao ser dado (nter o Delphi #riar+ ais
" espa*o a)ai.o' digite =pCadastro> na propriedade Caption.
5. A)ai.o do Cadastro' digite =-> Msinal de enosN na propriedade Caption Mo Delphi
#riar+ "a )arra de separa*$oN e altere a propriedade (nabled para 5alse.
\. 4o novo espa*o #riado' ap8s a )arra' digite =pSair> na propriedade Caption e altere
a propriedade 0hortCt para Ctrl*E.
7. Cli,"e na op*$o Tabela' #li,"e #o o )ot$o direito do o"se' apare#er+ " menu
pulldown' #li,"e na op*$o Create 0bmen.
Y. Digite =pCategoria> na propriedade Caption.
Coplete os pr8.ios itens de odo ,"e o en" -i,"eG
Ar,"ivo Cons"lta 3elat8rio A"./lio
!a)ela Categoria CDBs Aeral So)re o sistea
Cadastro M5si#a por CDBs Capa do CD Conte5do
Sair CtrlXL Con-ig"ra &pressora !8pi#os de A1"da
Coo "sar a A1"da
Saia da 1anela "enu Desi#ner digitando AltXF[' o en" 1+ e.iste no o)1eto form1.
Altere as seg"inte propriedades para o o)1eto form1G
Propriedade Nalor Descrio
RO
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
%orderStyle Single 2stilo da )orda da 1anelaJ odo siples.
Caption Copa#t Dis# Digital A"dio ;a)el es#rito na tar1a s"perior da 1anela.
Color #lMen" Cor da 1anela' #lMen" E "a #onstante ,"e g"arda a #or
padr$o da 1anela de-inido pelo "s"+rio no IindoFs.
4ae FnMen" 4oe do o)1eto interno.
IindoFsState FsMa.iized Modo de a)ert"ra da 1anela' odo Ma.iizado.
Salvando o -or"l+rio e o pro1etoG
1. Salve o For"l+rio nas op*6es de en" File e 0ave Mo" pressione CtrlXSN' o Delphi
,"estionar+ o noe e o diret8rio' o diret8rio M#on-ore #riado no #ap/t"lo anteriorN E
o CA[010T(MA[CADD10CO e para o noe digite *Men Mnote ,"e o noe e.terno
e o eso do noe interno di-eren#iado por =n>' isto -a#ilitar+ a identi-i#a*$o do
-or"l+rio e da s"a "nidadeN.
U. Salve o 0ro1eto digitando File e 0ave Project' salve o pro1eto no diret8rio
CA[010T(MA[CADD10CO #o o noe CDDA.
Criando no en" "a linha de stat"sG
Z. Cli,"e no )ot$o MStatusBarN na p+gina WinBF da Component Pallete e #li,"e e
,"al,"er posi*$o do o)1eto 5G"enu.
[. Cli,"e no o)1eto #riado StatusBar1 e seg"ida #li,"e na propriedade Panels' para
alterar esta propriedade #li,"e no )ot$o ' apare#er+ a 1anela da 0tats Bar Panels
(ditor' #li,"e so)re o )ot$o %eK e para a propriedade TeQt #olo,"e =%e vindo ao
sistea...> e #li,"e no )ot$o (m.
5. Altere ta)E a propriedade !ame do o)1eto para ;inhaStat"s
Caso vo#C este1e "sando o Delphi 1.0 #rie a )arra de stat"s do seg"inte odoG
1. Cli,"e no )ot$o MPanelN na Component Pallete na p+gina Standard e #li,"e e
,"al,"er posi*$o do o)1eto 5G"enu.
U. Cli,"e no o)1eto #riado StatusBar1 e altere as seg"intes propriedadesG
Propriedade Nalor Descrio
RS
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Align al%otto Alinhaento dentro do form' todo no rodapE
Alignent ta;e-t?"sti-y Alinhaento da Caption' 1"sti-i#ado H es,"erda
%evel&nner )v;oFered %orda ZD interna' tipo pressionado
%evel("ter )v;oFered %orda ZD e.terna' tipo pressionado
%orderIidth 1 !aanho da )orda
Caption %e vindo ao sistea... ;a)el do o)1eto
4ae ;inhaStat"s 4oe do o)1eto
Font MS Sans Seri-' 2stilo da
-onteG 4oral' !aanhoG Y'
CorG Az"l Marinho
!ipo de letra a ser ostrada no o)1eto' para alterar esta
propriedade #li,"e no )ot$o
9eight UU Alt"ra do o)1eto
nserindo os C(digos niciais
7aos inserir o #8digo para o o)1eto 0inhaStatus' este o)1eto re#e)er+ os #onte5dos da
propriedade hint dos diversos o)1etos' -orando assi "a linha de a1"da on-line na parte
in-erior do en".
Cli,"e no )ot$o M4o##le 5orm/:nitN da SpeedBar' atE vo#C alternar para o Code
.ditor.
A)ai.o da de#lara*$oG Private insira os #8digosG
private 0ro#ed"res o" F"n*6es ;o#ais.
6 Private de%larations 7
procedre ShoF9int MSenderG !()1e#tNJ Ca)e*alho de "a pro#ed"re ;o#al.
pblic 0ro#ed"res o" F"n*6es 05)li#as.
6 Pu(li% de%larations 7
endB Final da se*$o de de#lara*$o.
A)ai.o da diretiva de #opila*$oG EGR 6=DFMF
EGR 6=DFMF Diretiva de #opila*$o asso#iando o noe do
re#"rso e.terno ao eso noe do o)1eto 5orm.
procedre !FnMen".ShoF9int MSenderG !()1e#tNJ Ca)e*alho da 0ro#ed"re asso#iado ao noe do
begin o)1eto prin#ipal M!FnMen"N.
;inhaStat"s.0anels.&tesROS.!e.t GT Appli#ation.hintJ Atri)"i o valor do hint da apli#a#$o ao
endB 1tem criado do o)1eto ;inhaStat"s.
Cli,"e no )ot$o M4o##le 5orm/:nitN da SpeedBar' atE vo#C alternar para o 5orm
#li,"e no o)1eto 5G"enu e na p+gina .vents da '()e%t Inspe%tor' dC " d"plo #li,"e no
evento 'nCreate.
1. ( Delphi #rio" a pro#ed"re 5ormCreate a ser ini#iada ,"ando o o)1eto 5G"enu -or
#riado.
U. Digite o seg"inte #oando a)ai.o do #oando beginG
procedre !FnMen".ForCreate MSenderG !()1e#tNJ
begin
Appli#ation.(n9int GT ShoF9intJ Atri)"i o valor da pro#ed"re ShoF9int ao On)int da
endB apli#a*$o.
RX
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Cli,"e no )ot$o M4o##le 5orm/:nitN da SpeedBar' atE vo#C alternar para o 5orm
#li,"e no o)1eto "ain"enu1 e entre no "enu Desi#ner' e para #ada op*$o de Men"
altere as propriedades hint e name do seg"inte odoG
Opo do Men )int %ame
Ar,"ivo Cadastro e sa/da do sistea. Ar,"ivo1
!a)ela &n-ora*6es )+si#as do sistea. !a)ela1
Categoria !ipos de #ategoria para os CDBs. &te!a)ela1
Cadastro &n#l"s$o e an"ten*$o dos CDBs. Cadastro1
Sair Sa/da do sistea e retorno ao IindoFs. Sair1
Cons"lta 7eri-i#a*$o e pes,"isa dos CDBs #adastrados. Cons"lta1
CDBs ;o#aliza*$o dos CDBs atravEs de " -iltro esta)ele#ido. &teCons"lta1
CDBs por 5si#a ;o#aliza o CD atravEs de " t/t"lo de "a 5si#a. &teCons"ltaU
3elat8rio 2iss6es e papel dos CDBs #adastrados. 3elatorio1
Aeral &press$o dos CDBs por " intervalo de #8digo. &te3elatorio1
Capa do CD &press$o de #apas para os CDBs. &te3elatorioU
Con-ig"ra &pressora 7eri-i#a a ipressora a ,"al ser+ destinado os relat8rios. Con-&pressora1
A"./lio Foras de a1"da direta ao sistea. A".ilio1
So)re o sistea A1"da direta #o o respons+vel pelo desenvolviento. &teA".ilio1
Conte5do Man"al (n-;ine direto. &teA".ilioU
!8pi#os de A1"da 2.i)e os t8pi#os de a1"da do Man"al (n-;ine. &teA".ilioZ
Coo "sar a A1"da Mostra #oo "tilizar o A"./lio (n-;ine. &teA".ilio[
Saia do "enu Desi#ner' salve o -or"l+rio e o pro1eto.
3ode o pro1eto' #li#ando no )ot$o da SpeedBar' o" no en" prin#ipal a op*$o Rn e
Rn' o" ainda' digite F'.
!este as op*6es do en"' ve1a na linha de Stat"s os hints in-orados' saia #o Alt4FR.
Caso vo#C este1e "sando o Delphi 1.0 tro,"e a pro#ed"re 0hoK)int paraG
procedre !FnMen".ShoF9int MSenderG !()1e#tNJ
begin
;inhaStat"s.Caption GT Appli#ation.hintJ Atri)"i o valor do hint da apli#a#$o a 0ropriedade
endB Caption do o)1eto ;inhaStat"s.
niciando os comandos do 'en$
Co o en" pronto' #oe*areos a #odi-i#ar os #oandos ,"e disponi)ilizaos ao
nosso "s"+rioG
A"toatizando o Coando 0A1RG 4o o)1eto 5G"enu' #li,"e na op*$o ArMivo e #li,"e
na op*$o 0air. ( Delphi #rio" o evento Cli#< para o o)1eto 0air,.
Digite o seg"inte #oando a)ai.o do beginG
procedre !FnMen".Sair1Cli#< MSenderG !()1e#tNJ
begin
CloseJ propor#iona o -e#haento do -or"l+rio ativo
endB
R&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Colocando os comandos para o /$xlio
( Delphi ipleenta o a"./lio on-line de aneira pr+ti#a e e-i#iente' n$o ensinarei a,"i
#oo #onstr"ir " ar,"ivo .9;0' e.iste diversos apli#ativos ,"e 1+ o -aze a"toati#aente e
-i#a a se" #ritErio o odo de #ri+-lo' apenas ostrarei #oo ipleent+-lo e se" pro1eto.
Cli,"e na op*$o Project e Options=== e na p+gina &ppli%ation lo#alize o se" ar,"ivo #o
a op*$o )elp *ile' aproveite ta)E para noear o pro1eto' #o a op*$o Title e #olo#ar
" /#one para o pro1eto' op*$o 1con M#li,"e no )ot$o +oad 1con===N e ao tErino #li,"e
no )ot$o OU.
A"toatizando o Coando CO%T(_DOG 4o o)1eto 5G"enu' #li,"e na op*$o AQ$lio e
#li,"e na op*$o Conte`do. DigiteG
procedre !FnMen". &teA".ilioUCli#<MSenderG !()1e#tNJ
begin
Appli#ation.9elpCoandM92;0nC(4!24!S' ONJ Chaa o ar,"ivo de A1"da
endB
A"toatizando o Coando TcP1CO0 D( A!VDAG 4o o)1eto 5G"enu' #li,"e na op*$o
AQ$lio e #li,"e na op*$o T#picos de Ajda. DigiteG
procedre !FnMen". &teA".ilioZCli#<MSenderG !()1e#tNJ
const
2ptyStringG pChar T VVJ Cria "a #onstante
begin
Appli#ation.9elpCoandM92;0n0A3!&A;m2l' ;ong&ntM2ptyStringNNJ !8pi#os do A1"da
endB
A"toatizando o Coando COMO V0AR A A!VDAG 4o o)1eto 5G"enu' #li,"e na
op*$o AQ$lio e #li,"e na op*$o Como sar a Ajda. DigiteG
procedre !FnMen". &teA".ilio[Cli#<MSenderG !()1e#tNJ
begin
Appli#ation.9elpCoandM92;0n92;0(492;0' ONJ Chaa o a"./lio do IindoFs
endB
:"ando -e#haros a nossa apli#a*$o e ne#ess+rio ,"e ta)E desativeos o a"./lio' no
o)1eto 5G"enu' #li,"e na p+gina de (vents e #li,"e no evento DestroL. DigiteG
procedre !FnMen".ForDestroyMSenderG !()1e#tNJ
begin
R'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Appli#ation.9elpCoandM92;0n:D&!' ONJ Desa)ilita o a"./lio
endB
Saia do "enu Desi#ner' salve o -or"l+rio e o pro1eto.
3ode o pro1eto e teste as op*6es do en"' saia #o Ctrl4" o" "tilize o #oando Sair.
Caso o F, n$o ative o a"./lio (n-;ine' provavelente o se" en" est+ #o a
propriedade 5ormSt/le e odo *sMD1Form' #olo,"e-a no odo *s%ormal. Se eso assi
ainda n$o -"n#iono"' "de a propriedade 2elpConte@t do -or"l+rio para ,.
As palavras-#haves para o #oando 9elpCoand s$oG
Coando Dados A*$o
92;0nC(4!2L! &nteiro longo' #ontendo o n5ero
do #onte.to.
Mostra o a"./lio a partir de t8pi#o sele#ionado
identi-i#ado a partir do n5ero do #onte.to
de-inido pela se*$o RMA0S do ar,"ivo .90?
92;0nC(4!24!S &gnorado. 4oralente passado O. Mostra o #onte5do do prieiro t8pi#o de-inido
pela se*$o RMA0S do ar,"ivo .90?
92;0nS2!C(4!24!S &nteiro longo' #ontendo o n5ero
do #onte.to ,"e -oi designado #oo
t8pi#o de #onte5do.
Deterina a #haada do t8pi#o deterinado
atravEs do "so da te#la F1
92;0nC(4!2L!0(0D0 &nteiro longo' #ontendo o n5ero
do #onte.to.
Mostra "a 1anela 0op-Dp #o " t8pi#o
parti#"lar indenti-i#ado pelo n5ero do #onte.to
de-inido pela se*$o RMA0S do ar,"ivo .90?
92;0nm2l 0onteiro longo #oo "a string
#ontendo o t8pi#o designado.
Mostra " t8pi#o pes,"isado e "a lista de
palavras #haves. 2sta palavra #have deve ser
e.ataente o te.to pro#"rado.
92;0n0A3!&A;m2l 0onteiro longo #oo "a string
#ontendo o t8pi#o designado.
Mostra " deterinado t8pi#o atravEs de "a
lista de palavras #haves. Se a palavra #have n$o
-or en#ontrada posi#iona na palavra -onCti#a
ais perto.
92;0nMD;!&m2l 0onteiro longo para "a estr"t"ra
de !MD;!&m2l92;0. 2sta
estr"t"ra espe#/-i#a de #ara#teres e
palavras #haves.
Mostra o t8pi#o indenti-i#ado pela palavra #have
o" "a #have da ta)ela alternada.
92;0nC(MMA4D 0onteiro longo' #ontendo a a#ro
para a e.e#"*$o
2.e#"ta " a#ro help.
92;0nS2!I&40(S 0onteiro longo para "a estr"t"ra
de !MD;!&m2l92;0. 2sta
estr"t"ra espe#/-i#a #ontE o
taanho e a posi*$o da 1anela do
help pri+rio o" a 1anela se#"nd+ria
para ser ostrado.
Mostra " help do FindoFs #o " /nio de
e8ria' variando o taanho e a posi*$o de
a#ordo #o o dado passado.
92;0nF(3C2F&;2 &gnorado. 4oralente passado O. 2.e#"ta o Iin9elp ostrando o ar,"ivo de
a"./lio #orri1ido.
92;0n92;0(492;0 &gnorado. 4oralente passado O. Mostra o a"./lio de #oo "sar o a"./lio.
92;0n:D&! &gnorado. 4oralente passado O. Soli#ita o -e#haento do a"./lio ativo.
O-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Criando a /ane+a >So.re o Sis%ema?
2 todo o sistea #riado para o Windows

E in#l"/do "a 1anela =So)re o Sistea>' por


"a )oa raz$of todos os o"tros sisteas para o Windows

poss"e "a' e ,"e vai ,"erer


,"e)rar esta aravilhosa tradi*$o e #riar " sistea se "a 1anela destas @
Criar o prieiro -or"l+rio #o o Delphi n$o E "a tare-a assi t$o di-/#il' as para
perdeos o edo ini#ial vaos #riar a &(outBo@ Mo" Cai.aSo)reN' o)serveG
Criando e alterando os objetos
0ara #riar o -or"l+rio a partir do en" prin#ipal a op*$o File e %eK===' apare#er+ a
1anela da !ew Items Mais in-ora*6es retorne ao Cap$tlo 11N e #li,"e na p+gina 5orms
e no o)1eto entit"lado &(out (o@.
Altere os seg"intes o)1etos Mlo#alize-os atravEs da '()e%t Inspe%torNG
AbotBoQ ?classe TAbotBoQ@G
0ropriedade 7alor Des#ri*$o
Caption So)re o sistea ;a)el es#rito na tar1a s"perior da 1anela
4ae FnSo)re 4oe interno do o)1eto
Program1con ?classe T1mage@G
0ropriedade 7alor Des#ri*$o
0i#t"re 2s#olha o %itMap de s"a pre-erCn#ia ()1eto iage
Prodct%ame ?classe T+abel@G
0ropriedade 7alor Des#ri*$o
Caption CDDA ;a)el do o)1eto
Font Ms Sans Seri-' 4egrito &t+li#o' 1Y'
Castanho
!ipo de letra a ser ostrada no o)1eto
Nersion ?classe T+abel@G
0ropriedade 7alor Des#ri*$o
Caption 7ers$o %eta !este ;a)el do o)1eto
Font Ms Sans Seri-' &t+li#o' Y' Az"l Marinho !ipo de letra a ser ostrada no o)1eto
CopLright ?classe T+abel@G
0ropriedade 7alor Des#ri*$o
Caption
Copyright

1995 - 4oe da 2presa


;a)el do o)1eto
Font Ms Sans Seri-' 4oral' Y' Az"l arinho !ipo de letra a ser ostrada no o)1eto
0ara #onseg"ir " pressione A;!X1Y[ e " q pressione A;!X1\9.
Comments ?classe T+abel@G
0ropriedade 7alor Des#ri*$o
Caption Copa#t Dis# Digital A"dio - Cadastro de CDBs ;a)el do o)1eto
O,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Font Ms Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto
2liine o o)1eto OUBtton M)ot$o de (mN' #li,"e so)re ele e pressione Delete' #li,"e no
o)1eto FI0obre e #li#< no o)1eto BitBtn ' en#ontrado na Component Palette na
p+gina &dditional' e #li#< novaente no FI0obre
Altere as segintes propriedadesG
0ropriedade 7alor Des#ri*$o
mind )<(m Deterina a #lasse a ser "tilizada pelo )ot$o' a"toati#aente
ser+ alterado as propriedadesG Caption' PlLph e ModalReslt
9int 3etorna ao en" prin#ipal A1"da on-line para o o)1eto espe#/-i#o
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de "a #ai.a
de a1"da on-line
4ae %"t(m 4oe do ()1eto
Iidth 9U ;arg"ra do o)1eto
DC "a organizada geral ,"anto a posi*$o dos o)1etos para vo#C poder ter "a idEia
#opare o desenho do se" -or"l+rio para ver se n$o -i#o" -altando nadaG
Salve o -or"l+rio nas op*6es de en" File e 0ave Mo" pressione CtrlXSN' o Delphi
,"estionar+ o noe e o diret8rio' o diret8rio E o CA[010T(MA[CADD10CO e para o
noe digite *0obre Mnote ,"e novaente o noe e.terno e o eso do noe interno
di-eren#iado por =n>N.
/ssociando o !orm 1Sobre o Sistema2 ao men$
7aos asso#iar o -or *0obre #o o *MenG
A"toatizando o #oando 0OBR( O 010T(MAG 4o o)1eto 5G"enu' #li,"e na op*$o
AQ$lio e na op*$o 0obre o 0istema. ( Delphi #rio" o evento ClicT para o o)1eto ite
do en" 1temAQilio,.
Digite o seg"inte #oando a)ai.o do beginG
O3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
procedre !FnMen".&teA".ilio1Cli#<MSenderG !()1e#tNJ
begin
FnSo)re.ShoFModalJ A)re o ()1eto FnSo)re e odo Modal.
endJ
A)ai.o da diretiva de #opila*$oG EGR 6=DFMF
68 9.D5"7
ses
-So)reJ Dtiliza a Dnidade -So)re e todos os o)1etos dependentes dela.
procedre !FnMen".ShoF9int MSenderG !()1e#tNJ
Saia do Code .ditor e salve o -or"l+rio e o pro1eto.
3ode o pro1eto e teste o -or"l+rio So)re o Sistea' o odo "odal n$o peritir+ ,"e
vo#C #li,"e e nenh" o"tro l"gar atE a -inaliza*$o desta 1anela' volte para o en" #o
o )ot$o (m.
4ote ,"e n$o -oi pre#iso #olo#ar nenh" #8digo para ,"e ao pressionar o )ot$o (m
o -or"l+rio -osse -e#hado' isto -oi realizado gra*as a op*$o Uind' no Delphi vo#C en#ontrar+
o"tros odelos de )ot$o padr$o do tipoG Can#ela' Si' 4$o entre o"tros.
Criando a /ane+a Splash
A 1anela Splash E tida #oo a ais iportante da apli#a*$o. 2sta 1anela apare#e "a
5ni#a vez Mno in/#ioN d"rante a e.e#"*$o do se" sistea in-orando ao "s"+rio para ter pa#iCn#ia
e ag"ardar tran,Pilaente en,"anto o sistea E #arregado' os -or"l+rios s$o #riados' et#.
2.iste v+rios tipos de 1anela Splash. ( tipo ais #o" E a,"ela ,"e ostra o noe da
apli#a*$o' o a"tor' a vers$o' direitos a"torais MCopyrightN e "a iage o" /#one ,"e identi-i#a a
apli#a*$o. AtravEs da #ara#ter/sti#a de heran*a dos o)1etos vaos o)ter -a#ilente esta 1anelaG
1. 4o en" prin#ipal sele#ione a op*$o File e %eK===' #li,"e na p+gina CDD& e na
-ig"ra entit"lada 5GSo(re.
4este oento vo#C o)teve "a #8pia da 1anela fSo(re o pro)lea E ,"e a 1anela
fSplash ter+ enos o)1etos ,"e a 1anela fSo(re' e por #ara#ter/sti#a de heran*a o -ilho sepre
deve s"perar os pais n"n#a ao #ontr+rio' ent$o E ne#ess+rio ,"e invertaos as d"as 1anelas.
Modi*icando o objeto FI0obre
1. Modi-i,"e a propriedade %ame do 5GSo(re para FI0plash e a propriedade
Border0tLle para bs%one.
U. Cli,"e so)re o)1eto (ut'D e digite CtrlXL' a#erte o taanho da 1anela.
O2
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Z. Salve o -or"l+rio nas op*6es de en" File e 0ave As===' o Delphi ,"estionar+ o
noe e o diret8rio' o diret8rio E o CA[010T(MA[CADD10CO e para o noe digite
fSplash.
Recriando o objeto FI0obre
1. Cli,"e no o)1eto 5GSo(re1 e note ,"e a"toati#aente ele ad,"iri" as odi-i#a*6es
do o)1eto *0plash.
U. A"ente o taanho da 1anela de odo a ,"e #ai)a novaente o )ot$o de (m e digite
C!3;X7' tro,"e a propriedade Caption do But'D para dOU.
Z. Modi-i,"e a propriedade Border0tLle do form para bsDialog e a propriedade
Caption para 0obre o 0istema.
[. Salve o -or"l+rio nas op*6es de en" File e 0ave Mo" pressione C!3;XSN' o
Delphi ,"estionar+ o noe e o diret8rio' o diret8rio E o CA[010T(MA[CADD10CO
e para o noe digite *0obre M#on-ire a opera*$o de so)es#ritaN.
Organi/ando o objeto *0plash
1. A partir do en" prin#ipal #li,"e e Project Z Options===' #li,"e na p+gina 5orms e
envie o o)1eto 5GSplash M#li#ando so)re ele e #li,"e no )ot$o #o o sinal de :N ,"e
est+ na lista &uto;%reate forms para a lista &vaila(le forms Mpara n$o o#"par espa*o
e e8ria "a 1anela ,"e s8 ser+ "tilizada "a 5ni#a vez' #riareos esta 1anela
via #oandosN' #li,"e so)re o )ot$o OU.
U. 4o en" prin#ipal sele#ione a op*$o NieK e Project 0orce Mestaos agora
a#essando o prograa prin#ipal ,"e #ontrola todas os o"tros -or"l+rios o" unitsN.
Z. Ap8s o #oando begin adi#ione as seg"intes linhasG
FnSplash GT !FnSplash.CreateMAppli#ationNJ Cria o -or #oo parte da apli#a*$o.
FnSplash.ShoFJ Chaa o -or de odo n$o odal.
FnSplash.3e-reshJ Mostra o -or e devolve o #ontrole para a
apli#a*$o.
[. Antes do #oando Application=RnB adi#ione a linhaG
FnSplash.FreeJ ;i)era o -or da apli#a*$o.
Saia do Code .ditor e salve o -or"l+rio e o pro1eto.
3ode o pro1eto' ,"al,"er pro)lea #opare #o o #8digo a)ai.oG
program CDDAJ
ses
Fen" in VFM24D.0ASV 65G"enu7'
FSo)re in VFS(%32.0ASV 65GSo(re7J
68 9..S7
begin
FnSplash GT !FnSplash.CreateMAppli#ationNJ
FnSplash.ShoFJ
FnSplash.3e-reshJ
OR
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Appli#ation.&nitializeJ
Appli#ation.9elpFile GT VCGkSisteakCadDis#okA"ia.hlpVJ
Appli#ation.CreateForM!FnMen"' FnMen"NJ
Appli#ation.CreateForM!FnSo)re' FnSo)reNJ
FnSplash.FreeJ
Appli#ation.3"nJ
end.
7o#C pode over o #oando 0plash0creen=FreeB para o evento On0hoK do -or
5G"enu. &sto -ar+ #o ,"e a 1anela 0plash s8 desapare*a ,"ando o en" -or ativado.
&n-elizente para os "s"+rios do Delphi 1.0 esta #ara#ter/sti#a de heran*a n$o havia
sido ipleentada ent$o' -az-se ne#ess+rio a #onstr"*$o da tela fSplash atravEs de "a #8pia da
tela fSo(re #o a "tiliza*$o do #oando 0ave As===.
Criando o a*esso a "ase de Dados
K )e verdade ,"e o nosso sistea se en#ontra na )ase Parado@' as #oo es#revi no
#oe*o do tra)alho #o o Delphi E poss/vel odi-i#ar o reposit8rio de dados se pre#isar alterar
"a s8 linha do sistea prod"zido.
4o #ap/t"lo a respeito das ta)elas ta)E vios a ipossi)ilidade de alg"as a*6es
prod"zidas por #l+"s"las 0]+ n$o sere )e vindas e )ase de dados n$o totalente
#opat/veis #o a estr"t"ra do 0]+' ent$o se -az ne#ess+rio identi-i#ar "a (ase padr=o de "a
base 0]+.
4o en" prin#ipal insira o o)1eto DataBase ' en#ontrado na Component Palette na
p+gina Data &%%ess' e altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Alias4ae AliasDis#o 4oe do Singnio
Data%ase4ae %aseDis#o 4oe do )an#o de dados
4ae D%Dis#o 4oe do o)1eto
&nsira agora os #8digos ,"e peritir+ a a)ert"ra e o -e#haento da )ase de dadosG
Cli,"e no )ot$o M4o##le 5orm/:nitN da SpeedBar' atE vo#C alternar para a Code
.ditor e lo#alize o pro#ediento 5ormCreate asso#iado ao evento 'nCreateG
procedre !FnMen".ForCreateMSenderG !()1e#tNJ
begin
Appli#ation.(n9int GT ShoF9intJ
D%Dis#o.Conne#ted GT !r"eJ &ni#ia o %an#o de Dados
endB
A partir do pr8.io #ap/t"lo entrareos realente no ,"e o Delphi E #apaz #o ta)elas'
as antes' E ne#ess+rio ,"e os #on#eitos ensinados anteriorente este1a )e -i.ados' se alg"a
#oisa de" errada' releia o #ap/t"lo' o" ent$o #on-ira o #8digo do FnMen"G
OO
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
nit -Men"J
inter*ace
ses
IindoFs' Messages' SysDtils' Classes' Araphi#s' Controls' Fors' Dialogs'
Men"s' CoCtrls' D%!a)les' D%J
tLpe
!FnMen" T classM!ForN
MainMen"1G !MainMen"J
Ar,"ivo1G !Men"&teJ
Cons"lta1G !Men"&teJ
3elatorio1G !Men"&teJ
A".ilio1G !Men"&teJ
!a)ela1G !Men"&teJ
Cadastro1G !Men"&teJ
4\G !Men"&teJ
Sair1G !Men"&teJ
&te!a)ela1G !Men"&teJ
&teCons"lta1G !Men"&teJ
&teCons"ltaUG !Men"&teJ
&te3elatorio1G !Men"&teJ
&te3elatorioUG !Men"&teJ
41UG !Men"&teJ
Con-&pressora1G !Men"&teJ
&teA".ilioUG !Men"&teJ
&teA".ilioZG !Men"&teJ
&teA".ilio[G !Men"&teJ
41[G !Men"&teJ
&teA".ilio1G !Men"&teJ
;inhaStat"sG !Stat"s%arJ
D%Dis#oG !Data)aseJ
procedre ForCreateMSenderG !()1e#tNJ
procedre Sair1Cli#<MSenderG !()1e#tNJ
procedre &teA".ilioUCli#<MSenderG !()1e#tNJ
procedre &teA".ilioZCli#<MSenderG !()1e#tNJ
procedre &teA".ilio[Cli#<MSenderG !()1e#tNJ
procedre ForDestroyMSenderG !()1e#tNJ
procedre &teA".ilio1Cli#<MSenderG !()1e#tNJ
private
procedre ShoF9int MSenderG !()1e#tNJ
pblic
6 Pu(li% de%larations 7
endJ
var
FnMen"G !FnMen"J
implementation
68 9.D5"7
ses
-So)reJ
procedre !FnMen".ShoF9int MSenderG !()1e#tNJ
OS
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
begin
;inhaStat"s.0anels.&tesROS.!e.t GT Appli#ation.hintJ
endJ
procedre !FnMen".ForCreateMSenderG !()1e#tNJ
begin
Appli#ation.(n9int GT ShoF9intJ
D%Dis#o.Conne#ted GT !r"eJ
endJ
procedre !FnMen".Sair1Cli#<MSenderG !()1e#tNJ
begin
D%Dis#o.Conne#ted GT FalseJ
CloseJ
endJ
procedre !FnMen".&teA".ilioUCli#<MSenderG !()1e#tNJ
begin
Appli#ation.9elpCoandM92;0nC(4!24!S' ONJ
endJ
procedre !FnMen".&teA".ilioZCli#<MSenderG !()1e#tNJ
const
2ptyStringG pChar T VVJ
begin
Appli#ation.9elpCoandM92;0n0A3!&A;m2l' ;ong&ntM2ptyStringNNJ
endJ
procedre !FnMen".&teA".ilio[Cli#<MSenderG !()1e#tNJ
begin
Appli#ation.9elpCoandM92;0n92;0(492;0' ONJ
endJ
procedre !FnMen".ForDestroyMSenderG !()1e#tNJ
begin
Appli#ation.9elpCoandM92;0n:D&!' ONJ
endJ
procedre !FnMen".&teA".ilio1Cli#<MSenderG !()1e#tNJ
begin
FnSo)re.ShoFModalJ
endJ
end.
Caso o se" sistea n$o se1a igrado para nenh" )an#o de dados no padr$o 0]+
Mdo tipo (3AC;2

' Sl%AS2

'...N n$o e.iste nenh"a ne#essidade e se "tilizar o o)1eto


DataBase' as a "tiliza*$o o" n$o do o)1eto n$o a-eta o tepo de a#esso ao sistea' ent$o
por,"e n$o prepar+-lo para "a event"al "dan*a@
OX
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Ca,-%&+o V
3anela para as -abelas
!a)elas pri+rias de in-ora*$o re,"ere entradas de dados siples' no nosso #aso
teos a ta)ela de #ategoria' a #ria*$o de 1anelas para a s"a anip"la*$o de se"s dados n$o E "
)i#ho de sete #a)e*as #oo vo#C ver+ a seg"ir.
Rea.rindo o se& Pro/e%o
Se assi ,"e vo#C -inalizo" o #ap/t"lo anterior vo#C sai" do Delphi' pre#isa agora
reativar o pro1eto. 0ara tantoG
1. 4o en" prin#ipal #li,"e e File e Open===.
U. ( sistea desenvolvido E en#ontrado no diret8rio CA[010T(MA[CADD10CO' #o
a e.tens$o =DPR.
4este oento vo#C est+ pronto para o tra)alho' vaos #riar a nossa 1anelaG
Z. Cli,"e no en" prin#ipal a op*$o File e %eK===' e !ew Items' "de a p+gina para
5orms e #li,"e no o)1eto entit"lado Data(ase 5orm' agora siga as telasG
,.
( tipo a ser #riada.
Form OptionsG Create a siple -or
Da 1anela siples
Data0et OptionsG Create a -or "sing !!a)les o)1e#ts
Dsando o o)1eto ta)ela
%ot$o 4e.t.
3.
A ta)ela a ser "sada para a 1anela.
Drive or Alias nameG AliasDis#o
Table %ameG #ategor.d)
%ot$o 4e.t
2. R.
O&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Capos a sere inseridos
%ot$o =__=
%ot$o 4e.t
Fora*$o dos #apos
7erti#al
%ot$o 4e.t
O.
0osi*$o dos ;a)els
;e-t - A es,"erda
%ot$o 4e.t
S.
Copleto
Aera a tela #oo -or prin#ipal - 4$o
( :"e gerarG For e DataMod"le
%ot$o Finish
A+%erando as @ane+as Criadas
Se vo#C seg"i" direito as orienta*6es anteriores' ent$o vo#C est+ #o " )elo prin#/pio
de 1anela e s"as $os. Digo " )elo prin#/pio por,"e vo#C h+ de #on#ordar #oigo ,"e a
1anela gerada n$o E nenh" po"#o aig+vel para o nosso "s"+rio' prograando h+ " #erto
tepo #o o Delphi des#o)ri " padr$o de 1anela ,"e e"s "s"+rios gostara' as vo#C poder+
-"t"raente ta)E en#ontrar o se" pr8prio padr$o de 1anela' ent$o vaos a alg"as altera*6esG
Se vo#C est+ "tilizando o Delphi 1.0' a 5ni#a di-eren*a ser+ nos Data"odules' n$o se
preo#"pe #olo,"e todas as instr"*6es e " 5ni#o -or"l+rio.
Da%aMod&+es A
Da das prin#ipais novidades ,"e a#opanha o Delphi 2.0 E a possi)ilidade de #ria*$o
de Data"odules' estas 1anelas espe#iais -"n#iona #oo "a espE#ie de reposit8rio de dados'
n$o s$o vis"aliz+veis e tepo de e.e#"*$o. K poss/vel #olo#ar e " 5ni#o Data"odule todo o
odelo rela#ional e todos os o"tros -or"l+rios do sistea a#essando-o.
A#esse ini#ialente o o)1eto Data"odule1 para as altera*6es ,"e se seg"e.
'odi!icando as -abelas e as ,igaes
(s o)1eto ,"e #ontE as tabelas e as ligaees de tabela s$o o)1etos invis/veis ,"ando o
apli#ativo est+ rodando portanto n$o se preo#"pe "ito #o a posi*$o ,"e ele o#"par.
O'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Tabela no Delphi est+ #ontida no o)1eto M4a(leN' en#ontrado na Component Palette
na p+gina Data &%%ess' este o)1eto n$o E a ta)ela e si' as " ponteiro para a ta)ela' portanto
vo#C poder+ "sar d"pli#a*6es da esa ta)ela' se ,"e isso a-ete a integridade de se" )an#o de
dados.
Alterando as propriedades da 4a(leG
1. Altere na propriedade DataBase%ame' noe do )an#o de dados BaseDisco' #aso
vo#C n$o en#ontre na lista o BaseDisco' a)ra o o)1eto 5G"enu e tente novaente.
U. 7eri-i,"e se a propriedade Table%ame est+ apontada para a ta)elaG CAT(POR=DB'
retire o =DB Mvisando a #opati)ilidade #o o"tras )asesN
Z. Colo,"e a propriedade 1ndeQField%ames no noe do /ndi#e pri+rio da ta)ela.
01PICAT(P.
[. Altere a propriedade %ame para !a)Categor' o" se1a' !a) X 4oe da ta)ela e.terno
Mse a s"a e.tens$oN' isto -a#ilitar+ a identi-i#a*$o da 4a(le e a ,"al DataSour%e ,"e
ela perten#e..
5. ("tra propriedade interessante da 4a(le E Active' ela de-ine se a ta)ela est+ o" n$o
ativada para o "so. Alterareos esta propriedade via #8digo' portanto n$o se
preo#"pe "ito #o ela neste instante' o ideal e dei.+-la false' i.E inativa.
As +igaees da Tabela no Delphi E realizada atravEs do o)1eto MDataSour%eN'
en#ontrado na Component Palette na p+gina Data &%%ess' este o)1eto -az a liga*$o de s"a ta)ela
e.terna #o os #apos do -or"l+rio.
Alterando as propriedades do DataSour%eG
1. 4ote ,"e a propriedade Data0et est+ #o o noe alterado M!a)CategorN' est+
propriedade de-ine a ta(le o" Huer/ M-aleos nelas ais tardeN ,"e ser+ ligada.
U. Altere a propriedade %ame para DsCategor' o" se1a' Ds X 4oe da ta)ela e.terno
Mse a s"a e.tens$oN' #oo dito antes' isto -a#ilitar+ a identi-i#a*$o do DataSour%e e
a ,"al 4a(le ele perten#e.
/lterando os campos da tabela
(s #apos da ta)ela dever$o ser alterados para #ontere as #r/ti#as' le)re-se' os
#apos presentes no Data"odule s$o apenas "a =+s#ara> para os #apos da ta)ela.
DC " d"plo #li,"e so)re o 4a(Cate#or' ser+ a)erta a 1anela do 5ields.ditor.
Mar,"e o #apo S&AnCA!2A e altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Display;a)el Sigla 4oe do #apo a ser ostrado na tela
3e,"ired !r"e Se o #apo E o" n$o re,"erido para inser*$o de dados
na ta)ela
2ditMas< _AAJOJn Cria "a +s#ara de edi*$o para o #apo' para alterar
esta propriedade #li,"e no )ot$o
S-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
("tras propriedades iportantes a sere levadas e #onsidera*$o s$oG
AlignmentG Alinhaento dentro do #apoG Centralizado' H es,"erda o" H direitaJ
DisplaLJidthG !aanho do #apo dispon/vel para inser*$o de dadosJ
Field%ameG 4oe do #apo na ta)ela' e.ternoJ
%ameG 4oe do #apo dentro do -or"l+rio' internoJ
ReadOnlLG Se E " #apo s8 de leit"raJ
0i/eG !aanho do #apo na ta)elaJ e
NisibleG Capo E o" n$o vis/vel.
7e1a ais o)serva*6es so)re as +s#aras no apCndi#e 2.
Mar,"e o #apo D2SnCA!2A e altere apenas a propriedade DisplaL+abel para
Descrio.
!ro,"e a propriedade 4ae do o)1eto Data"odule1 para DMnModelo.
7e1a #oo -i#o" a vis$o -inal do o)1eto D"G"odelo' seg"e a)ai.oG
Codi6i*ando o Da%aMod&+e
7o#C 1+ deve ter notado ,"e para o Delphi a es#rita de #8digos E )astante red"zida e )e
dividida entre os eventos e #o a #ria*$o dos Data"odules o #8digo ainda -i#a ais red"zido'
di-erenteente para os "s"+rios de Delphi 1.0. !odas as #r/ti#as e #ontroles para as ta)elas -i#ar$o
no Data"odule en,"anto ,"e o -or"l+rio se preo#"par+ #o o an"seaento dos #apos.
C8digo para e-etivar as odi-i#a*6es na ta)ela para as )ases S:;' #li,"e no )ot$o
M4o##le 5orm/:nitN da SpeedBar' atE ter a vis$o novaente para o D"G"odelo' dC "
#li,"e siples no o)1eto 4a(Cate#or Mar#ando-oN e na '()e%t Inspe%tor' na p+gina
.vents' dC " d"plo #li#< so)re o evento A*terPostG
procedre !DMnModelo.!a)CategorA-ter0ostMDataSetG !DataSetNJ
begin
i* FnMen".D%Dis#o.&sS:;)ased then Se a )ase de dados E padr$o S:;
begin
S,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
FnMen".D%Dis#o.CoitJ Aravando as altera*6es da ta)ela
FnMen".D%Dis#o.Start!ransa#tionJ 3eini#ia o odo de transa*6es
endB
endB
( o)1eto ,"e #ontrola o )an#o de dados -az parte da Dnit *Men ent$o E ne#ess+rio
-azer "so desta Dnit' para tanto insira o seg"inte #8digo Ma)ai.o da diretiva de #opila*$oNG
68 9.D5"7
ses
-Men"J
0ara as )ases de -orato S:; e.iste trCs de#lara*6es )+si#asG
1. Start!ransa#tion - &ni#ia " )lo#o de #ontrole para as de#lara*6esJ
U. Coit - !erina o )lo#o de #ontrole gravando as altera*6es -eitas nas ta)elasJ e
Z. 3oll%a#< - !erina o )lo#o de #ontrole #an#elando ,"ais,"er odi-i#a*6es -eitas nas
ta)elas.
Controlando a d$plicao dos Campos.C&ave
K a#onselh+vel n$o peritir ,"e o "s"+rio d"pli,"e os #8digos de #ategoria' para tantoG
,= Crie " novo o)1eto 4a(le #o as esas propriedades do o)1eto 4a(Cate#or
M#li,"e so)re o o)1eto e digite CtrlXC e CtrlX7' eliine as re-erCn#ias aos eventosN'
alterando a propriedade %ame para TabCategorCon*=
3= 4o o)1eto 4a(Cate#orSI>GC&4.>' lo#alize-o atravEs da '()e%t Inspe%tor' dC "
d"plo #li#< so)re o evento OnNalidate
procedre !DMnModelo.!a)CategorSignCateg7alidateMSenderG !FieldNJ
begin
i* DSCategorState in Rds2dit' ds&nsertS then 7eri-i#a se o odo E de inser*$o o" edi*$o de dados
i* !a)CategorCon-.FindmeyMR!a)CategorS&AnCA!2ASN then 0es,"isa o #apo digit.na ta).#riada
begin
FnCateg.2ditS&AnCA!2A.SetFo#"sJ Altera a posi*$o do #"rsor para o o)1eto (dit01PICAT(P
raise 2.#eption.CreateMVSigla da #ategoria d"pli#adoVr1OX Caso 1+ e.ista ostra
VCli#< no )ot$o s;o#alizas e #aso de d5vidaVNJ ensage de erro
endJ
endJ
4ote ,"e e.iste "a re-erCn#ia para o o)1eto FnCateg MSer+ o -or"l+rio de
CategoriaN pre#isaos ent$o -azer "so de s"a Dnit' para tanto #olo,"e-a a)ai.o da diretiva de
#opila*$oG
68 9.D5"7
ses
-Men"' b Men" 0rin#ipal do Sistea c
-CategJ b Cadastro de Categorias c
A de#lara*$o r1O' -"n#iona #oo " .nter dentro da ensage' isto -ar+ #o ,"e
esta ensage tenha d"as linhas.
S3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
( seg"ndo o)1eto Table -oi #riado pois a prieira ta)ela estar+ e odo de edi*$o
o" inser*$o de registros e n$o poder+ ser desposi#ionada para a veri-i#a*$o' ent$o a veri-i#a*$o se
o registro e.iste ser+ -eita neste seg"ndo o)1eto.
( #oando raise ipede ,"e o registro d"pli#ado se1a adi#ionado na ta)ela' no odo
r"n-tie este #oando provo#ar+ " erro de #lasse e@%eption ,"e travar+ o pro1eto' n$o se
preo#"pe' digite F9 e prossiga #o os testes' ,"ando o pro1eto -or #opilado e rodado atravEs do
=("( o erro n$o travar+ o pro1eto ostrando soente a ensage de-inida.
D 5ltio detalhe para o Data"odule ,"e teos ,"e prever ,"e a #ada novo registro o
#"rsor deve se posi#ionar no prieiro #apo do registro' para o in/#io da digita*$oG
1. Mar,"e o o)1eto 4a(Cate#or' e dC " d"plo #li#< so)re o evento On%eKRecordG
procedre !DMnModelo.!a)Categor4eF3e#ordMDataSetG !DataSetNJ
begin
FnCateg.2ditSignCateg.SetFo#"sJ Altera a posi*$o do #"rsor para o o)1eto (dit0igICateg
endJ
%inali0ando o "ata'od$le
Salve o Data"odule #o o noe de DMModelo. Con-ira o #8digo #opleto para o
Data"oduleG
nit DMModeloJ
inter*ace
ses
SysDtils' IindoFs' Classes' Araphi#s' Controls' Fors' Dialogs' D%' D%!a)lesJ
tLpe
!DMnModelo T #lassM!DataMod"leN
!a)CategorSignCategG !StringFieldJ
!a)CategorDesnCategG !StringFieldJ
DSCategorG !DataSo"r#eJ
!a)CategorG !!a)leJ
!a)CategorCon-G !!a)leJ
StringField1G !StringFieldJ
StringFieldUG !StringFieldJ
procedre !a)CategorA-ter0ostMDataSetG !DataSetNJ
procedre !a)CategorSignCateg7alidateMSenderG !FieldNJ
procedre !a)Categor4eF3e#ordMDataSetG !DataSetNJ
private
6 private de%larations 7
pblic
6 pu(li% de%larations 7
endJ
var
DMnModeloG !DMnModeloJ
implementation

S2
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
68 9.D5"7
ses
-Men"' 6 "enu Prin%ipal do Sistema 7
-CategJ 6 Cadastro de Cate#orias 7
procedre !DMnModelo.!a)CategorA-ter0ostMDataSetG !DataSetNJ
begin
i* FnMen".D%Dis#o.&sS:;)ased then
begin
FnMen".D%Dis#o.CoitJ
FnMen".D%Dis#o.Start!ransa#tionJ
endJ
endJ
procedre !DMnModelo.!a)CategorSignCateg7alidateMSenderG !FieldNJ
begin
i* DSCategor.State in Rds2dit' ds&nsertS then
i* !a)CategorCon-.FindmeyMR!a)CategorS&AnCA!2ASN then
begin
FnCateg.2ditS&AnCA!2A.SetFo#"sJ
raise 2.#eption.CreateMVSigla da #ategoria d"pli#adoVr1OX
VCli#< no )ot$o s;o#alizas e #aso de d5vidaVNJ
endJ
endJ
procedre !DMnModelo.!a)Categor4eF3e#ordMDataSetG !DataSetNJ
begin
FnCateg.2ditSignCateg.SetFo#"sJ
endJ
end.
Coandos e s"as -"n*6es' por orde de apari*$oG
Vses - Faz o "so de deterinada "nidade de pro#edientos e )i)liote#a de -"n*6es.
RDataSo"r#eS=0tate - De-ine o estado e ,"e se en#ontra deterinado o)1eto Data0orce.
R()1etoS.0etFocs - 0osi#iona o #"rsor no o)1eto de-inido.
raise - Cria " erro de #lasse e@%eption ,"e n$o peritir+ ,"e ,"al,"er o"tra a*$o prossiga atE a esa ser resolvida.
A+%erando o #orm&+Brio
Co o Data"odule #on#l"/do vaos ata#ar a 1anela ,"e ser+ ostrada para o nosso
"s"+rio' #hae o)1eto 5orm2 M#hae-o atravEs da Pro)e%t "ana#er - op*$o do en" NieK Z
Project ManagerN.
Antes de -azeros ,"ais,"er odi-i#a*$o vaos ini#ialente alterar o noe da 1anela'
para tanto pressione a te#la 511 Mapare#er+ a '()e%t Inspe%tor para o o)1eto 5orm2N altere a
propriedade %ame para FICateg.
SR
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
("tra odi-i#a*$o iportante e tro#ar a re-erCn#ia do #oando Vses a)ai.o da diretiva
de #opila*$o ,"e estava re-eren#iado ao antigo noe do o)1eto Data"odule M:nit1N' tro,"e-o
paraG
68 9.D5"7
ses
DMModeloJ 6 eferen%ia ao Data"odule 7
'odi!icando os ,abels e Campos
(s +abels' representados pelo o)1eto M0a(elN' en#ontrado na Component Palette na
p+gina Standard' s$o as eti,"etas de #ada #apo ,"e apare#e a es,"erda dos #apos.
Alterando as propriedades dos ;a)elsG
1. Altere a propriedade Caption de S&AnCA!2A e D2SnCA!2A para =d0iglaA> e
=dDescrioA>' respe#tivaente.
U. Modi-i,"e a propriedade Fonte de a)os para MS Sans Seri-' 4egrito' Y e CastanhoJ
e a propriedade Ato0i/e para Tre.
0ara sele#ionar si"ltaneaente v+rios o)1etos' ar,"e o prieiro o)1eto' seg"re a
te#la S9&F! e ar,"e os deais.
:"al,"er pro)lea para diensionar o taanho de o)1etos "se a te#la S9&F! X
Setas.
:"al,"er pro)lea para a#ertar a posi*$o de o)1etos "se a te#la C!3; X Setas.
Da propriedade interessante E a FocsControl ela indi#ar+ " #ontrole para a
posi*$o do #"rsor. 2..G Caso se1a digitado A;!XS o #"rsor se posi#ionar+ no o)1eto
(dit0igICateg o" Caso se1a digitado A;!XD o #"rsor se posi#ionar+ no o)1eto (ditDesICateg.
(s Campos de (dio' representados pelo o)1eto MDB.ditN' en#ontrado na
Component Palette na p+gina Data Controls' s$o os ,"e re#e)er$o o #onte5do dos #apos da
ta)ela.
Alterando as propriedades do #apo C8digoG
1. Modi-i,"e a propriedade Fonte Mde a)os os #aposN para MS Sans Seri-' 4oral' Y
e az"l arinho.
U. 7eri-i,"e as propriedades Data0orce e DataField' noe da liga*$o #o DMI
Modelo=D0Categor e o noe do #apo 0igICateg' respe#tivaente.
Z. A propriedade %ame' noe do #apo' E ontada #o 2dit X 4oe e.terno do
#apo. (dit0igICateg.
Alterando as propriedades do #apo Des#ri*$oG
SO
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
[. 7eri-i,"e as propriedades Data0orce e DataField' noe da liga*$o #o
DMIModelo=D0Categor e o noe do #apo DesICateg' respe#tivaente.
5. A propriedade %ame' noe do #apo' E ontada #o 2dit X 4oe e.terno do
#apo. (ditDesICateg.
Objeto "#Navigator
( o)1eto para o #ontrole da ta)ela' representada pelo o)1eto MDB!avi#atorN'
en#ontrado na Component Palette na p+gina Data Controls' e apresentada pgr "a )arra de
-"n*6es ,"e ligada ao DataSour%e #ontrola a navega*$o dos #apos' adi*$o de novos registros'
edi*$o e e.#l"s$o de registros' o #an#elaento o" a #on-ira*$o de "a odi-i#a*$o e a
at"aliza*$o do )an#o de dados M,"ando e redeNG
Apresentada pelos )ot6esG n)First MprieiroN' n)0rior ManteriorN' n)4e.t Mpr8.ioN'
n);ast M5ltioN' nd&nsert MinserirN' ndDelete Me.#l"irN' n)2dit MeditarN' n)0ost M#on-irarN'
n)Can#el M#an#elarN e n)3e-resh Mat"alizar dadosN.
Alterando as propriedades da )arra de navega*$oG
,= Con-ira a propriedade Data0orce veri-i#ando para o noe da liga*$o #o
DMIModelo=D0Categor
3= A propriedade Con*irmDelete -ar+ #o se1a e.i)ida "a ensage' #on-irando
o" n$o a e.#l"s$o.
2= Altere a propriedade )ints' #li#ando e ' digite o noe de #ada )ot$o do seg"inte
odoG
0rieiro
Anterior
0r8.io
]ltio
&nserir
2.#l"ir
2ditar
Con-irar
Can#elar
At"alizar dados
[. Cli,"e no )ot$o (m e altere a propriedade 0hoK)int para tre' isto -ar+ #o ,"e
e)ai.o de #ada )ot$o da )arra' so)reposto pelo #"rsor' se1a ostrado "a #ai.a
#oo "a tar1a aarela #o a #onte5do da propriedade )int.
5. 7o#C poder+ de-inir ,"ais )ot6es dever$o apare#er na )arra "tilizando a propriedade
NisibleBttons' para tanto #li,"e no sinal de X ,"e apare#e a es,"erda da op*$o e
de-ina tre o" *alse para os )ot6es ,"e ser$o o" n$o ostrados.
SS
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
'odi!icando os Paineis
2.iste dois o)1etos Panel #riados a"toati#aenteG o prieiro s"perior' a)riga o o)1eto
DB!avi#ator' o seg"ndo o#"pando o restante da 1anela' a)riga " o)1eto do tipo S#roll%o.'
la)els e #apos.
Alterando as propriedades do prieiro painelG
1. Altere a propriedade Alignment' alinhaento da propriedade Caption do painel'
para ta+e*t!sti*L.
U. Colo,"e na propriedade Caption o noe Categoria.
Z. Modi-i,"e a propriedade Fonte para MS Sans Seri-' &t+li#o' 1[ e az"l arinho.
Arr"e a )arra de navega*$o de odo ,"e n$o #")ra a des#ri*$o' se -or o #aso
a"ente o taanho da 1anela.
Alterando as propriedades do seg"ndo painelG
1. A"ente o" diin"a o taanho da 1anela e note ,"e este painel diin"e e a"enta
#o ela' isto se deve a propriedade Align estar no odo alClient' altere esta
propriedade MteporariaenteN para al%one.
0ara #onseg"ir ver a tela de propriedades deste painel' #li,"e e ,"ais,"er das
)ordas' pois so)re este painel e.iste " o"tro o)1eto denoinado S%rollBo@ ta)E no odo
alClient.
'odi!icando a 3anela
A 1anela est+ " po"#o es#ondida atr+s dos o)1etos painEis #riados' ap8s alterar a
propriedade Align do seg"ndo painel' esti,"e " po"#o a 1anela para )ai.o e #li,"e nela.
Alterando as propriedades da 1anelaG
1. 3etire as op*6es biMinimi/e e biMaQimi/e da propriedade Border1cons.
U. Altere na propriedade Border0tLle para bs0ingle.
Z. M"de a propriedade Caption para Tabela.
[. Se vo#C n$o o -ez' "de a propriedade %ame para FICateg' o" se1a Fn X 4oe da
ta)ela e.terno Mse a s"a e.tens$oN' isto -a#ilitar+ a identi-i#a*$o entre o form e s"a
unit.
5. 7eri-i,"e a propriedade Position Mposi*$o da 1anelaN ela deve estar #o o valor
0creenCenter M#entralizadoN.
\. Salve o -or"l+rio #o o noe *Categ e salve o pro1eto.
Criando o terceiro Painel
Criareos agora " ter#eiro painel para #oportar alg"ns )ot6es
SX
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Criando e alterando o painelA
1. Crie " o)1eto Panel' #li,"e no o)1eto MPanelN' en#ontrado na Component
Palette na p+gina Standard' e #li,"e no o)1eto 5GCate#' altere as seg"intes
propriedadesG
0ropriedade 7alor Des#ri*$o
Align al%otto Alinhaento dentro do form' todo no rodapE
Caption ;a)el do o)1eto
9eight [1 Alt"ra do o)1eto
(s )ot6es ,"e #riareos -ar$o d"as -"n*6esG 1.Sair da 1anela e U.;o#aliza*$o r+pida de
" deterinado registro.
Criando o primeiro botoA
1. Mar,"e o o)1eto panel2 #riado' #li#< no o)1eto BitBtn ' en#ontrado na
Component Palette na p+gina &dditional' e #li#< no panel2.
U. Altere as seg"intes propriedades para o )ot$oG
0ropriedade 7alor Des#ri*$o
mind )<Close Deterina a #lasse a ser "tilizada pelo )ot$o'
a"toati#aente ser+ alterado as propriedadesG
Caption' PlLph e ModalReslt
Caption pFe#har ;a)el do o)1eto
Font MS Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto' para alterar esta
propriedade #li,"e no )ot$o
9eight U5 Alt"ra
9int 3etorna ao en" prin#ipal A1"da on-line para o o)1eto espe#/-i#o
;e-t Z1U Alinhaento a es,"erda
4ae %"tFe#har 4oe do o)1eto
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
Iidth Y9 !aanho do o)1eto
Criando o segndo botoA
1. Crie " seg"ndo )ot$o' alterando as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Caption p;o#alizar ;a)el do o)1eto
Font MS Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!(4Sk
F&4D.%M0
&age a ser ostrada no o)1eto
9eight U5 Alt"ra do o)1eto
9int ;o#aliza deterinado registro na ta)ela A1"da on-line para o o)1eto espe#/-i#o
;e-t U[ Alinhaento a es,"erda
4ae %"t;o#alizar 4oe do o)1eto
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora
de "a #ai.a de a1"da on-line
S&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Font MS Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto
Iidth Y9 !aanho do o)1eto
Alterando novaente as propriedades do seg"ndo painelG
1. 3e#olo,"e a propriedade Align do o)1eto Panel2 para alClient e Salve o -or e o
pro1eto.
Se" tra)alho -inal deve ter -i#ado deste odoG
Pro7ramando no 6orm&+Brio
Agora ve a parte de #8digo. Ao -inal deste t8pi#o vo#C o)servar+ ,"e o tra)alho aior
-i#o" pgr #onta de organizar e arr"ar os o)1etos do ,"e #o o #8digo e si' i.e.' orienta*$o a
o)1etos.
Preservando as )reas de 'em(ria
Co o Delphi E poss/vel tra)alhar de d"as aneiras' a prieira E peritir ,"e o Delphi
#rie todos os o)1etos e e8ria ag"ardando siplesente ,"e estes se1a #haados' as isto
ipli#a ,"e a +,"ina Client deva ter "a )oa ,"antidade de e8ria para s"portar os o)1etos
,"e ser$o ali #olo#ados' a seg"nda aneira e #riaros estes o)1etos via #8digo peritindo ,"e o
Delphi #rie o /nio poss/vel' o pro)lea ,"e isto ipli#a e na deora ,"anto da #haada de
" -or"l+rio' e Edia 5O seg"ndos para ativar o -or"l+rio
1
. K pre-er/vel tra)alhar #o o
seg"ndo odo "a vez ,"e para entrar e deterinado -or"l+rio o nosso "s"+rio s8 o -ar+ "a
5ni#a vez.
&ni#ialente retirareos da +rea de #ria*$o a"to+ti#a o -or"l+rio de #ategoria e o
-or"l+rio So)re o sistea' para tanto' a partir do en" prin#ipal #li,"e e Project Z Options==='
#li,"e na p+gina 5orms e envie no o)1etos 5GCate# e 5GSo(re M#li,"e so)re o prieiro' seg"re a
te#la 0hi*t e #li,"e no seg"ndo e no ter#eiro e e seg"ida #li,"e no )ot$o #o o sinal de _N ,"e
est+ na lista &uto;%reate forms para a lista &vaila(le forms' #li,"e so)re o )ot$o OU Mpro#esso
seelhante -oi realizado para o -or"l+rio FI0plashN.
1
2ste tepo E #o )ase e "a +,"ina [Y\ DLU #o Y M) de e8ria.
S'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Altere agora a instr"*$o do -or"l+rio FIMen' evento OnClicT para o o)1eto
1temAQilio,' para #riaros o o)1eto FI0obre e ap8s a s"a #haada destr"/-lo da +rea
de e8riaG
procedre !FnMen".&teA".ilio1Cli#<MSenderG !()1e#tNJ
begin
Kith !FnSo)re.CreateMSel-N do Cria o -or"l+rio e e8ria
begin
ShoFModalJ Chaa o -or"l+rio atravEs da +rea a)erta
FreeJ ;i)era a +rea a)erta
endJ
endJ
C8digo para ativar a %ase de dados e as ta)elas ,"ando no Data"odule' retorne ao
-or"l+rio FICategG
1. Cli,"e no )ot$o M4o##le 5orm/:nitN da SpeedBar' atE vo#C alternar para o Code
.ditor.
procedre ForCreateMSenderG !()1e#tNJ
private
6 private de%larations 7
pblic
6 pu(li% de%larations 7
procedre ini#ioJ Criando a #haada para " pro#ediento p5)li#o.
endB
var
FnCategG !FnCategJ
X-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
implementation
68 9.D5"7

ses
FMen"' 6 "enu Prin%ipal do Sistema 7
DMModeloJ 6 eferen%ia ao Data"odule 7
procedre !Fn Categ.&ni#ioJ &ni#io do pro#ediento
begin
i* FnMen".D%Dis#o.&sS:;)ased then Se a )ase de dados E padr$o S:;
FnMen".D%Dis#o.Start!ransa#tionJ &ni#ia o odo de transa*6es
DMnModelo.!a)Categor.(penJ Ativa a !a)ela
S#reen.C"rsor GT #rDe-a"ltJ Faz o #"rsor -i#ar no -orato de Seta
ShoFModalJ Mostra o -or"l+rio FICateg
endB
A propriedade crsor no e.eplo -oi atri)"/da a "nidade 0creen ,"e atri)"i ao
sistea o odelo do #"rsor' as E poss/vel ta)E atri)"ir " deterinado #"rsor a " o)1eto
espe#/-i#o' a propriedade pode ser alterada para os diversos tipos de #"rsores de-a"lt do FindoFs
#o as -ig"ras ,"e se seg"eG

4$o E ne#ess+rio #olo#ar o #oando Close para o o)1eto btFechar pois a propriedade
Uind -ar+ isto a"to+ti#o.
C8digo para en#errar as ta)elas do Data"odule ,"ando -or dada sa/da no -or"l+rio'
o)serve ,"e o "s"+rio n$o deve poder estar inserindo o" editando registrosG
1. 4o o)1eto 5GCate#' lo#alize-o atravEs da '()e%t Inspe%tor' dC " d"plo #li#< so)re o
evento OnCloseG
procedre !FnCateg.ForCloseMSenderG !()1e#tJ var A#tionG !CloseA#tionNJ
begin
i* DMnModelo.DSCategor.State in Rds2dit' ds&nsertS then 7eri-i#a se o estado do o)1eto
begin DataSo"r#e E 2di*$o o" inser*$o
MessageDlgMVCan#ele a edi*$o Mo" inser*$oN da Categoria antes de -e#harfV' ostra ensage
t&n-oration' R)(mS' ONJ de in-ora*$o
A#tion GT #a4oneJ Can#ela a sa/da da 1anela
2.itJ Sai da pro#ed"re
endB
S#reen.C"rsor GT #r9o"rAlassJ Faz o #"rsor virar "a ap"lheta
X,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
!a)Categor.CloseJ Fe#ha a ta)ela
i* FnMen".D%Dis#o.&sS:;)ased then Se a )ase de dados E padr$o S:;
FnMen".D%Dis#o.CoitJ 2n#erra o odo de transa*6es gravando
endB as altera*6es no )an#o de dados
A -"n*$o MessageDlg -az parte da Dnit Dialogs ent$o E ne#ess+rio -azer "so desta
Dnit' para tanto insira o seg"inte #8digo Ma)ai.o da diretiva de #opila*$oNG
68 9.D5"7
ses
FMen"' 6 "enu Prin%ipal do Sistema 7
DMModelo' 6 eferen%ia ao Data"odule 7
DialogsJ 6 :tili$ado para o %ontrole da fun3=o "essa#eDl# 7
C8digo para lo#alizar deterinado registro' o)serve ,"e se o "s"+rio n$o deve estar
inserindo o" editando registrosG
1. DC " d"plo Cli#< so) o o)1eto But0o%ali$arG
procedre !FnCateg.%"t;o#alizarCli#<MSenderG !()1e#tNJ
var De#lara*$o de vari+veis
()10es,"isaG 0tringJ Cria a vari+vel ()10es,"isa do tipo String
begin
i* DMnModelo.DSCategor.State in Rds2dit' ds&nsertS then
begin
MessageDlgMVCan#ele a edi*$o Mo" inser*$oN da Categoria antes de lo#alizarfV'
t&n-oration' R)(mS' ONJ
2.itJ
endB
()10es,"isa GT DMnModelo.!a)CategorSignCateg.7al"eJ Atri)"i a ()10es,"isa o valor do #apo
de ta)ela SignCateg
i* &np"t:"eryMV2ntre #o a sigla da #ategoriaV'
VSiglaV'()10es,"isaN then Soli#ita a digita*$o do #8digo a ser pro#"rado
i* not DMnModelo.!a)Categor.FindmeyMR()10es,"isaSN then 0es,"isa o #apo digitado na ta)ela
MessageDlgMVSigla da Categoria n$o en#ontrada.V' Caso n$o se1a en#ontrado in-ora
t&n-oration' R)(mS' ONJ
endJ
A -"n*$o 1npt]erL ta)E -az parte da Dnit Dialogs=
( Etodo FindUeL -az parte do ()1eto TTable.
Criando %$nes 4lobais
Da -"n*$o o" " pro#ediento glo)al e "a sErie de #oandos #o"ns a " sistea
#oo " todo' e ling"age 0as#al E ,"ase ,"e proi)ido Mn$o E proi)ido pois a ling"age
periteN a "tiliza*$o de " eso #on1"nto de #oandos repetidas vezes' note ,"e para o nosso
-or"l+rio teos os esos #oandos e #haadas di-erentesG
procedre !FnCateg.ForCloseMSenderG !()1e#tJ var A#tionG !CloseA#tionNJ
begin
i* DMnModelo.DSCategor.State in Rds2dit' ds&nsertS then A,"i
begin
MessageDlgMVCan#ele a edi*$o Mo" inser*$oN da Categoria antes de *echarfV' A,"i
X3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
t&n-oration' R)(mS' ONJ A,"i
A#tion GT #a4oneJ
2.itJ
endJ
...
endJ
procedre !FnCateg.%"t;o#alizarCli#<MSenderG !()1e#tNJ
var
()10es,"isaG 0tringJ
begin
i* DMnModelo.DSCategor.State in Rds2dit' ds&nsertS then A,"i
begin
MessageDlgMVCan#ele a edi*$o Mo" inser*$oN da Categoria antes de locali/arfV' A,"i
t&n-oration' R)(mS' ONJ A,"i
2.itJ
endJ
...
endJ
0odeos ent$o retirar o tre#ho e #riaros "a -"n*$o isolada ,"e #riti#ar+ o estado da
edi*$o devolvendo a ensage' odi-i#ando o tre#ho di-erente' -i#ando desta aneira Mn$o
es,"e*a de de#larar a -"n*$o na +rea 03&7A!2NG
private
*nction Criti#a2di#aoMAntesDeG StringN G )ooleanJ Cria a -"n*$o na +rea parti#"lar
pblic
procedre ini#ioJ
endJ
var
...
...
...
*nction !FnCateg.Criti#a2di#aoMAntesDeG StringN G )ooleanJ 3e#e)e o tipo da ensage
begin
i* DMnModelo.DSCategor.State in Rds2dit' ds&nsertS then 7eri-i#a o estado
begin
MessageDlgMVCan#ele a edi*$o Mo" in#l"s$oN da #ategoria antes de V X
AntesDe' t2rror' R)(mS' ONJ Monta e envia a ensage
3es"lt GT !r"eJ Devolve ,"e envio" a ens.
end
else
3es"lt GT FalseJ Devolve ,"e n$o envio" a ens.
endJ
procedre !FnCateg.ForCloseMSenderG !()1e#tJ var A#tionG !CloseA#tionNJ
begin
i* Criti#a2di#aoMV-e#harV N then S")stit"i pela #haada a -"n*$o
begin
A#tion GT #a4oneJ
2.itJ
endJ
...
endJ
procedre !FnCateg.%"t;o#alizarCli#<MSenderG !()1e#tNJ
X2
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
var
()10es,"isaG 0tringJ
begin
i* Criti#a2di#aoMVlo#alizarV N then S")stit"i pela #haada a -"n*$o
2.itJ
...
endJ
4ote ,"e 1+ ganhaos "a #erta vantage' ao invEs de teros ,"e alterar e dois
l"gares di-erentes s8 tereos ,"e alterar e " 5ni#o l"gar' as ainda n$o est+ per-eito pois
deveos le)rar ,"e " sistea noralente n$o E #oposto por apenas "a ta)ela' se
#ontar a parte do #adastro' ent$o se seg"iros o eso padr$o de #onstr"*$o de -or"l+rios para
o"tras ta)elas #ontin"areos a repetir v+rios #oandos' ent$o vaos -azer ,"e a nossa -"n*$o
sirva para a #riti#a de edi*$o de ,"al,"er ta)ela' para isto pre#isaos enviar ta)E o
DataSour%e ,"e pes,"isar+ o estado e "a o"tra vari+vel do tipo Strin# para dizeros de ,"al
ta)ela estaos -alando para #an#elar a edi*$o' v+ para o o)1eto FnMen" e #rie a seg"inte -"n*$o
Mn$o es,"e*a de de#larar na +rea 0D%;&CNG
private
procedre ShoF9int MSenderG !()1e#tNJ
pblic
*nction Criti#a2di#aoMDS(rigeG !DataSo"r#eJ Do:"e' AntesDeG StringN G )ooleanJ A,"i
endJ
var
...
...
6 5un3=o Criti%a .di3=o
e%e(eI DS'ri#emI DataSou%e para investi#ar o estado
DoAueI !ome real da 4a(ela
&ntesDeI 5un3=o a e@e%utar do tipo 5e%har, 0o%ali$ar...
DevolveI 4rue ; Se o DataSour%e estJ em estado de edi3=o ou inser3=o
5alse ; Se o DataSour%e estJ em estado de nave#a3=o 7
*nction !FnMen".Criti#a2di#aoMDS(rigeG !DataSo"r#eJ Do:"e' AntesDeG StringN G )ooleanJ
begin
i* DS(rige.State in Rds2dit' ds&nsertS then
begin
MessageDlgMVCan#ele a edi*$o Mo" in#l"s$oN V X Do:"e X V antes de V X
AntesDe' t2rror' R)(mS' ONJ
3es"lt GT !r"eJ
end
else
3es"lt GT FalseJ
endJ
Altere agora o o)1eto 5GCate# eliinando a -"n*$o Critica(dicao e odi-i#ando as
#haadasG
private
6 %omandos parti%ulares 7 2liine
pblic
procedre ini#ioJ
endJ
var
FnCategG !FnCategJ
XR
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
...
...
(limine as linhas da *no
...
...
procedre !FnCateg.ForCloseMSenderG !()1e#tJ var A#tionG !CloseA#tionNJ
begin
i* FnMen".Criti#a2di#aoMDMnModelo.DSCategor' VCategoriaV' V-e#harV N then S")stit"a a,"i
begin
A#tion GT #a4oneJ
2.itJ
endJ
...
endJ
procedre !FnCateg.%"t;o#alizarCli#<MSenderG !()1e#tNJ
var
()10es,"isaG 0tringJ
begin
i* FnMen".Criti#a2di#aoMDMnModelo.DSCategor' VCategoriaV' lo#alizarV N then S")stit"a a,"i
2.itJ
...
endJ
/lterando o 'en$ para receber o !orm$l)rio
Agora -inalente vaos rodar nosso pro1eto as antes pre#isaos #haar o -or"l+rio
atravEs do en" prin#ipal para istoG
1. A)ra o o)1eto FIMenG no en" prin#ipal es#olha NieK e Project Manager' ar,"e o
o)1eto 5G"enu e #li,"e so)re o )ot$o NieK *orm.
U. Cli,"e e ArMivo' Tabela e Categoria' #olo,"e o seg"inte #8digoG
procedre !FnMen".Categoria1Cli#<MSenderG !()1e#tNJ
begin
S#reen.C"rsor GT #r9o"rAlassJ Faz do #"rsor "a ap"lheta
FnCateg GT !FnCateg.CreateMAppli#ationNJ Cria o -or"l+rio e e8ria
FnCateg.&ni#ioJ Chaa o -or"l+rio atravEs da +rea a)erta
FnCateg.FreeJ ;i)era a +rea a)erta
S#reen.C"rsor GT #rDe-a"ltJ Faz do #"rsor "a seta
endJ
Z. ( o)1eto 5GCate# -az parte da Dnit *Categ ent$o E ne#ess+rio -azer o "so desta Dnit' para
tanto insira o seg"inte #8digo Ma)ai.o da diretiva de #opila*$oNG
68 9.D5"7
ses
-So)re' 6 Kanela do So(re o Sistema 7
-CategJ 6 Cadastro da 4a(ela de Cate#oria 7
[. Saia do Code .ditor e salve o -or"l+rio e o pro1eto.
5. 3ode o pro1eto e teste o -or"l+rio de #ategoria' insira alg"as #ategorias' tente provo#ar
o erro de d"pli#a*$o' tente inserir " registro #o o #8digo vazio e lo#alizar " registro.
XO
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
\. Se alg"a #oisa de" errada' releia o #ap/t"lo' o" ent$o #on-ira todo o #8digoG
nit -#ategJ
inter*ace
ses
SysDtils' IindoFs' Messages' Classes' Araphi#s' Controls'
StdCtrls' Fors' D%Ctrls' D%' Mas<' 2.tCtrls' %"ttonsJ
tLpe
!FnCateg T #lassM!ForN
S#roll%o.G !S#roll%o.J
;a)el1G !;a)elJ
2ditSignCategG !D%2ditJ
;a)elUG !;a)elJ
2ditDesnCategG !D%2ditJ
D%4avigatorG !D%4avigatorJ
0anel1G !0anelJ
0anelUG !0anelJ
0anelZG !0anelJ
%"tFe#harG !%it%tnJ
%"t;o#alizarG !%it%tnJ
procedre ForCloseMSenderG !()1e#tJ var A#tionG !CloseA#tionNJ
procedre %"t;o#alizarCli#<MSenderG !()1e#tNJ
private
6 private de%larations 7
pblic
procedre ini#ioJ
endJ
var
FnCategG !FnCategJ
implementation
68 9.D5"7
ses
-Men"' 6 "enu Prin%ipal do Sistema 7
DMModelo' 6 eferen%ia ao Data"odule 7
DialogsJ 6 :tili$ado para o %ontrole da fun3=o "essa#eDl# 7
procedre !FnCateg.&ni#ioJ
begin
i* FnMen".D%Dis#o.&sS:;)ased then
FnMen".D%Dis#o.Start!ransa#tionJ
DMnModelo.!a)Categor.(penJ
S#reen.C"rsor GT #rDe-a"ltJ
ShoFModalJ
endJ
procedre !FnCateg.ForCloseMSenderG !()1e#tJ var A#tionG !CloseA#tionNJ
begin
i* FnMen".Criti#a2di#aoMDMnModelo.DSCategor' VCategoriaV' VFe#harV N then
begin
XS
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
A#tion GT #a4oneJ
2.itJ
endJ
S#reen.C"rsor GT #r9o"rAlassJ
DMnModelo.!a)Categor.CloseJ
i* FnMen".D%Dis#o.&sS:;)ased then
FnMen".D%Dis#o.CoitJ
endJ
procedre !FnCateg.%"t;o#alizarCli#<MSenderG !()1e#tNJ
var
()10es,"isaG 0tringJ
begin
i* FnMen".Criti#a2di#aoMDMnModelo.DSCategor' VCategoriaV' V;o#alizarV N then
2.itJ
()10es,"isa GT DMnModelo.!a)CategorSignCateg.7al"eJ
i* &np"t:"eryMV2ntre #o a Sigla da #ategoriaV'VSiglaV'()10es,"isaN then
i* not DMnModelo.!a)Categor.FindmeyMR()10es,"isaSN then
MessageDlgMVSigla da Categoria n$o en#ontrada.V't&n-oration'R)(mS'ONJ
endJ
end.
Coandos e s"as -"n*6es' por orde de apari*$oG
R!a)elaS=Open - Ativa " o)1eto Table E e,"ivalente a Active A8 Tre.
RForS=0hoKModal - Ativa o o)1eto Form' n$o peritindo ,"e nenh" o"tro o)1eto Form anterior se1a ativado' atE
,"e o eso se1a desativado.
(Qit - Sai da -"n*$o o" pro#ediento.
R!a)elaS=Close - Desativa " o)1eto Table E e,"ivalente a Active A8 False.
Nar - De-ine "a #adeia de vari+veis lo#ais.
1npt]erL - Mostra "a #ai.a de di+logo para leit"ra e entrada de vari+veis do tipo 0tring.
R!a)elaS.FindUeL - F"n*$o ,"e realiza "a pes,"isa inde.ada no o)1eto Table' atravEs do /ndi#e de-inido' retorna
4rue se en#ontro" o" 5alse se -i de ar,"ivo
XX
Ca,-%&+o VI
-rabal&ando com janela Pai 5 %il&a
Se vo#C atE agora n$o senti" di-i#"ldade e #riar e entender o tra)alho #o ta)elas
livres' n$o sentir+ ta)E di-i#"ldade e #riar o -or"l+rio para re#e)er este #aso' ao #ontr+rio'
a#onselho ,"e vo#C releia e re-a*a o #ap/t"lo anterior.
2 nosso pro1eto' #ada registro na ta)ela de m`sica s8 e.istir+ se ho"ver "
#orrespondente na ta)ela bWsico' ent$o a ta)ela bWsico E =pai> MestreN da ta)ela m`sica ,"e E
s"a =-ilha> MdetalheN. 2sta teoria a#ia E e.pli#ada no #on#eito de odelo rela#ional de dados
MM23N. ( Delphi in#orpora este odelo eso para )an#o de dados n$o-rela#ionais' #aso
estivEsseos "tilizando o d%ase e nosso pro1eto.
Criando a /ane+a a&%oma%i*amen%e
Se assi ,"e vo#C -inalizo" o #ap/t"lo anterior vo#C sai" do Delphi' reative o se" pro1eto.
Agora ,"e vo#C est+ pronto para o tra)alho' vaos #riar a nossa 1anelaG
1. Cli,"e no en" prin#ipal a op*$o File e %eK===' e !ew Items' "de a p+gina para
5orms e #li,"e no o)1eto entit"lado Data(ase 5orm' pare#e #8pia do #ap/t"lo
anterior@ #"idado leia as instr"*6es a)ai.oG
,.
( tipo a ser #riada.
Form OptionsG Create a aster/detail -or
Da 1anela estre e detalhes
Data0et OptionsG Create a -or "sing !!a)les
o)1e#ts
Dsando o o)1eto ta)ela
%ot$o 4e.t.
3.
A ta)ela estre a ser "sada para a 1anela.
Drive or Alias nameG AliasDis#o
Table %ameG )asi#o.d)-
%ot$o 4e.t
7Y
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
2.
Capos a sere inseridos
%ot$o =__=
%ot$o 4e.t
R.
Fora*$o dos #apos
7erti#al
%ot$o 4e.t
O.
0osi*$o dos ;a)els
;e-t - A es,"erda
%ot$o 4e.t
S.
A ta)ela detalhe a ser "sada para a 1anela.
Drive or Alias nameG AliasDis#o
Table %ameG "si#a.d)-
%ot$o 4e.t
X.
Capos a sere inseridos
%ot$o =__=
%ot$o 4e.t
&.
Fora*$o dos #apos
Arid
%ot$o 4e.t
'.
,-.
X'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Montage da #have de liga*$o
Available 1ndeQes G 0riary
Detail Fields G C(DnD&SC(
Master Fields G C(DnD&SC(
%ot$o Add
!oined Fields C(DnD&SC( -_ C(DnD&SC(
%ot$o 4e.t
Copleto
Aera a tela #oo -or prin#ipal - 4$o
( :"e gerarG For e DataMod"le
%ot$o Finish
So.re os Da%aMod&+es
Coo e" disse no #ap/t"lo anterior E poss/vel #riar " 5ni#o Data"odule a)rangendo o
odelo rela#ional #opleto' )asta para isto vo#C -azer o -or"l+rio ,"e est+ #haando o
Data"odule #ontrolar o #oando 'pen e Close das ta)elas. 4$o -arei desta aneira pois isto ao
eso tepo ,"e sipli-i#aria o e" tra)alho di-i#"ltaria o se" entendiento' ,"e E o de "a
pessoa ,"e estivesse aprendendo o Delphi neste oento' ent$o para este tra)alho adotarei "
Data"odule para #ada #adastro.
-rabal&ando com as -abelas
Chae o o)1eto Data"odule1 #riado' a nossa prieira providCn#ia ser+ a de alterar a
propriedade %ame do o)1eto para DMIBasico' o)serve ,"e -oi #riado dois o)1etos 4a(le' o
prieiro est+ apontado para a ta)ela %AS&C( e o seg"ndo para a ta)ela MDS&CA' note ,"e para
este seg"ndo as propriedades Master0orce e MasterFields est$o =presas> pelo prieiro o)1eto'
este E o rela#ionaento entre a)as. 7aos antes #riaros alg"ns pe,"enos detalhesG
Crie trCs o)1etos 4a(le ' en#ontrado na Component Palette p+gina Data &%%ess' e "
o)1eto DataSour%e ' en#ontrado na Component Palette p+gina Data &%%ess' e altere
as seg"intes propriedadesG
Para o objeto Table, M?+ e.istenteNG
0ropriedade 7alor Des#ri*$o
Data)ase4ae %aseDis#o Mse este valor n$o estiver
dispon/vel #hae o o)1eto FIMenN
4oe do %an#o de Dados o" a lo#aliza*$o do
diret8rio das ta)elas
!a)le4ae %AS&C( 4oe e.terno da ta)ela
4ae !a)%asi#o 4oe do o)1eto
&nde.Field4aes 4(MnD&SC( 4oe do #apo inde.ado
Para o objeto Data0orce, M?+ e.istenteNG
0ropriedade 7alor Des#ri*$o
DataSet !a)%asi#o 4oe da ta)ela vin#"lada
4ae DS%asi#o 4oe do o)1eto
Para o objeto Table3 M?+ e.istenteNG
0ropriedade 7alor Des#ri*$o
Data)ase4ae %aseDis#o 4oe do %an#o de Dados o" a lo#aliza*$o do
diret8rio das ta)elas
&-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
!a)le4ae MDS&CA 4oe e.terno da ta)ela
4ae !a)M"si#a 4oe do o)1eto
&nde.Field4aes C(DnD&SC( 4oe do #apo inde.ado
MasterSo"r#e DS%asi#o 4oe do DataSo"r#e Mestre
MasterFields C(DnD&SC( Capo de liga*$o da ta)ela Mestre
Para o objeto Data0orce3 M?+ e.istenteNG
0ropriedade 7alor Des#ri*$o
DataSet !a)M"si#a 4oe da ta)ela vin#"lada
4ae DSM"si#a 4oe do o)1eto
Para o objeto Table2 MCriadoNG
0ropriedade 7alor Des#ri*$o
Data)ase4ae %aseDis#o 4oe do %an#o de Dados o" a lo#aliza*$o do
diret8rio das ta)elas
!a)le4ae %AS&C( 4oe e.terno da ta)ela
4ae !a)%asi#oCon- 4oe do o)1eto
&nde.Field4aes 4(MnD&SC( 4oe do #apo inde.ado
3ead(nly !r"e Soente para leit"ra
Para o objeto TableR MCriadoNG
0ropriedade 7alor Des#ri*$o
Data)ase4ae %aseDis#o 4oe do %an#o de Dados o" a lo#aliza*$o do
diret8rio das ta)elas
!a)le4ae CA!2A(3 4oe e.terno da ta)ela
4ae !a)Categor 4oe interno da ta)ela
&nde.Field4aes S&AnCA!2A 4oe do #apo inde.ado
MasterSo"r#e DS%asi#o 4oe do DataSo"r#e Mestre
MasterFields S&AnCA!2A Capo de liga*$o da ta)ela Mestre
3ead(nly !r"e Soente para leit"ra
Para o objeto Data0orce2 MCriadoNG
0ropriedade 7alor Des#ri*$o
DataSet !a)Categor 4oe da ta)ela vin#"lada
4ae DSCategor 4oe do o)1eto
Para o objeto TableO MCriadoNG 0osi#ione-o ao lado do o)1eto DSCate#.
0ropriedade 7alor Des#ri*$o
Data)ase4ae %aseDis#o 4oe do %an#o de Dados o" a lo#aliza*$o do
diret8rio das ta)elas
!a)le4ae CA!2A(3 4oe e.terno da ta)ela
4ae !a)CategorCon- 4oe do o)1eto
&nde.Field4aes S&AnCA!2A 4oe do #apo inde.ado
3ead(nly !r"e Soente para leit"ra
(s o)1etos na hora da e.e#"*$o do -or"l+rio -i#ar$o invis/veis' as E )o #olo#+-
los e #antos estratEgi#os' isto evita a #on-"s$o.
&,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
A "tilidade de #ada o)1eto 4a(leG
!a)%asi#o - !a)ela estre prin#ipal.
!a)%asi#oCon- - !a)ela %AS&C( para realizar a valida*$o do noe do CD.
!a)M"si#a - !a)ela "tilizada para ostrar as 5si#as #adastradas de #ada dis#o.
!a)Categor - !a)ela para ostrar a des#ri*$o da #ategoria.
!a)CategorCon- - !a)ela para valida*$o da sigla da #ategoria.
Crie o o)1eto Auer/ ' en#ontrado na Component Palette p+gina Data &%%ess' ,"e
servir+ para #al#"lar o #8digo a"to+ti#o' #al#"lando sepre o #8digo de aior valor' e
altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Data)ase4ae %aseDis#o 4oe do %an#o de Dados o" a lo#aliza*$o do
diret8rio das ta)elas
4ae :ryContador 4oe do ()1eto
S:; Sele#t Ma.MC(DnD&SC(N -ro %AS&C( Cl+"s"la S:;' sele#ione o aior valor do
#apo C(DnD&SC( da ta)ela %AS&C(
( #apo C(DnD&SC( #riado' servir+ apenas #oo "a #have de liga*$o entre a
ta)ela %asi#o e M"si#a' ser+ "a #have interna do nosso sistea e s"a alienta*$o se -ar+ atravEs
deste o)1eto S:; #riado pegando o aior valor e adi#ionando 1.
-rabal&ando com os Campos
0re#isaos inserir alg"ns #apos' pois ireos pre#isar deles no tra)alho #o o #8digo e
para o o)1eto DB>rid1' "tilize o 5ields .ditor para inserir os #apos ,"e -altaG
Para o objeto TabBasicoG
C(DnD&SC(' 0ropriedade DisplaL+abelG C8digoJ
4(MnD&SC(' 0ropriedade DisplaL+abelG 4oeJ
!&0nD&SC(' 0ropriedade DisplaL+abelG !ipo e (ditMasTG _AAAJOJn
F(!nCA0A' 0ropriedade DisplaL+abelG FotoJ e
S&AnCA!2A' 0ropriedade DisplaL+abelG Categoria e (ditMasTG _AAJOJn
Para o objeto TabMsicaG
C(DnD&SC(' 0ropriedade NisibleG False.
4DMnFA&LA' 0ropriedade DisplaL+abelG Fai.a e DisplaLJidthG UJ
4(MnMDS&CA' 0ropriedade DisplaL+abelG M5si#a e DisplaLJidthG [OJ e
4(MnAD!(3' 0ropriedade DisplaL+abelG A"torJ e
!M0nMDS&CA' 0ropriedade DisplaL+abelG !epo e (ditMasTG OOkGOOJOJn
Para o objeto ]rLContadorG
&3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
De " d"plo #li,"e so)re o o)1eto apare#er+ a 1anela Fields (ditor' #li,"e #o o )ot$o
direito e no en" ,"e apare#er+ #li,"e na op*$o Add Fields=== e adi#ione o #apo.
Antes de ini#iaros a prograa*$o do Data"odule #opare #oo -i#o" o Data"odule e
salve-o #o o noe de DMBasicoG
Controlando o "ata'od$le
Agora -alta o #8digo' note ,"e a aior parte E "a repeti*$o da,"ilo ,"e 1+ vios
anteriorenteG
Ativando as ta)elas ao ser #haado Data"oduleG
1. Cli,"e no o)1eto D"Basi%o e na '()e%t Inspe%tor na p+gina .vents dC " d"plo
#li,"e so)re o evento OnCreate e altere-o do seg"inte odoG
procedre !DMn%asi#o.DMn%asi#oCreateMSenderG !()1e#tNJ
begin
i* FnMen".D%Dis#o.&sS:;)ased then Se a )ase de dados E padr$o S:;
FnMen".D%Dis#o.Start!ransa#tionJ &ni#ia o odo de transa*6es
!a)Categor.(penJ Ativa as ta)elas
!a)CategorCon-.(penJ
!a)M"si#a.(penJ
!a)%asi#o.(penJ
!a)%asi#oCon-.(penJ
endJ
C8digo para en#errar as transa*6es #o a %ase de Dados e -e#har as ta)elas ,"ando -or
en#errado o Data"odule.
1. Digite F11 e lo#alize o o)1eto D"GCate#' na '()e%t Inspe%tor' na p+gina .vents' dC
" d"plo #li#< so)re o evento OnDestroLG
procedre !DMn%asi#o.DMn%asi#oDestroyMSenderG !()1e#tNJ
begin
!a)%asi#o.CloseJ Fe#ha as ta)elas
!a)%asi#oCon-.CloseJ
!a)M"si#a.CloseJ
!a)Categor.CloseJ
!a)CategorCon-.CloseJ
i* FnMen".D%Dis#o.&sS:;)ased then Se a )ase de dados E padr$o S:;
&2
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
FnMen".D%Dis#o.CoitJ 2n#erra o odo de transa*6es gravando as
endB altera*6es no )an#o de dados
;e)re-se da "tiliza*$o do o)1eto FIMen' ent$o E pre#iso de#larar a "nidade a ,"al
ele perten#e #o o #oando V0(0 Ma)ai.o da diretiva de #opila*$oNG
68 9.D5"7
ses
-Men"J 6 "enu Prin%ipal 7
3epare ,"e no in/#io desta Vnit ta)E e.iste "a o"tra de#lara*$o Vses' ap8s a
sess$o inter*ace' ent$o por ,"e n$o #olo#ar todas essas de#lara*6es e " l"gar s8@ 1
o
N ( Delphi
#ontrolar+ M#olo#ando o" reovendoN as Dnits ali #olo#adas Mdependendo dos o)1etos "tilizadosN
e U
o
N !odos os #oandos de#larados antes da de#lara*$o implementation M#o e.#e*$o de
eventos de #ria*$o do tipo onCreateN' ser$o e.e#"tados e objetos e nits -i#ar$o e e8ria
esperando sere #haados' ent$o E iprati#+vel #olo#ar nits ,"e s8 ser$o "tilizadas e tepo
de e.e#"*$o.
Contadores
( o)1eto Huer/ realiza #ons"ltas e odo S:;' no pr8.io #ap/t"lo o "tilizareos para
#riaros nossas #ons"ltas as' neste oento ele ser+ "tilizado para veri-i#ar ,"al o aior valor
arazenado no #apo #8digo.
A #ada novo registro deveos #riar ta)E " novo C(DnD&SC( Mle)ra do o)1eto
Ar/ContadorN. AlE disso' pre#isaos nos posi#ionar no prieiro #apo do #adastro'
isto ser+ realizado e dois eventos distintosG
1. Mar,"e o o)1eto 4a(Basi%o' e dC " d"plo #li,"e so)re o evento on%eKRecordG
procedre !Fn%asi#o.!a)%asi#o4eF3e#ordMDataSetG !DatasetNJ
begin
Fn%asi#o.2dit4(MnD&SC(.SetFo#"sJ 0osi#iona o #"rsor no o)1eto
endJ
()serve ,"e -oi "tilizado o o)1eto FIBasico' ent$o E pre#iso de#larar a "nidade a
,"al ele perten#e #o o #oando V0(0 Ma)ai.o da diretiva de #opila*$oNG
68 9.D5"7
ses
-%asi#oJ 6 Cadastro do BJsi%o 7
-Men"J 6 "enu Prin%ipal 7
U. Digite F11 e dC " d"plo #li,"e so)re o evento Be*orePostG
procedre !Fn%asi#o.!a)%asi#o%e-ore0ostMDataSetG !DatasetNJ
begin
i* DS%asi#o.State T ds&nsert then 7eri-i#a se E "a in#l"s$o na )ase
begin
:ryContador.A#tive GT FalseJ Desativa a :"ery
:ryContador.A#tive GT !r"eJ Ativa a :"ery
Kith :ryContador.FieldsROS do ()serve os le)retes
i* &s4"ll then Se o valor do #ontador E n"lo
&R
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
!a)%asi#oC(DnD&SC(.7al"e GT 1 Atri)"i 1 ao #apo C(DnD&SC(
else Sen$o
!a)%asi#oC(DnD&SC(.7al"e GT As&nteger X 1J Atri)"i ao #apo C(DnD&SC( a adi*$o
endJ de 1 ao valor do #ontador #apo
endJ
( #oando Kith E "tilizado #oo Etodo de ta,"igra-ia' para n$o es#reveros
v+rias vezes o eso noe de " deterinado o)1eto.
0or,"e n$o #olo#aros todo o #8digo no evento on%eKRecord @ 0or #a"sa do
#ontrole "lti-"s"+rio' iagine' " indiv/d"o A ini#ia a in#l"s$o de " CD' e " indiv/d"o B
ta)E ini#ia o"tra in#l"s$o' #oo o #8digo do indiv/d"o A ainda n$o -oi gravado no )an#o' ser+
dado o eso #8digo para o indiv/d"o B' isto n$o a#onte#er+ se o #8digo -or #al#"lado
oentos antes de ser gravado o registro' #o E o #aso do evento Be*orePost.
0ara #on-iraros as altera*6es para a )ase S:;' pressione novaente a te#la F11 e na
p+gina .vents' dC " d"plo #li#< so)re o evento A*terPostG
procedre !DMn%asi#o.!a)%asi#oA-ter0ostMDataSetG !DataSetNJ
begin
i* FnMen".D%Dis#o.&sS:;)ased then Se a )ase de dados E padr$o S:;
begin
FnMen".D%Dis#o.CoitJ Aravando as altera*6es da ta)ela
FnMen".D%Dis#o.Start!ransa#tionJ 3eini#ia o odo de transa*6es
endB
endB
6alidando os Campos
0ara n$o a#onte#er " d"pli#a*$o dos noes dos CDBs' "tilizareos para a #r/ti#a a
esa idEia do ,"e a#onte#e" #o o -or"l+rio de CategoriaG
1. Mar,"e o o)1eto 4a(Basi%o!'"GDISC'' e dC " d"plo #li,"e so)re o evento
OnNalidateG
procedre !DMn%asi#o.!a)%asi#o4onDis#o7alidateMSenderG !FieldNJ
begin
i* DS%asi#o.State in Rds2dit' ds&nsertS then Se o odo E de inser*$o o" edi*$o
i* !a)%asi#oCon-.FindmeyMR!a)%asi#o4(MnD&SC(SN then 0es,"isa o #apo digitado
begin
Fn%asi#o.2dit4(MnD&SC(.SetFo#"sJ Altera a posi*$o do #"rsor
raise 2.#eption.CreateMV4oe do CD d"pli#adoVr1OX Caso 1+ e.ista ostra ensage
VCli#< no )ot$o s;o#alizas e #aso de d5vidaVNJ de erro e ipede o #adastro
endJ
endJ
0ara ,"e o nosso "s"+rio es#olha soente as #ategorias e.istentesG
1. Mar,"e o o)1eto 4a(Basi%oSI>GC&4.>' e dC " d"plo #li,"e so)re o evento
OnNalidateG
procedre !DMn%asi#o.!a)%asi#oSignCateg7alidateMSenderG !FieldNJ
begin
i* DS%asi#o.State in Rds2dit' ds&nsertS then
i* not M!a)CategorCon-.FindmeyMR!a)%asi#oS&AnCA!2ASNN then ()serve o #oando %OT
&O
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
begin
Fn%asi#o.2ditS&AnCA!2A.SetFo#"sJ
raise 2.#eption.CreateMVSigla da #ategoria n$o e.isteVr1OX
VCli#< no )ot$o s;o#aliza Categorias e #aso de d5vidaVNJ
endJ
endJ
Co o Data"odule o nosso tra)alho 1+ est+ #on#l"/do' salve o o)1eto e #on-ire o
#8digoG
nit DM%asi#oJ
inter*ace
ses
SysDtils' IindoFs' Classes' Araphi#s' Controls' Fors' Dialogs' D%' D%!a)lesJ
tLpe
!DMn%asi#o T #lassM!DataMod"leN
!a)M"si#aCodnDis#oG !FloatFieldJ
!a)M"si#a4"nFai.aG !FloatFieldJ
!a)M"si#a4onM"si#aG !StringFieldJ
DS%asi#oG !DataSo"r#eJ
!a)%asi#oG !!a)leJ
!a)M"si#aG !!a)leJ
DSM"si#aG !DataSo"r#eJ
!a)%asi#oCon-G !!a)leJ
!a)CategorG !!a)leJ
!a)CategorCon-G !!a)leJ
DSCategorG !DataSo"r#eJ
!a)%asi#oCodnDis#oG !FloatFieldJ
!a)%asi#o4onDis#oG !StringFieldJ
!a)%asi#o!ipnDis#oG !StringFieldJ
!a)%asi#oFotnCapaG !%lo)FieldJ
!a)%asi#oSignCategG !StringFieldJ
:ryContadorG !:"eryJ
:ryContadorMAL(FC(DnD&SC(G !FloatFieldJ
procedre DMn%asi#oCreateMSenderG !()1e#tNJ
procedre DMn%asi#oDestroyMSenderG !()1e#tNJ
procedre !a)%asi#o4eF3e#ordMDataSetG !DataSetNJ
procedre !a)%asi#o%e-ore0ostMDataSetG !DataSetNJ
procedre !a)%asi#oA-ter0ostMDataSetG !DataSetNJ
procedre !a)%asi#o4onDis#o7alidateMSenderG !FieldNJ
procedre !a)%asi#oSignCateg7alidateMSenderG !FieldNJ
private
6 private de%larations 7
pblic
6 pu(li% de%larations 7
endJ
var
DMn%asi#oG !DMn%asi#oJ
implementation
68 9.D5"7
&S
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
ses
-%asi#o' 6 Cadastro do BJsi%o 7
-Men"J 6 "enu Prin%ipal 7
procedre !DMn%asi#o.DMn%asi#oCreateMSenderG !()1e#tNJ
begin
i* FnMen".D%Dis#o.&sS:;)ased then
FnMen".D%Dis#o.Start!ransa#tionJ
!a)Categor.(penJ
!a)CategorCon-.(penJ
!a)M"si#a.(penJ
!a)%asi#o.(penJ
!a)%asi#oCon-.(penJ
endJ
procedre !DMn%asi#o.DMn%asi#oDestroyMSenderG !()1e#tNJ
begin
!a)%asi#o.CloseJ
!a)%asi#oCon-.CloseJ
!a)M"si#a.CloseJ
!a)Categor.CloseJ
!a)CategorCon-.CloseJ
i* FnMen".D%Dis#o.&sS:;)ased then
FnMen".D%Dis#o.CoitJ
endJ
procedre !DMn%asi#o.!a)%asi#o4eF3e#ordMDataSetG !DataSetNJ
begin
Fn%asi#o.2dit4(MnD&SC(.SetFo#"sJ
endJ
procedre !DMn%asi#o.!a)%asi#o%e-ore0ostMDataSetG !DataSetNJ
begin
i* DS%asi#o.State T ds&nsert then
begin
:ryContador.A#tive GT FalseJ
:ryContador.A#tive GT !r"eJ
Kith :ryContador.FieldsROS do
i* &s4"ll then
!a)%asi#oC(DnD&SC(.7al"e GT 1
else
!a)%asi#oC(DnD&SC(.7al"e GT As&nteger X 1J
endJ
endJ
procedre !DMn%asi#o.!a)%asi#oA-ter0ostMDataSetG !DataSetNJ
begin
i* FnMen".D%Dis#o.&sS:;)ased then
begin
FnMen".D%Dis#o.CoitJ
FnMen".D%Dis#o.Start!ransa#tionJ
endJ
endJ
procedre !DMn%asi#o.!a)%asi#o4onDis#o7alidateMSenderG !FieldNJ
&X
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
begin
i* DS%asi#o.State in Rds2dit' ds&nsertS then
i* !a)%asi#oCon-.FindmeyMR!a)%asi#o4(MnD&SC(SN then
begin
Fn%asi#o.2dit4(MnD&SC(.SetFo#"sJ
raise 2.#eption.CreateMV4oe do CD d"pli#adoVr1OX
VCli#< no )ot$o s;o#alizas e #aso de d5vidaVNJ
endJ
endJ
procedre !DMn%asi#o.!a)%asi#oSignCateg7alidateMSenderG !FieldNJ
begin
i* DS%asi#o.State in Rds2dit' ds&nsertS then
i* not M!a)CategorCon-.FindmeyMR!a)%asi#oS&AnCA!2ASNN then
begin
Fn%asi#o.2ditS&AnCA!2A.SetFo#"sJ
raise 2.#eption.CreateMVSigla da #ategoria n$o e.isteVr1OX
VCli#< no )ot$o s;o#aliza Categorias e #aso de d5vidaVNJ
endJ
endJ
end.
A+%erando a @ane+a Criada
7aos novaente alterar a 1anela #riada' #oo 1+ -oi dito' vo" "sar " padr$o de 1anela
,"e a#hei #oo ideal' as vo#C poder+' -"t"raente' ta)E en#ontrar+ o se" pr8prio padr$o'
ent$o vaos as altera*6es' antes' le)re-se' E pre#iso entender e #opreender totalente o
#ap/t"lo anterior e o Data"odule #riado deve ter passado pela veri-i#a*$o se erros' para
veri-i#ar " o)1eto a partir do en" prin#ipal es#olha as op*6es Project Z 0LntaQ ChecT.
Deve o#orrer " erro na #l+"s"la Vses in-orando ,"e a "nidade *Basico n$o e.iste ne
o o)1eto FIBasico n$o -oi en#ontrado' ent$o antes de ,"al,"er passo #hae o o)1eto Form3 e
altere a propriedade %ame para FIBasico e salve o -or"l+rio #o o noe de *Basico' pode
novaente veri-i#ar a "nidade DMBasico ,"e desta vez n$o haver+ pro)leas.
Aproveite o o)1eto FIBasico para alterar a #l+"s"la ses logo a)ai.o da diretiva de
#opila*$o paraG
68 9.D5"7
ses
DM%asi#oJ 6 eferLn%ia ao Data"odule 7
Organi0ando os Panels
7aos passar para as altera*6es #o o)1eto 5GBasi%o. (s o)1etos da 1anela se en#ontra
distri)"/dos e trCs o)1etos Panel' o prieiro MPanel1N g"arda o o)1eto DB!avi#ator' o seg"ndo
MPanel2N g"arda os la)els e os #apos do ar,"ivo %AS&C( e o ter#eiro MPanelMN g"arda o o)1eto
DB>rid1 ,"e #ontrolar+ o ar,"ivo MDS&CA.
&&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Altere a propriedade Align do o)1eto PanelM' para al%one.
A"ente a 1anela do odo ,"e todos os #apos do o)1eto estre apare*a.
Colo,"e os o)1etos la(elN e Ima#e5'4GC&P& a direita dos o"tros #apos.
Depois de t"do arr"ado altere a propriedade Ato0croll no o)1eto S%rollBo@ para
Tre depois para False' isto -ar+ #o ,"e a )arra de rolage verti#al desapare*a.
Crie " ,"arto o)1eto Panel para #olo#ar os )ot6es' #on-ore as instr"*6es do
#ap/t"lo anterior' para -a#ilitar o tra)alho #hae o o)1eto 5GCate#' atravEs do Pro)e%t "anaa#er'
#li,"e so)re o o)1eto PanelM e pressione Ctrl*C #hae novaente o o)1eto 5orm2 e pressione
Ctrl*<' #rie " ter#eiro )ot$o e altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Caption pM5si#as ;a)el do o)1eto
Font MS Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!(4
SkCDD3&72.%M0
&age a ser ostrada no o)1eto
9eight U5 Alt"ra do o)1eto
9int Cadastro e an"ten*$o das 5si#as A1"da on-line para o o)1eto espe#/-i#o
4ae %"tM"si#a 4oe do o)1eto
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a
-ora de "a #ai.a de a1"da on-line
Iidth Y9 !aanho do o)1eto
3eorganize os trCs )ot6es no o)1eto PanelN
'odi!icando os campos e ,abels
2.#l"a o la)el Mo)1eto 0a(el1N e o #apo Mo)1eto .ditC'DGDISC'N ,"e -az re-erCn#ia ao
C(DnD&SC(.
Modi-i,"e a -onte dos #apos e la)els #on-ore des#rito no #ap/t"lo anterior.
Altere as propriedades Caption dos 0a(els paraG =d%omeA>' =dTipoA>' =CatedgoriaA>
e =dCapaA> respe#tivaente
Altere a propriedade Ato0i/e dos 0a(els para Tre
Modi-i,"e a propriedade 0tretch do o)1eto Ima#e5'4GC&P& para tre' isto -ar+ #o
,"e a iage da #apa -i,"e sepre de a#ordo #o o taanho do o)1eto.
Organi0ando os Panels
7aos organizar #ada o)1eto Panel por partesG
Objeto Panel(
&'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Modi-i,"e o o)1eto DB!avi#ator #on-ore des#rito no #ap/t"lo anterior.
0ara a propriedade )ints' es#reva novaente o a"./lio para #ada )ot$o o"' #hae o
-or"l+rio 5GCate# e #opie as des#ri*6es da propriedade )ints #o Ctrl*C e #hae
novaente o o)1eto D%4avigator e digite Ctrl*< dentro da propriedade.
Modi-i,"e ta)E o o)1eto Panel1 #on-ore des#rito no #ap/t"lo anterior e altere a
propriedade Caption para CDfs.
Objeto Panel)
Altere as propriedades )eight e Jidth para U1\ do o)1eto Ima#e5'4GC&P&.
Crie " novo o)1eto 0a(el e altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Caption pM5si#asG ;a)el do o)1eto
Font MS Sans Seri-' 4egrito' Y' Castanho !ipo de letra a ser ostrada no o)1eto
Fo#"sControl D%Arid1 Controle do -o#o
A"ente o o)1eto Panel2 de -ora a #a)er os o"tros o)1etos' organize os o)1etos da
seg"inte -oraG 4oe' !ipo' Categoria e M5si#as' ao lado #olo,"e a -oto. Dei.e o espa*o
de " #apo entre Categoria e M5si#as.
3eova o o)1eto .dit4IPGDISC' e e se" l"gar #rie o o)1eto DBCom(oBo@ '
en#ontrado na Component Palette p+gina Data Controls' e altere as seg"intes
propriedadesG
0ropriedade 7alor Des#ri*$o
DataSo"r#e DMn%asi#o.DS%asi#o DataSo"r#e vin#"lado
DataField !&0nD&SC( Capo de ta)ela
Font MS Sans Seri-' 4oral' Y' Az"l Marinho !ipo de letra a ser ostrada no o)1eto
9int Sele#ione o tipo A1"da on-line para o o)1eto espe#/-i#o
&tes AAAJ AADJ ADDJ e DDD &tens ,"e apare#er$o #oo op*6es do C(M%(
%(L' #olo,"e " e #ada linha.
4ae Co)o!&0nD&SC( 4oe do o)1eto
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a
-ora de "a #ai.a de a1"da on-line
4o o)1eto 0a(elM re#olo,"e a propriedade FocsControl apontando para o o)1eto
Com(o4IPGDISC'.
Objeto Panel*
Mar,"e o o)1eto D%Arid1 e altere as propriedades Align para al!one e Border0tLle para
(sSin#le' pressione Ctrl*E ar,"e o o)1eto 0crollBoQ e pressione Ctrl*<' a#erte o
o)1eto de -ora ,"e este #ai)a a)ai.o do o)1eto 0a(el1 MM5si#asGN.
2liine o o)1eto PanelM' #li,"e so)re ele e pressione Del.
'-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
'odi!icando a 3anela
Altere as propriedades Border1cons' Border0tLle e Position #on-ore des#rito no
#ap/t"lo anterior.
M"de a propriedade Caption para Cadastro.
Altere a propriedade Align do o)1eto Panel3 para alClient e a#erte as posi*6es no
-or"l+rio.
Salve o -or"l+rio e salve o pro1eto.
4o espa*o dei.ado entre os la)els de Categoria e M5si#a' #rie o o)1eto DB4e@t '
en#ontrado na Component Palette p+gina Data Controls' ,"e servir+ para ostrar o noe
da #ategoria sele#ionada' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
DataSo"r#e DMn%asi#o.DSCategor DataSo"r#e vin#"lado
DataField D2SnCA!2A Capo de ta)ela
Font MS Sans Seri-' 4oral' Y' Castanho !ipo de letra a ser ostrada no o)1eto
Crie agora trCs o)1etos SpeedButton ' en#ontrado na Component Palette p+gina
&dditionalG
Para o objeto 0peedBtton,G 0osi#ione-o ao a)ai.o do la)el Capa.
0ropriedade 7alor Des#ri*$o
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!
(4SkA4&MA!4.%M0
&age a ser ostrada no o)1eto
9eight U5 Alt"ra do o)1eto
9int C8pia iage da +rea de
tran-erCn#ia
A1"da on-line para o o)1eto espe#/-i#o
4ae %"t0aste 4oe do o)1eto
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
Iidth U5 !aanho do o)1eto
Para o objeto 0peedBtton3G 0osi#ione-o ao a)ai.o do o)1eto .ditC'DGC&4.>
0ropriedade 7alor Des#ri*$o
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!
(4Sk;A4!234A.%M0 Mve1a
di#aN
&age a ser ostrada no o)1eto
9eight U5 Alt"ra do o)1eto
9int 0es,"isa deterinada #ategoria A1"da on-line para o o)1eto espe#/-i#o
4ae %"t;o#Categ 4oe do o)1eto
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
Iidth U5 !aanho do o)1eto
Para o objeto 0peedBtton2G 0osi#ione-o ao lado do o)1eto But0o%Cate#
',
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
0ropriedade 7alor Des#ri*$o
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!
(4SkC3DF&;2U.%M0
&age a ser ostrada no o)1eto
9eight U5 Alt"ra do o)1eto
9int &nsere registro na ta)ela de
#ategoria
A1"da on-line para o o)1eto espe#/-i#o
4ae %"t&nsCateg 4oe do o)1eto
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
Iidth U5 !aanho do o)1eto
A -"n*$o de #ada )ot$o est+ e.pli#ada na propriedade hint' para os o)1etos
But0o%Cate# e ButInsCate# ireos nos aproveitar dos -or"l+rios 1+ #onstr"/dos anteriorente.
0rovavelente vo#C n$o ir+ en#ontrar o ar,"ivo ;A4!234A.%M0 soli#itado para o
seg"ndo )ot$o' tereos de #ri+-loG
1. Salve o -or"l+rio e -e#he o pro1eto' lo#alize Mno diret8rio deos do DelphiN e a)ra o
pro1eto RDiret8rioDelphiSkD2M(SkD%kMAS!A00kMAS!A00.D03
U. AtravEs do Pro)e%t "ana#er a)ra o -or"l+rio Sear%hDl#.
Z. ;o#alize o o)1eto Sear%hButton e #li,"e na propriedade PlLph.
[. 2s#olha o )ot$o 0ave=== e salve-o no diret8rio e noe proposto
MRDiret8rioDelphiSk&MAA2Sk%D!!(4Sk e ;A4!234A.%M0N.
5. 3etorne ao nosso pro1eto des#artando ,"ais,"er aviso para salvar o MAS!A00.D03.
-rabal&ando com 4rid7s
Faleos agora de " o)1eto espe#ial o Arid' espe#ial por ser " dos o)1etos de todo o
#on1"nto do Delphi o ais pr+ti#o e -+#il de "sar' ,"e n$o se le)ra no velho Clipper da -"n*$o
db(dit? @' ,"e n$o "tilizo" se"s re#"rsos para ostrar registros o" realizar #ons"ltas #o -iltros
espe#iais. ( o)1eto >rid E o =neto> deste o)1eto #o alg"ns re#"rsos ais sipli-i#ados' no total
s$o trCs os o)1etos >rid+sG
1. Strin#>rid - Coponente da "nidade >rid sendo "tilizado para' de -ora
sipli-i#ada' asso#iar Strin#s a "a grade #ontendo linhas e #ol"nas' en#ontrado
na Component Palette p+gina &dditional.
U. Draw>rid - Coponente da "nidade >rid ,"e perite ostrar "a
estr"t"ra de dados e.istentes no -orato de linhas e #ol"nas' en#ontrado na
Component Palette p+gina &dditional.
Z. DB>rid - Coponente da "nidade DB>rids ,"e ostrar dados de "
DataSet para " #oponente no -orato de linhas e #ol"nas' en#ontrado na
Component Palette p+gina Data Controls.
'3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
0or en,"anto vo" e deter a -alar do o)1eto DB>rid' ais tarde voltareos a -alar dos
o"tros' este o)1eto DB>rid E vin#"lado' ao DataSo"r#e' apresenta as seg"intes propriedades Mais
iportantes' alg"as ainda n$o en#ionadasNG
DataSo"r#eG 4oe do o)1eto DataSo"r#e vin#"ladoJ
FontG !ipo da letra a ser ostrada no #onte5do do o)1etoJ
(ptionsG sErie de op*6es de #ontrole Mse a op*$o 4rue -or sele#ionadaNG
dg(ditingG perite a edi*$o e adi*$o dos dadosJ
dgAlKaLs0hoK(ditorG ( grid entra a"toati#aente e odo de edi*$o' n$o
havendo a ne#essidade de pressionar (nter o" F3 Mdepende ,"e a propriedade
dg(diting 8 TreNJ
dgTitlesG 7ia)iliza o "so do t/t"lo de #ada #apoJ
dg1ndicatorG 9a)ilita o ponteiro de indi#a*$o da #ol"naJ
dgColmnResi/eG A #ol"na pode ser rediensionadaJ
dgCol+inesG 9a)ilita a separa*$o das #ol"nasJ
dgRoK+inesG 9a)ilita a separa*$o das linhasJ
dgTabsG Dse o pressionaento das te#las 4a( e Shif*4a( para se over dentro das
#ol"nasJ
dgRoK0electG Sele#iona' #o "a tar1a az"l' todas as #ol"nas de "a linhaJ
dgAlKaKs0hoK0electionG As #El"las do #rid s$o ostradas #onstanteente
sele#ionadas' eso ,"e este n$o detenha o -o#o.
dgCon*irmDeleteG Dse as te#las Ctrl*Del' para e.#l"ir dadosJ
dgCancelOn(QitG Se ,"al,"er in#l"s$o estiver pendente e -or dado sa/da no grid se
a valida*$o dos dados' a in#l"s$o E #an#elada. 0revine a in#l"s$o de registros
inv+lidos o" e )ran#o.
TitleFontG !ipo da letra a ser ostrada nos t/t"los do o)1eto.
(s #apos no o)1eto DB>rid s$o adi#ionados e #ontrolados atravEs do 5ields.ditor
( nosso o)1eto #rid ostrar+ apenas as 5si#as de #ada CD' para tanto altere as
seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Font MS Sans Seri-' 4egrito' Y' Castanho !ipo de letra a ser ostrada no o)1eto
9int M5si#as deste CD A1"da on-line para o o)1eto espe#/-i#o
(ptions Rdg!itles' dg&ndi#ator' dgCol;ines'
dg3oF;ines' dg3oFSele#t'
dgAlFaysShoFSele#tionS
(p*6es de #ontrole
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a
-ora de "a #ai.a de a1"da on-line
4$o lhe a#onselho "sar este o)1eto para realizar altera*6es e )ases de dados Mapesar
de isto ser poss/velN E ais pr+ti#o "tilizar "a 1anela separada para realizar este tra)alho' as
idEias -i#ar$o ais )e ordenadas' se #ada -or"l+rio #ontrolar "a 5ni#a entrada e ta)ela de
#ada vez.
Se vo#C est+ eio perdido #o isto t"do' n$o se desespere' siplesente #opare os
-or"l+rios para ver se n$o -alta nadaG
'2
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
%inalmente8 a programao
Agora -alta apenas o #8digo' pelo taanho do -or"l+rio e pelo n5ero de #ontroles 1+
d+ para pensaros ,"e pre#isaos prograar linhas e linhas de #8digo' engano f o aior tra)alho
1+ -oi -eito' o)serveG
Criando o Data"odule ao ser #haado -or"l+rioG
1. Cli,"e no )ot$o M4o##le 5orm/:nitN da SpeedBar' atE vo#C alternar para o Code
.ditor.
pblic
procedre ini#ioJ Criando a #haada para " pro#ediento p5)li#o.
endB
var
Fn%asi#oG !Fn%asi#oJ
implementation
68 9.D5"7

procedre !Fn%asi#o.&ni#ioJ Crie o in/#io do pro#ediento
begin
DMn%asi#o GT !DMn%asi#o.CreateMAppli#ationNJ Cria o Data"odule
S#reen.C"rsor GT #rDe-a"ltJ Faz o #"rsor -i#ar no -orato de Seta
ShoFModalJ Mostra o -or"l+rio FIBasico
endB
C8digo para eliinar o Data"odule' )asi#aente E o eso tra)alho realizado #o o
o)1eto FIBasicoG
'R
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
1. 4o o)1eto 5GBasi%o' dC " d"plo #li#< so)re o evento OnCloseG
procedre !Fn%asi#o.ForCloseMSenderG !()1e#tJ var A#tionG !CloseA#tionNJ
begin
i* FnMen".Criti#a2di#aoMDMn%asi#o.DS%asi#o' VCDV' VFe#harVN then ;e)ra da F"n*$o
begin
A#tion GT #a4oneJ Can#ela a sa/da da 1anela
2.itJ Sai da pro#ed"re
endB
S#reen.C"rsor GT #r9o"rAlassJ Faz o #"rsor virar "a ap"lheta
DMn%asi#o.FreeJ 2liina o Data"odule
endB
;e)re-se ,"e a -"n*$o Critica(dicao -az parte da Dnit *Men' ent$o E pre#iso
de#larar esta "nidade #o o #oando V0(0 Ma)ai.o da diretiva de #opila*$oNG
68 9.D5"7
ses
DM%asi#o' 6 eferLn%ia ao Data"odule 7
-Men"J 6 "enu Prin%ipal do Sistema 7 Colo#ado para o "so da F"n*$o Criti#a2di#ao
3epare ,"e no in/#io desta Vnit e.iste "a de#lara*$o Vses' ap8s o #oando
inter*ace. 2nt$o por ,"e n$o #olo#ar todas essas de#lara*6es e " l"gar s8@ 1.( Delphi
#ontrolar+ M#olo#ando o" reovendoN estas Dnits ali #olo#adas Mdependendo dos o)1etos
"tilizadosN e U.!odos os #oandos de#larados antes da de#lara*$o implementation M#o e.#e*$o
de eventos de #ria*$o. 2..G onCreateN' ser$o e.e#"tados e objetos e nits -i#ar$o e e8ria
esperando sere #haados' ent$o E iprati#+vel #olo#ar nits ,"e s8 ser$o "tilizadas e tepo
de e.e#"*$o.
Cons$lta
C8digo para pes,"isar os registros das ta)elas' )asi#aente "tilizareos o eso
tra)alho realizado #o o o)1eto FICategG
1. DC " d"plo #li#< so) o o)1eto But0o%ali$arG
procedre !Fn%asi#o.%"t;o#alizarCli#<MSenderG !()1e#tNJ
var
()10es,"isaG StringJ
begin
i* FnMen".Criti#a2di#aoMDMn%asi#o.DS%asi#o' VCDV' V;o#alizarVN then ;e)ra da F"n*$o
2.itJ
()10es,"isa GT !a)%asi#o4(MnD&SC(.7al"eJ
i* &np"t:"eryMV0es,"isaV'V2ntre #o o noe do CD Mo" parteN.V' ()10es,"isaN then
!a)%asi#o.Find4earestMR()10es,"isaSNJ
endJ
;e)re-se ,"e a -"n*$o 1npt]erL -az parte da Dnit Dialogs' ent$o E pre#iso
de#larar esta "nidade #o o #oando V0(0 Ma)ai.o da diretiva de #opila*$oNG
68 9.D5"7
'O
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
ses
DM%asi#o' 6 eferLn%ia ao Data"odule 7
-Men"' 6 "enu Prin%ipal do Sistema 7
DialogsJ 6 >erente de "ensa#ens 7 Colo#ado para o "so da F"n*$o &np"t:"ery
Desta vez -oi "tilizado o #oando Find%earest' este #oando #ons"lta por parte
ini#ial do #8digo en#ontrado " #8digo ig"al o" aior ,"e o pes,"isado' n$o E pre#iso ao
"s"+rio le)rar o noe #opleto #oo no #oando FindUeL. AtenoG o #oando
Find%earest n$o retornar+ "a vari+vel boolean M!r"e o" False #oo res"ltado da pes,"isaN
ent$o n$o se -az a ne#essidade de #r/ti#as so)re o eso. Salvo e.#e*$o se o #apo -or tipo
n"Eri#o o" tipo data ent$o "tilize este #oando e #on1"nto #o o #oando TrL. 7e1a no
pr8.io #ap/t"lo #oo.
( #8digo para o )ot$o ,"e lo#alizar+ " registro na ta)ela de #ategoria ser+ tratado no
pr8.io #ap/t"lo.
0ara inserir novos registros na ta)ela de #ategoria "tilizareos o -or"l+rio #onstr"/do
anteriorente' a 5ni#a di-eren*a E ,"e desta vez deveos estar e odo de edi*$oG
1. DC " d"plo #li#< so)re o o)1eto ButInsCate#G
procedre !Fn%asi#o.%"t&nsCategCli#<MSenderG !()1e#tNJ
begin
i* not MDS%asi#o.State in Rds2dit' ds&nsertSN then Se n$o estiver e estado de edi*ao o"
begin in#l"s$o
MessageDlgMV7o#C n$o est+ no odo de edi*$ofV' 2nvia ensage de erro
t&n-oration' R)(mS' ONJ
e.itJ
end
S#reen.C"rsor GT #r9o"rAlassJ Faz o #"rsor virar "a ap"lheta
i* FnMen".D%Dis#o.&sS:;)ased then
FnMen".D%Dis#o.CoitJ Aravaos as altera*6es no )an#o de dados
Kith !FnCateg.CreateMSel-N do Cria o -or"l+rio na +rea de e8ria
begin
&ni#ioJ Chaa o -or"l+rio
FreeJ 2liina o -or"l+rio da e8ria
endJ
i* FnMen".D%Dis#o.&sS:;)ased then Se a )ase de dados E padr$o S:;
FnMen".D%Dis#o.Start!ransa#tionJ &ni#ia o odo de transa*6es
S#reen.C"rsor GT #rDe-a"ltJ Faz o #"rsor -i#ar no -orato de Seta
endJ
4$o es,"e*a de de#larar a Vnit deste -or"l+rioG
68 9.D5"7
ses
DM%asi#o' 6 eferLn%ia ao Data"odule 7
-Men"' 6 "enu Prin%ipal do Sistema 7
Dialogs' 6 >erente de "ensa#ens 7
-CategJ 6 Cadastro de Cate#orias 7
'S
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
-rabal&ando com a )rea de -rans!er9ncia
4a aioria dos apli#ativos para IindoFs E #o"n en#ontraros os #oandos 3e#ortar'
Copiar e Colar' o -aoso Ct7CopL7Paste' isto E realizado "tilizando a +rea de trans-erCn#ia do
IindoFsG
S$o trCs os #oandos ,"e -aze o tra)alho na +rea de trans-erCn#iaG
()1eto.CtToClipboard' envia o #onte5do do o)1eto para +rea de trans-erCn#iaJ e
()1eto.CopLToClipboard' -az "a #8pia do #onte5do do o)1eto na +rea de trans-erCn#ia.
()1eto.PasteFromClipboard' traz para o #onte5do do o)1eto da +rea de trans-erCn#iaJ
0r8.io passo' o #8digo para o )ot$o ,"e peritir+ trazer "a iage arazenada na
+rea de trans-erCn#ia do IindoFs MSalva #o o "tilit+rio 0aint%r"sh' por e.eploN para o
#apo da FotoG
1. DC " d"plo #li#< so)re o o)1eto ButPasteG
procedre !Fn%asi#o.%"t0asteCli#<MSenderG !()1e#tNJ
begin
&ageF(!nCA0A.0asteFroClip)oardJ
endB
:tili0ando o objeto Open"ialog
D al"no "a vez e s"geri" "a o"tra aneira de #olo#ar a -ig"ra' ao invEs de se
"tilizar da +rea de trans-erCn#ia' poder/aos #haar o ar,"ivo M.%M0N diretaente' isto E
realizado #o o "so de " o)1eto 'penDialo# ' en#ontrado na Component Palette p+gina
Dialo#' #olo,"e-o no -or"l+rio e altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Filter Ar,"ivos )itapeo.%M0 Sele#iona os tipos de ar,"ivo ,"e ser$o a)ertos
4ae A)re%p 4oe do ()1eto
0r8.io passo' o #8digo para o )ot$o ,"e peritir+ trazer "a iage e ar,"ivo .%M0
para o #apo da FotoG
1. DC " d"plo #li#< so)re o o)1eto ButPasteG
procedre !Fn%asi#o.%"t0asteCli#<MSenderG !()1e#tNJ
begin
1* A)re%p.2.e#"te then 7eri-i#a se -oi #li#ado e (m
&ageFotnAostra.0i#t"re.;oadFroFileM A)re%p.File4ae NJ Carrega o ar,"ivo
endB
2s#olha a aneira ,"e ais lhe agrada.
("tro o)1eto interessante E o o)1eto 0aveDialog' ve1a o"tras "tiliza*6es so)re eles no
apYndice F
'X
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Criando o !orm$l)rio para o cadastro das msicas
Constr"ireos o -or"l+rio para #adastrar as 5si#as' #rie o -or"l+rio #o )ase no
-or"l+rio #riado para a ta)ela de #ategoria e -a*a as seg"intes altera*6esG
Altere a propriedade name do -or"l+rio para FIMV01CA.
Chae o Data"odule DMBasico e #rie ais " o)1eto 44a(le' para -azeros as #r/ti#as
das 5si#as d"pli#adas e altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Data)ase4ae %aseDis#o 4oe do %an#o de Dados o" a lo#aliza*$o do
diret8rio das ta)elas
!a)le4ae MDS&CA 4oe e.terno da ta)ela
4ae !a)M"si#aCon- 4oe do o)1eto
&nde.Field4aes CodnDis#oJ4"nFai.a 4oe do #apo inde.ado
3ead(nly !r"e Soente leit"ra
4$o es,"e*a de alterar o prograa do Data"odule para a)rir e -e#har a nova ta)ela e
#olo,"e a #r/ti#a para a ta)ela de 5si#a' evento OnNalidate do o)1eto TabMsica%mIFaiQaG
procedre !DMn%asi#o.!a)M"si#a4"nFai.a7alidateMSenderG !FieldNJ
begin
i* DSM"si#a.State in Rds2dit' ds&nsertS then
begin
!a)M"si#aCon-.2ditmeyJ
!a)M"si#aCon-.Field%y4aeMVC(DnD&SC(VN.AsFloat GT !a)M"si#aCodnDis#o.7al"eJ
!a)M"si#aCon-.Field%y4aeMV4DMnFA&LAVN.AsFloat GT !a)M"si#a4"nFai.a.7al"eJ
i* !a)M"si#aCon-.Aotomey then
begin
FnM"si#a.2dit4"nFai.a.SetFo#"sJ
raise 2.#eption.CreateMVFai.a do CD d"pli#adaVNJ
endJ
endJ
endJ
3epare no "so do #oando PotoUeL ao invEs do #oando FindUeL> ele -oi
"tilizado por se tratar de "a #have #oposta.
Colo,"e ta)E a #r/ti#a para a ta)ela de 5si#a' evento On%eKRecord do o)1eto
TabMsicaG
procedre !DMn%asi#o.!a)M"si#a4eF3e#ordMDataSetG !DataSetNJ
begin
FnM"si#a.2dit4DMnFA&LA.SetFo#"sJ
endJ
Da 5ltia #r/ti#a ser+ para #on-iraros as altera*6es para a )ase S:;' pressione
novaente a te#la F11 e na p+gina .vents' dC " d"plo #li#< so)re o evento A*terPostG
procedre !DMn%asi#o.!a)M"si#aA-ter0ostMDataSetG !DataSetNJ
begin
i* FnMen".D%Dis#o.&sS:;)ased then Se a )ase de dados E padr$o S:;
begin
'&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
FnMen".D%Dis#o.CoitJ Aravando as altera*6es da ta)ela
FnMen".D%Dis#o.Start!ransa#tionJ 3eini#ia o odo de transa*6es
endB
endB
Dei.e apenas o )ot$o Fe#harJ
3eova o ;a)el e o D%2dit do #apo C(DnD&SC(J e
M"de a propriedade do BorderSt/le para bsDialog.
()serve e #opare #o o desenho do -or"l+rio a)ai.oG
Altere ini#ialente' a #l+"s"la "ses para o DMBasico' e seg"ida a propriedade de todos
os #apos e do D%4avigator para DMIBasico=D0Msica.
A prograa*$o do -or"l+rio E )asi#aente a esa para as ta)elas' ent$o ao invEs de
perder tepo e espa*o -alando t"do de novo' o)serve o #8digo #opleto e note ,"e a
5ni#a "dan*a est+ e prevenir para ,"e o -or"l+rio n$o se1a -e#hado e tepo de
edi*$o o" inser*$o e #o o estado do #"rsorG
nit -M"si#aJ
inter*ace
ses
SysDtils' IindoFs' Messages' Classes' Araphi#s' Controls'
StdCtrls' Fors' D%Ctrls' D%' %"ttons' Mas<' 2.tCtrlsJ
tLpe
!FnM"si#a T #lassM!ForN
S#roll%o.G !S#roll%o.J
;a)elUG !;a)elJ
2dit4"nFai.aG !D%2ditJ
;a)elZG !;a)elJ
2dit4onM"si#aG !D%2ditJ
;a)el[G !;a)elJ
2dit4onA"torG !D%2ditJ
;a)el5G !;a)elJ
2dit!pnM"si#aG !D%2ditJ
D%4avigatorG !D%4avigatorJ
0anel1G !0anelJ
0anelUG !0anelJ
''
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
0anelZG !0anelJ
%"tFe#harG !%it%tnJ
procedre ForShoFMSenderG !()1e#tNJ
procedre ForCloseMSenderG !()1e#tJ var A#tionG !CloseA#tionNJ
private
6 private de%larations 7
pblic
6 pu(li% de%larations 7
endJ
var
FnM"si#aG !FnM"si#aJ
implementation
68 9.D5"7
ses
DM%asi#oJ 6 eferLn%ia ao Data"odule 7
procedre !FnM"si#a.ForShoFMSenderG !()1e#tNJ
begin 2vento On0hoK do o)1eto FIMsica
S#reen.C"rsor GT #rDe-a"ltJ
endJ
procedre !FnM"si#a.ForCloseMSenderG !()1e#tJ var A#tionG !CloseA#tionNJ
begin 2vento OnClose do o)1eto FIMsica
i* FnMen".Criti#a2di#aoMDMn%asi#o.DSM"si#a' VM5si#aV' V-e#harV N then
begin
A#tion GT #a4oneJ
e.itJ
endJ
S#reen.C"rsor GT #r9o"rAlassJ
endJ
end.
4$o E pre#iso se preo#"par #o a grava*$o para o #apo C(DnD&SC(' isto ser+
-eito a"toati#aente pelo Delphi' antendo a integridade re-eren#ial.
Salve o -or"l+rio #o o noe f"usi%a.
7aos agora alterar o )ot$o do -or"l+rio prin#ipal' o)1eto (ut"usi%a' ,"e ser+
"sado para #haar este seg"ndo.
procedre !Fn%asi#o.%"tM"si#aCli#<MSenderG !()1e#tNJ
begin
i* DMn%asi#o.DS%asi#o.State in Rds2dit' ds&nsertS then
begin
MessageDlgMVSalve a edi*$o do CD antes de 2ditar as 5si#asfV't&n-oration' R)(<S' ONJ
2.itJ
endJ
S#reen.C"rsor GT #r9o"rAlassJ
i* FnMen".D%Dis#o.&sS:;)ased then
FnMen".D%Dis#o.CoitJ
Kith !FnM"si#a.CreateMSel-N do Criaos o -or"l+rio e e8ria
,--
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
begin
ShoFModal Chaareos a,"i o novo -or"l+rio
FreeJ 2liinaos o For"l+rio
endJ
i* FnMen".D%Dis#o.&sS:;)ased then
FnMen".D%Dis#o.Start!ransa#tionJ
S#reen.C"rsor GT #rDe-a"ltJ
endJ
4$o es,"e*a de adi#ionar a propriedade ses
68 9.D5"7
ses
DM%asi#o' 6 eferLn%ia ao Data"odule 7
-Men"' 6 "enu Prin%ipal do Sistema 7
Dialogs' 6 >erente de "ensa#ens 7
-Categ' 6 Cadastro de Cate#orias 7
-M"si#aJ 6 Cadastro de "Osi%as 7
4$o es,"e*a ta)E de retirar os o)1etos 5G"usi%a e 5GBasi%o da #ria*$o
a"to+ti#a' op*$o do en" prin#ipal #li,"e e Options Z Project===' ,"al,"er d5vida #ons"lte o
#ap/t"lo anterior.
Criando novos Procedimentos 4lobais
7aos #riar ais alg"ns pro#edientos glo)ais' para a nosso prieiro pro#ediento note
as #haadas aos -or"l+rios e.ternos 5GCate# e 5G"usi%aG
S#reen.C"rsor GT #r9o"rAlassJ
i* FnMen".D%Dis#o.&sS:;)ased then
FnMen".D%Dis#o.CoitJ
...
...
i* FnMen".D%Dis#o.&sS:;)ased then
FnMen".D%Dis#o.Start!ransa#tionJ
S#reen.C"rsor GT #rDe-a"ltJ
(s #oandos listados se repete tanto para o pro#ediento Bt1nsCategClicT e para o
pro#ediento BtMsicaClicT' #hae o -or"l+rio FIMen e #rie o seg"inte pro#edientoG
pblic
procedre 0reparaM!ipoG )ooleanNJ A,"i
*nction Criti#a2di#aoMDS(rigeG !DataSo"r#eJ Do:"e' AntesDeG StringN G )ooleanJ
endJ
var
...
...
procedre !FnMen".0reparaM!ipoG )ooleanNJ
begin
i* tipo then Se o valor da vari+vel tipo re#e)ida -or verdadeiro
begin
S#reen.C"rsor GT #r9o"rAlassJ Faz a prieira parte
i* D%Dis#o.&sS:;)ased then
,-,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
D%Dis#o.CoitJ
end
else Sen$o
begin
i* D%Dis#o.&sS:;)ased then Faz a seg"nda parte
D%Dis#o.Start!ransa#tionJ
S#reen.C"rsor GT #rDe-a"ltJ
endJ
endJ
Modi-i,"e agora a)os os pro#edientos do o)1eto FIBasicoG
procedre !Fn%asi#o.%"t&nsCategCli#<MSenderG !()1e#tNJ
begin
...
...
FnMen".0reparaM!r"eNJ A,"i
Kith !FnCateg.CreateMSel-N do
begin
&ni#ioJ
FreeJ
endJ
FnMen".0reparaMFalseNJ A,"i
endJ
procedre !Fn%asi#o.%"tM"si#aCli#<MSenderG !()1e#tNJ
begin
...
...
FnMen".0reparaM!r"eNJ A,"i
Kith !FnM"si#a.CreateMSel-N do
begin
&ni#ioJ
FreeJ
endJ
!a)M"si#a.3e-reshJ
FnMen".0reparaMFalseNJ A,"i
endJ
D seg"ndo pro#ediento glo)al pode ser #riado veri-i#ando os eventos A*terPost dos
DataMod"les DmGCate# e D"GBasi%o Meste seg"ndo e dois l"garesNJ o)servaos o eso
pro#edientoG
i* FnMen".D%Dis#o.&sS:;)ased then
begin
FnMen".D%Dis#o.CoitJ
FnMen".D%Dis#o.Start!ransa#tionJ
endB
Criaos ent$o o seg"inte pro#ediento no -or"l+rio 5G"enuG
pblic
procedre Arava%an#o A,"i
procedre 0reparaM!ipoG )ooleanNJ
*nction Criti#a2di#aoMDS(rigeG !DataSo"r#eJ Do:"e' AntesDeG StringN G )ooleanJ
endJ
var
,-3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
...
...
procedre !FnMen".Arava%an#oJ
begin
i* D%Dis#o.&sS:;)ased then 2)"tireos os #oandos p"ros a,"i
begin
D%Dis#o.CoitJ
D%Dis#o.Start!ransa#tionJ
endB
endB
Agora s")stit"a os eventos nos dos DataMod"les DmGCate# e D"GBasi%oJ pela seg"inte
#haada ao pro#ediento
begin
FnMen".Arava%an#oJ
endJ
3epare ta)E ,"e -oi retirado das -"n*6es ,"e -i#ara no -or"l+rio FnMen" as
re-erCn#ias da )ase de dados ao -or"l+rio Mera FIMen=DBDisco e -i#o" siplesente
DBDiscoN.
A+%erando o Men& ,ara re*e.er o 6orm&+Brio
Agora -inalente vaos rodar nosso -or"l+rio' para tanto pre#isaos #ha+-lo atravEs
do en" prin#ipal para istoG
1. Chae novaente o -or"l+rio FIMenG no en" prin#ipal es#olha NieK e Project
Manager' ar,"e o o)1eto e #li,"e so)re o )ot$o NieK *orm.
U. Cli,"e e ArMivo' Cadastro' #olo,"e o seg"inte #8digoG
procedre !FnMen".Cadastro1Cli#<MSenderG !()1e#tNJ
begin
S#reen.C"rsor GT #r9o"rAlassJ !rans-ora o #"rsor e "a ap"lheta
Fn%asi#o GT !Fn %asi#o.CreateMAppli#ationNJ Cria o -or"l+rio e e8ria
Fn %asi#o.&ni#ioJ Chaa o -or"l+rio atravEs da +rea a)erta
Fn %asi#o.FreeJ ;i)era a +rea a)erta
S#reen.C"rsor GT #rDe-a"ltJ !rans-ora o #"rsor e "a seta
endJ
Z. ( o)1eto 5GBasi%o -az parte da Dnit *Basico ent$o E ne#ess+rio -azer o "so desta Dnit'
para tanto insira o seg"inte #8digo Ma)ai.o da diretiva de #opila*$oNG
68 9.D5"7
ses
-So)re' 6 Kanela do So(re o Sistema ... 7
-Categ' 6 :tili$ada para o %adastro de Cate#orias 7
-%asi#oJ 6 :tili$ada para o %adastro de CD+s 7
4$o es,"e*a de retirar o -or"l+rio 5GBasi%o da lista de -or"l+rios #riados
a"toati#aente.
[. Saia do Code .ditor e salve o -or"l+rio e o pro1eto.
,-2
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
5. 0odeos agora salvar e testar o -or"l+rio #opleto' para in#l"ir alg"as iagens
"tilize o PaintBrush do IindoFs' o" o"tro "tilit+rio ,"al,"er.
\. Se alg"a #oisa de" errada' releia o #ap/t"lo' o" ent$o #on-ira todo o #8digoG
nit -%asi#oJ
inter*ace
ses
SysDtils' IindoFs' Messages' Classes' Araphi#s' Controls'
StdCtrls' Fors' D%Ctrls' D%' D%Arids' %"ttons' Arids' Mas<' 2.tCtrlsJ
tLpe
!Fn%asi#o T #lassM!ForN
S#roll%o.G !S#roll%o.J
;a)elUG !;a)elJ
2dit4onDis#oG !D%2ditJ
;a)elZG !;a)elJ
;a)el[G !;a)elJ
&ageFotnCapaG !D%&ageJ
;a)el5G !;a)elJ
2ditSignCategG !D%2ditJ
D%4avigatorG !D%4avigatorJ
0anel1G !0anelJ
0anelUG !0anelJ
0anel[G !0anelJ
%"tFe#harG !%it%tnJ
%"t;o#alizarG !%it%tnJ
%"tM"si#aG !%it%tnJ
;a)el1G !;a)elJ
Co)o!&0nD&SC(G !D%Co)o%o.J
D%Arid1G !D%AridJ
D%!e.t1G !D%!e.tJ
%"t;o#CategG !Speed%"ttonJ
%"t&nsCategG !Speed%"ttonJ
%"t0asteG !Speed%"ttonJ
6 A)re%pG !(penDialogJ Se vo%L utili$ou o o()eto 'penDialo# 7
procedre ForCloseMSenderG !()1e#tJ var A#tionG !CloseA#tionNJ
procedre %"t;o#alizarCli#<MSenderG !()1e#tNJ
procedre %"t&nsCategCli#<MSenderG !()1e#tNJ
procedre %"t0asteCli#<MSenderG !()1e#tNJ
procedre %"tM"si#aCli#<MSenderG !()1e#tNJ
private
6 private de%larations 7
pblic
procedre ini#ioJ
endJ
var
Fn%asi#oG !Fn%asi#oJ
implementation
68 9.D5"7
ses
,-R
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
DM%asi#o' 6 eferLn%ia ao Data"odule 7
-Men"' 6 "enu Prin%ipal do Sistema 7
Dialogs' 6 >erente de "ensa#ens 7
-Categ' 6 Cadastro de Cate#orias 7
-M"si#aJ 6 Cadastro de "Osi%as 7
procedre !Fn%asi#o.&ni#ioJ
begin
DMn%asi#o GT !DMn%asi#o.CreateMAppli#ationNJ
S#reen.C"rsor GT #rDe-a"ltJ
ShoFModalJ
endJ
procedre !Fn%asi#o.ForCloseMSenderG !()1e#tJ var A#tionG !CloseA#tionNJ
begin
i* FnMen".Criti#a2di#aoMDMn%asi#o.DS%asi#o' VCDV' VFe#harVN then
begin
A#tion GT #a4oneJ
2.itJ
endJ
S#reen.C"rsor GT #r9o"rAlassJ
DMn%asi#o.FreeJ
endJ
procedre !Fn%asi#o.%"t;o#alizarCli#<MSenderG !()1e#tNJ
var
()10es,"isaG 0tringJ
begin
i* FnMen".Criti#a2di#aoMDMn%asi#o.DS%asi#o' VCDV' V;o#alizarVN then
2.itJ
()10es,"isa GT DMn%asi#o.!a)%asi#o4onDis#o.7al"eJ
i* &np"t:"eryMV0es,"isaV'V2ntre #o o noe do CD Mo" parteN.V' ()10es,"isaN then
DMn%asi#o.!a)%asi#o.Find4earestMR()10es,"isaSNJ
endJ
procedre !Fn%asi#o.%"t&nsCategCli#<MSenderG !()1e#tNJ
begin
i* not MDMn%asi#o.DS%asi#o.State in Rds2dit' ds&nsertSN then
begin
MessageDlgMV7o#C n$o est+ no odo de edi*$ofV't&n-oration'R)(mS'ONJ
e.itJ
endJ
FnMen".0reparaM!r"eNJ
Kith !FnCateg.CreateMSel-N do
begin
&ni#ioJ
FreeJ
endJ
FnMen".0reparaMFalseNJ
endJ
procedre !Fn%asi#o.%"t0asteCli#<MSenderG !()1e#tNJ
begin
,-O
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
&ageF(!nCA0A.0asteFroClip)oardJ
endJ
6 'u se vo%L utili$ou o o()eto 'penDialo#
procedre !Fn%asi#o.%"t0asteCli#<MSenderG !()1e#tNJ
begin
1* A)re%p.2.e#"te then
&ageFotnAostra.0i#t"re.;oadFroFileM A)re%p.File4ae NJ
endB
7
procedre !Fn%asi#o.%"tM"si#aCli#<MSenderG !()1e#tNJ
begin
i* DMn%asi#o.DS%asi#o.State in Rds2dit' ds&nsertS then
begin
MessageDlgMVSalve a edi*$o do CD antes de 2ditar as 5si#asfV't&n-oration' R)(<S' ONJ
2.itJ
endJ
FnMen".0reparaM!r"eNJ
Kith !FnM"si#a.CreateMSel-N do
begin
&ni#ioJ
FreeJ
endJ
FnMen".0reparaMFalseNJ
endJ
end.
Coandos e s"as -"n*6es' por orde de apari*$oG
Kith Rregistro o" o)1etoS do R#oandosS - Cria " Etodo de re-erCn#ia para o registro o" objeto.
Rta)elaS.Find%earest - realiza "a pes,"isa apro.iada na ta)ela.
,-S
Ca,-%&+o VII
-rabal&ando com cons$ltas
!odo " pro1eto pode ir por ralo a)ai.o #aso o "s"+rio n$o #onsiga "a aneira e-i#az e
e-i#iente para lo#alizar se"s registros perdidos' as #ons"ltas as ta)elas deve a".iliar o "s"+rio na
tare-a de le)r+-lo ,"al o #8digo #orreto para deterinada #ategoria' e as #ons"ltas aos CDBs
deve ser r+pidas e pr+ti#as' sen$o' -i#aria "ito ais pr+ti#o e -+#il pes,"isar an"alente
#ada CD tentando en#ontrar deterinada 5si#a do ,"e a#essar o #op"tador para realizar tal
tare-a.
Criando *ons&+%as ,ara %a.e+as
( nosso )ot$o de +ocali/ar Mo)1eto bt+ocali/arN no -or"l+rio FICateg' n$o E ne
" po"#o aig+vel #o o "s"+rio' ele soli#ita apenas " #8digo para lo#alizar "a deterinada
#ategoria' as se o nosso "s"+rio n$o le)rar deste #8digo@ Maneira idCnti#a a#onte#e #o o
nosso )ot$o de pes,"isa no o)1eto FIBasico.
-rabal&ando com 4rid7s
( o)1eto DBPrid ostrado no #ap/t"lo anterior servir+ per-eitaente para #riaros "a
1anela ,"e perita ao "s"+rio "a lo#aliza*$o ais r+pida e pr+ti#a de " deterinado registro'
vaos ao tra)alhoG
&ni#ialente Cli,"e no )ot$o M4eF ForN na Speed Bar' o" no en" prin#ipal a
Cli,"e no en" prin#ipal a op*$o File e %eK===' e !ew Items' na p+gina !ew e #li,"e
no o)1eto entit"lado 5orm e altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
%orderStyle )sDialog 2stilo da )orda do -or"l+rio
Caption 0es,"isa Categoria ;a)el do o)1eto M!ar1a az"l do -or"l+rioN
4ae FnSelCate 4oe do o)1eto
0osition poS#reenCenter 0osi*$o da 1anela M#entralizadoN
Crie para esta nova 1anela "a rela*$o #o o Data"odule DMnModelo #olo#ando-o na
#l+"s"la Vses' a)ai.o da diretiva de #opila*$oG
68 9.D5"7
ses
DMModeloJ 6 eferLn%ia ao Data"odule 7
1O7
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Crie para esta nova 1anela os seg"intes o)1etosG
DB%avigator Men#ontrado na p+gina Data ControlsN' altere as seg"intes
propriedadesG
0ropriedade 7alor Des#ri*$o
DataSo"r#e DMnModelo.DSCategor DataSo"r#e vin#"lado M#aso esta op*$o n$o este1a
dispon/vel a)ra o Data"odule DMIModeloN
9ints D e #ada linhaG 0rieiro'
Anterior' 0r8.io e ]ltio
!8pi#os para a1"da on-line do o)1eto espe#/-i#o
;e-t Y 0osi*$o a es,"erda
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
7isi)le%"ttons Rn)First' n)0rior' n)4e.t' n);astS %ot6es vis/veis
!op Y DistQn#ia do topo
Iidth 11Z ;arg"ra do o)1eto
DBPrid Men#ontrado na p+gina Data ControlsN' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
DataSo"r#e DMnModelo.DSCategor DataSo"r#e vin#"lado
Font MS Sans Seri-' noral' Y' az"l
arinho
!ipo da letra a ser ostrada no #onte5do do dbPrid
;e-t Y 0osi*$o H es,"erda
9eight 1[5 Alt"ra do o)1eto
(ptions Rdg!itles' dg&ndi#ator' dgCol;ines'
dg3oF;ines' dg3oFSele#t'
dgAlFaFsShoFSele#tionS
(p*6es de e.e#"*$o para o o)1eto
!itleFont MS Sans Seri-' negrito' Y'
Castanho
!ipo de letra a ser ostrada no t/t"lo do dbPrid
!op [Y DistQn#ia do topo
Iidth Z75 ;arg"ra do o)1eto
MasT(dit Men#ontrado na p+gina &dditionalN' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Font MS Sans Seri-' noral' Y' az"l arinho !ipo de letra a ser ostrada no o)1eto
;e-t 5\ Alinhaento a es,"erda
4ae 2dt!re#ho 4oe do o)1eto
!e.t Conte5do do o)1eto
Iidth 97 ;arg"ra do o)1eto
!op 199 DistQn#ia do topo
2ditMas< _aaJOJn Cria "a +s#ara de edi*$o para o #apo.
+abel Men#ontrado na p+gina StandardN' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Caption SiglaG ;a)el do o)1eto
Fo#"s 2dt!re#ho Controle para a posi*$o do #"rsor
Font MS Sans Seri-' negrito' Y'
Castanho
!ipo de letra a ser ostrada no o)1eto
;e-t Y Alinhaento a es,"erda
!op UO1 DistQn#ia do topo
,-&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
BitBtn Men#ontrado na p+gina &dditionalN' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
mind )<(m Deterina a #lasse a ser "tilizada pelo o)1eto'
a"toati#aente ser$o alteradas as propriedadesG
Caption' PlLph e ModalReslt
Caption p(m ;a)el do o)1eto
Font MS Sans Seri-' noral' Y' preto !ipo de letra a ser ostrada no o)1eto
9eight U5 Alt"ra do o)1eto
9int Con-ira a pes,"isa A1"da on-line para o o)1eto espe#/-i#o
;e-t 1\ Alinhaento a es,"erda
4ae %"t(< 4oe do o)1eto
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
Spa#ing ZO 2spa*o entre o PlLph e o +abel
!op U[Y DistQn#ia do topo
Iidth Y9 ;arg"ra do o)1eto
BitBtn Men#ontrado na p+gina &dditionalN' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
mind )<Can#el Deterina a #lasse a ser "tilizada pelo o)1eto'
a"toati#aente ser$o alteradas as propriedadesG
Caption' PlLph e ModalReslt
Caption pCan#ela ;a)el do o)1eto
Font' 9eight'
ShoF9int' !op e
Iidth
idCnti#a ao o)1eto BtOT !ipo de letra a ser ostrada no o)1eto' alt"ra do o)1eto'
Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line' distQn#ia do topo e taanho
do o)1eto
9int A)andona a pes,"isa A1"da on-line para o o)1eto espe#/-i#o
;e-t UYY Alinhaento H es,"erda
4ae %"tCan#ela 4oe do o)1eto
Spa#ing Y 2spa*o entre o PlLph e o +abel
Iidth Y9 ;arg"ra do o)1eto
0peedBtton Men#ontrado na p+gina &dditionalN' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!
(4SkFD3AI231.%M0
&age a ser ostrada no o)1eto
9int 0es,"isa o #8digo sele#ionado na
ta)ela
A1"da on-line para o o)1eto espe#/-i#o
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
4ae %"t0es,"isa 4oe do o)1eto
;e-t e !op Modo ,"e o o)1eto -i,"e ao lado
do o)1eto (dtTrecho
0osi*$o es,"erda e distQn#ia do topo
Salve o -or"l+rio #o o noe *0elCate e #opare-o #o o desenho a)ai.oG
,-'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Programando no !orm$l)rio
( #8digo para este o)1eto n$o #hega a ser " tro*o estranho' edonho e es,"isito' na
verdade E atE )e siples' )asta apenas #opreenderos o se" -"n#ionaento' o o)1eto DBPrid
-ar+ todo o tra)alho' ostrando ao "s"+rio os registros #adastrados e "a ta)ela' a parte ,"e
nos resta e prograar o o)1eto btPesMisa de aneira ,"ase idCnti#a ao nosso antigo )ot$o de
pes,"isaG
C8digo para o )ot$o btPesMisa' respons+vel pela ativa*$o da pes,"isaG
1. DC " d"plo #li,"e no o)1etoG
procedre !FnSelCate.%"t0es,"isaCli#<MSenderG !()1e#tNJ &ni#ia o pro#ediento
begin
i* M2dt!re#ho.!e.t T VVN then 7eri-i#a se -oi digitado algo
begin
MessageDlgMV4$o -oi espe#i-i#ado "a siglafV' t2rror' R)(mS' ONJ
2.itJ A)andona o pro#ediento
endJ
trL Ativa o #oando !ry
DMnModelo.!a)Categor.Find4earestMR2dt!re#ho.!e.tSNJ Faz a pes,"isa na ta)ela
eQcept Caso a#onte*a alg"a -alha
on e.#eption do
MessageDlgMVSigla espe#i-i#ada est+ inv+lidafV't2rror' R)(mS' ONJ
endJ
endJ !erina o pro#ediento
( #oando TrL -oi "tilizado para preveros ,"al,"er possi)ilidade de erro d"rante
a e.e#"*$o da pes,"isa.
,,-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Enviando e recebendo vari)veis
2.iste d"as aneira de dois -or"l+rios tro#are valores de vari+veis' a)as atravEs
da #ria*$o de vari+veis de-inidas na se*$o pblic' a di-eren*a est+ o" n$o na "tiliza*$o do
#oando propertL.
4o nosso antigo )ot$o +ocali/ar' enviaos para a -"n*$o 1npt]erL o #8digo da
#ategoria #orrente e a -"n*$o nos devolve o #8digo digitado' por,"e n$o -azeros o esoG
Criando "a vari+vel de es#rita e leit"ra
1. 7+ para o Code .ditor' e insira o tre#ho a)ai.oG
private 0arte de pro#edientos privados
*nction Aet!re#hoG 0tringJ F"n*$o para enviar a vari+vel
procedre Set!re#hoM4eF!re#hoG 0tringNJ 0ro#ediento para re#e)er o tre#ho
pblic 0arte de pro#edientos p5)li#os
vCriaG %ooleanJ Cria "a vari+vel p5)li#a
propertL Cap!re#hoG 0tring read Aet!re#ho Krite Set!re#hoJ &ni#ializa " vari+vel
endJ
( #oando PropertL de#lara "a vari+vel da seg"inte aneira' a s")-op*$o Read
envia " string atravEs da -"n*$o >et4re%ho' e a s")-op*$o Jrite re#e)e o valor enviado
atravEs da vari+vel para o pro#ediento Set4re%ho.
U. De#larando o pro#ediento e a -"n*$oG
*nction !FnSelCate.Aet!re#hoG 0tringJ &n/#io da -"n*$o
begin
i* vCria then 7eri-i#a se o Data"odule n$o e.istia
begin
3es"lt GT DMnModelo.!a)CategorS&AnCA!2A.7al"eJ Atri)"i ao res"ltado da -"n*$o o valor
do #apo S&AnCA!2A
DMnModelo.FreeJ
endB
endJ
procedre !FnSelCate.Set!re#hoM4eF!re#hoG 0tringNJ &n/#io do pro#ediento
begin
i* vCria then Se o DataMod"le n$o estiver #riado
begin
DMnModelo GT !DMnModelo.CreateMAppli#ationNJ Cria o DataMod"le
DMnModelo.!a)Categor.FindmeyMR4eF!re#hoSNJ ;o#aliza o valor da string enviada
endJ
endJ
/lterando o !orm$l)rio !Categ
Deveos agora "dar o #8digo do -or"l+rio FICateg para ativaros a pes,"isa'
le)re-se ,"e o Data"odule E o eso e a ta)ela ta)E' ent$o n$o e.iste a ne#essidade de
enviaros o" trazeros "a vari+vel #o a sigla da Categoria' porE le)reos do )ot$o de
cancelar' pre#isaos ent$o' #aso o -or"l+rio n$o saia atravEs do )ot$o de OT' retornaos ao
registro anteriorG
,,,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Chae o -or"l+rio FICateg atravEs do o)1eto Pro)e%t "ana#er' #li,"e no o)1eto
(ut0o%ali$arG
1. DC " d"plo #li,"e no o)1etoG
procedre !FnCateg.%"t;o#alizarCli#<MSenderG !()1e#tNJ A,"i perane#e o eso
var
Mar#a3egG !%oo<ar<J Cria "a vari+vel de ar#a
begin
i* FnMen".Criti#a2di#aoMDMnModelo.DSCategor' VCategoriaV' Vlo#alizarV N then
2.itJ

Kith DMnModelo.!a)Categ do
begin
Mar#a3eg GT Aet%oo<Mar<J Salva a posi*$o do registro
FnSelCate GT !FnSelCate.CreateMAppli#ationNJ Cria o -or"l+rio de #ons"lta
FnSelCate.vCria GT FalseJ Seta a vari+vel p5)li#a
i* not FnSelCate.ShoFModal T r(< then Caso a sa/da do -or"l+rio n$o se1a o )ot$o (m
Aoto%oo<Mar<MMar#a3egNJ 3etorna ao registro ar#ado
FnSelCate.FreeJ 2liina o -or"l+rio de #ons"lta
Free%oo<ar<MMar#a3egNJ ;i)era a vari+vel de ar#a
endB
endJ
(s #oandos de BooTMarT s$o todos apli#ados a ta)ela por isso -oi "tilizado e
#on1"nto #o " #oando Kith para a sipli-i#a*$o do #8digo.
A vari+vel de#larada objPesMisa n$o E ais ne#ess+ria.
4$o E ne#ess+rio #riti#ar o #oando FindUeL pois o #8digo retornado pela vari+vel
e pego diretaente do ar,"ivo.
4$o es,"e*a ,"e o o)1eto FI0elCate -az parte da Dnit *0elCate ent$o E ne#ess+rio
-azer o "so desta Dnit' para tanto altere o seg"inte #8digo Ma)ai.o da diretiva de #opila*$oNG
68 9.D5"7
ses
-Men"' 6 "enu Prin%ipal do Sistema 7
DMModelo' 6 eferen%ia ao Data"odule 7
Dialogs' 6 :tili$ado para o %ontrole da fun3=o "essa#eDl# 7
-SelCateJ 6 Sele%iona Cate#oria 7
/lterando o !orm$l)rio !#asico
7aos -inalente tornar 5til o o)1eto (ut0o%Cate# M)ot$o para lo#alizar a #ategoriaN.
1. Chae o -or"l+rio FIBasico e dC " d"plo #li,"e no o)1eto (ut0o%Cate#
procedre !Fn%asi#o.%"t;o#CategCli#<MSenderG !()1e#tNJ
begin
i* not MDMn%asi#o.DS%asi#o.State in Rds2dit' ds&nsertSN then
begin
MessageDlgMV7o#C n$o est+ no odo de edi*$ofV' t&n-oration' R)(mS' ONJ
2.itJ
,,3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
endJ
FnSelCate GT !FnSelCate.CreateMAppli#ationNJ Cria o -or"l+rio de #ons"lta
FnSelCate.vCria GT !r"eJ Seta a vari+vel p5)li#a
FnSelCate.Cap!re#ho GT 2ditS&AnCA!2A.!e.tJ Atri)"i a v+riavel de#larado o valor do
#apo da tela Mdispara a -"n*$o 0etTrechoN
i* FnSelCate.ShoFModal T r(< then 2.e#"ta o o)1eto FI0elCate
2ditS&AnCA!2A.!e.t GT FnSelCate.Cap!re#hoJ dispara o pro#ediento PetTrecho
FnSelCate.FreeJ 2liina o -or"l+rio de #ons"lta
endJ
4ote ,"e para esse #aso n$o ,"ereos lo#alizar "a #ategoria' as si atri)"ir ao
o)1eto 2ditC(DnCA!2A ao valor do FnSelCate.Cap!re#ho lo#alizado
4$o es,"e*a ,"e o o)1eto FI0elCate -az parte da Dnit *0elCate ent$o E ne#ess+rio
-azer o "so desta Dnit' para tanto altere o seg"inte #8digo Ma)ai.o da diretiva de #opila*$oNG
68 9.D5"7
ses
DM%asi#o' 6 eferLn%ia ao Data"odule 7
-Men"' 6 "enu Prin%ipal do Sistema 7
Dialogs' 6 >erente de "ensa#ens 7
-Categ' 6 Cadastro de Cate#orias 7
-M"si#a' 6 Cadastro de "Osi%as 7
-SelCateJ 6 Sele%iona Cate#oria 7
Salve o -or"l+rio' retire-o da +rea de -or"l+rios ato5create' e.e#"te e teste o pro1eto.
Se alg"a #oisa de" errada' releia o #ap/t"lo' o" ent$o #on-ira o #8digo para a
FI0elCateG
nit -SelCateJ
inter*ace
ses
IindoFs' Messages' SysDtils' Classes' Araphi#s' Controls' Fors' Dialogs'
2.tCtrls' D%Ctrls' %"ttons' StdCtrls' Arids' D%AridsJ
tLpe
!FnSelCate T classM!ForN
D%4avigator1G !D%4avigatorJ
D%Arid1G !D%AridJ
2dt!re#hoG !Mas<2ditJ
;a)el1G !;a)elJ
%"t(mG !%it%tnJ
%"tCan#elaG !%it%tnJ
%"t0es,"isaG !Speed%"ttonJ
procedre %"t0es,"isaCli#<MSenderG !()1e#tNJ
private
7eCria G )ooleanJ
*nction Aet!re#hoG StringJ
procedre Set!re#hoM4eF!re#hoG StringNJ
pblic
propertL Cap!re#hoG 0tring read Aet!re#ho Krite Set!re#hoJ
,,2
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
endJ
var
FnSelCateG !FnSelCateJ
implementation
68 9.D5"7
ses
DMCategJ 6 eferLn%ia ao Data"odule 7
*nction !FnSelCate.Aet!re#hoG 0tringJ
begin
i* vCria then
begin
3es"lt GT DMnModelo.!a)CategorS&AnCA!2A.7al"eJ
DMnModelo.FreeJ
endJ
endJ
procedre !FnSelCate.Set!re#hoM4eF!re#hoG 0tringNJ
begin
i* vCria then
begin
DMnModelo GT !DMnModelo.CreateMAppli#ationNJ
DMnModelo.!a)Categor.FindmeyMR4eF!re#hoSNJ
endJ
endJ
procedre !FnSelCate.%"t0es,"isaCli#<MSenderG !()1e#tNJ
begin
i* M2dt!re#ho.!e.t T VVN then
begin
MessageDlgMV4$o -oi espe#i-i#ado "a siglafV' t2rror' R)(mS' ONJ
2.itJ
endJ
trL
DMnModelo.!a)Categor.Find4earestMR2dt!re#ho.!e.tSNJ
eQcept
on e.#eption do MessageDlgMVSigla espe#i-i#ada est+ inv+lidafV't2rror' R)(mS' ONJ
endJ
endJ
end.
Coandos e s"as -"n*6es' por orde de apari*$oG
PropertL Rvari+velSG R!ipoS read R-"n*$oS Krite Rpro#edientoS - De#lara as propriedades para "a vari+vel do tipo
leit"ra MreadN e do tipo es#rita MKriteN.
Reslt - #onstante "tilizada para o retorno de "a -"n*$o.
TrL Rde#lara*6esS - palavra reservada para ar#ar a prieira parte de " )lo#o de e.#e*$o.
(Qcept R)lo#o de e.#e*$oS - #aso alg"a de#lara*$o dentro de " )lo#o de prote*$o trL a#onte*a erro este )lo#o E
e.e#"tado.
,,R
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
On Rtipo de e.#e*$oS do Rde#lara*$oS - e #on1"nto #o o )lo#o trL===eQcept de-ine o #8digo para e.e#"tar " )lo#o
de e.#e*$o.
Criando *ons&+%as ,ara o *adas%ro
A#redito ,"e vo#C deve ter a#hado estranho o t/t"lo das #ons"ltas do en" MCDBs e
M5si#as por CDBsN' #oo 1+ en#ionei antes deveos peritir ao nosso "s"+rio #ons"ltas +geis
pelos ar,"ivos' sen$o n$o valer+ a pena veri-i#ar no #op"tador onde est+ deterinada 5si#a'
seria ais pr+ti#o pro#"r+-la an"alente.
Cons$ltas S+,
( o)1eto Auer/ ' "tilizado anteriorente para tra)alhar #oo " #ontador' E ais
poderoso do ,"e se iagina' "tilizando-o )e nos podeos dar poderes ao nosso "s"+rio ,"e ele
1aais iagino" ,"e -osse poss/vel' e vo#C ver+ ,"e tra)alhar #o -iltros pode-se trans-orar e
"a agrad+vel s"rpresa.
Reali0ando Cons$ltas com %iltros
(s -iltros s$o realizados para re-inar deterinados registros dentro de " o" ais
ar,"ivos' ostrarei de -ora siples #oo "tiliz+-lo' o)serve o -or"l+rio a seg"irG
7aos #riar " -or"l+rio idCnti#o a este ,"e servir+ para a ontage dos -iltrosG
&ni#ialente Cli,"e no )ot$o M4eF ForN na Speed Bar' o" no en" prin#ipal a
Cli,"e no en" prin#ipal a op*$o File e %eK===' e !ew Items' na p+gina !ew e #li,"e
no o)1eto entit"lado 5orm e altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
%orderStyle )sDialog 2stilo da )orda do o)1eto
Caption De-ine Filtros ;a)el do o)1eto
,,O
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
4ae FnFiltro 4oe do o)1eto
0osition poS#reenCenter 0osi*$o do o)1eto
Crie para esta nova 1anela os seg"intes o)1etosG
, Parte 5 ontage do -iltro
Panel Men#ontrado na p+gina StandardN - servir+ para g"ardar o )lo#o de ontage
do -iltro' a1"ste se" taanho para #a)er os o"tros o)1etos e #olo,"e )ran#o para a
propriedade Caption. Antes de #riar os o"tros o)1etos sepre ar,"e este o)1eto.
2 objetos +abel Men#ontrados na p+gina StandardN - altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Caption Capo' CritErio e Copara*$o
Mrespe#tivaenteN
4oe do o)1eto
Font MS Sans Seri-' 4egrito' Y'
Castanho
!ipo de letra a ser ostrada no o)1eto
ComboBoQ Men#ontrado na p+gina StandardN - ,"e arazenar+ o noe dos #apos
do ar,"ivo' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
4ae C%Capo 4oe do o)1eto
Font MS Sans Seri-' 4oral' Y' Az"l
Marinho
!ipo de letra a ser ostrada no o)1eto
&tes 4oeJ !ipo e Categoria M" e
#ada linhaN
Conte5do do o)1eto
Style #sDropDoFn 2stilo do o)1eto
!e.t !e.to a ser ostrado para o Co)o ,"ando nada -or
sele#ionado
ComboBoQ Men#ontrado na p+gina StandardN - ,"e arazenar+ os #ritErios de
pes,"isa' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
4ae C%Criterio 4oe do o)1eto
Font MS Sans Seri-' 4oral' Y' Az"l
Marinho
!ipo de letra a ser ostrada no o)1eto
&tes 8J :J 9J :8J 98J 9: e Dentro de Conte5do do o)1eto M#olo,"e " e #ada linhaN
Style #sDropDoFn 2stilo do o)1eto
!e.t !e.to a ser ostrado para o Co)o ,"ando nada -or
sele#ionado
(dit Men#ontrado na p+gina StandardN - ,"e arazenar+ o #onte5do a ser #oparado'
altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
4ae 2ditCopara 4oe do o)1eto
Font MS Sans Seri-' 4oral' Y' Az"l
Marinho
!ipo de letra a ser ostrada no o)1eto
!e.t !e.to a ser ostrado para o #apo
,,S
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
0peedBtton Men#ontrado na p+gina &dditionalN - )ot$o ,"e #on-irar+ a #ondi*$o
para o -iltro es#olhida' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!
(4SkC(0l.%M0
&age a ser ostrada no o)1eto
9int Con-ira os dados digitados A1"da on-line para o o)1eto espe#/-i#o
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
4ae %"t2nvia 4oe do o)1eto
0peedBtton Men#ontrado na p+gina &dditionalN - este )ot$o servir+ para #haar a
tela de #ons"lta a ta)ela' -i#ando originalente invis/vel' sendo ativado #aso o #apo
es#olhido se1a a =sigla da #ategoria>' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!
(4Sk;A4!234A.%M0
&age a ser ostrada no o)1eto M#ons"lte o #ap.\'
#ria*$o do o)1eto %"t;o#Categ so)re a iageN
9int 0es,"isa Categoria A1"da on-line para o o)1eto espe#/-i#o
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
4ae %"tCons"lta 4oe do o)1eto
7isi)le False ()1eto deve ser ostrado
3 Parte 5 servir+ para g"ardar o -iltro ontado e es#onder+ o -iltro e ling"age p"ra
S:;' a1"ste se" taanho para #a)er os o"tros o)1etos
PropBoQ Men#ontrado na p+gina StandardN - servir+ para g"ardar os )lo#os
ontados do -iltro' a1"ste se" taanho para #a)er os o"tros o)1etos' altere as
seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Caption Filtro Copleto ;a)el do o)1eto
Font MS Sans Seri-' 4egrito' Y'
Castanho
!ipo de letra a ser ostrada no o)1eto
(dit Men#ontrado na p+gina StandardN - ,"e ostrar+ ao "s"+rio o -iltro por ele
#riado' ele o#"par+ toda a +rea interna do o)1eto >roupBo@' altere as seg"intes
propriedadesG
0ropriedade 7alor Des#ri*$o
%orderStyle )s4one 2stilo da )orda
Color #l%tnFalse Mesa #or do o)1eto
>roupBo@N
Cor do o)1eto
CtlZD False 0oss"i desenho e ZD
Font MS Sans Seri-' 4oral' Y'
Castanho
!ipo de letra a ser ostrada no o)1eto
4ae Filtro7e 4oe do o)1eto
3ead(nly !r"e ()1eto apenas para leit"ra' n$o peritida altera*$o do
se" #onte5do.
(dit Men#ontrado na p+gina StandardN- ,"e ontar+ o nosso -iltro e ling"age p"ra
S:;' ele -i#ar+ invis/vel e odo de e.e#"*$o' altere as seg"intes propriedadesG
,,X
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
0ropriedade 7alor Des#ri*$o
4ae FiltroS:; 4oe do o)1eto
7isi)le False Se o o)1eto -i#ar+ vis/vel
2 Parte 5 )ot6es de #ontrole
BitBtn Men#ontrado na p+gina &dditionalN - )ot$o ,"e servir+ para #l+"s"la =2 - !ipoG
:m e 'utro>' -i#ar+ ini#ialente desa)ilitado e odo de e.e#"*$o' altere as
seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
4ae %"t2 4oe do o)1eto
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!
(4SkF(;D3D(C.%M0
&age a ser ostrada no o)1eto
Font MS Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto
9int D =e> ("tro A1"da on-line para o o)1eto espe#/-i#o
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
Caption p2 ;a)el do ()1eto
2na)led False 9a)ilita*$o para o "so
BitBtn Men#ontrado na p+gina &dditionalN- )ot$o ,"e servir+ de =(" - !ipoG :m ou
'utro>' -i#ar+ ini#ialente desa)ilitado e odo de e.e#"*$o' altere as seg"intes
propriedadesG
0ropriedade 7alor Des#ri*$o
4ae %"t(" 4oe do o)1eto
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!
(4SkF(4!%(;D.%M0
&age a ser ostrada no o)1eto
Font MS Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto
9int D =o"> ("tro A1"da on-line para o o)1eto espe#/-i#o
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
Caption (p" ;a)el do ()1eto
2na)led False 9a)ilita*$o para o "so
BitBtn Men#ontrado na p+gina &dditionalN - )ot$o ,"e servir+ para lipar o -iltro'
-i#ar+ ini#ialente desa)ilitado e odo de e.e#"*$o' altere as seg"intes
propriedadesG
0ropriedade 7alor Des#ri*$o
4ae %"t;ipar 4oe do o)1eto
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!
(4SkC;2A3.%M0
&age a ser ostrada no o)1eto
Font MS Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto
9int Apaga o -iltro e.istente A1"da on-line para o o)1eto espe#/-i#o
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
Caption p;ipar ;a)el do ()1eto
2na)led False 9a)ilita*$o para o "so
,,&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
BitBtn Men#ontrado na p+gina &dditionalN - )ot$o ,"e servir+ para #on-irar o -iltro'
ele -i#ar+ ini#ialente desa)ilitado e odo de e.e#"*$o' altere as seg"intes
propriedadesG
0ropriedade 7alor Des#ri*$o
mind )<(m Deterina a #lasse a ser "tilizada pelo o)1eto'
a"toati#aente ser$o alteradas as propriedadesG
Caption' PlLph e ModalReslt
4ae %"t(m 4oe do o)1eto
Font MS Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto
9int Con-ira o -iltro editado A1"da on-line para o o)1eto espe#/-i#o
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
Caption p(m ;a)el do ()1eto
2na)led False 9a)ilita*$o para o "so
BitBtn Men#ontrado na p+gina &dditionalN - )ot$o ,"e servir+ para a)andonar o -iltro'
altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
mind )<CA4C2; Deterina a #lasse a ser "tilizada pelo o)1eto'
a"toati#aente ser$o alteradas as propriedadesG
Caption' PlLph e ModalReslt
4ae %"tCan#ela 4oe do o)1eto
Font MS Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto
9int Can#ela o -iltro editado A1"da on-line para o o)1eto espe#/-i#o
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
Caption pCan#elar ;a)el do ()1eto
Programando o !orm$l)rio
Antes de prosseg"iros salve o -or"l+rio #o o noe de -Filtro.
( #8digo para este o)1eto E siples re,"er apenas ,"e vo#C #opreenda ,"e o -or"l+rio
deve -azer. 2ste -or"l+rio servir+ de )ase para a ontage de " -iltro ,"e ser+ ostrado por
" d(>rid #onstr"/do no seg"ndo -or"l+rio' deveos devolver o #8digo ,"e #opletar+ a
e.e#"*$o de " o)1eto Auer/ #olo#ado no seg"ndo. 2..G S2;2C! o F3(M %AS&C( I9232
R#ondi*$o #riada no -or"l+rioS G
C8digo para o )ot$o bt(nvia' ,"ando -or #on-irado os dados digitadosG
1. DC " d"plo #li,"e no o)1etoG
procedre !FnFiltro.%"t2nviaCli#<MSenderG !()1e#tNJ
var
4oeCapo G 0tringJ Cria "a vari+vel para arazenar o
noe real do #apo
begin
case #)Capo.&te&nde. o* Sele#iona o noe do #apo #orreto
O 6 !ome 7 G 4oeCapoGT V4(MnD&SC(VJ para o S:;
1 6 4ipo 7 G 4oeCapoGT V!&0nD&SC(VJ
U 6 Cate#oria 7 G 4oeCapoGT VS&AnCA!2AVJ
,,'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
endJ
i* M#)Criterio.&te&nde. T \N then se o CritErio es#olhido -or =Dentro de>
FiltroS:;.!e.t GT FiltroS:;.!e.t X VMV X 4oeCapo #oando =;&m2> e S:;
X V V X V;i<e VVtV X 2ditCopara.!e.t X VtVVNV
else
FiltroS:;.!e.t GT FiltroS:;.!e.t X VMV X 4oeCapo #aso #ontr+rio atri)"i o valor
X V V X #)Criterio.!e.t X VVVV X 2ditCopara.!e.t X VVVNVJ es#olhido =_' ` ' _T' `T e `_>
Filtro7e.!e.t GT Filtro7e.!e.t X #)Capo.!e.t X V V X A#erta o -iltro
#)Criterio.!e.t X V V X 2ditCopara.!e.tJ
#)Capo.&te&nde. GT -1J 3eseta os trCs #apos envolvidos
#)Criterio.&te&nde. GT -1J
2ditCopara.!e.t GT VVJ
#)Capo.2na)led GT FalseJ Desa)ilita os #apos de edi*$o
#)Criterio.2na)led GT FalseJ
2ditCopara.2na)led GT FalseJ
%"tCons"lta.7isi)le GT FalseJ
%"t2.2na)led GT !r"eJ 9a)ilita os )ot6es
%"t(".2na)led GT !r"eJ
%"t(<.2na)led GT !r"eJ
%"t;ipa.2na)led GT !r"eJ
endJ
#aso o sistea ,"e vo#C desenvolver tenha #apos do tipo Data altere a linha do
#ritErio para o seg"inteG
i* M#)Criterio.&te&nde. T \N then CritErio sDentro des
i* #)Capo.&te&nde. in Rn5ero do #apos dataS then 7C os #apos Data
FiltroS:;.!e.t GT FiltroS:;.!e.t X VMV X 4oeCapo X V V X Condi*$o para este tipo de #p
V;i<e VVtV X
ForatDate!ieMVMM/DD/llV'Str!oDateM2ditCopara.!e.tNN
X VtVVNV
else
FiltroS:;.!e.t GT FiltroS:;.!e.t X VMV X 4oeCapo X V V X Condi*$o #o" para o ;&m2
V;i<e VVtV X 2ditCopara.!e.t X VtVVNV
else As o"tras #ondi*6es
i* #)Capo.&te&nde. T in Rn5ero do #apos dataS then 7C os #apos Data
FiltroS:;.!e.t GT FiltroS:;.!e.t X VMV X 4oeCapo X V V X
#)Criterio.!e.t X VVVV X
ForatDate!ieMVMM/DD/llV'Str!oDateM2ditCopara.!e.tNN X VVVNV
else Condi*6es para o"tros #apos
FiltroS:;.!e.t GT FiltroS:;.!e.t X VMV X 4oeCapo X V V X
#)Criterio.!e.t X VVVV X 2ditCopara.!e.t X VVVNVJ
...o resto -i#ar+ idCnti#o. 4$o es,"e*a no #oando V0(0 #olo#ar a )i)liote#a
0LsVtils para a -"n*$o FormatDateTime
C8digo para o )ot$o bt(' ,"ando ser+ es#olhida =e> "a o"tra #ondi*$oG
1. DC " d"plo #li,"e no o)1etoG
procedre !FnFiltro.%"t2Cli#<MSenderG !()1e#tNJ
begin
,3-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Filtro7e.!e.t GT Filtro7e.!e.t X V 2 VJ Altera os -iltros
FiltroS:;.!e.t GT FiltroS:;.!e.t X V And VJ
#)Capo.2na)led GT !r"eJ 9a)ilita os #apos de edi*$o
#)Criterio.2na)led GT !r"eJ
2ditCopara.2na)led GT !r"eJ
%"t;ipa.2na)led GT !r"eJ
%"t2.2na)led GT FalseJ Desa)ilita os )ot6es
%"t(".2na)led GT FalseJ
%"t(<.2na)led GT FalseJ
endJ
C8digo para o )ot$o btO' ,"ando ser+ es#olhida =o"> "a o"tra #ondi*$oG
1. DC " d"plo #li,"e no o)1etoG
procedre !FnFiltro.%"t("Cli#<MSenderG !()1e#tNJ
begin
Filtro7e.!e.t GT Filtro7e.!e.t X V (" VJ Altera os -iltros
FiltroS:;.!e.t GT FiltroS:;.!e.t X V (r VJ
#)Capo.2na)led GT !r"eJ 9a)ilita os #apos de edi*$o
#)Criterio.2na)led GT !r"eJ
2ditCopara.2na)led GT !r"eJ
%"t;ipa.2na)led GT !r"eJ
%"t2.2na)led GT FalseJ Desa)ilita os )ot6es
%"t(".2na)led GT FalseJ
%"t(<.2na)led GT FalseJ
endJ
C8digo para o )ot$o bt+impa' ,"ando -or lipo os -iltrosG
1. DC " d"plo #li,"e no o)1etoG
procedre !FnFiltro.%"t;ipaCli#<MSenderG !()1e#tNJ
begin
#)Capo.&te&nde. GT -1J &ni#ia todas as #ondi*6es
#)Criterio.&te&nde. GT -1J
2ditCopara.!e.t GT VVJ
Filtro7e.!e.t GT VVJ
FiltroS:;.!e.t GT VSele#t o -ro %asi#o Fhere VJ
#)Capo.2na)led GT !r"eJ 9a)ilita os #apos de edi*$o
#)Criterio.2na)led GT !r"eJ
2ditCopara.2na)led GT !r"eJ
%"t2.2na)led GT FalseJ Desa)ilita os )ot6es
%"t(".2na)led GT FalseJ
%"t(<.2na)led GT FalseJ
%"t;ipa.2na)led GT FalseJ
endJ
:"ando o -or"l+rio -or #riado E ini#iado o -iltroG
1. Sele#ione o o)1eto FIFiltro na tela de eventos dC " d"plo #li#< so)re a op*$o
(nCreateG
procedre !FnFiltro.ForCreateMSenderG !()1e#tNJ
,3,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
begin
Filtro7e.!e.t GT VVJ ;ipa o -iltro vis/vel
FiltroS:;.!e.t GT VSele#t o -ro %AS&C( Fhere VJ &ni#ia o -iltro es#ondido
endJ
Caso o #apo es#olhido se1a =Sigla da Categoria> E ne#ess+rio ha)ilitar o )ot$o de
#ons"ltaG
1. Sele#ione o o)1eto CBCampo na tela de eventos dC " d"plo #li,"e na op*$o
OnChangeG
procedre !FnFiltro.C%CapoChangeMSenderG !()1e#tNJ
begin
C%Criterio.SetFo#"sJ Desvia o -o#o para o pr8.io #apo
i* #)Capo.&te&nde. T U then Se o #apo sele#iona -or S&AnCA!2A
%"tCons"lta.7isi)le GT Tre !orna vis/vel o o)1eto %"tCons"lta
else Sen$o
%"tCons"lta.7isi)le GT FalseJ !orna invis/vel o o)1eto %"tCons"lta
endJ
C8digo para o o)1eto BtConslta ,"e -ar+ a #ons"lta de #ategoriaG
1. DC " d"plo #li,"e no o)1etoG
procedre !FnFiltro.%"tCons"ltaCli#<MSenderG !()1e#tNJ
begin
i* #)Capo.&te&nde. T U then Se o #apo -or S&AnCA!2A
begin
FnSelCate.Cap!re#ho GT 2ditCopara.!e.tJ 2nvia o #apo
i* FnSelCate.&ni#io T r(< then 7eri-i#a se -oi retornado (m
2ditCopara.!e.t GT FnSelCate.Cap!re#hoJ !rans-ere o #apo
endJ
endJ
0er-"aria para o o)1eto CBCriterio ,"ando sele#ionado " #ritErio ser+ o #ontrole
trans-erido para o #apo seg"inteG
1. Sele#ione o o)1eto na tela de eventos e dC " d"plo #li,"e na op*$o OnChangeG
procedre !FnFiltro.C%CriterioChangeMSenderG !()1e#tNJ
begin
2ditCopara.SetFo#"sJ Desvia o -o#o para o pr8.io #apo
endJ
4e#essitaos agora #riar "a vari+vel #o" ,"e devolver+ o #8digo S:; para a tela
se#"nd+riaG
!rans-ira para a 1anela do Code (ditorG
1. Ap8s o #oando 03&7A!2 digiteG
private
*nction AetS:;G !2ditJ &ni#ia "a -"n*$o 0arti#"lar
pblic
propertL S:;String G !2dit read AetS:;J &ni#ia "a vari+vel p5)li#a s8 de leit"ra
endJ
var
FnFiltroG !FnFiltroJ
implementation
,33
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
ba3 o.DFMc
ses Dtiliza*$o das )i)liote#as
-SelCateJ Sele#iona Categoria
*nction !FnFiltro.AetS:;G !2ditJ
begin
3es"lt GT FiltroS:;J 2nvia #oo res"ltado para a vari+vel o -iltro es#ondido
endJ
Salve o -or"l+rio' teste o pro1eto.
Se alg"a #oisa de" errada' releia o #ap/t"lo' o" ent$o #on-ira o #8digo para a FIFiltroG
nit F-iltroJ
inter*ace
ses Iin!ypes' Iin0ro#s' Classes' Araphi#s' Fors'
Controls' %"ttons' StdCtrls' 2.tCtrlsJ
tLpe
!FnFiltro T #lassM!ForN
0anel1G !0anelJ
C%CapoG !Co)o%o.J
C%CriterioG !Co)o%o.J
2ditCoparaG !2ditJ
%"t2nviaG !Speed%"ttonJ
Aro"p%o.1G !Aro"p%o.J
;a)el1G !;a)elJ
;a)elUG !;a)elJ
;a)elZG !;a)elJ
%"tCan#elaG !%it%tnJ
%"t2G !%it%tnJ
%"t("G !%it%tnJ
;a)el[G !;a)elJ
Filtro7eG !2ditJ
FiltroS:;G !2ditJ
%"t(<G !%it%tnJ
%"t;ipaG !%it%tnJ
%"tCons"ltaG !Speed%"ttonJ
procedre %"t2nviaCli#<MSenderG !()1e#tNJ
procedre %"t2Cli#<MSenderG !()1e#tNJ
procedre %"t("Cli#<MSenderG !()1e#tNJ
procedre %"t;ipaCli#<MSenderG !()1e#tNJ
procedre ForCreateMSenderG !()1e#tNJ
procedre C%CapoChangeMSenderG !()1e#tNJ
procedre %"tCons"ltaCli#<MSenderG !()1e#tNJ
procedre C%CriterioChangeMSenderG !()1e#tNJ
private
*nction AetS:;G !2ditJ
pblic
propertL S:;String G !2dit read AetS:;J
endJ
,32
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
var
FnFiltroG !FnFiltroJ
implementation
ba3 o.DFMc
ses
-SelCateJ
*nction !FnFiltro.AetS:;G !2ditJ
begin
3es"lt GT FiltroS:;J
endJ
procedre !FnFiltro.%"t2nviaCli#<MSenderG !()1e#tNJ
var
4oeCapo G 0tringJ
begin
case #)Capo.&te&nde. o*
O 6 !ome 7 G 4oeCapoGT V4(MnD&SC(VJ
1 6 4ipo 7 G 4oeCapoGT V!&0nD&SC(VJ
U 6 Cate#oria 7 G 4oeCapoGT VS&AnCA!2AVJ
endJ
i* M#)Criterio.&te&nde. T \N then
FiltroS:;.!e.t GT FiltroS:;.!e.t X VMV X 4oeCapo
X V V X V;i<e VVtV X 2ditCopara.!e.t X VtVVNV
else
FiltroS:;.!e.t GT FiltroS:;.!e.t X VMV X 4oeCapo
X V V X #)Criterio.!e.t X VVVV X 2ditCopara.!e.t X VVVNVJ
Filtro7e.!e.t GT Filtro7e.!e.t X #)Capo.!e.t X V V X
#)Criterio.!e.t X V V X 2ditCopara.!e.tJ
#)Capo.&te&nde. GT -1J
#)Criterio.&te&nde. GT -1J
2ditCopara.!e.t GT VVJ
#)Capo.2na)led GT FalseJ
#)Criterio.2na)led GT FalseJ
2ditCopara.2na)led GT FalseJ
%"tCons"lta.7isi)le GT FalseJ
%"t2.2na)led GT !r"eJ
%"t(".2na)led GT !r"eJ
%"t(<.2na)led GT !r"eJ
%"t;ipa.2na)led GT !r"eJ
endJ
procedre !FnFiltro.%"t2Cli#<MSenderG !()1e#tNJ
begin
Filtro7e.!e.t GT Filtro7e.!e.t X V 2 VJ
FiltroS:;.!e.t GT FiltroS:;.!e.t X V And VJ
#)Capo.2na)led GT !r"eJ
,3R
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
#)Criterio.2na)led GT !r"eJ
2ditCopara.2na)led GT !r"eJ
%"t;ipa.2na)led GT !r"eJ
%"t2.2na)led GT FalseJ
%"t(".2na)led GT FalseJ
%"t(<.2na)led GT FalseJ
endJ
procedre !FnFiltro.%"t("Cli#<MSenderG !()1e#tNJ
begin
Filtro7e.!e.t GT Filtro7e.!e.t X V (" VJ
FiltroS:;.!e.t GT FiltroS:;.!e.t X V (r VJ
#)Capo.2na)led GT !r"eJ
#)Criterio.2na)led GT !r"eJ
2ditCopara.2na)led GT !r"eJ
%"t;ipa.2na)led GT !r"eJ
%"t2.2na)led GT FalseJ
%"t(".2na)led GT FalseJ
%"t(<.2na)led GT FalseJ
endJ
procedre !FnFiltro.%"t;ipaCli#<MSenderG !()1e#tNJ
begin
#)Capo.&te&nde. GT -1J
#)Criterio.&te&nde. GT -1J
2ditCopara.!e.t GT VVJ
Filtro7e.!e.t GT VVJ
FiltroS:;.!e.t GT VSele#t o -ro %AS&C( Fhere VJ
#)Capo.2na)led GT !r"eJ
#)Criterio.2na)led GT !r"eJ
2ditCopara.2na)led GT !r"eJ
%"t2.2na)led GT FalseJ
%"t(".2na)led GT FalseJ
%"t(<.2na)led GT FalseJ
%"t;ipa.2na)led GT FalseJ
endJ
procedre !FnFiltro.ForCreateMSenderG !()1e#tNJ
begin
Filtro7e.!e.t GT VVJ
FiltroS:;.!e.t GT VSele#t o -ro %asi#o Fhere VJ
endJ
procedre !FnFiltro.C%CapoChangeMSenderG !()1e#tNJ
begin
C%Criterio.SetFo#"sJ
i* #)Capo.&te&nde. T U then
%"tCons"lta.7isi)le GT Tre
else
%"tCons"lta.7isi)le GT FalseJ
endJ
,3O
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
procedre !FnFiltro.%"tCons"ltaCli#<MSenderG !()1e#tNJ
begin
i* #)Capo.&te&nde. T U then
begin
FnSelCate.Cap!re#ho GT 2ditCopara.!e.tJ
i* FnSelCate.&ni#io T r(< then
2ditCopara.!e.t GT FnSelCate.Cap!re#hoJ
endJ
endJ
procedre !FnFiltro.C%CriterioChangeMSenderG !()1e#tNJ
begin
2ditCopara.SetFo#"sJ
endJ
end.
4$o -oi #olo#ado nenh" #oando ,"e 1+ n$o tenha sido visto anteriorente
Criando o !orm$l)rio 4erente do %iltro
Criado o -or"l+rio anterior' a idEia agora E a seg"inte' #riareos " o"tro -or"l+rio
,"e #onter+ " o)1eto d(>rid para ostrar todos os #apos de deterinada ta)ela' ,"ando -or
#li#ado o )ot$o -iltrar' ser+ disparado o -or"l+rio anterior' ao retornar o "s"+rio poder+
ativar/desativar o -iltro atravEs do SpeedButton M#adeadoN' o" ainda ser+ poss/vel editar "
registro sele#ionado G
7aos #riar " -or"l+rio idCnti#o a este ,"e servir+ para o geren#iaento do -iltroG
&ni#ialente Cli,"e no )ot$o M4eF ForN na Speed Bar' o" no en" prin#ipal a
Cli,"e no en" prin#ipal a op*$o File e %eK===' e !ew Items' na p+gina !ew e #li,"e
no o)1eto entit"lado 5orm e altere as seg"intes propriedadesG
,3S
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
0ropriedade 7alor Des#ri*$o
%orderStyle )sDialog 2stilo da )orda do o)1eto
Caption Cons"lta aos Dis#os ;a)el do o)1eto
4ae FnConDis# 4oe do o)1eto
0osition poS#reenCenter 0osi*$o do o)1eto
Crie para esta nova 1anela os seg"intes o)1etosG
Table Men#ontrado na p+gina Data &%%essN - !a)ela ,"e se alternar+ #o a ,"ery'
altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Data)ase4ae AliasDis#o 4oe do Alias o" a lo#aliza*$o do diret8rio das
ta)elas
!a)le4ae %AS&C(.D%F 4oe e.terno da ta)ela
4ae !a)%asi#o 4oe do o)1eto
&nde.Field4aes 4(MnD&SC( 4oe do #apo inde.ado
Data0orce Men#ontrado na p+gina Data &%%essN - 0osi#ione-o ao lado do o)1eto
4a(Basi%o. ' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
DataSet !a)%asi#o 4oe da ta)ela vin#"lada
4ae DS%asi#o 4oe do o)1eto
]erL Men#ontrado na p+gina Data &%%essN - :"ery ,"e se alternar+ #o a ta)ela'
altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Data)ase4ae AliasDis#o 4oe do Alias o" a lo#aliza*$o do diret8rio das
ta)elas
S:; S2;2C! o F3(M %AS&C( Coando S:; para #ons"lta
4ae :ry%asi#o 4oe do o)1eto
DB%avigator Men#ontrado na p+gina Data ControlsN - %arra de navega*$o ,"e
servir+ para andar so)re os registro' le)re-se n$o deve ser peritida an"ten*$o
nos esosG
0ropriedade 7alor Des#ri*$o
DataSo"r#e DS%asi#o DataSo"r#e asso#iado
7isi)le%"ttons Rn)First' n)0rior' n)4e.t' n);astS %ot6es vis/veis
9ints 0rieiroJ AnteriorJ 0r8.ioJ
]ltio
A1"da on-line ,"e ser+ ostrado so)re #ada )ot$o
M#olo,"e " e #ada linhaN
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
0peedBtton Men#ontrado na p+gina &dditionalN - )ot$o ,"e servir+ para ativar o"
desativar o -iltro' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
4ae %"tAtivaDesativa 4oe do o)1eto
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!
(4Sk;(Cm(024.%M0
&age a ser ostrada no o)1eto
9int Ativa/Desativa o -iltro A1"da on-line para o o)1eto espe#/-i#o
,3X
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
Aro"p&nde. 1 0erten#e a " gr"po de )ot6es' esta propriedade -az
#o ,"e o )ot$o perane*a e estado de
pressionaento.
AlloFAllDp !r"e 0erite ,"e " gr"po de )ot6es n$o tenha nenh"
)ot$o e estado de pressionaento.
BitBtn Men#ontrado na p+gina &dditionalN - )ot$o ,"e servir+ para ontage do
-iltro' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Caption Filptrar ;a)el do o)1eto
Font MS Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!
(4SkF&4D.%M0
&age a ser ostrada no o)1eto
9int Montage do Filtro A1"da on-line para o o)1eto espe#/-i#o
4ae %"tFiltrar 4oe do o)1eto
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
BitBtn Men#ontrado na p+gina &dditionalN - )ot$o ,"e servir+ para editar o #apo
sele#ionado no grid' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Caption p2ditar ;a)el do o)1eto
Font MS Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto
Alyph RDiret8rioDelphiSk&MAA2Sk%D!!
(4SkF(;D3D(C.%M0
&age a ser ostrada no o)1eto
9int 2dita #apo sele#ionado A1"da on-line para o o)1eto espe#/-i#o
4ae %"t2ditar 4oe do o)1eto
ShoF9int !r"e Mostrar o #onte5do da propriedade hint so) a -ora de
"a #ai.a de a1"da on-line
BitBtn Men#ontrado na p+gina &dditionalN - )ot$o ,"e servir+ para editar o -iltro'
altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
mind )<Close Deterina a #lasse a ser "tilizada pelo o)1eto'
a"toati#aente ser$o alteradas as propriedadesG
Caption' PlLph e ModalReslt
4ae %"tFe#har 4oe do o)1eto
Font MS Sans Seri-' 4oral' Y' 0reto !ipo de letra a ser ostrada no o)1eto
Caption pFe#har ;a)el do ()1eto
dbPrid Men#ontrado na p+gina Data ControlsN - ()1eto Arid ,"e ostrar+ os
#apos' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
DataSo"r#e DSDo#" Deterina a #lasse a ser "tilizada pelo o)1eto'
a"toati#aente ser$o alteradas as propriedadesG
Caption' PlLph e ModalReslt
4ae d)Arid%asi#o 4oe do o)1eto
Font MS Sans Seri-' 4oral' Y' Az"l !ipo de letra a ser ostrada para os #apos
,3&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Marinho
(ptions dg!itles' dg&ndi#ator' dgCol;ines'
dg3oF;ines' dg3oFSele#t
(p*6es do Arid
!itleFont MS Sans Seri-' 4egrito' Y'
Castanho
!ipo de letra a ser ostrada para o t/t"lo dos #apos
Programando o !orm$l)rio
Antes de prosseg"iros salve o -or"l+rio #o o noe de -ConDis#.
2ste -or"l+rio ostrar+ os dados -iltrados no o)1eto d(>rid' para -iltrar os dados
"tilizareos o o)1eto Auer/' t"do o ,"e teos a -azer E #ontrolar ,"ando o -iltro est+ ativo
Mo)1eto DataSour%e aponta para o o)1eto Auer/N o" ,"ando o -iltro n$o est+ ativo Mo)1eto
DataSour%e aponta para o o)1eto t4a(leN
C8digo para ,"ando o -or"l+rio E ini#iado' a)ert"ra das ta)elasG
1. 7ire para o Code(ditor e insira o seg"inte #8digo a)ai.oG
private
6 Private de%larations 7
pblic
procedre &ni#ioJ De#lara " pro#ediento p5)li#o
endJ
var
FnConDis#G !FnConDis#J
implementation
68 9.D5"7
ses
-Filtro' Dtiliza a Dnit para a ontage do -iltro
-2dtDis#J Dtiliza a Dnit para a edi*$o do registro
procedre !FnConDis#.&ni#ioJ
begin
!a)%asi#o.(penJ &ni#ia a ta)ela
ShoFModalJ Mostra o -or"l+rio e odo odal
endB
C8digo para o )ot$o Filtrar' ,"ando -or soli#itada a edi*$o do -iltro.
1. DC " d"plo #li,"e no o)1eto btFiltrarG
procedre !FnConDis#.%"tFiltrarCli#<MSenderG !()1e#tNJ
begin
i* %"tAtivaDesativa.DoFn then 7eri-i#a se o )ot$o de prender o -iltro
begin est+ pressionado.
MessageDlgMVDesative a -iltrage antes de editar os -iltros...V'
t&n-oration' R)(mS' ONJ
e.itJ
endB
i* FnFiltro.ShoFModal T r(< then Chaa o -iltro e se -or retornado (m
,3'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
begin
:ry%asi#o.S:;.ClearJ ;ipa a :"ery
:ry%asi#o.S:;.AddMFnFiltro.S:;String.!e.tNJ Adi#iona o novo -iltro na :"ery
endB
endB
C8digo para o )ot$o 2ditar' ,"ando -or ar#ado " registro para vis"aliza*$o geral.
1. DC " d"plo #li,"e no o)1eto bt(ditarG
procedre !FnConDis#.%"t2ditarCli#<MSenderG !()1e#tNJ
begin
i* %"tAtivaDesativa.DoFn then 7eri-i#a se e.iste -iltro preso
Fn2dtDis#.&ni#ioM:ry%asi#oC(DnD&SC(.7al"eN Chaa a edi*$o atravEs da :"ery
else
Fn2dtDis#.&ni#ioM!a)%asi#oC(DnD&SC(.7al"eNJ Chaa a edi*$o atravEs da t!a)le
endJ
C8digo para o )ot$o Ativa o" Desativa o -iltro' para prender o" li)erar o -iltro.
1. DC " d"plo #li,"e no o)1eto btAtivaDesativaG
procedre !FnConDis#.%"tAtivaDesativaCli#<MSenderG !()1e#tNJ
begin
i* not %"tAtivaDesativa.DoFn then Se o -iltro n$o estiver ativo
DS%asi#o.Dataset GT !a)%asi#o Colo#a o DataSo"r#e apontado para o t!a)le
else
trL Cl+"s"la para " )lo#o de e.#e*$o
:ry%asi#o.CloseJ Desativa a :"ery
:ry%asi#o.(penJ Ativa a :"ery
DS%asi#o.Dataset GT :ry%asi#oJ Colo#a o DataSo"r#e apontado para a :"ery
eQcept Caso de alg"a #oisa errada #o o -iltro
DS%asi#o.Dataset GT !a)%asi#oJ Colo#a o DataSo"r#e apontado para o t!a)le
raiseJ Copleento do #oando TrL===eQcept===raise
endJ
endJ
Salve o -or"l+rio.
Co #erteza ser+ ostrado " erro para a #haada da "nit FI(dtDisc.
Editando os registros
( -or"l+rio ,"e editar+ os registro n$o ser+ ontado passo a passo' pois E "ito
siples de ser #onstr"/do' ao invEs disto darei apenas alg"as di#as a respeito da #ria*$o do
esoG
1. Copie o -or"l+rio FIBasico' renoeando-o para FI(dtDiscJ
U. 3eova os o)1etos db%avigator' ]erL e as ta)elas tabCategCon* e tabBasicoCon*'
das ta)elas restante' entre no Fields(ditor de #ada "a e reova os #aposJ
Z. 3etire todo o #8digo e prote1a as ta)elas #o a op*$o ead'nl/ P 4rueJ
[. 3etire todos os )ot6es' dei.ando apenas o )ot$o para Fe#har o -or"l+rioJ
5. &nsira os seg"intes pro#edientosG
a. 0ro#ed"re &4&C&(' nas de#lara*6es pblic M pro#ed"re &ni#ioMvar CodDis#oG &ntegerNJ N
,2-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
procedre !Fn2dtDis#.&ni#ioMvar CodDis#oG &ntegerNJ
begin
!a)%asi#o.(penJ A)re as ta)elas
!a)M"si#a.(penJ
!a)Categ.(penJ
!a)%asi#o.FindmeyMCodDis#oNJ 0osi#iona a ta)ela %asi#o no CodDis#o enviado
ShoFModalJ
endB
). 0ro#ed"re ForClose' no evento OnClose do o)1eto Fn2dtDis#
procedre !Fn2dtDis#.ForCloseMSenderG !()1e#tJ var A#tionG !CloseA#tionNJ
begin
!a)%asi#o.CloseJ Fe#ha as ta)elas
!a)M"si#a.CloseJ
!a)Categ.CloseJ
endJ
\. Salve e #opile o -or"l+rio #o o noe *(dtDisc.
Agora si' vo#C pode #opilar o pro1eto e rodar o pro1eto' para "a #on-erCn#ia -inal a/
vai o #8digo #opleto do -or"l+rio FIConDisc.
nit F#ondis#J
inter*ace
ses
Iin!ypes' Iin0ro#s' Messages' Classes' Araphi#s' Controls'
Fors' Dialogs' D%' D%!a)les' Arids' D%Arids' StdCtrls' %"ttons'
2.tCtrls' D%CtrlsJ
tLpe
!FnConDis# T classM!ForN
D%Arid1G !D%AridJ
DS%asi#oG !DataSo"r#eJ
%"tFiltrarG !%it%tnJ
%"tFe#harG !%it%tnJ
:ry%asi#oG !:"eryJ
D%4avigator1G !D%4avigatorJ
!a)%asi#oG !!a)leJ
%"t2ditarG !%it%tnJ
%"tAtivaDesativaG !Speed%"ttonJ
!a)%asi#oC(DnD&SC(G !SallintFieldJ
!a)%asi#o4(MnD&SC(G !StringFieldJ
!a)%asi#o!&0nD&SC(G !StringFieldJ
!a)%asi#oC(DnCA!2AG !StringFieldJ
:ry%asi#oC(DnD&SC(G !SallintFieldJ
:ry%asi#o4(MnD&SC(G !StringFieldJ
:ry%asi#o!&0nD&SC(G !StringFieldJ
:ry%asi#oC(DnCA!2AG !StringFieldJ
procedre %"tFiltrarCli#<MSenderG !()1e#tNJ
procedre %"t2ditarCli#<MSenderG !()1e#tNJ
procedre %"tAtivaDesativaCli#<MSenderG !()1e#tNJ
,2,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
private
6 Private de%larations 7
pblic
pro#ed"re &ni#ioJ
endJ
var
FnConDis#G !FnConDis#J
implementation
68 9.D5"7
ses
-Filtro' 6 Chama a monta#em do 5iltro 7
-2dtDis#J 6 .dita o Dis%o 7
procedre !FnConDis#.&ni#ioJ
begin
!a)%asi#o.(penJ
ShoFModalJ
endJ
procedre !FnConDis#.%"tFiltrarCli#<MSenderG !()1e#tNJ
begin
i* %"tAtivaDesativa.DoFn then
begin
MessageDlgMVDesative a -iltrage antes de editar os -iltros...V' t&n-oration' R)(mS' ONJ
e.itJ
endJ
i* FnFiltro.ShoFModal T r(< then
begin
:ry%asi#o.S:;.ClearJ
:ry%asi#o.S:;.AddMFnFiltro.S:;String.!e.tNJ
endJ
endJ
procedre !FnConDis#.%"t2ditarCli#<MSenderG !()1e#tNJ
begin
i* %"tAtivaDesativa.DoFn then
Fn2dtDis#.&ni#ioM:ry%asi#oC(DnD&SC(.7al"eN
else
Fn2dtDis#.&ni#ioM!a)%asi#oC(DnD&SC(.7al"eNJ
endJ
procedre !FnConDis#.%"tAtivaDesativaCli#<MSenderG !()1e#tNJ
begin
i* not %"tAtivaDesativa.DoFn then
DS%asi#o.Dataset GT !a)%asi#o
else
trL
:ry%asi#o.CloseJ
:ry%asi#o.(penJ
DS%asi#o.Dataset GT :ry%asi#oJ
eQcept
,23
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
DS%asi#o.Dataset GT !a)%asi#oJ
raiseJ
endJ
endJ
end.
Ca,-%&+o VIII
Relat(rios
A parte ipressa do Delphi -i#a a #ritErio de trCs EtodosG "tilizar a -erraenta
Report0mith' #o a "nit Printer o" #o a "tiliza*$o da -erraenta ]icTReport Mdispon/vel
no Delphi 1.0 a partir de #opra de ter#eiro' as dispon/vel grat"itaente #o o Delphi 2.0N. (
Delphi o-ere#e " gerador de relat8rios )astante poderoso' #haado Report0mith. Co este
"tilit+rio' vo#C pode #riar relat8rios asso#iados aos diversos )an#os ,"e o Delphi se #o"ni#a.
Tra.a+hando *om o Re,or%Smi%h
( Report0mith poss"i alg"ns relat8rios padr6es' tais #oo relat#rios colnados
Mostra os dados e -oras de #ol"nasN' re*erYncia cr/ada entre tabelas Mostra os dados
tipos "a planilha' asso#iando d"as o" ais ta)elasN' etiMetas Mgera eti,"etas e -oratos
padr$oN' relat#rios em modo de pWgina Mostra os registros de "a deterinada ta)ela " por
p+ginaN.
AtravEs do 3eportSith' e poss/vel gerar relat8rios #o as seg"intes #ara#ter/sti#asG
Co)ina*$o de dados entre v+rias ta)elasJ
(rde e gr"po livre de dados atravEs de deterinados #aposJ
&nser*$o de #a)e*alhos e rodapEsJ
F"n*6es de soa' Edia' +.io e /nioJ
Cria*$o de #ai.as de di+logo para inser*$o de in-ora*6es' -iltrage dos dadosJ
Cria*$o de relat8rios do tipo aster/detailsJ
2.e#"*$o de a#ros d"rante o relat8rioJ e
A#esso as ais variadas )ases de dados' entre elasG
%ases de Dados ,"e o 3eportSith perite a#esso
A##ess &n-ori. S:;%ase
%trieve &nter%ase Sy)ase
D%U (3AC;2 !eradata
,22
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
d%ase 0arado. Ar,"ivo .!L!
2.#el 3aia Dni-y
Fo.0ro AS/[OO Iat#o S:;
&4A32S S:; Server ,"al,"er )ase #o driver (D%C
( Report0mith E " prod"to separado do Delphi' as ao #oprar o Delphi' vo#C
ad,"iri" a"toati#aente a li#en*a para "sar o Report0mith )e #oo a distri)"i*$o livre do
se" 3"n-!ie.
Criando relat(rio com o ReportSmit&
&ni#ie o Report0mith atravEs do /#one ' o" da op*$o do en" prin#ipal do Delphi'
Tools Z Report0mith' dependendo da #on-ig"ra*$o da se*$o Options' ser+ ostrada a tela para o
in/#io de " novo relat8rio.
Can#ele ,"ais,"er op*$o ,"e apare*a e ative no en" prin#ipal File Z Connections==='
le)ra-se do Alias pois a,"i pre#isaos #riar "a #one.$o para a nossa )ase de dados' pressione
o )ot$o %eK e in-ore %ameG Dis#oA00' TLpeG D%AS2M&DA0&N e Data File PathG
CGkS&S!2MAkCADD&SC(' pressione o )ot$o 0ave e OU.
4o en" prin#ipal op*$o File Z %eK===' es#olha a op*$o Colmnar Report' #li,"e no
)ot$o 0tLle e es#olha o estilo do relat8rio ,"e ais lhe agrade e #aso vo#C dese1e pode ar#ar o
estilo es#olhido #oo de-a"lt atravEs da op*$o Vse As De*alt #li,"e no )ot$o OU' e #li,"e no
)ot$o OU e a seg"inte tela ser+ ostradaG
,2R
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Tables - Adi#iona' reove o" altera ta)elas o" #ria lin<s entre elas.
0elections - Cria' edita e e.#l"i #ritErios de sele*$o.
0orting - Adi#iona' reove o" reordena dados a sere organizados.
Derived *ields - Cria e organiza dados #al#"lados para o"tras #ol"nas do relat8rio' )aseado e #oandos S:; o" na
ling"age de a#ro 3eport%asi#.
Report variables - Cria' edita o" e.#l"i vari+veis do relat8rio. 2stas vari+veis pode ser #riadas para atender a
#ritErios da #l+"s"la 0elections servindo de #o"ni*$o entre o Report0mith e o Delphi.
Database groping - Ar"pos de dados e #ritErios de sele*$o.
0]+ - 0erite a edi*$o de de#lara*$o S:; para o relat8rio #orrente.
,= 0ressione o )ot$o Tables.
3= 4a #ai.a de di+logo Tables' pressione o )ot$o Add table===
2= 4o #o)o ConnectionsA sele#ione a #one.$o DiscoAPP e sele#ione a ta)ela
Basico=DB e pressione o )ot$o OU' repita a opera*$o para ta)ela Categor=DB'
#on-ire e retorne a tela anterior.
R= 0ressione o )ot$o Add neK linT===
O= ( rela#ionaento entre Basico e Categor E atravEs do #apo 01PICAT(P' ar,"e
a op*$o 1nclde nmatched records Min#l"a os registros n$o #orrespondentesN do
lado de BA01COQDB' #on-ire e retorne a tela anterior.
S= Sele#ione a ta)ela BA01COQDB e pressione o )ot$o Table colmns===
X= Sele#ione o #apo FOTICAPA e ar,"e a op*$o (Qclde *rom report Mretire do
relat8rioN' #on-ire e retorne a tela anterior.
,2O
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
&= 0ressione o )ot$o Report variables e #rie as vari+veisG Cod1nicial e CodFinal
a)as #o a op*$o TLpe ig"al a %mber e a op*$o (ntrL ig"al a TLpe5in.
'= 0ressione o )ot$o 0elections e #li,"e no )ot$o aarelo ar#ado #o ,= e es#olha a
op*$o Add selection criteria e ar,"e o seg"inte #ritErioG data *ield
BA01COQDB=CODID10CO is betKeen report variable Cod1nicial and report
variable CodFinal.
,-= Cli,"e no )ot$o 0orting' ar,"e o #apo CODID10CO e #li,"e no )ot$o 1nsert
into sort list Minsira para a lista de ordena*$oN.
,,= Cli,"e no )ot$o 0]+ e #opare a de#lara*$o #riadaG
S2;2C!
V%AS&C(.D%V.VC(DnD&SC(V' V%AS&C(.D%V.V4(MnD&SC(V' V%AS&C(.D%V.V!&0nD&SC(V'
V%AS&C(.D%V.S&AnCA!2AV' VCA!2A(3.D%V.VS&AnCA!2AV' VCA!2A(3.D%V.VD2SnCA!2AV
F3(M
VCGkS&S!2MAkCADD&SC(k%AS&C(.D%V %AS&C(.D% ;2F! ?(&4
VCGkS&S!2MAkCADD&SC(kCA!2A(3.D%V CA!2A(3.D% (4 MV%AS&C(.D%V.VS&AnCA!2AV T
VCA!2A(3.D%V.VS&AnCA!2AV N
I9232
MMMV%AS&C(.D%V.VC(DnD&SC(V %2!I224 ``Cod&ni#ial__ A4D ``CodFinal__NNN
(3D23 %l
V%AS&C(.D%V.VC(DnD&SC(V
1U. Con-ire o relat8rio pressionando o )ot$o Done. &n-ore os dados ini#iais e -inais e
ag"arde a gera*$o do relat8rio.
Organi0ando os campos do relat(rio
A#redito ,"e a esta alt"ra vo#C te " )elo in/#io de relat8rio nas $os' agora tereos
,"e alterar alg"ns #apos ,"e n$o -i#ara direitoG
1. Sele#ione os #apos S&AnCA!2A Mtanto o t/t"lo ,"anto o detalheN e pressione D(+.
U. Sele#ione o detalhe do #apo 4(MnD&SC( e pressione o )ot$o direito do o"se'
sele#ione a op*$o Field )eight e ar,"e a op*$o Can ProK Mrediensione a
vari+vel #on-ore o taanhoN e Can 0hrinT M#orte os #ara#teres n$o ipri/veisN.
Z. !ro,"e os t/t"los de #ada #apo paraG C8digo' 4oe' !ipo e Categoria. M)asta #li#ar
d"as vezes so)re #ada t/t"loN.
[. !ro,"e o t/t"lo do relat8rio paraG Cadastro de CDfs.
5. 4o en" sele#ione a op*$o 1nsert e Field===' sele#ione 0Lstem Fields' e sele#ione o
#apo Print Date7Time' pressione o )ot$o 1nsert e #li,"e e ,"al,"er posi*$o da
se*$o )eader.
\. Copare agora o relat8rio geradoG
,2S
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Salve o relat8rio gerado #o o noe de 3CADAS!.30!
/ssociando o relat(rio ao aplicativo
A parte di-/#il 1+ -oi realizada agora resta #haar o relat8rio atravEs do nosso en"
prin#ipal.
Chae o -or"l+rio -en" e insira o o)1eto 3eport ' en#ontrado na Component
Palette p+gina Dialo#s' este o)1eto realiza o tra)alho de #on-ig"ra*$o da ipressora.
1. Cli,"e na op*$o =Con-ig"ra &pressora> #haando o evento onCli#<J
U. &nsira o #oando
procedre !FMen".Con-i"ra&pressora1Cli#<MSenderG !()1e#tNJ
begin
0rinterSet"pDialog1.2.e#"teJ
endJ
Criareos agora "a 1anela siples de di+logo' onde sele#ionareos " #8digo ini#ial e
-inal para os #8digos do CD.
&ni#ialente Cli,"e no )ot$o M4eF ForN na Speed Bar' o" no en" prin#ipal a
Cli,"e no en" prin#ipal a op*$o File e %eK===' e !ew Items' na p+gina !ew e #li,"e
no o)1eto entit"lado 5orm e altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
%orderStyle )sDialog 2stilo da )orda do o)1eto
Caption &prie Cadastro Aeral ;a)el do o)1eto
4ae FnDgAeral 4oe do o)1eto
0osition poS#reenCenter 0osi*$o do o)1eto
Crie para esta nova 1anela os seg"intes o)1etosG
+abel M;o#alizado na p+gina 0tandardN - #rie trCs o)1etos la)elsG
0ropriedade 7alor Des#ri*$o
Caption R1S. &n-ore o C8digo dos CDBs a
ipriirJ RUS. &ni#ialG e RZS. FinalG
;a)el do o)1eto
Font R1S. MS Sans Seri-' 4egrito' Y' Az"l
Marinho e RU'ZS. MS Sans Seri-'
!ipo de letra a ser ostrada no o)1eto
,2X
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
4egrito' Y' Castanho
BitBtn M;o#alizado na p+gina AdditionalN - #rie dois )ot6es para #on-irar o"
#an#elar a eiss$o do relat8rioG
0ropriedade 7alor Des#ri*$o
mind )<(< e )<Can#el Deterina a #lasse a ser "tilizada pelo o)1eto'
a"toati#aente ser$o alteradas as propriedadesG
Caption' PlLph e ModalReslt
Caption p(m e pCan#elar ;a)el do o)1eto
(dit M;o#alizado na p+gina 0tandardN - dois o)1etos de edi*$o para inser*$o do
#8digo ini#ial e -inalG
0ropriedade 7alor Des#ri*$o
!e.t !e.to a ser apresentado ini#ialente para o o)1eto
Font MS Sans Seri-' 4oral' Y' Az"l
Marinho
!ipo de letra a ser ostrada no o)1eto
Copare #o o -or"l+rio a)ai.oG
Programando o !orm$l)rio
Antes de prosseg"iros salve o -or"l+rio #o o noe de -DgAeral.
0ara sele#ionaros os #8digos ini#ial e -inal' pre#isaos -azer "a pe,"ena
prograa*$o no -or"l+rioG
C8digo para #riar os dois #apos ,"e enviar$o os #8digos Mle)ra-se do #ap/t"lo 7&& -
3e-erente a Cons"ltasNG
1. Alterne para o Code(ditor e insira o seg"inte #8digo a)ai.oG
private
*nction AetCod&ni#ialG 0tringJ &ni#ializa as -"n*6es
*nction AetCodFinalG 0tringJ
pblic
propertL Cap&ni#ialG 0tring read AetCod&ni#ialJ Cria tipo #ara#tere as vari+veis'
propertL CapFinalG 0tring read AetCodFinalJ apenas #oo sa/da
endJ
var
FnDgAeralG !FnDgAeralJ
,2&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
implementation
68 9.D5"7
*nction !Fn DgAeral.AetCod&ni#ialG 0tringJ
begin
3es"lt GT 2dit1.!e.tJ 2nvia #oo res"ltado o #onte5do do
endJ o)1eto 2dit1
*nction !Fn DgAeral.AetCodFinalG 0tringJ
begin
3es"lt GT 2ditU.!e.tJ 2nvia #oo res"ltado o #onte5do do
endJ o)1eto 2ditU
0or in#r/vel ,"e pare*a isto E t"do' agora #hae o o)1eto -Men"' insira o o)1eto 3eport
' en#ontrado na Component Palette p+gina Data &%%ess' este o)1eto realiza o tra)alho de
#on-ig"ra*$o da ipress$o.
1. Cli,"e na op*$o =3elat8rio e Aeral> #haando o evento onCli#<J
U. &nsira o #oando
procedre !FnMen".Aeral1Cli#<MSenderG !()1e#tNJ
begin
i* FnDgAeral.ShoFModal T r(m then Chaa e veri-i#a se a DgAeral retorno" (m
Kith 3eport1 do 0ara o o)1eto 3eport1...
begin
3eport4ae GT V3CADAS!.30!VJ Altera a propriedade 4oe do 3elat8rio
&nitial7al"es.ClearJ 2liina os valores ini#iais
&nitial7al"es.AddMV^Cod&ni#ialT`VXFnDgAeral.Cap&ni#ialXV_VNJ Seta o valor Cod&ni#ial do
relat8rio #o o valor do Cap&ni#ial do -or"l+rio -DgAeral
&nitial7al"es.AddMV^CodFinalT`VXFnDgAeral.CapFinalXV_VNJ Seta o valor CodFinal do
relat8rio #o o valor do CapFinal do -or"l+rio -DgAeral
3"nJ &ni#ia o relat8rio
endJ
endJ
Salve e e.e#"te o sistea' in-ore tre#hos di-erentes para o relat8rio.
Caso vo#C ,"eira ,"e o 3eportSith n$o e.e#"te iediataente o relat8rio
ostrando antes "a prEvia na tela odi-i,"e a propriedade do o)1eto Report, - Preview para
4rue.
7o#C des#o)rir+ ,"e o Report0mith E "a poderosa e siples -erraenta para a
#on#ep*$o de relat8rios' o 5ni#o pro)lea seria #o relat8rios ,"e se pre#ise ipriir "a 5ni#a
o" po"#as -olhas' #oo " re#i)o o" " -or"l+rio prE-ipresso' vo#C des#o)rir+ ,"e ele E
lento para estas tare-as' e.iste d"as sol"*6es para este #aso "sar a )i)liote#a Printers o" "sar a
ipress$o livre do -or"l+rio #oo vereos a seg"ir.
,2'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
mprimindo atrav;s do %orm$l)rio
0ara o nosso pr8.io relat8rio' pre#isaos apenas ipriir a #apa de " CD' se vo#C
rele)ra a -oto -oi arazenada e " #apo do tipo %;(% #haado F(!nCA0A' no ar,"ivo
%AS&C(.
A idEia E siples' #onstr"ir " -or"l+rio e )ran#o' se )orda' este ser+ #haado
atravEs do en" prin#ipal e soli#itado a in-ora*$o do #8digo do CD a ipriir' neste
-or"l+rio ter+ os o)1etos de a#esso a !a)ela M4a(le e DataSour%eN asso#iado ao o)1eto D%&age
' en#ontrado na Component Palette na p+gina Data Controls' #on-ore a -ig"ra a)ai.oG
&ni#ialente Cli,"e no )ot$o M4eF ForN na Speed Bar' o" no en" prin#ipal a
Cli,"e no en" prin#ipal a op*$o File e %eK===' e !ew Items' na p+gina !ew e #li,"e
no o)1eto entit"lado 5orm e altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
%orderStyle )s4one 2stilo da )orda do -or"l+rio
Caption ;a)el do o)1eto M!ar1a az"l do -or"l+rioN
4ae FnCapa 4oe do o)1eto
0osition poS#reenCenter 0osi*$o da 1anela M#entralizadoN
%order&#ons RS 2liine todos os )ot6es da 1anela
Color #lIhite Cor de -"ndo
Crie para esta nova 1anela os seg"intes o)1etosG
Table M;o#alizado na p+gina Data AccessN ' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Data)ase4ae %aseDis#o 4oe do Alias o" a lo#aliza*$o do diret8rio das
ta)elas
!a)le4ae %AS&C(.D% 4oe e.terno da ta)ela
&nde.Field4aes C(DnD&SC( 4oe do #apo inde.ado
4ae !a)%asi#o 4oe do o)1eto
,R-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
3ead(nly !r"e Soente para leit"ra
Data0orce M;o#alizado na p+gina Data AccessN ' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
DataSet !a)%asi#o 4oe da ta)ela vin#"lada
4ae DS%asi#o 4oe do o)1eto
db1mage M;o#alizado na p+gina Data ControlsN ' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
DataSo"r#e DS%asi#o 4oe do DataSo"r#e vin#"lado
DataField F(!nCA0A 4oe do #apo na ta)ela
9eight [57 ;arg"ra
Stre#h !r"e Se o taanho da iage deve a#opanhar o taanho
do o)1eto
Iidth [Y1 Alt"ra do o)1eto
( taanho da iage -oi #olo#ada e [57 . [Y1 pois e ipressoras padr$o 2pson
este' ap8s ipresso' E o taanho da #apa do CD. K ne#ess+rio ,"e vo#C -a*a os a1"stes
ne#ess+rios para se adaptar ao padr$o de s"a ipressora.
Cres*a o taanho do -or"l+rio e #on1"nto ao taanho do o)1eto iage.
Salve o -or"l+rio #o o noe de -Capa.
Criando o C(digo
( #8digo para este -or"l+rio e s"a #haada a partir do en" prin#ipal E )e ais
siples ,"e o realizado anteriorente' veri-i,"eG
0ara o en" prin#ipal
C8digo para #riar a #haadaG
1. Chae o -or"l+rio -Men"' e #li,"e na op*$o =Capa do CD> G
procedre !FnMen".CapadoCD1Cli#<MSenderG !()1e#tNJ
var
4"CDG 0tringJ
begin
4"CD GT &np"t%o.MV&n-oreV' V2ntre #o o #8digo do CD para ipriirGV' VVNJ
i* 4"CD T VV then
begin
MessageDlgMV4$o -oi in-orado " #8digo para a ipress$oV' t&n-oration' R)(<S' ONJ
e.itJ
endJ
FnCapa.&ni#ioM4"CDNJ
endJ
( #8digo para este evento E )e siplesG #ria "a vari+vel #ara#ter e soli#ita a
entrada de se" valor atravEs da -"n*$o 1nptBoQ' #aso n$o se1a retornado nenh" valor #an#ela a
,R,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
ipress$o ao #ontr+rio #haa o pro#ediento =ini#io> do -or"l+rio =FnCapa> enviando o valor
in-orado.
4$o se es,"e*a de #olo#ar a "nidade -Capa no #oando Vses.
0ara o -or"l+rio FnCapa
C8digo para soli#itar e peritir a ipress$oG
1. Chae o -or"l+rio FnCapa' e alterne para o odo do Code (ditor G
procedre !FnCapa.&ni#ioM4"eroG 0tringNJ
begin
!a)%asi#o.(penJ
i* not !a)%asi#o.FindmeyMRStr!oFloatM4"eroNSN then
MessageDlgMVC8digo do CD ine.istente fV' t2rror' R)(<S' ON
else
begin
ShoFJ
i* MessageDlgMVCon-ira a ipress$o da Capa @V' tCon-iration'
)(<Can#el' ON T r(< then
FnCapa.0rintJ
endJ
!a)%asi#o.CloseJ
CloseJ
endJ
( #8digo para este evento novaente E )e siplesG a)re a ta)ela e pes,"isa a
e.istCn#ia do #8digo enviado' #aso en#ontre ostra a #apa do CD e soli#ita a #on-ira*$o do
relat8rio' e iprie ao -inal -e#ha a ta)ela e o -or"l+rio.
4$o se es,"e*a de de#larar o pro#ediento nas de#lara*6es Pblic. Mprocedre
&ni#ioM4"eroG 0tringNJN
Tra.a+hando *om o =&i*:Re,or%
( :"i#<3eport E " prod"to -orne#ido pela :SD M:"i#< So-t DevelopentN e vers$o
FreeFare para o Delphi 2.0 e vers$o ShareFare para o Delphi 1.0' pode-se dizer ,"e E o prieiro
gerador de relat8rios totalente orientado a o)1etos' o #8digo -inal gerado pelo :"i#< e
in#orporado ao e.e#"t+vel n$o havendo a ne#essidade de se #arregar ar,"ivos e.ternos M#oo E o
#aso do 3eport SithN' os o)1etos do :"i#< s$o -orados pela seg"inte )andaG
(s o)1etos #ontidos nesta )anda s$oG
:"i#<3eport
,R3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
( #oponente :"i#<3eport e o respons+vel pelo #ontrole do relat8rio. Se" tra)alho
E trans-orar o -or"l+rio do Delphi e " relat8rio. 0ara "a prEvia do relat8rio Me odo de
#onstr"*$oN )asta siplesente dar " d"plo #li#< so)re o o)1eto as le)re-se ,"e os #8digos
para os eventos n$o ser$o e.e#"tados. Coponente respons+vel pelo #ontrole prin#ipal do
relat8rio. Colo,"e-o e " -or"l+rio ,"e servir+ de )ase para o relat8rio e "tilize os #oandos
Print o" Preview.
:3%and
Da )anda E "a siples divis$o do relat8rio. " relat8rio ser+ dividido e
di-erentes partes para a ipress$o' tais #ooG Detalhe' Ca)e*alho de 0+gina' 3odapE' Ar"pos'
et#. Alg"ns tipos de )andas s$o ipressas a"toati#aente' en,"anto ,"e o"tros tipos ne#essita
dos o)1etos ]RProp o" ]RDetail+inT para se" #ontrole. K poss/vel ta)E "tilizar-se de
5ltiplas )andas de " eso tipo.
:3Aro"p
(s gr"pos pode ser -orados #o o a"./lio deste #oponente' se "tiliza de
#a)e*alho e rodapE para o #ontrole do gr"po. K poss/vel #riar no +.io 1O n/veis Ma proprieade
0evel varia de O a 9N sendo ,"e os n/veis ais )ai.os doina a ipress$o dos ais altos.
:3Detail;in<
( #oponente :3Detail;in< E "sado para #riar di-erentes tipos de detalhes.
:3;a)el
!e.tos est+ti#o no relat8rio s$o -orados pelo #oponente :3;a)el )astando para
isso odi-i#ar a propriedade Caption. K poss/vel ta)E odi-i#ar a propriedade Caption
d"rante a gera*$o do relat8rio
:3Meo
( #oponente :3Meo e "sado para ipriir "ltiplas linhas de " #apo.
:3D%!e.t
2ste #oponente E respons+vel pela ipress$o dos #apos dos ar,"ivos.
:3D%Cal#
Coponente "tilizado para realizar #+l#"los )+si#os d"rante a gera*$o do relat8rio
:3SysData
,R2
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
&prie v+rias in-ora*6es so)re o sistea tais #ooG n5ero da p+gina' data'
hora o" t/t"lo do relat8rio.
:3Shape
Dtilizado para desenhar siples -ig"ras geoEtri#as.
:30revieF
2ste o)1eto E respons+vel pela odi-i#a*$o no 0revieF padr$o do relat8rio.
7aos agora realizar " e.eplo siples e pr+ti#o #o o :"i#<' #riando o eso
relat8rio proposto #o o Report 0mith' deste odo a#redito' ,"e vo#C pode #oparar a
-a#ilidade de a)os os geradores.
1. &ni#ialente Cli,"e no )ot$o M4eF ForN na Speed Bar' o" no en" prin#ipal a
Cli,"e no en" prin#ipal a op*$o File e %eK===' e !ew Items' na p+gina !ew e #li,"e
no o)1eto entit"lado 5orm e altere a propriedade name para FIRelato e salve o
-or"l+rio #oo *Relato.
U. Colo,"e os seg"intes o)1etos e -a*a as seg"intes altera*6esG
]erL M;o#alizado na p+gina Data AccessN ' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
Data)ase4ae %aseDis#o 4oe do Alias o" a lo#aliza*$o do
diret8rio das ta)elas
S:; Sele#t %.CodnDis#o' %.4onDis#o' %.!ipnDis#o'
C.DesnCateg -ro %asi#o as % le-t 1oin Categor as
C on M%.SignCateg T C.SignCategN Fhere
%.CodnDis#o %etFeen GCodO1 and GCodOU order
)y %.CodnDis#o
Cl+"s"la de #ons"lta
0aras A#erte a)os os #apos para DataTLpe #oo
AsFloat
0arQetro da #ons"lta
4ae :ry%asi#o 4oe do o)1eto
Data0orce M;o#alizado na p+gina Data AccessN ' altere as seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
DataSet :ry%asi#o 4oe da ta)ela vin#"lada
4ae DS%asi#o 4oe do o)1eto
]icTReport M;o#alizado na p+gina ]ReportN
0ropriedade 7alor Des#ri*$o
DataSo"r#e Ds%asi#o 4oe do DataSo"r#e vin#"lado
4ae :rCon-ere 4oe do o)1eto
3eport!itle Cadastro de CDus !/t"lo do 3elatorio
0ara o ()1eto ]rBand M;o#alizado na p+gina ]ReportN
0ropriedade 7alor Des#ri*$o
%and!ype r)0age9eader !ipo da )anda MCa)e*alho de 0+ginaN
,RR
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
4ae )dCa)e#alho 4oe do o)1eto
Color #l4avy Cor da %anda
0ara o ()1eto ]r0LsData M;o#alizado na p+gina ]ReportN' #rie-o #li#ando dentro do
o)1eto bdCabecalho
0ropriedade 7alor Des#ri*$o
Align!o%and !r"e Alinha #onsiderando a )anda
A"toSize !r"e Diensiona a"toati#aente o taanho
Data ,rs3eport!itle !ipo do dado a ser ostrado
Font Arial' 1[' 4egrito' %ran#o Fonte do o)1eto
Alignent taCenter Alinhaento do o)1eto
0ara o ()1eto ]r0LsData M;o#alizado na p+gina ]ReportN' #rie-o #li#ando dentro do
o)1eto bdCabecalho
0ropriedade 7alor Des#ri*$o
Align!o%and !r"e Alinha #onsiderando a )anda
A"toSize !r"e Diensiona a"toati#aente o taanho
Data ,rsDate!ie !ipo do dado a ser ostrado
Font Arial' Y' 4oral' %ran#o Fonte do o)1eto
Alignent ta3ight?"sti-y Alinhaento do o)1eto
0ara o ()1eto ]rBand M;o#alizado na p+gina ]ReportN
0ropriedade 7alor Des#ri*$o
%and!ype r)Col"n9eader !ipo da )anda MCa)e*alho de Col"naN
4ae )dCa)Col"na 4oe do o)1eto
Color #l4avy Cor da %anda
;in<%and )dCa)e#alho %anda de depCnden#ia
0ara o ()1eto ]r+abel M;o#alizado na p+gina ]ReportN' #rie-o #li#ando dentro do
o)1eto bdCabColna
0ropriedade 7alor Des#ri*$o
Caption C8digo ;a)el do o)1eto
Font Arial' 1U' 4egrito' %ran#o Fonte do o)1eto
0ara o ()1eto ]r+abel M;o#alizado na p+gina ]ReportN' #rie-o #li#ando dentro do
o)1eto bdCabColna
0ropriedade 7alor Des#ri*$o
Caption 4oe ;a)el do o)1eto
Font Arial' 1U' 4egrito' %ran#o Fonte do o)1eto
0ara o ()1eto ]r+abel M;o#alizado na p+gina ]ReportN' #rie-o #li#ando dentro do
o)1eto bdCabColna
0ropriedade 7alor Des#ri*$o
Caption !ipo ;a)el do o)1eto
Font Arial' 1U' 4egrito' %ran#o Fonte do o)1eto
0ara o ()1eto ]r+abel M;o#alizado na p+gina ]ReportN' #rie-o #li#ando dentro do
o)1eto bdCabColna
,RO
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
0ropriedade 7alor Des#ri*$o
Caption Categoria ;a)el do o)1eto
Font Arial' 1U' 4egrito' %ran#o Fonte do o)1eto
0ara o ()1eto ]rBand M;o#alizado na p+gina ]ReportN
0ropriedade 7alor Des#ri*$o
%and!ype r)Detail !ipo da )anda MCa)e*alho de Col"naN
4ae )dDetalhe 4oe do o)1eto
;in<%and )dCa)Col"na %anda de depCnden#ia
0ara o ()1eto ]rDbTeQt M;o#alizado na p+gina ]ReportN' #rie-o #li#ando dentro do
o)1eto bdDetalhe
0ropriedade 7alor Des#ri*$o
A"toSize !r"e Diensiona a"toati#aente o taanho
DataSo"r#e Ds%asi#o DataSo"r#e vin#"lado
DataField CodnDis#o Capo vin#"lado
0ara o ()1eto ]rDbTeQt M;o#alizado na p+gina ]ReportN' #rie-o #li#ando dentro do
o)1eto bdDetalhe
0ropriedade 7alor Des#ri*$o
A"toSize !r"e Diensiona a"toati#aente o taanho
DataSo"r#e Ds%asi#o DataSo"r#e vin#"lado
DataField 4onDis#o Capo vin#"lado
0ara o ()1eto ]rDbTeQt M;o#alizado na p+gina ]ReportN' #rie-o #li#ando dentro do
o)1eto bdDetalhe
0ropriedade 7alor Des#ri*$o
A"toSize !r"e Diensiona a"toati#aente o taanho
DataSo"r#e Ds%asi#o DataSo"r#e vin#"lado
DataField !ipnDis#o Capo vin#"lado
0ara o ()1eto ]rDbTeQt M;o#alizado na p+gina ]ReportN' #rie-o #li#ando dentro do
o)1eto bdDetalhe
0ropriedade 7alor Des#ri*$o
A"toSize !r"e Diensiona a"toati#aente o taanho
DataSo"r#e Ds%asi#o DataSo"r#e vin#"lado
DataField DesnCateg Capo vin#"lado
Criareos " relat8rio siples #o #a)e*alho M%dCa)e#alhoN' &press$o das linhas
detalhe M)dDetalheN e rodapE M)d3odapeN' a orde de disposi*$o das )andas n$o iporta' o
o)1eto :"i#<3eport E respons+vel por este #ontrole.
Ao -inal a#erte a tela de odo ,"e -i,"e seelhante a estaG
,RS
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Z. 0or ais in#r/vel ,"e isto possa pare#er nosso relat8rio est+ pronto' pre#isaos soente
"dar a #haada a partir do o)1eto FnMen" Maproveitareos o o)1eto FnDgAeral #riado
para o "so #o o Report 0mithN #hae novaente o o)1eto FIMen e #li,"e na op*$o
=3elat8rio e Aeral> #haando o evento onCli#<J
[. &nsira o #oando
procedre !FnMen".Aeral1Cli#<MSenderG !()1e#tNJ
begin
i* FnDgAeral.ShoFModal T r(m then Chaa e veri-i#a se a DgAeral retorno" (m
Kith Fn3elato do 0ara o o)1eto Fn3elato
begin
:ry%asi#o.0arasROS.AsFloat GT Str!oFloatMFnDgAeral.Cap&ni#ialNJ 2nvia os parQetros
:ry%asi#o.0arasROS.AsFloat GT Str!oFloatMFnDgAeral.CapFinalNJ
:ry%asi#o.(penJ A)re a :"ery
:rCon-ere.0revieFJ Chaa o relat8rio e tela
:ry%asi#o.CloseJ Fe#ha a :"ery
endJ
endJ
0oderiaos -i#ar #riando =n> tipos de relat8rios di-erentes as o elhor Etodo E ,"e
vo#C dC "a olhada no diret8rio RDiret8rio de &nstala*$o do DelphiSkDeosk:"i#<3pt e e.e#"te o
pro1eto ]rdemo=dpr. :"al,"er o"tra re-erCn#ia pode ser en#ontrada no do#"ento Jord ,"e
a#opanha o prod"to' o ar,"ivo ]rManal=doc.
( "s"+rio do Delphi 1.0 pode -i#ar se perg"ntando por,"e ad,"irir o" aprender a
"tilizar " o"tro gerador de relat8rio ,"ando o Delphi 1+ traz grat"itaente o Report0mith@ (
pro)lea ,"e a#onte#e se restringe a distri)"i*$o de " sistea e Delphi ,"e "tilize relat8rios
gerados #o o Report0mith este e.ige " r"n-tie para e.e#"tar Mdistri)"/do grat"itaente
tanto na vers$o 1.O ,"anto na vers$o U.ON o#"pando ais espa*o na +,"ina #liente.
4e#essariaente' n$o ser+ pre#iso en,"anto vo#C estiver na -ase de =desenhando> o
-or"l+rio e.e#"tar o sistea para ver #oo -i#o"' siplesente dC " d"plo #li,"e no o)1eto e
o relat8rio ser+ a"toati#aente gerado. Obs. C"idado ,"e os eventos #riados do -or"l+rio n$o
ser$o e.e#"tados.
,RX
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Ca,-%&+o IX
'$ltimdia
2ste #ap/t"lo -oi inserido apenas para sanar ,"ais,"er d5vidas e.istentes ,"anto ao
desenvolviento de apli#a*6es ,"e envolva "lti/dia #o o Delphi' a prieira parte n$o -az
parte do desenvolviento do pro1eto piloto ini#iado.
O C&e D m&+%im-dia A
M"lti/dia e "a asso#ia*$o ,"e de#orre #o o "so de iagens' sons e ovientos' os
trCs tipos de ar,"ivos ,"e se "tiliza deste -orato de apli#a*$o s$oG
1. tipo A7& - in#l"i as prod"*6es de v/deo.
U. tipo M&D - ar,"ivos para a prod"*$o de 5si#a "tilizando a inter-a#e de &nstr"entos
M"si#ais Digitalizados' o" -orato M&D&.
Z. tipo IA7 - ais #o"ns' in#l"i o registro de sons "tilizando a te#nologia Mi#roso-tVs
IA72..
( pro)lea prin#ipal ,"e o#orre ,"anto a apli#a*6es "lti/dia E o espa*o -/si#o
o#"pado' por e.eplo' ar,"ivos do tipo A7&' #oparando " -ile de apenas " in"to o"
enos pode o#"par #er#a de 5M) o" atE eso 1OM) de espa*o e dis#o.
"elp&i and '$ltimedia
( o)1eto !Media0layer ' en#ontrado na Component Pallet/ na p+gina S/stem'
perite o a#esso aos ar,"ivos "lti/dia. ( #ontrole E e.treaente siples. De -ato' E -+#il
#riar apli#a*6es ,"e envolva so o" iagens e oviento #o apenas "a o" d"as linhas de
#8digo.
AtravEs deste o)1eto vo#C te a#esso e #ontrole a rotinas ais internas atravEs da MC&
M"edia Control Interfa%eN. 2ssas rotinas pode ser prograadas para a#essar toda a possi)ilidade
do "ndo "lti/dia. Co este o)1etos estas rotinas se torna e.treaente siples e
int"itivas para se" "so' #oo vereos a seg"ir.
Objeto -'ediaPla<er
0ara #riar "a siples apli#a*$o "lti/dia #rie " novo pro1eto' e arraste o o)1eto
para o -or"l+rio' a"toati#aente E #riado "a )arra de tare-as "lti/dia' #on-ore a -ig"ra
a)ai.oG
,R&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Cli,"e no o)1eto e altere a propriedade 5ile!ame para CGkI&4D(ISkC9&M2S.IA7
esta propriedade asso#ia a ar,"ivos tipo A7&' M&D& o" IA72 altere ta)E a propriedade
&uto'pen para 4rue' esta propriedade ini#ia a"toati#aente o ar,"ivo.
Depois de #opletos estes siples passos vo#C 1+ pode rodar o prograa. 0ressione o
)ot$o verde para o"vir o so do ar,"ivo sele#ionado. Mas de repente vo#C n$o o"vi" nada' n$o
se desespere a #a"sa pode ser " destes pro)leas
1. 7o#C entro" #o o noe do ar,"ivo inv+lido.
U. Se" sistea de "lti/dia n$o est+ #orreto.
Z. A propriedade &uto'pen n$o est+ true.
3es"ltados idCnti#os o#orre #o ar,"ivos M&D& o" A7&.
Colocando as propriedade em modo R$ntime
Dependendo das #ir#"nstQn#ias E pre-er/vel ,"e o ar,"ivo n$o este1a sepre a)erto as
apenas ,"ando o "s"+rio #li#ar e " deterinado )ot$o. &sto pode ser o)tido -a#ilente
odi-i#ando a propriedade &uto'pen para 5alse e no evento (nCli#< do )ot$o insira o seg"inte
#oandoG
procedre !For1.%"tton1Cli#<MSenderG !()1e#tNJ
begin
Media0layer1.(penJ
endJ
0odeos ta)E alterar o ar,"ivo a ,"al ,"ereos o"vir' para isto insira o o)1eto
(penDialog ' en#ontrado na Component Palette na p+gina Dialo#s' e " o)1eto BitBtn
#on-ore a -ig"ra a)ai.oG
0ara o evento onCli#< do o)1eto 0eleciona insira o seg"inte #8digoG
procedre !For1.Sele#ionaCli#<MSenderG !()1e#tNJ
begin
Media0layer1.CloseJ
i* (penDialog1.2.e#"te then
begin
,R'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Media0layer1.File4ae GT (penDialog1.File4aeJ
Media0layer1.(penJ
endJ
endJ
D a1"ste pode ser -eito para peritir ,"e o o)1eto sele*$o tenha a#esso apenas as
e.tens6es A7& ' IA7' or M&D. 0odendo ser #olo#ado de d"as aneiras di-erentes' na propriedade
5ilter do o)1eto OpenDialog,G
1. Ar,"ivos M"lti/dia Mo.aviJ oFavJ o.idN e o.aviJo.FavJo.id
U. Ar,"ivo A7& Mo.aviN e o.avi
Ar,"ivo IA72 Mo.FavN e o.Fav
Ar,"ivo M&D& Mo.M&DN e o.id
As )arras M e N s$o "tilizadas para dividir d"as se*6esG 5ilter !ame e 5ilter.
Pes=$isando vari)veis em modo R$n-ime
Da aostra "ito siples de " prograa "lti/dia' e " tanto poderoso ,"e ,"ase
,"al,"er pessoa E #apaz de -aze-lo' pois o prograa E " po"#o ro)"sto' e n$o a#onselho a
tentativa por prograadores ine.perientes' para as in-ora*6es a,"i ne#essitadas E pre#iso ter "
#ontrole total das #apa#idades "lti/dia.
Antes de ini#iaros vaos -azer "a pe,"ena o)serva*$o' prin#ipalente relativo a dois
pontosG
0ara alg"ns prograadores ,"e pro#"ra #oisas 5teis' as in-ora*6es a,"i presentes
#ontE o essen#ial para trans-or+-los e prograadores "lti/dia.
("tra o)serva*$o seria a respeito de alg"ns #ontroles a ar,"ivos "lti/dia. DC "a
olhada no ar,"ivo RDiret8rioDelphiSkS(D3C2k3!;kI&4kMMSlS!2M.0AS' E "a )i)liote#a
de -"n*6es ,"e #ontE todas as #haada de a#esso a )ai.o n/vel de #oandos IindoFs para
apli#a*6es "lti/dia. As tE#ni#as de a#essos est$o #ontidas no pr8prio do#"ento.
Co estes dois pontos -res#os e nossa ente' podeos ini#iar o nosso est"do so)re os
aspe#tos do o)1eto 4"ediaPla/er.
,O-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
DC "a olhada na '()eto Inspe%tor na p+gina de 2ventos do o)1eto 4"ediaPla/er vo#C
en#ontrar+ dois EtodosG
( evento 'nCli%k ,"e o#orre ,"ando E pressionado ,"al,"er )ot$o do #ontrole. 0or
instQn#ia' atravEs do parQetro enviado Button E poss/vel sa)er se o )ot$o pressionado -oi o
'nPla/.
D seg"ndo evento #onsiste no 'n!otif/ por #onter a ensage mmG"%i!otif/ ,"e s$o
as #haadas do IindoFs para o ini#io o" o terino de "a e.e#"*$o' #o se"s event"ais erros.
A)os os eventos ser$o dis#"tidos nos pr8.ios par+gra-os.
K poss/vel identi-i#ar o )ot$o pressionado atravEs do evento (nCli#<' a,"i est$o todos os
tipos gerados pelo 4"PBtn4/peG
)t0layG :"ando pressionado o )ot$o verde' &ni#iar.
)t0a"seG :"ando pressionado o )ot$o aarelo' 0a"sa.
)tStopG :"ando pressionado o )ot$o verelho' 0arar.
)t%a#<G :"ando pressionado o )ot$o az"l' Avan*a a iage.
)tStepG :"ando pressionado o )ot$o az"l' 3etorna a iage.
)t4e.tG :"ando pressionado o )ot$o az"l' Avan*o r+pido.
)t0revG :"ando pressionado o )ot$o az"l' 3etorno r+pido.
)t3e#ordG :"ando pressionado o )ot$o verelho' Arava*$o.
)t21e#tG :"ando pressionado o )ot$o az"l' 3etirar.
&ni#ialente vaos deterinar ,"al -oi o tipo de )ot$o pressionado' para tanto' #rie para
o evento 'nCli%k o seg"inte #8digoG
procedre !For1.Media0layer1Cli#<MSenderG !()1e#tJ %"ttonG !M0%tn!ypeJ var DoDe-a"ltG %ooleanNJ
begin
case %"tton o*
)t0layG 2dit1.!e.t GT V!o#andoVJ
)t0a"seG 2dit1.!e.t GT V0a"sadoVJ
)tStopG 2dit1.!e.t GT V0aradoVJ
)t4e.tG 2dit1.!e.t GT V0r8.ioVJ
)t0revG 2dit1.!e.t GT VAnteriorVJ
)tStepG 2dit1.!e.t GT VAvan*andoVJ
)t%a#<G 2dit1.!e.t GT V3etornandoVJ
)t3e#ordG 2dit1.!e.t GT VAravandoVJ
)t21e#tG 2dit1.!e.t GT V3etirandoVJ
endJ
endJ
0ara en#ontrar o ,"e a#onte#e" #o o pro#esso' ne#essitaos do evento 'n!otif/. A,"i
est$o as ensagens enviadas pelo sistea opera#ionalG
#in4oti-ynS"##ess-"lG Coando #opletado #o C.ito
#in4oti-ynS"persededG Coando s"spenso por o"tra -"n*$o
#in4oti-ynA)ortedG F"n*$o #orrente -oi interropida
#in4oti-ynFail"reG Alg" erro o#orre".
,O,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
( Delphi n$o re#onhe#e estas diretivas de ensage' as ele #onverte para #onstantes
do tipoG
nvS"##ess-"l indi#ando o C.ito.
nvS"perseded indi#ando ,"e est+ s"spenso' provavelente por #a"sa de "a pa"sa.
nvA)orted essages indi#ando ,"e -oi pressionado o )ot$o parar' o" #a"sa devido ao
-e#haento do ar,"ivo.
Cli#< no evento 'n!otif/ e #olo,"e o seg"inte #8digoG
procedre !For1.Media0layer14oti-yMSenderG !()1e#tNJ
var
SG 0tringJ
!otalG &nteger
begin
case Media0layer1.4oti-y7al"e o*
nvS"##ess-"lG begin
&n#M!otalNJ
S GT V#in4oti-ynS"##ess-"l V X &nt!oStrM!otalNJ
endJ
nvS"persededG S GT V#in4oti-ynS"persededVJ
nvA)ortedG S GT V#in4oti-ynA)ortedVJ
nvFail"reG S GT V#in4oti-ynFail"reVJ
else
S GT V4$o #onsigo identi-i#ar a ensageVJ
endJ
2ditU.!e.t GT SJ
i* MMedia0layer1.4oti-y7al"e T nvS"##ess-"lN and MMedia0layer1.Mode T pStoppedN then
2dit1.!e.t GT VAr,"ivo -inalizadoVJ
endJ
2stes eventos veri-i#a os a#onte#ientos ais signi-i#ativos ,"e o#orrera #o o
dispositivo MC&. ( odo #orrente #o ,"e o dispositivo MC& E espe#i-i#ado ta)E pode ser
"tilizado pelo o)1eto 4"ediaPla/er. A,"i "a listage dos valores ais #o"ns designadosG
#inModen4otn3eady
#inModenStop
#inModen0lay
#inModen3e#ord
#inModenSee<
#inModen0a"se
#inModen(pen
2stes valores s$o a"to-e.pli#ativos. 0or e.eplo' o odo do #apo E -i.ado e
#inModenStop' o dispositivo est+ parado. Se -i.ado e #inModen0lay' o dispositivo est+
to#ando.
Crie "a nova pro#ed"re Private #haada 0etMode' e insira o seg"inte #8digoG
procedre !For1.SetModeJ
begin
2dit[.!e.t GT Media0layer1.File4aeJ
case Media0layer1.Mode o*
,O3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
p4ot3eadyG 2ditZ.!e.t GT V#inModen4otn3eadyVJ
pStoppedG 2ditZ.!e.t GT V#inModenStopVJ
p0layingG 2ditZ.!e.t GT V#inModen0layVJ
p3e#ordingG 2ditZ.!e.t GT V#inModen3e#ordVJ
pSee<ingG 2ditZ.!e.t GT V#inModenSee<VJ
p0a"sedG 2ditZ.!e.t GT V#inModen0a"seVJ
p(penG 2ditZ.!e.t GT V#inModen(penVJ
else
begin
2dit1.!e.t GT VDispositivo &nativoVJ
2ditU.!e.t GT VSe essagensVJ
2ditZ.!e.t GT V4$o identi-i#adoVJ
2dit[.!e.t GT V4$o h+ ar,"ivo sele#ionadoVJ
endJ
endJ
endJ
0ara a #haada desta rotina #li#< no o)1eto 4timer e #hae o evento 'n4imer e insira o
seg"inte #8digoG
procedre !For1.!ier1!ierMSenderG !()1e#tNJ
begin
SetModeJ
endJ
Co a propriedade Interval deste o)1eto -i.ada e 1OOO' signi-i#a ,"e a #ada 1OOO
iliseg"ndos ser+ disparada a rotina de veri-i#a*$o ,"e in-orar+ o estado para o o)1eto
4"ediaPla/er.
2.e#"te o pro1eto e atente para os seg"intes detalhesG
!oda a vez ,"e -or "sado " )ot$o da )arra "lti/dia' ser+ disparado o evento onCli#<
ar#ando deste odo o tipo de )ot$o pressionadoJ
As ensagens da nM#i4oti-y o#orre d"rante toda a e.e#"*$o da apli#a*$o' tente
"tilizar os )ot6es 0a"sa e 0arar no eio de "a e.e#"*$o.
:"ando -or sele#ionar " novo ar,"ivo' a-aste " po"#o a 1anela de di+logo e o)serve
#oo est$o os #apos edit.
()serve e est"de ta)E o ar,"ivo
RDiret8rioDelphiSkS(D3C2k7C;kM0;Al23 .0AS ele E a "nidade prin#ipal de #ria*$o do o)1eto
4"ediaPla/er.
Inserindo o m&+%im-dia ,ara o Sis%ema
:"e tal se alE de #adastraros os nossos CDBs p"desseos o"v/-los' adi#ione " op*$o
do en" prin#ipal do sistea ,"e #haar+ o seg"inte -or"l+rio.
,O2
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
"esenvolvimento do C" Pla<er
&ni#ialente' #rie " novo o)1eto Form )aseado na teplate BlanT *orm e altere as
seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
%orderStyle )sDialog 2stilo da )orda do -or"l+rio
Caption CD 0layer ;a)el do o)1eto M!ar1a az"l do -or"l+rioN
4ae Fn0layer 4oe do o)1eto
0osition poS#reenCenter 0osi*$o da 1anela M#entralizadoN
Crie para esta nova 1anela os seg"intes o)1etosG
!Media0layer ' en#ontrado na Component Pallet/ na p+gina S/stem' e altere as
seg"intes propriedadesG
0ropriedade 7alor Des#ri*$o
7isi)le%"ttons R)t0lay')t0a"se')tStop')t4e.t')t0
rev')t21e#tS
%ot6es ,"e -i#ar$o vis/veis
4ae CD 4oe do o)1eto
!!ier ' en#ontrado na Component Pallet/ na p+gina S/stem' servir+ para #ontrolar
o tepo das 5si#as.
0anel ' en#ontrado na Component Pallete na p+gina Standard' e altere as seg"intes
propriedadesG
Propriedade Nalor Descrio
Align al%otto Alinhaento dentro do form' todo no rodapE
Alignent ta;e-t?"sti-y Alinhaento da Caption' 1"sti-i#ado H es,"erda
%evel&nner )v;oFered %orda ZD interna' tipo pressionado
%evel("ter )v;oFered %orda ZD e.terna' tipo pressionado
%orderIidth 1 !aanho da )orda
Caption &nsira o CD ;a)el do o)1eto
4ae ;inhaStat"s 4oe do o)1eto
Font MS Sans Seri-' 2stilo da
-onteG 4oral' !aanhoG Y'
CorG Az"l Marinho
!ipo de letra a ser ostrada no o)1eto' para alterar esta
propriedade #li,"e no )ot$o
9eight UU Alt"ra do o)1eto
0anel ' en#ontrado na Component Pallete na p+gina Standard' e altere as seg"intes
propriedadesG
Propriedade Nalor Descrio
Align al!op Alinhaento dentro do form' todo no topo
%evel&nner )v;oFered %orda ZD interna' tipo pressionado
%evel("ter )v3aise %orda ZD e.terna' tipo pressionado
%orderIidth U !aanho da )orda
,OR
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
9eight 5O Alt"ra do o)1eto
Caption ;a)el do o)1eto
Crie ,"atro o)1etos +abel dentro do o)1eto 0anelU' para os dois prieiros altere a
propriedade Caption para TrilhaA e PosioA respe#tivaente para os o"tros dois altere a
propriedade %ame para +blTracT e +blTime' altere a propriedade Font de todos para MS Sans
Seri-' 2stilo da -onteG 4oral' !aanhoG Y' CorG Castanho.
Copare o desenho do -or"l+rio a seg"irG
:"anto ao prograa vo" e.pli#+-lo na integra' a#opanhe a listage #olo#ando os
pro#edientos nos lo#ais indi#adosG
nit FplayerJ
inter*ace
ses
SysDtils' Iin!ypes' Iin0ro#s' Messages' Classes' Araphi#s' Controls'
Fors' Dialogs' StdCtrls' 2.tCtrls' M0layer' MMSysteJ
tLpe
!Fn0layer T classM!ForN
CDG !Media0layerJ
!ier1G !!ierJ
;inhaStat"sG !0anelJ
0anelUG !0anelJ
;a)el1G !;a)elJ
;a)elUG !;a)elJ
;)l!ra#<G !;a)elJ
;)l!ieG !;a)elJ
procedre !ier1!ierMSenderG !()1e#tNJ
procedre CD0ostCli#<MSenderG !()1e#tJ %"ttonG !M0%tn!ypeNJ
procedre CD4oti-yMSenderG !()1e#tNJ
procedre ForCreateMSenderG !()1e#tNJ
private
!rilhaCorrenteG )yteJ
Final!rilhaCorrenteG ;ongintJ
!rilha;idasG )ooleanJ
CD0laying' CD0a"sedG )ooleanJ
!a!rilhaG arraLR1..1OOS o* ;ong&ntJ
*nction CD0osMSenderG!()1e#tJ !rilha' Min' Se#G )yteNG ;ongintJ
procedre &nitCDMSenderG!()1e#tNJ
procedre 3esetCDMSenderG!()1e#tNJ
,OO
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
pblic
6 Pu(li% de%larations 7
endJ
var
Fn0layerG !Fn0layerJ
implementation
68 9.D5"7
const
ModeStrG arraLR!pModesS o* stringR1OS T MV4$o ;idoV' V0aradoV' V!o#andoV'
VAravandoV' V0es,"isandoV' V0a"sadoV' VA)ertoVNJ
6 Criado ; Cal%ula a posi3=o 7
*nction !Fn0layer.CD0osMSenderG!()1e#tJ !rilha' Min' Se#G )yteNG ;ongintJ
var
iG integerJ
begin
res"lt GT OJ
*or i GT 1 to M!rilha - 1N do
begin
&n#M3es"lt' #inMSFnSe#ondM!a!rilhaRiSNNJ
&n#M3es"lt' #inMSFnMin"teM!a!rilhaRiSN o \ONJ
endJ
&n#M3es"lt' Se#NJ
&n#M3es"lt' Min o \ONJ
endJ
6 Criado ; Ini%iali$a os drivers de CD 7
procedre !Fn0layer.&nitCDMSenderG!()1e#tNJ
var
i G integerJ
begin
i* not !rilha;idas then
begin
;inhaStat"s.Caption GT V;endo as trilhasVJ
;inhaStat"s.DpdateJ
*or i GT 1 to CD.!ra#<s do
!a!rilhaRiS GT CD.!ra#<;engthRiSJ
!rilha;idas GT !r"eJ
endJ
endJ
6 Criado ; eseta o formulJrio 7
procedre !Fn0layer.3esetCDMSenderG!()1e#tNJ
begin
6 0impa para trilha 0 7
!rilhaCorrente GT 1J
;)l!ra#<.Caption GT VOVJ
;)l!ie.Caption GT VOOGOOVJ
6 "odifi%a a %or para vermelho 7
;)l!ra#<.Font.Color GT #l3edJ
,OS
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
;)l!ie.Font.Color GT #l3edJ
6 Para o CD Pla/er 7
CD.StopJ
6 Colo%a a posi%ao da trilha para a ini%ial 7
CD.Start0os GT #inMa<en!MSFM1' O' O' ONJ
CD0laying GT FalseJ
CD0a"sed GT FalseJ
endJ
6 .vento 4imer do '()eto 4imer1 7
procedre !Fn0layer.!ier1!ierMSenderG !()1e#tNJ
var
!rilha' Min"tes' Se#onds G )yteJ
strMin"to' strSeg"ndoG StringJ
0osG ;ong&ntJ
begin
6 &%erta o estado da linha 7
i* CD0a"sed then
;inhaStat"s.Caption GT V0a"sadoV
else
;inhaStat"s.Caption GT ModeStrRCD.ModeSJ
case CD.Mode o*
pStoppedG
begin
6 Ini%iali$a o CD para ser lido 7
i* not !rilha;idas then
&nitCDMCDNJ
6 !o %aso de ser Continuous Pla/ 7
i* CD0laying and Mnot CD0a"sedN then
begin
CD.Start0os GT #inMa<en!MSFM1' O' O' ONJ
CD.0layJ
CD.2na)led%"ttons GT R)t0a"se' )tStop' )t4e.t' )t0rev' )t21e#tSJ
endJ
endJ
p(penG
begin
!rilha;idas GT FalseJ
3esetCDMCDNJ
endJ
p0layingG
begin
0os GT CD.0ositionJ
!rilha GT #in!MSFn!ra#<M0osNJ
Min"tes GT #in!MSFnMin"teM0osNJ
Se#onds GT #in!MSFnSe#ondM0osNJ
!rilhaCorrente GT !rilhaJ
6 ConstrQi os minutos e se#undos para mostrar 7
strMin"to GT &nt!oStrMMin"tesNJ
strSeg"ndo GT &nt!oStrMSe#ondsNJ
,OX
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
i- ;engthMstrMin"toN ` U then
strMin"to GT VOV X strMin"toJ
i- ;engthMstrSeg"ndoN ` U then
strSeg"ndo GT VOV X strSeg"ndoJ
6 "ostra os 0a(els 7
;)l!ra#<.Caption GT &nt!oStrM!rilhaNJ
;)l!ie.Caption GT strMin"to X VGV X strSeg"ndoJ
endJ
endJ
endJ
6 .vento PostCli%k do '()eto CD 7
procedre !Fn0layer.CD0ostCli#<MSenderG !()1e#tJ %"ttonG !M0%tn!ypeNJ
begin
case %"tton o*
)t0layG
begin
6 "odifi%a a %or para &$ul "arinho 7
;)l!ra#<.Font.Color GT #l4avyJ
;)l!ie.Font.Color GT #l4avyJ
CD0laying GT !r"eJ
CD0a"sed GT FalseJ
DpdateJ
endJ
)t0a"seG
begin
6 "odifi%a a %or para o@o 7
;)l!ra#<.Font.Color GT #l0"rpleJ
;)l!ie.Font.Color GT #l0"rpleJ
CD0laying GT FalseJ
CD0a"sed GT !r"eJ
DpdateJ
endJ
)tStopG
3esetCDMCDNJ
)t21e#tG
begin
!rilha;idas GT FalseJ
3esetCDMCDNJ
endJ
endJ
!ier1!ierM!ier1NJ
endJ
6 .vento 'n!otif/ do '()eto CD 7
procedre !Fn0layer.CD4oti-yMSenderG !()1e#tNJ
begin
!ier1!ierM!ier1NJ
endJ
6 .vento 'nCreate do '()eto 5GPla/er 7
procedre !Fn0layer.ForCreateMSenderG !()1e#tNJ
begin
CD0laying GT FalseJ
CD0a"sed GT FalseJ
,O&
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
!rilha;idas GT FalseJ
endJ
end.
Salve o -or"l+rio #o o noe de FPlaLer e -a*a a #haada a partir do en" prin#ipal
do se" sistea' )o divertiento.
Ca,-%&+o X
Novos Componentes
Da das aiores vantagens do Delphi so)re os deais #on#orrentes E o -ato da gera*$o
de novos #oponentes Mde novos o)1etosN.
( e.eplo a seg"ir pretende #olo#ar "a l"z so)re o ass"nto ostrando os passos
)+si#os para o desenvolviento de #oponentes' estes passos s$oG
Criando propriedades e EtodosJ
Controle ao a#esso as propriedadesJ
0ropriedades de leit"ra e es#ritaJ
2nviando e re#e)endo ensagens atravEs dos #oponentes.
Criando Com,onen%es
Coponentes s$o #oo )lo#os de #onstr"*$o para as apli#a*6es Delphi. 7o#C poder+
#onstr"ir "a apli#a*$o siplesente adi#ionando estes )lo#os e odi-i#ando os eventos'
propriedades o" Etodos. !odos os #oponentes poss"e d"as propriedades e #o"G !ame e
4a#. Alg"ns #oponentes est$o distri)"/dos na Component Pallete. Mas alg"ns #oponentes
M4&ppli%ation' 4"enu' 4"enuItem' e 4S%reenN s$o dispon/veis apenas atravEs de se" #8digo.
7o#C pode #riar novos #oponentes "tilizando os seg"intes passosG
1. Derivando os novos #oponentes de " #oponente 1+ e.istente.
U. Modi-i#ando " #oponente.
Z. 3egistrando " #oponente.
( #oponente E #riado #oo "a unit separada de " pro1eto' podendo ser -orado por
"a o" ais unitRs. Ap8s vo#C #ria*$o do #oponente' #opila*$o e instala*$o dentro da paleta
de #oponentes. 0ara "sar o #oponente' sele#ione-o da Component Pallete e adi#ione-o ao
-or"l+rio.
,O'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
/ Classe -Component
7o#C #riar+ " novo #oponente "tilizando diretaente o Code .ditor' para isso vo#C
"sar+ a Component .@pert. 4a verdade todos os #oponentes #riados ser$o derivados de
#oponentes 1+ e.istentes' eso ,"e vo#C dese1e #riar " #oponente se eventos o"
propriedades ele ser+ herdado de "a #lasse 1+ e.istente a 4Component.
A 4Component E "a #lasse ini#ial de #oponentes' so) ela E ,"e -oi -eita a +rvore de
#oponentes Delphi' por e.eplo' a #lasse 4Control' poss"e ais de 7O #oponentes
des#endentes' tais #ooG 4BitBtn' 4Button' 4Che%kBo@' 4ColorDialo#' 4Com(oBo@' 45orm'
45ontDialo#' 4>roupBo@' 42eader' 4Ima#e' 40a(el' 40istBo@' 4"ain"enu e 4"ediaPla/er. 2
vo#C ainda pode derivar ais alg"ns des#endentes da,"i.
:m Componente Simples
7aos #riar agora " novo #oponente' para tanto a)ra " novo pro1eto e sele#ione
File e %eK=== sele#ione a p+gina %eK e o ite . Ser+ ostrada a 1anela da Component
.@pert. &n-ore os seg"intes parQetros #on-ore o desenho a)ai.oG
Cli,"e no )ot$o (m para a#eitar a entrada. A Component .@pert #riar+ a"toati#aente
o seg"inte #8digo para a #haada da Dnit1G
nit Dnit1J
inter*ace
ses
IindoFs' Messages' SysDtils' Classes' Araphi#s' Controls' Fors' DialogsJ
tLpe
C"stCop1 T classM!CoponentN
private
6 Private de%larations 7
protected
6 Prote%ted de%larations 7
pblic
,S-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
6 Pu(li% de%larations 7
pblished
6 Pu(lished de%larations 7
endJ
procedre 3egisterJ
implementation
procedre 3egisterJ
begin
3egisterCoponentsMVC"stoV' RC"stCop1SNJ
endJ
end.
/dicionando o Componente a Pal&eta
0or in#r/vel ,"e pare*a as vo#C terino" de #onstr"ir se" prieiro #oponente' e )e
verdade ,"e ele n$o -az a)sol"taente nada alE de a)rigar as 5ni#as propriedades padr6es
e.istentes e ,"al,"er #oponenteG !ame e 4a#. Mas 1+ estaos no #oe*o.
Salve o #oponente #oo Cst' sele#ionando File Z 0ave' dentro do diret8rio de
instala*$o do Delphi na pasta +ib. 0ara instalar o #oponente sele#ione Component Z 1nstall===
apare#er+ a seg"inte 1anela di+logoG
Cli,"e no )ot$o Add=== e ser+ ostrada a 1anela di+logo Add Modle. Dse o )ot$o
BroKse para lo#alizar o ar,"ivo Cst=PA0' note ,"e ele ser+ reetido a 0istBo@ 1nstalled nitsG
e #ainho do #oponente Mse vo#C salvo"-o e o"tro diret8rioN ser+ #olo#ado no 0earch Path.
,S,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
0ara novos #oponentes #rie " diret8rio e)ai.o do Delphi entit"lado +ib3' pois
se vo#C sepre #olo#ar #ada novo #oponente no diret8rio +ib' #aso vo#C pre#ise #opiar apenas
os se"s #oponentes' di-i#ilente os disting"ir+ dos #oponentes padr6es do Delphi.
;e)re-se ,"e o 0earch Path E " #apo te.to liitado e U55 posi*6es ent$o
ta)E n$o adianta para #ada #oponente novo #olo#ar " diret8rio separado' pois -a#ilente
vo#C esto"rar+ o taanho do #apo 0earch Path.
Finalente #li,"e no )ot$o (m e a COMP+1B=DC+ M%i)liote#a padr$o de
#oponentesN ser+ re#opilada. Ao tErino da #opila*$o' note ,"e -oi #riada "a nova p+gina
na Component Pallete MC"stoN e adi#ionado o novo #oponente MC"stoCop1N.
0ara testar se" novo #oponente #rie " novo -or"l+rio insira o #oponente
CustomComp1. ()serve atravEs da '()e%t Inspe%tor as propriedades do se" novo #oponenteG
!ame e 4a#.
Criando Propriedades
0ara o nosso #oponente vaos adi#ionar "a propriedade ,"e arazenar+ " valor
inteiro' para isto #hae novaente a nit do #oponente e insira os #8digos a)ai.o da
de#lara*$o privateG
tLpe
C"stCop1 T classM!CoponentN
private
-Deo0ropG&ntegerJ
Agora #riareos "a propriedade aonde o valor ser+ lido e es#rito atravEs desta vari+vel
para tanto insira os #8digos a)ai.o da de#lara*$o pblishedG
pblished
propertL Deo0ropG &nteger read -Deo0rop Krite -Deo0ropJ
endJ
A se*$o Pblic Mp5)li#aN a)riga as vari+veis' pro#edientos o" -"n*6es ,"e pode
ser lidos e e.e#"tados por ,"ais,"er o"tras nits ,"e "tilize MatravEs #l+"s"la VsesN a nit e
,"est$o 1+ a se*$o Pblished M0")li#adoN E "tilizada para inserir propriedades o" eventos aos
#oponentes.
Salve o #oponente e re#opile a )i)liote#a atravEs das op*6es Component Z Rebild
+ibrarL===' ao tErino da re#opila*$o' note ,"e para o #oponente -oi #riada "a nova
propriedade de-inida #oo DemoProp ,"e arazena o valores inteiros.
';todos de /cesso
A propriedade #riada pode disparar " pro#ediento o" "a -"n*$o para e.e#"tar
deterinadas a*6es Mpor e.eplo' #olo#ando " intervalo v+lido para a vari+vel #riadaN.
0rieiro' es#reva a seg"inte -"n*$o para a -"n*$o read do #oando propertLG
*nction C"st.AetDeo0ropG integerJ
,S3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
begin
3es"lt GT -Deo0ropJ
endJ
2s#reva o pro#ediento para a -"n*$o Krite do #oando propertLG
procedre C"st.SetDeo0ropMvalG integerNJ
begin
i* val _ 99 then
begin
Deo0rop GT -Deo0ropJ
raise e.#eption.#reateMV7alor n$o pode ser aior ,"e 99VNJ
end
else
-Deo0rop GT valJ
endJ
De#lare a -"n*$o PetDemoProp e o pro#ediento 0etDemoProp na se*$o private'
#on-ore o e.eplo a)ai.oG
private
-Deo0ropG&ntegerJ
*nction AetDeo0ropG integerJ
procedre SetDeo0ropMvalG integerNJ
2 para a se*$o pblished tro,"e as propriedadesG
pblished
propertL Deo0ropG &nteger read AetDeo0rop Krite SetDeo0ropJ
Salve o #oponente e re#opile a )i)liote#a atravEs das op*6es Component Z Rebild
+ibrarL===' note ,"e a propriedade n$o ais peritir+ valores s"periores a ''.
Criando novos tipos
De odo seelhante aos 1+ des#ritos "a propriedade pode a)rigar "a lista de tipos
de-inidos' para tanto na se*$o tLpe de-ina o #on1"nto ,"e a)rigar+ os tiposG
tLpe
!Dire#ao T MdrCia' dr%ai.o' dr;adoNJ
4a se*$o private #rie "a nova vari+vel #o )ase no tipo de-inidoG
private
-Deo0ropG&ntegerJ
-4ova0ropG!Dire#aoJ
2 -inalente na se*$o pblished de-ina a propriedadeG
pblished
propertL Deo0ropG &nteger read AetDeo0rop Krite SetDeo0ropJ
propertL 4ova0ropG !Dire#ao read -4ova0rop Krite -4ova0ropJ
Salve o #oponente e re#opile a )i)liote#a atravEs das op*6es Component Z Rebild
+ibrarL===' teste a nova propriedade.
,S2
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Pensando em O./e%os
Mas para ,"e deveos #riar novos #oponentes@ 0ara aliviaros os =-"t"ros> tra)alhos.
;e)ra-se ,"ando vo#C #opiava a,"eles pe,"enos peda*os de rotinas Mdo tipoG #+l#"lo de
C0F/CAC' #+l#"lo de -atorial' " #a)e*alho de relat8rio...N os o)1etos serve e.ataente para
g"ardaos estes =pe,"enos peda*os> de )lo#os de prograa*$o' o" se vo#C pre-erir o tero
serve para encapslarmos estes #8digos.
Constr$indo $m Objeto
:"ando -or #onstr"ir o)1etos le)re-se ,"e ele deve servir H v+rios apli#ativos' n"n#a
#onstr"a " o)1eto ,"e servir+ apenas a " 5ni#o apli#ativo ME perda de tepoN.
!odo o sistea Mpelo enos *or JindoKsN ne#essita de "a 1anela 0obre o 0istema
ent$o vaos trans-orar a 1anela so)re #riada no Cap$tlo 1N e " o)1eto pr+ti#o ,"e sirva a
,"al,"er sistea' ini#ie " novo pro1eto e #rie " novo #oponente' para tanto a)ra " novo
pro1eto e sele#ione File e %eK=== sele#ione a p+gina !ew e o ite Component. Ser+ ostrada a
1anela da Component .@pert. &n-ore os seg"intes parQetrosG
Class %ameG So)reDlg
Ancestor tLpeG !Coponent
Palette PageG Dialogs
Cli,"e no )ot$o (m para a#eitar a entrada. As altera*6es propropostas no o)1eto est$o
do#"entadas #o o -onteG
nit So)reDlgJ
6 .ste o()eto permite a %ria3=o de uma S%ai@a so(reS padr=o para
diversos apli%ativos. 7
inter*ace
ses
SysDtils' Iin!ypes' Iin0ro#s' Messages' Classes' Araphi#s' Controls'
Fors' Dialogs' -So)reJ
tLpe
!So)reDlg T #lassM!CoponentN
private
F0rod"#t4ae' F7ersion' FCopyright' FCoentsG stringJ
pblic
*nction 2.e#"teG %ooleanJ
pblished
propertL 4oe0rod"toG string read F0rod"#t4ae Krite F0rod"#t4aeJ
propertL 7ersaoG string read F7ersion Krite F7ersionJ
propertL DireitosG string read FCopyright Krite FCopyrightJ
propertL CoentarioG string read FCoents Krite FCoentsJ
endJ
,SR
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
const
03(C2SS(3n&4!2;nZY\ T ZY\J
03(C2SS(3n&4!2;n[Y\ T [Y\J
03(C2SS(3n&4!2;n024!&DM T 5Y\J
03(C2SS(3n&4!2;nY\O T Y\OJ
03(C2SS(3nM&0Sn31OOO T 1OOOJ
03(C2SS(3nM&0Sn3UOOO T UOOOJ
03(C2SS(3nM&0Sn3ZOOO T ZOOOJ
03(C2SS(3nM&0Sn3[OOO T [OOOJ
03(C2SS(3nA;09AnU1O\[ T U1O\[J
03(C2SS(3n00Cn\O1 T \O1J
03(C2SS(3n00Cn\OZ T \OZJ
03(C2SS(3n00Cn\O[ T \O[J
03(C2SS(3n00Cn\UO T \UOJ

var
So)reDlgG !So)reDlgJ
procedre RegisterJ
implementation
procedre RegisterJ
begin
3egisterCoponentsMVDialogsV' R!So)reDlgSNJ
endJ
*nction !So)reDlg.2.e#"teG %ooleanJ
var
(s&n-oG !(S723S&(4&4F(J
Sys&n-oG !SlS!2M&4F(J
MeStatG !M2M(3lS!A!DSJ
Dis<4oG &ntegerJ
begin
// Cria a 1anela e e8ria
FnSo)re GT !FnSo)re.CreateMAppli#ationNJ
trL
Kith FnSo)re do
begin
// Colo%a as propriedades nas variaveis do formulario
0rod"#t4ae.Caption GT 4oe0rod"toJ
7ersion.Caption GT 7ersaoJ
Copyright.Caption GT DireitosJ
Coents.Caption GT CoentarioJ
Caption GT VSo)re V X 4oe0rod"toJ
(s&n-o.dF(S7ersion&n-oSize GT sizeo-M!(S723S&(4&4F(NJ
Aet7ersion2.M(s&n-oNJ
// <ers=o do Windows
case (s&n-o.dF0lat-or&d o*
723n0;A!F(3MnI&4ZUs G Iin7ersion.Caption GT VIindoFs Z.1VJ
723n0;A!F(3MnI&4ZUnI&4D(IS G Iin7ersion.Caption GT VIindoFs 95VJ
723n0;A!F(3MnI&4ZUn4! G Iin7ersion.Caption GT VIindoFs 4!VJ
,SO
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
endJ
Dos7ersion.Caption GT -oratMVtd.td 7er G tdV'
R(s&n-o.dFMa1or7ersion'(s&n-o.dFMinor7ersion';(I(3DM(s&n-o.dF%"ild4")erNSNJ
// Pe#a o pro%essador
AetSyste&n-oMSys&n-oNJ
case Sys&n-o.dF0ro#essor!ype o*
03(C2SS(3n&4!2;nZY\ G C0D.Caption GT
-oratMVtd tsV'RSys&n-o.dF4")er(-0ro#essors' V&ntel YOZY\VSNJ
03(C2SS(3n&4!2;n[Y\ G C0D.Caption GT
-oratMVtd tsV'RSys&n-o.dF4")er(-0ro#essors' V&ntel YO[Y\VSNJ
03(C2SS(3n&4!2;n024!&DM G C0D.Caption GT
-oratMVtd tsV'RSys&n-o.dF4")er(-0ro#essors' V&ntel 0enti"VSNJ
03(C2SS(3nM&0Sn31OOO G C0D.Caption GT
-oratMVtd tsV'RSys&n-o.dF4")er(-0ro#essors' VM&0S 31OOOVSNJ
03(C2SS(3nM&0Sn3UOOO G C0D.Caption GT
-oratMVtd tsV'RSys&n-o.dF4")er(-0ro#essors' VM&0S 3UOOOVSNJ
03(C2SS(3nM&0Sn3ZOOO G C0D.Caption GT
-oratMVtd tsV'RSys&n-o.dF4")er(-0ro#essors' VM&0S 3ZOOOVSNJ
03(C2SS(3nM&0Sn3[OOO G C0D.Caption GT
-oratMVtd tsV'RSys&n-o.dF4")er(-0ro#essors' VM&0S 3[OOOVSNJ
03(C2SS(3nA;09AnU1O\[ G C0D.Caption GT
-oratMVtd tsV'RSys&n-o.dF4")er(-0ro#essors' VA;09A U1O\[VSNJ
03(C2SS(3n00Cn\O1 G C0D.Caption GT
-oratMVtd tsV'RSys&n-o.dF4")er(-0ro#essors' V0oFer 0C \O1VSNJ
03(C2SS(3n00Cn\OZ G C0D.Caption GT
-oratMVtd tsV'RSys&n-o.dF4")er(-0ro#essors' V0oFer 0C \OZVSNJ
03(C2SS(3n00Cn\O[ G C0D.Caption GT
-oratMVtd tsV'RSys&n-o.dF4")er(-0ro#essors' V0oFer 0C \O[VSNJ
03(C2SS(3n00Cn\UO G C0D.Caption GT
-oratMVtd tsV'RSys&n-o.dF4")er(-0ro#essors' V0oFer 0C \UOVSNJ
endJ
MeStat.dF;ength GT sizeo-M!M2M(3lS!A!DSNJ
Alo)alMeoryStat"sMMeStatNJ
FreeMeory.Caption GT -oratMV!otG td m% DispG td m%V'
R!r"n#MMeStat.dF!otal0hys/1OU[N'!r"n#MMeStat.dFAvail0hys/1OU[NSNJ
Dis<4o GT ZJ
FreeDis<.Caption GT VVJ
Free3eso"r#es.Caption GT VVJ
repeat
i* Dis<4o ` 7 then
FreeDis<.Caption GT FreeDis<.Caption X -oratMVtsG td M% V'
RChrMDis<4o X (rdMVAVN- 1N'!r"n#MDis<FreeMDis<4oN/1OU[/1OU[NSN
else
Free3eso"r#es.Caption GT Free3eso"r#es.Caption X -oratMVtsG td M% V'
RChrMDis<4o X (rdMVAVN- 1N'!r"n#MDis<FreeMDis<4oN/1OU[/1OU[NSNJ
in#MDis<4oNJ
ntil Dis<FreeMDis<4oN T -1J
0rogra&#on.0i#t"re.Araphi# GT Appli#ation.&#onJ
3es"lt GT MShoFModal T &D(mNJ
endJ
*inallL
,SS
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
FnSo)re.FreeJ
endJ
endJ

end.
0ara esta prieira etapa do nosso o)1eto note ,"e t"do gira e torno do pro#ediento
(Qecte Mo noe se deve apenas a "a ,"est$o de padroniza*$o #o os o"tros o)1etos da palheta
Dialo#sN' atravEs deste pro#ediento todos as o"tras vari+veis s$o ini#iadas' resta-nos agora a
#ria*$o do -or"l+rio' #rie " novo -or"l+rio' AT(%ghOG 4$o aproveite o -or"l+rio
FI0obre 1+ #riado pois este E "a heran*a do -or"l+rio FI0plash' #rie-o #on-ore o desenho
a)ai.oG
0ara os o)1etos dentro do painelG altere a propriedade CaptionG 4oe do 0rod"to'
7ers$o' Direitos 3esevados e Coent+rio e a propriedade %ameG 0rod"#t4ae' 7ersion'
Copyright' Coents.
0ara os o)1etos -ora do painelG altere os o)1etos +abels da es,"erda a propriedade
Caption M2.G Ds"+rio' CopanhiaN e os da direita a propriedade %ame M2.G Dser4ae'
Copany4aeN
A propriedade %ame para todos os #oponentes' na orde ,"e eles apare#e s$oG
Objeto Tipo Objeto Tipo Objeto Tipo Objeto Tipo
0rogra&#on !&age 0rod"#t4ae !;a)el 7ersion !;a)el Copyright !;a)el
Coents !;a)el ;a)el1 !;a)el Dser4ae !;a)el ;a)elU !;a)el
Copany4ae !;a)el ;a)elZ !;a)el Iin7ersion !;a)el ;a)el[ !;a)el
Dos7ersion !;a)el ;a)el5 !;a)el C0D !;a)el ;a)el\ !;a)el
FreeMeory !;a)el ;a)el7 !;a)el FreeDis< !;a)el Free3eso"r#es !;a)el
FnSo)re !For 0anel1 !0anel
,SX
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Salve a 1anela #o o noe de F0obre e o #oponente #oo 0obreDlg e #opile a
)i)liote#a e instale o #oponenteG So(reDl#.P&S' teste o #oponente da seg"inte -oraG
1. 3eova do pro1eto o -or"l+rio FI0obre e retire s"a #haada da #l+"s"la VsesJ
U. Colo,"e o #oponente no -or"l+rio FIMen e a#erte as s"as propriedadesJ
Z. &nsira a #haada ao #oponente na op*$o de 0obre o 0istemaG
procedre !FnMen".&teA".ilio1Cli#<MSenderG !()1e#tNJ
begin
So)reDlg.2.e#"teJ
endJ
[. Copile e rode o sistea.
%e-vindo ao "ndo dos o)1etos.
%inalmente
K -a#ilente re#onhe#ido ,"e este novo a)iente da Borland poss"i " poder " tanto
iliitado' tanto na #ria*$o de sisteas #oo no desenvolviento de apli#a*6es de "lti/dia
resta-nos Ma n8s desenvolvedoresN dei.aros a iagina*$o -l"ir e ini#iar t"do a,"ilo ,"e sepre
dese1aos' espero ,"e lhe tenha a1"dado ao enos a trilhar o #ainho das pedras.
,S&
A,Endi*e A
Do*&men%a'(o
A do#"enta*$o in#l"/da #o o Delphi Client/ServerG
Delphi :ser+s >uide
Delphi Component Writer+s >uide
Delphi Data(ase &pli%ation Developer+s >uide
SA0 0inks :ser+s >uide
InterBase :ser+s >uide
InterBase 0an#ua#e eferen%e
InterBase Data Definition
eportSmith Creatin# eports
!oda a do#"enta*$o E en#ontrada e -ora de livros e odo on-line Mpara o seg"ndo
#aso -az-se ne#ess+ria a instala*$o do AC3(%A!

3eader U.O ,"e a#opanha o prod"toN.


Fard0areGSo6%0are reC&eridos
( Delphi Client/Server re,"erG
Windows M.1
T
ou superior
40 me#a(/tes de espa3o livre para a instala3=o m?nima
90 me#a(/tes de espa3o livre para a instala3=o %ompleta
um pro%essador ,0M,U ou maior VN,U re%omendadoW
8 me#a(/tes de &"
0ara instalar' rode o prograa &4S!A;;.2L2 direto do CD 3(M o" do dis,"ete e
prossiga #o as instr"*6es. Ser$o in#l"/das in-ora*6es adi#ionais no ar,"ivo 32ADM2.!L!
noralente instalado no diret8rio kD2;09&.
Alg"ns e.eplos de apli#a*6es est$o #ontidas no diret8rio kD2;09&kD2M(S.
1\9
A,Endi*e "
Convers(o de Cam,os
K poss/vel' #o o D.0P2I' #riaros " eso sistea ,"e rode e di-erentes tipos de
)ases' atravEs de " 5ni#o A+1A0. 0ara isto pre#isaos ,"e a de-ini*$o' taanho e noe dos
#apos e ta)elas se1a ne#essariaente os esos. A)ai.o est+ a #onvers$o para ,"atro )ases
l8gi#as de dadosG
0intaQe 0]+ - para InterBase' '&C0.

' Informi@

entre o"tras.
BD( +#gico - A #haada do #apo interna ao D.0P2I.
ParadoQ - %ases do tipo Parado@.
dBA0( - %ases do !ipo .D%F.
Sinta.e S:; %D2 ;8gi#o 0arado. d%AS2
SMA;;&4! -ld&4!1\ Short 4")er M\'1ON
&4!2A23 -ld&4!ZU ;ong &nteger 4")er MUO'[N
D2C&MA;M.'yN -ld%CD %CD 4/A
4DM23&CM.'yN -ldF;(A! 4")er 4")er M.'yN
F;(A!M.'yN -ldF;(A! 4")er Float M.'yN
C9A3AC!23MnN -ldWS!3&4A Alpha Chara#ter
7A3C9A3MnN -ldWS!3&4A Alpha Chara#ter
DA!2 -ldDA!2 Date Date
%((;2A4 -ld%((; ;ogi#al ;ogi#al
%;(%Mn'1N -ldstM2M( Meo Meo
%;(%Mn'UN -ldst%&4A3l %inary %inary
%;(%Mn'ZN -ldstFM!M2M( Foratted eo 4$o Apresenta
%;(%Mn'[N -ldst(;2(%? (;2 (;2
%;(%Mn'5N -ldstA3A09&C Araphi# 4$o Apresenta
!&M2 -ld!&M2 !ie 4$o Apresenta
!&M2S!AM0 -ld!&M2S!AM0 !iestap 4$o Apresenta
M(42l -ldF;(A!' -ldstM(42l Money Float MUO'[N
AD!(&4C -ld&4!ZU' -ldstAD!(&4C A"toin#reent 4$o Apresenta
%l!2SMnN -ld%l!2SMnN %ytes 4$o Apresenta
. T pre#is$o Mde-a"ltG espe#/-i#o para o driverN
y T es#ala Mde-a"ltG ON
n T taanho e )ytes Mde-a"ltG ON
1-5 T %;(% s")tipo Mde-a"ltG 1N
17O
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
-ipos de "ados para o nter#ase
( &nter%ase s"porta alg"ns tipos de dados S:;' as n$o s"porta diretaente dados do
tipo T1M( o" T1M(0TAMP. A lista a)ai.o #ontE os tipos de dados dispon/veis para as
de#lara*6es S:; no &nter%aseG
%ome Tamanho Preciso Descrio
%;(% 7ari+vel 4$o apresenta ()1eto do tipo )in+rio largo' poss/vel g"ardar
dados grandes' tais #oo gr+-i#os' te.tos e voz
digitalizada.
C9A3MnN n Cara#teres 1 atE ZU7\7 !aanho -i.o de #ara#teres o" tipo de string. (
noe ta)E pode apresentar G C)ARACT(R.
DA!2 \[ )its 1 1an 1OO atE 11
1an 59[1
!a)E in#l"i todas as in-ora*6es so)re a hora.
D2C&MA;
Mpre#is$o' es#alaN
vari+vel 0re#is$oG 1 atE
15 e es#ala de 1
atE 15
2spe#i-i#a-se por pre#is$o o n5ero de d/gitos a
sere gravados e por es#ala o n5ero de #asas
de#iais' e.eplo D2C&MA;M1O'ZN E ig"al ao
-oratoG ppppppp.eee.
D(D%;2
032C&S&(4
\[ )its 1'7 . 1O
-ZOY
atE
1'7 . 1O
ZOY
Dtilizado para valores #ient/-i#os' #o 15 d/gitos
de pre#is$o.
F;(A! ZU )its Z'[ . 1O
-ZY
atE
Z'[ . 1O
ZY
0re#is$o siples' #o 7 d/gitos de pre#is$o.
&4!2A23 ZU )its -U.1[7.[YZ.\[Y
atE
U.1[7.[YZ.\[Y
Capo do tipo longo.
4DM23&C
Mpre#is$o' es#alaN
vari+vel 0re#is$oG 1 atE
15 e es#ala de 1
atE 15
2spe#i-i#a-se por pre#is$o o n5ero de d/gitos a
sere gravados e por es#ala o n5ero de #asas
de#iais' e.eplo 4DM23&CM1O'ZN E ig"al ao
-oratoG ppppppp.eee.
SMA;;&4! 1\ )its -ZU.7\Y atE
ZU.7\7
Capo Edio.
7A3C9A3MnN n Cara#teres 1 atE ZU7\7 !aanho vari+vel de #ara#teres o" tipo de string. (
noe ta)E pode apresentar G NAR\1%P
C)AR o" NAR\1%P C)ARACT(R.
,X,
A,Endi*e C
A,+i*a'(o rB,ida *om o O./e%o =&er3
0ara n$o -i#ar ,"ais,"er d5vidas so)re o o)1eto t:"ery ' vaos "tiliz+-lo para a
deonstra*$o de "a pe,"ena apli#a*$o' neste e.eplo' "tilizareos a )ase de dados en#ontrada
no diret8rio CA[D(+P)1[D(MO0[DATA "tilizareos as ta)elasG Customer' 'rders, Parts e
Items. A idEia E ostrar " -or"l+rio #o o noe do #liente ligado a " Prid #o todas as
en#oendas perten#entes a este #liente. Con-ore a -ig"ra a)ai.oG
0ara #oe*ar' #olo,"e e " novo -or"l+rio " o)1eto tTable e " o)1eto
t]erL. ( o)1eto tTable e-et"ar+ a liga*$o #o a ta)ela de Clientes M!a)ela CustomerN' en,"anto
,"e o t]erL ir+ e.trair os detalhes da en#oenda M!a)elas 'rders, Parts e ItemsN apropriados a
#ada #liente. (s dados est$o e "a ta)ela Parado@' pelo ,"e na propriedade DataBase%ame E
#olo#ado o noe do diret8rio ,"e #ontE os dados Mo" de-ina o noe do AliasG D%DeosN. A
liga*$o E #opletada atravEs da de-ini*$o das propriedades Table%ame e 1ndeQ%ame' e se
alternaros a propriedade Active para true veos os dados reais' eso d"rante a -ase de
#onstr"*$o do -or"l+rio.
Se os registros #ontendo os detalhes dos pedidos estivesse todos e "a 5ni#a ta)ela' a
1"n*$o poderia ser -a#ilente realizada pela de-ini*$o das propriedades Master0orce e
17U
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
MasterField de " seg"ndo o)1eto ta)ela' as' "a vez ,"e ne#essitaos de dados de ais de
"a ta)ela M'rders e Produ%tsN' esta tE#ni#a siples n$o -"n#iona. ( #ontrole de #ons"lta
re#"pera " #on1"nto di-erente de registros para #ada #liente' e.traindo dados das d"as ta)elas
ligadas. ( Delphi o-ere#e d"as tE#ni#as para -azer istoG Da delas envolve o "so de vari+veis
Cal#"ladas para "a das trCs ta)elas e ,"est$oJ "a o"tra Mais siplesN envolve H atri)"i*$o
de " valor H propriedade 0]+ do o)1eto t]erL' o" se1a' "a instr"*$o 0]+ apropriada. 4este
e.eplo' vaos -azer #olo#ando alg" #8digo no evento OnDataChange do o)1eto
Data0orce. ;e)re-se ,"e este evento E #haado sepre ,"e o registro #orrente E alterado.
&nsira a seg"inte instr"*$o na propriedade 0]+ do o)1eto t]erLG
S2;2C! (rders.(rder4o' &tes.:ty' 0arts.Des#ription' 0arts.;ist0ri#e
F3(M (rders' &tes' 0arts
I9232 (rders.(rder4o T &tes.(rder4o A4D
&tes.0art4o T 0arts.0art4o A4D
(rders.C"st4o T GC"st4oJ
3epare no #8digo 0]+ na vari+vel ICust!o' v+ para a propriedade Params do o)1eto
t]erL e #olo,"e para a vari+vel C"st4o #riada o Data tLpe #oo 5loat' est+ vari+vel ser+
passada para o 0]+ atravEs do evento OnDataChange do o)1eto Data0orce' insira o seg"inte
#8digoG
procedre !For1.DataSo"r#eUDataChangeMSenderG !()1e#tJ FieldG !FieldNJ
begin
:"ery1.CloseJ
:"ery1.0arasROS.AsFloat GT !a)le1C"st4o.7al"eJ
:"ery1.(penJ
endJ
3ele)rando no Delphi os dados -l"e da )ase de dados para o -or"l+rio na
seg"inte se,PCn#iaG
%ase de Dados o)1eto DataSet Mt!a)le o" t:"eryN o)1eto DataSo"r#e o)1eto Capo
( o)1eto Data0orce E ne#ess+rio' pois os o)1etos de #apo n$o pode ligar-se
diretaente aos o)1etos do Data0et' as apenas atravEs de " o)1eto Data0orce.
0or #onseg"inte' para #ada o)1eto Data0et ta)E E #olo#ado no -or"l+rio " o)1eto
Data0orce. Finalente' s$o adi#ionados o)1etos de #ai.a de edi*$o de te.to' " o)1eto Prid
para as linhas da en#oenda e " o)1eto d)4avigator ligado a ta)ela de Customer' rode o
pro1eto.
o)1eto Prid est+ ligado ao o)1eto t]erL MatravEs do o)1eto Data0orceN' ent$o este
se at"aliza a"toati#aente #o os novos res"ltados das #ons"ltas.
,X2
A,Endi*e D
Im,rimindo &m #orm&+Brio
0ara ipriir " -or"l+rio n$o te nenh" segredo' e.iste o #oando PI!4
rela#ionado a -or"l+rios' o pro)lea se ini#ia ,"ando o -or"l+rio "ltrapassa as diens6es da
tela do se" onitor' o" se1a' a larg"ra e alt"ra dele E aior ,"e a tela. Digaos " -or"l+rio
,"al,"er ,"e tenha a propriedade 9orzS#roll%ar.3ange T 7\Y e 7ertS#roll%ar.3ange T 1OOY Misto
#orresponde a "a -olha de papel taanho A[N.
( prograa a)ai.o resolve e.ataente este pro)lea' ipriindo soente o)1etosG
Tlabel' T(dit' TMemo' TDBTeQt' TDB(dit e TDBMemo' "tiliza a )i)liote#a Printers para
-azer o servi*o' #olo,"e " )ot$o ,"al,"er no -or"l+rio ,"e dese1e ipriir e para o evento
onCli#<' digite os seg"intes #oandosG
procedre !-or1.Speed%"tton1Cli#<MSenderG !()1e#tNJ
var
C G arrayRO..U55S o- #harJ
C;en' S#aleL' S#alel' &nd G &ntegerJ
Forat G IordJ
DC G 9DCJ
MCop G !eoJ
3 G !3e#tJ
begin
0rinter.%eginDo#J
DC GT 0rinter.Canvas.9andleJ
S#aleL GT AetDevi#eCapsMDC' ;(A0&L2;SLN div 0i.els0er&n#hJ
S#alel GT AetDevi#eCapsMDC' ;(A0&L2;SlN div 0i.els0er&n#hJ
*or &nd GT O to CoponentCo"nt -1 do
i* MCoponentsR&ndS is !C"sto;a)elN or MCoponentsR&ndS is !C"sto2ditN then
begin
MCop GT !MeoMCoponentsR&ndSNJ
i* MMCop.visi)leN then
begin
0rinter.Canvas.Font GT MCop.FontJ
DC GT 0rinter.Canvas.9andleJ
3 GT MCop.%o"nds3e#tJ
3.!op GT M3.!op X 7ertS#roll%ar.0ositionN o S#alelJ
3.;e-t GT M3.;e-t X 9orzS#roll%ar.0ositionN o S#aleLJ
3.%otto GT M3.%otto X 7ertS#roll%ar.0ositionN o S#alelJ
3.3ight GT M3.3ight X 9orzS#roll%ar.0ositionN o S#alelJ
i* Mnot MCoponentsR&ndS is !C"sto;a)elNN and MMCop.%orderStyle T )sSingleN then
0rinter.Canvas.3e#tangleM3.;e-t' 3.!op' 3.3ight' 3.%ottoNJ
Forat GT D!n;2F!J
i* MCoponentsR&ndS is !2ditN or MCoponentsR&ndS is !C"stoMas<2ditN then
Forat GT Forat or D!nS&4A;2;&42 or D!n7C24!23
else
17[
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
begin
i* MCop.IordIrap then
Forat GT D!nI(3D%32AmJ
i* MCop.Alignent T taCenter then
Forat GT Forat or D!nC24!23J
i* MCop.Alignent T ta3ight?"sti-y then
Forat GT Forat or D!n3&A9!J
3.%otto GT 3.%otto X 0rinter.Canvas.Font.9eight X 1J
endJ
C;en GT MCop.Aet!e.t%"-MC'U55NJ
3.;e-t GT 3.;e-t X S#aleL X S#aleLJ
DraF!e.tMDC' C' C;en' 3' ForatNJ
endJ
endJ
0rinter.2ndDo#J
CloseJ
endJ
Se vo#C #onhe#e " po"#o de Pas%al -.0 n$o a#redito ,"e vo#C teve di-i#"ldades e
interpretar o prograa' se vo#C n$o #onhe#e a,"i v$o alg"as di#asG
&ni#ialente -oi de#larado "a sErie de vari+veis ,"e ser$o "tilizadas posteriorente. 2
ent$o ini#iado o o)1eto de ipress$o Printer atravEs do #oandoG
0rinter.%eginDo#J
( o)1eto iprie atravEs de "a s")#lasse #onhe#ida por Canvas. 2sta #lasse e ,"e
torna poss/vel a #ria*$o de toda a inter-a#e gr+-i#a do Delphi M2ste o)1eto parte de "
en#aps"laento da IindoFs 9DCN. Da -ora siples de se ipriir seria "tilizar os seg"intes
#oandosG
0rinter.%eginDo#J
0rinter.Canvas.!e.t("tMO' O' d2st+ ipriindo...BNJ
0rinter.2ndDo#J
Mas' para se o)ter "a #8pia -iel do -or"l+rio E pre#iso -azer ais do ,"e isto'
ini#ialente e #haada a propriedade handle Mesta -az "a #haada a IindoFs AD& #haando
-"n*6es da A0& para re,"erer o odo de desenho dos o)1etos envolvidosN' pr8.io passo E
veri-i#ar o tipo de es#ala Me pi.elsN da larg"ra e alt"ra da 1anela a ser ipressa.
Agora resta veri-i#ar o)1eto a o)1eto Mdo tipo 0a(el o" do tipo .ditN e enviar s"as
#ara#ter/sti#as para os dados da #lasse Canvas e ipri/-los. ;e)re-se o padr$o de ipress$o
do IindoFs

E eitir a listage soente ,"ando a esa estiver #opleta e isto s8 a#onte#er+


no #oando G
0rinter.2ndDo#J
Da o"tra sa/da para a ipress$o de se"s relat8rios pode ser #onseg"ida atravEs da
"tiliza*$o de in5eras )i)liote#as prontas ,"e -aze o a#esso ao o)1eto 4Printer. 2ntre elas
e.iste a 3eport0rint

Mda %evrona DesignsN ,"e pode ser ad,"irido "a vers$o de


deonstra*$o atravEs da internet atravEs do seg"inte endere*oG
-tp.prienet.#o/"sers/1/1g"n<el /delphi/rprinter.zip
,XO
A,Endi*e !
Tra.a+hando *om MBs*aras
A)rireos a,"i este apCndi#e para es#lare#eros a respeito de #apos as#arados no
Delphi' alg"ns #apos pode poss"ir "a as#ara para edi*$o atravEs da propriedade "ask.dit'
en#ontrada para os o)1etos !DateField' !Date!ieField' !StringField' !!ieField e o o)1eto.
0ara ontar "a +s#ara' "tiliza-se a propriedade (ditMasT o)servando o liite de
dados ,"e o #apo poder+ arazenar. K "tilizada )asi#aente para a valida*$o o" a -orata*$o
da entrada de " deterinado #apo.
A +s#ara para os #apos pode restringir o "so de deterinados #ara#teres o" -oratos
v+lidos' ostrando a"toati#aente "a 1anela de n$o a#eita*$o da +s#ara. A valida*$o o#orre
#ara#ter a #ara#ter. Dse o evento 'n<alidate para validar "a entrada #opleta.
A +s#ara )asi#aente #onsiste de trCs #apos' separados por ponto e v/rg"la. A
prieira parte e a +s#ara propriaente dita. A seg"nda parte deterina se os #ara#teres -i.os
deve ser o" n$o salvos #o a +s#ara Me.G /' -' M' ...N. A ter#eira parte da +s#ara representa o
#ara#ter e )ran#o' podendo ser s")stit"/do por o"tro Me.G n' ^' ...N.
2stes s$o os #ara#teres espe#iais "tilizados #o a +s#araG
Cara#ter Dtiliza*$o na +s#ara
f Ca"sa a digita*$o da +s#ara -i,"e parada no prieiro #ara#ter' -azendo #o ,"e os #ara#teres digitados
,"e se ova. 2.G fJOJn
_ !odos os #ara#teres digitados ser$o #onvertidos para ai5s#"las. 2.G _aaaJOJn
` !odos os #ara#teres digitados ser$o #onvertidos para in5s#"las. 2.G `aaaJOJn
`_ An"la o "so dos #ara#tes _ e `. 2.G _aaa`_aaaJOJn
k Dtilizado para ar#ar deterinado #ara#ter n$o espe#ial #oo -i.o. 2.G fkM999kNOOO-OOOOJOJn
; 3e,"er soente #ara#teres al-a)Eti#os o)rigat8rios para a posi*$o' do tipo A-W' a-z. 2.G ;;;J1Jn
l 0erite soente #ara#teres al-a)Eti#os para a posi*$o' as n$o-o)rigat8rios' do tipo A-W' a-z. 2.G lllJ1Jn
A 3e,"er soente #ara#teres al-an"Eri#os o)rigat8rios para a posi*$o' do tipo A-W' a-z' O-9. 2.G AAAJ1Jn
a 0erite soente #ara#teres al-an"Eri#os para a posi*$o' as n$o-o)rigat8rios' do tipo A-W' a-z' O-9. 2.G
aaaJ1Jn
C 3e,"er " #ara#ter o)rigat8rio para a posi*$o. 2.G CCCJ1Jn
# 0erite o "so de ,"al,"er #ara#ter para a posi*$o' liitando apenas o n5ero de #ara#teres "tilizados. 2.G
###J1Jn
O 3e,"er soente #ara#teres n"Eri#os o)rigat8rios para a posi*$o' do tipo O-9. 2.G OOOJ1Jn
9 0erite soente #ara#teres n"Eri#os para a posi*$o' n$o-o)rigat8rios' do tipo O-9. 2.G 999J1Jn
r 0erite soente #ara#teres n"Eri#os para a posi*$o e o "so dos sinais de - o" X' n$o-o)rigat8rios. 2.G
rrrJ1Jn
G Dtilizado #oo separador de horas' in"tos e seg"ndos.
/ Dtilizado #oo separador de dia' Cs e ano.
17\
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
2.eplos de M+s#arasG
Tipo MWscara (ntrada Formatao 0a$da
!ele-one fkM999kNOOO-OOOOJ1Jn O\1ZY7ZZ5O MO\1NZY7ZZ5O MO\1NZY7-ZZ5O
C20 OOOOOk-9999JOJn 7ZO15OUO 7ZO15-OUO 7ZO15OUO
9ora f9OGOOGOO _;;JOJn 1OOO[Z0M 1OGOOG[Z 0M UUGOOG[Z
,XX
A,Endi*e #
Tra.a+hando *om Im,or%a'(o e !<,or%a'(o
A iporta*$o e e.porta*$o de ar,"ivos no Delphi pode ser realizada se pro)leas
,"ando se tratar de ta)elas e -oratos padr$o para o Delphi M0arado.' d%ase' (ra#le' Sy)ase'
(D%C' et#N o ,"ase pro)lea era se tratando de e.porta*$o para ar,"ivos no -orato .!L!'
,"ase por,"e ele ser+ resolvido a partir deste apli#ativo.
1. Crie " novo pro1eto. Arave a "nidade padr$o #oo *(Qp1mp e o pro1eto #oo
(Qp1mp.
U. Colo,"e os seg"intes o)1etos e -a*a as seg"intes altera*6esG
0ara o ()1eto Table M;o#alizado na p+gina Data AccessN
Propriedades Con*igrao
Data%ase4ae D)Deos
!a)le4ae 2M0;(l22
0ara o ()1eto OpenDialog, M;o#alizado na p+gina DialogsN
Propriedades Con*igrao
De-a"lt2.t !L!
Filter Ar,"ivo !e.toeo.!L!
0ara o ()1eto 0aveDialog, M;o#alizado na p+gina DialogsN
Propriedades Con*igrao
De-a"lt2.t !L!
Filter Ar,"ivo !e.toeo.!L!
0ara o ()1eto Btton M;o#alizado na p+gina 0tandardN
Propriedades Con*igrao
Caption p2.porta
4ae %"t2.porta
0ara o ()1eto Btton M;o#alizado na p+gina 0tandardN
Propriedades Con*igrao
Caption p&porta
4ae %"t&porta
( aior tra)alho da #odi-i#a*$o -i#aria por #onta de #riar 1anelas de Salvar e A)rir as
todo esse tra)alho E realizado pelos o)1etos OpenDialog e 0aveDialog. ( resto do #8digo E )e
siples ve1aosG
0ara o evento OnClicT do o)1eto %"t2.porta
17Y
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
procedre !For1.%"t2.portaCli#<MSenderG !()1e#tNJ
var
Ar,G !e.tFileJ
begin
i* SaveDialog1.2.e#"te then
begin
S#reen.C"rsor GT #r9o"rAlassJ
Kith !a)le1 do
begin
(penJ
FirstJ
i* not 2(F then
begin
AssignFileMAr,' SaveDialog1.File4aeNJ
3eIriteMAr,NJ
repeat
Irite;nMAr,'Field%y4aeMV2p4oVN.AsString X VeV X
Field%y4aeMV;ast4aeVN.AsString X VeV X
Field%y4aeMVFirst4aeVN.AsString X VeV X
Field%y4aeMV0hone2.tVN.AsString X VeV X
Field%y4aeMV9ireDateVN.AsString X VeV X
Field%y4aeMVSalaryVN.AsString X VoVNJ
ne.tJ
ntil 2(FJ
CloseFileMAr,NJ
endJ
#loseJ
endJ
S#reen.C"rsor GT #rDe-a"ltJ
endJ
endJ
&ni#ialente vaos e.portar o ar,"ivo Mno #aso 2ployeeN' o -"n*$o do #oando
AssignFile e ini#iar " o)1eto de ar,"ivo te.to Mdeterinada pelo tipo de vari+vel TeQtFileN e o
#oando ReJrite prepara o o)1eto ini#iado para a grava*$o. ;e)re-se ,"e " ar,"ivo te.to s8
pode re#e)er logi#aente te.to de-inido pelos #oandos Jrite Minsere " te.to e deterinado
ar,"ivo e o #"rsor de grava*$o perane#e na posi*$oN e Jrite+n Minsere " te.to e
deterinado ar,"ivo e o #"rsor de grava*$o ini#ia "a nova linhaN ent$o o 5ni#o tra)alho ser+ de
per#orrer o nosso ar,"ivo #o o #oando Repeat.
0ara o evento OnClicT do o)1eto %"t&porta
procedre !For1.%"t&portaCli#<MSenderG !()1e#tNJ
var
Ar,G !e.tFileJ
!e.toG 0tringJ
&G &ntegerJ
*nction Monta7ariavelG 0tringJ
var
ontaG StringJ
begin
onta GT VVJ
in#M&NJ
,X'
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
Khile !e.toR&S `_ VoV do
begin
i* !e.toR&S T VeV then
)rea<J
onta GT onta X !e.toR&SJ
in#M&NJ
endJ
res"lt GT ontaJ
endJ
begin
i* (penDialog1.2.e#"te then
begin
S#reen.C"rsor GT #r9o"rAlassJ
!a)le1.(penJ
AssignFileMAr,' (penDialog1.File4aeNJ
3esetMAr,NJ
i* not 2(FMAr,N then
repeat
3ead;nMAr,'!e.toNJ
Kith !a)le1 do
begin
&nsertJ
i GT OJ
Field%y4aeMV2p4oVN.AsString GT Monta7ariavelJ
Field%y4aeMV;ast4aeVN.AsString GT Monta7ariavelJ
Field%y4aeMVFirst4aeVN.AsString GT Monta7ariavelJ
Field%y4aeMV0hone2.tVN.AsString GT Monta7ariavelJ
Field%y4aeMV9ireDateVN.AsString GT Monta7ariavelJ
Field%y4aeMVSalaryVN.AsString GT Monta7ariavelJ
0ostJ
endJ
ntil 2(FMAr,NJ
CloseFileMAr,NJ
!a)le1.CloseJ
S#reen.C"rsor GT #rDe-a"ltJ
endJ
endJ
7aos agora iportar o ar,"ivo Mno #aso 2ployeeN' o -"n*$o do #oando AssignFile e
ini#ar " o)1eto de ar,"ivo te.to Mdeterinada pelo tipo de vari+vel TeQtFileN e o #oando Reset
prepara o o)1eto ini#iado para a grava*$o. (s #oandos de leit"ra s$o Read M;C " #ara#tere de
deterinado ar,"ivoN e Read+n M;C "a linha de deterinado ar,"ivoN ent$o o tra)alho agora
ser+ de separar e peda*os a linha lida isto E realizado na -"n*$o MontaNariavel ,"e ler+
peda*os dear#ados do ar,"ivo e.portado.
,&-
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
A,Endi*e $
DoHe me+hores di*as ,ara o De+,hi
4este 5ltio apCndi#e do tra)alho reservei "a #oisa espe#ial' pes,"isei e todos os
do#"entos tipo 4ips X 4ri%ks MDi#as e !r","esN e en#ontrei " do#"ento ,"e -alava so)re as
onze elhores di#as para o Delphi.
A"torG 0a"l 9arding 1OOO[\.U\O[^Cop"serve.Co Malg"as -ora alteradasN
1. Coo -azer para o #op"tador soar o )eepG
essage%eepMONJ
U. Coo pa"sar " prograa por deterinado n5ero de seg"ndosG
var
4"Se#G Sall&ntJ
Start!ieG ;ong&ntJ
)egin
Start!ie GT 4oFJ
repeat
Appli#ation.0ro#essMessagesJ
"ntil 4oF _ Start!ie X 4"Se# o M1/U[/\O/\ONJ
endJ
Z. Coo ostrar o o"se #oo "a ap"lheta Me depois retorn+-lo ao noralNG
try
S#reen.C"rsor GT #r9o"rAlassJ
b 2s#reva o a*$o a e.e#"tar a,"i c
-inally
S#reen.C"rsor GT #rDe-a"ltJ
endJ
Appli#ation.0ro#essMessagesJ
[. Coo #ontrolar o pressionaento da te#la `2nter_G
pro#ed"re !For1.2ditmey0ressMSenderG !()1e#tJ var meyG CharNJ
b atravEs do evento onmey0ress do -or"l+rio de #ontrole... c
)egin
b se a =var mey> retornar o #8digo r1Z #orresponde a `2nter_' r9 #orresponde a te#la !A% c
i- mey T r1Z then
)egin
mey GT rO b S"prie o so c
b es#reva a,"i os se"s #oandos c
endJ
endJ
5. Coo odi-i#ar a #or do te.to dentro de " #apo D%Arid dependendo do #onte5doG
pro#ed"re !For1.D%AridDraFDataCellMSenderG !()1e#tJ #onst 3e#tG !3e#tJ FieldG !-ieldJ StateG
!AridDraFStateNJ
)egin
i- !a)le1Client.AsString T dLLLLB then
)egin
D%Arid.Canvas.%r"sh.Color GT #l3edJ
D%Arid.Canvas.Font.Color GT #lSilverJ
D%Arid.Canvas.Fill3e#tM3e#tNJ b Desenha o pano de -"ndo c
D%Arid1.Canvas.!e.t("tM3e#t.;e-tXU' 3e#t.!opX1' Field.AsStringNJ
endJ
endJ
,&,
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
\. Coo #haar " o"tro prograa Mtipo o notepad do IindoFs

N a partir de " apli#ativo


Mde trCs aneiras di-erentesG noral' a.iizado e iniizadoNG
Iin2.e#MdCGkFindoFsknotepad.e.eB' SInS9(I4(3MA;NJ
Iin2.e#MdCGkFindoFsknotepad.e.eB' SInS9(IMAL&M&W2DNJ
Iin2.e#MdCGkFindoFsknotepad.e.eB' SInS9(IM&4&M&W2DNJ
7. Coo varrer "a ta)ela inteiraG
!a)le1.FirstJ
i- not !a)le1.2o- then
repeat
b se"s #oandos para a ta)ela c
!a)le1.4e.t
"ntil !a)le1.2o-J
Y. Coo inter#eptar as te#las de -"n*$oG
pro#ed"re !For1.FormeyDoFnMSenderG !()1e#tJ var meyG IordJ Shi-tG !Shi-tStateNJ
)egin
i- mey T 7mnF5 then
ShoFMessageMd7o#C pressiono" a F5BNJ
endJ
b pode ser "sado da 7mnF1 a 7mnF1U c
9. Coo os valores de #apos de "a ta)ela para o"traG
b 2ste e.eplo #opia apenas ta)elas de esa estr"t"ra c
var
4"G Sall&ntJ
)egin
-or 4" GT O to !a)ela(rige.FieldCo"nt - 1 do
)egin
!a)elaDestino.&nsertJ
!a)elaDestino.FieldsR4"S.AssignM!a)ela(rige.FieldsR4"SNJ
!a)elaDestino.0ostJ
endJ
endJ
1O. Coo veri-i#ar se " #apo inteiro E par o" /parG
-"n#tion !esta0ara0arM!esta&nteiro G &ntegerN G )ooleanJ
)egin
i- M!esta&nteiro div UN T M!esta&nteiro/UN then
res"lt GT !r"e
else
res"lt GT FalseJ
endJ
11. Coo veri-i#ar se "a string #ontE " inteiroG
-"n#tion &s&ntegerM!estaStringG StringN G )ooleanJ
)egin
try
Str!o&ntM!estaStringNJ
e.#ept
(n 2Convert2rror do res"lt GT FalseJ
else
res"lt GT !r"eJ
endJ
endJ
1U. Coo s")trair datasG
-"n#tion S")DataMData2prestioG !Data!ieN G &ntegerJ
)egin
res"lt GT Date - Data2prestioJ
endJ
,&3
Borland
Delphi e Delphi Client/Server Desvendando o Caminho das Pedras
,&2

Você também pode gostar