Escolar Documentos
Profissional Documentos
Cultura Documentos
Delphi - A Biblia - Borland
Delphi - A Biblia - Borland
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.
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
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
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
' 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
2=,' JindoKs
'O' JindoKs
%T' %etJare
' 0CO
' 0n O0
' 0n
0olaris
' )P5V"
' 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
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.
' Sl%AS2
' 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