Você está na página 1de 184

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. Ansel o.

!odos os no es 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 si ples ente listar esses no es e in-or ar ,"e poss"i se"s direitos de e.plora*$o' o" ainda i pri ir o logotipo das es as' o a"tor de#lara estar "tilizando tais no es 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 Ca inho das 0edras i

INTRODUO
Delphi' #o o Sol"*$o para Desenvolvedores

7
7

CAPTULO I
Conceito de Programao Orientada a Objeto (rienta*$o a ()1eto ()1e#t 0as#al S/ )olos 3spe#iais 0alavras 4eservadas 56 eros Constantes 3.press8es &denti-i#adores De#lara*8es %lo#os de 0ro#edi entos o" F"n*8es Cara#ter/sti#as de ()1etos 0rogra ando #o o)1etos Delphi 4eno eando os o)1etos e os #o ponentes

9
9 9 12 11 11 17 17 19 19 1: 1; 17 1< 72

CAPTULO II
Conhecendo o Delphi 3le entos =is/veis For Code 3ditor Co ponent 0alette ()1e#t &nspe#tor Speed%ar 3le entos n$o =is/veis 0ro1e#t Manager Men" Designer Fields 3ditor 4eposit>rio de ()1etos 3str"t"ra de Apli#a*8es #o o Delphi 7.2 & ple enta*$o e-etiva ()1etos Data Mod"le Di#ion+rio de Dados 3s#al+vel ?erdando os For "l+rios Ferra entas A".iliares de S@A Monitor S@A S@A 3.plorer &nter%ase 5! - %an#o de Dados 4ela#ional

!
! 71 77 79 79 7: 7: 7: 75 75 7; 77 7< 92 92 91 97 99 99 9: 95

CAPTULO III
Projeto Piloto iii

"#
"#

Criando o Modelo 4ela#ional !ra)alhando #o Data%ase 3ngine Con-ig"ration Criando o Alias !ra)alhando #o Data%ase DesB!op Criando o %an#o de Dados via 3str"t"ra Criando os 4ela#iona entos via 3str"t"ra Criando o %an#o de Dados via S@A ()serva*8es da "tiliza*$o do S@A #o o d%ase

97 9< 9< 99 99 :1 :1 :7

CAPTULO I$
$rabalhando com o Men% Metendo a M$o na Massa Criando a 1anela do en" &nserindo os C>digos &ni#iais &ni#iando os #o andos do Men" Colo#ando os #o andos para o A"./lio Criando a 1anela CSo)re o Siste aD Criando e alterando os o)1etos Asso#iando o -or CSo)re o Siste aD ao Criando a 1anela Splash Criando o a#esso a %ase de Dados

%%
&& :: :: :7 :< :9 51 51 57 59 55

en"

CAPTULO $
'anela para as $abelas 4ea)rindo o se" 0ro1eto Alterando as Eanelas Criadas DataMod"les F Modi-i#ando as !a)elas e as Aiga*8es Alterando os #a pos da ta)ela Codi-i#ando o DataMod"le Controlando a d"pli#a*$o dos Ca pos-Chave Finalizando o DataMod"le Alterando o For "l+rio Modi-i#ando os Aa)els e Ca pos ()1eto D%5avigator Modi-i#ando os 0aineis Modi-i#ando a Eanela Criando o ter#eiro 0ainel 0rogra ando no -or "l+rio 0reservando as +reas de Me >ria Criando F"n*8es Glo)ais Alterando o Men" para re#e)er o -or "l+rio

&'
() 5< 59 59 59 ;2 ;1 ;7 ;9 ;: ;5 ;; ;7 ;7 ;7 ;9 ;9 77 75

CAPTULO $I
$rabalhando com janela Pai * Filha Criando a 1anela a"to ati#a ente So)re os DataMod"les !ra)alhando #o as !a)elas !ra)alhando #o os Ca pos iv

7'
+) 7< <2 <2 <7

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras <9 <: <5 << <9 <9 92 91 97 9: 95 97 97 9< 121 129

Controlando o DataMod"le Contadores =alidando os Ca pos Alterando a Eanela Criada (rganizando os 0anels Modi-i#ando os #a pos e Aa)els (rganizando os 0anels Modi-i#ando a Eanela !ra)alhando #o GridHs Final ente' a progra a*$o Cons"lta !ra)alhando #o a +rea de !rans-erIn#ia Jtilizando o o)1eto (penDialog Criando o -or "l+rio para o #adastro das 6si#as Criando novos 0ro#edi entos Glo)ais Alterando o Men" para re#e)er o -or "l+rio

CAPTULO $II
$rabalhando com cons%ltas Criando #ons"ltas para ta)elas !ra)alhando #o GridHs 0rogra ando no -or "l+rio 3nviando 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@A 4ealizando Cons"ltas #o Filtros 0rogra ando o -or "l+rio Criando o -or "l+rio Gerente do Filtro 0rogra ando o -or "l+rio 3ditando os registros

!(7
!,+ 127 127 112 111 111 117 115 115 115 119 17; 179 192

CAPTULO $III
Relat-rios !ra)alhando #o o 4eportS ith Criando relat>rio #o o 4eportS ith (rganizando os #a pos do relat>rio Asso#iando o relat>rio ao apli#ativo 0rogra ando o -or "l+rio & pri indo atravKs do For "l+rio Criando o C>digo !ra)alhando #o o @"i#B4eport

!""
!"" 199 19: 19; 197 19< 1:2 1:1 1:7

CAPTULO I)
M%ltim.dia ( ,"e K "lti /dia F Delphi and M"lti edia ()1eto !Media0layer Colo#ando as propriedade e odo 4"nti e 0es,"isando vari+veis e odo 4"n!i e &nserindo o "lti /dia para o Siste a Desenvolvi ento do CD 0layer v

!%'
!&) 1:< 1:< 1:9 1:9 152 15: 15:

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

CAPTULO )
/ovos Componentes Criando Co ponentes A Classe !Co ponent J Co ponente Si ples Adi#ionando o Co ponente a 0alheta Criando 0ropriedades MKtodos de A#esso Criando novos tipos 0ensando e ()1etos Constr"indo " ()1eto Final ente

!&9
!(9 1;2 1;2 1;2 1;1 1;9 1;9 1;: 1;: 1;: 1;9

AP*NDIC+ A
Do#" enta*$o ?ardLare/So-tLare re,"eridos

!7(
172 172

AP*NDIC+ ,
Convers$o de Ca pos !ipos de Dados para o &nter%ase

!7!
171 177

AP*NDIC+ C
Apli#a*$o r+pida #o o ()1eto @"ery

!7"
179

AP*NDIC+ D
& pri indo " For "l+rio

!7&
175

AP*NDIC+ +
!ra)alhando #o M+s#aras

!77
177

AP*NDIC+ !ra)alhando #o & porta*$o e 3.porta*$o

!79
179

AP*NDIC+ .
Doze elhores di#as para o Delphi

!'
1<7

vi

In/rod012o
%e -vindo ao Delphi' o ais novo prod"to de alta per-or an#e da Borland. Delphi K " prod"to 6ni#o e s"a #ategoria #o )inando #>digos total ente #o pil+veis' -erra entas vis"ais e te#nologia para a #o posi*$o de )ases de dados es#al+veis' poss"i -a#ilidades para " r+pido desenvolvi ento e plata-or a Windows e apli#a*8es Client/Server. 3ste tra)alho ser+ se" g"ia para " a r+pida aprendizage no desenvolvi ento de siste as ,"e geren#ie )an#os de dados. ( Delphi K en#ontrado e dois prod"tosM Delphi Client/Server' de alta per-or an#e e -a#ilidade para o desenvolvi ento de apli#a*8es e s"porte a )an#os de dados do tipo Cliente/Servidor. Delphi Desktop' de alta per-or an#e e -a#ilidade para o desenvolvi ento de apli#a*8es e s"porte a )an#os de dados lo#ais' per itindo total porta)ilidade N vers$o Client/Server.

Apresento-lhes a seg"ir alg" as in-or a*8es detalhadas para " per-eito desenvolvi ento vis"al' sendo ,"e ao -inal de #ada #ap/t"lo pr+ti#o K e.i)ido o #>digo -onte #o pleto seg"ido de " res" o dos prin#ipais #o andos ostrados. Ao -inal deste est"do vo#I en#ontrar+ apIndi#es ,"e lhe a1"dar$o a resolver pe,"enos pro)le as do dia-a-dia.

Delphi3 4omo So5012o 6ara Desenvo5vedores


M"itas vezes nos perg"nta os' e so os ,"estionados' no por,"e de adotar o Delphi #o o a ling"age para o desenvolvi ento de siste as F &ni#ial ente' K ne#ess+rio #onhe#er ,"e o Delphi o-ere#e " r+pido #a inho para o desenvolvi ento de apli#a*8es nos a )ientesM OindoLs' OindoLs 95 e OindoLs 5!P %an#os de dados do tipo Cliente/ServidorM (ra#le ' &n-or i. ' &nter%ase' Sy%ase Mi#roso-t S@A ServerP Alta per-or an#e' e siste as #r/ti#osP

%ase de Dados lo#ais e apli#a*8es do tipo netLorBP A )iente gr+-i#o' vis"al e "lti /dia. ele F Q poss/vel #riar' dentre o"tros' os seg"intes tipos de

Mas o ,"e K poss/vel -azer #o apli#a*8es e Delphi M Js+-lo #o o a ling"age

de desenvolvi ento para )an#os do tipo Cliente/ServidorP diversos tipos de ar,"ivos

A )iente heterogIneo para #apt"ra e envio de in-or a*8es e de dadosP

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

J pa#ote #orporativo de apli#a*8es inteligentes e interpretadores de dados. &n#orporando DAAHs e 3R3Hs e.ternosP 0a#otes "lti /dia #o desenho e ani a*$oP

GenKri#os "tilit+rios do OindoLs P Cria*$o de )i)liote#as SDAAT para leit"ra por o"tras apli#a*8es.

Mas por,"e arris#ar e " a )iente novo ,"ando e.iste no er#ado ling"agens ais di-"ndidas F 5o "ndo inteiro Delphi -oi testado' e e 15 eses de vida prod"zi" os seg"intes res"ltadosM Delphi est+ sendo "tilizado no o ento por ais de 1.522 l"gares in#l"indo as #orpora*8es' #ons"ltores e organiza*8es de treina entoP 3leito pela %yte Magazines #o o %est o- Co de. ALardP =+rios livros es#ritosP Gr"pos de dis#"ss$o e peri>di#os #o di#as de desenvolvi ento na OorldOi)e SCons"lte Ns listas da &nter5et atravKs da palavra DELPHITP Dezenas de )i)liote#as e -erra entas para o s"porte e DelphiP aiores

Dezenas de artigos e p")li#a*8es do "ndo inteiro' tais #o o PC Week, InfoWorld, Computer Reseller News, PC Ma a!ine, Windows Sour"es e "itas o"tras.

0or t"do a,"i e.posto -i#a #laro ,"e este no prod"to de onstra " a inova*$o para " a #ria*$o e alta per-or an#e de apli#a*8es. !odos os re#"rsos ,"e vo#I pre#isar+ para o desenvolvi ento de se"s prod"tos est$o agora dispon/veis. Feliz desenvolvi ento. Fernando Antonio F. Ansel o Se pre ,"e vo#I lo#alizar este s/ )olo signi-i#a ,"e e.iste " a nota ,"e lhe a1"dar+ #aso de d6vida.

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Ca67/05o I
Conceito de Programao Orientada a Objeto
0ara #o preender os elhor a novo a )iente de desenvolvi ento da Borland o Delphi K ne#ess+rio ,"e vo#I' aprenda e' tenha e ente os #on#eitos de 0(( S0rogra a*$o (rientada a ()1etosT' n$o #on-"nda os #on#eitos #o 0(3 S0rogra a*$o (rientada a 3ventosT "ito di-"ndido #o o #""ess $%& S" a )iente )aseado e ()1etosT' as ao longo deste #ap/t"lo vo#I vai notar as sens/veis di-eren*as ,"e e.iste entre esses dois #on#eitos. A 0(( e a 0(3 s$o -a#il ente #on-"ndidas' as le )re-se a 0(( #ontK a 0(3 as a 0(3 n$o #ontK a 0((' " o)1eto pode e.istir es o ,"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. 3 a )iente (rientado a ()1etos #onseg"e-se #riar e anip"lar o)1etos en,"anto ,"e o %aseado e ()1etos n$o K possivel a #ria*$o de o)1etos apenas a s"a anip"la*$o. A 0(( K " #on#eito desenvolvido para -a#ilitar o "so de #>digos de desenvolvi ento e inter-a#es gr+-i#as. Sendo a Borland' " a das pri eiras a entrar neste novo #on#eito' poss"i s"as prin#ipais ling"agens de progra a*$o Stais #o o '()e"t Pas"al e C**T' total ente voltadas para este tipo de progra a*$o. A 0(( atrai" "itos adeptos prin#ipal ente pelo po"#o "so de #>digo ,"e o pro1eto Sdi-erente de siste aT #arrega no progra a -onte' ao #ontr+rio das ling"agens ais antigas #o o o Clipper+,- "ito "tilizado no -inal da dK#ada de 92 e in/#io da dK#ada de 92. ( res"ltado desta Cli pezaD no #>digo res"lta ,"e a an"ten*$o do pro1eto tornase "ito ais si ples.

Orien/a12o a O89e/o
Antes de #o e*ar os a -alar real ente de ling"age orientada a o)1etos e ne#ess+rio ,"e vo#I poss"a os #on#eitos )+si#os da orienta*$o a o)1etos' s$o elesM

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Objeto - K ,"al,"er estr"t"ra od"lar ,"e -az parte de " prod"to. J a 1anela por e.e plo' K " o)1eto de " a #asa' de " #arro o" de " so-tLare #o inter-a#e gr+-i#a para o "s"+rio.

Atrib%tos - S$o as #ara#ter/sti#as do o)1eto' #o o #or e ta anho' a 1anela' por e.e plo' te atri)"tos #o o o odelo' ta anho' a)ert"ra si ples o" d"pla' entre o"tros. 0ncaps%lao - K " e#anis o interno do o)1eto Ces#ondidoD do "s"+rio. J a pessoa pode a)rir " a 1anela girando a tran#a se pre#isar sa)er o ,"e h+ dentro dela. Ao - K a opera*$o e-et"ada pelo o)1eto. !odas as 1anelas' por e.e plo' #ontrola il" ina*$o e te perat"ra a )iente' dependendo do se" design. a

1erana - " o)1eto novo ne se pre K #riado do zero. 3le pode CherdarD atri)"tos e a*8es de o"tros 1+ e.istentes. J )as#"lante herda atri)"tos das 1anelas e das persianas. Polimor2ismo - K a #apa#idade de o)1etos di-erentes reagire seg"ndo a s"a -"n*$o a " a orde padr$o. ( #o ando Ca)reD' por e.e plo' -az " o)1eto entrar e a*$o' se1a ele " a 1anela' " a porta o" " a ta pa de garra-a. 3igao - K ,"ando " o)1eto #one#ta a s"a a*$o a o"tro. J sensor de #laridade' por e.e plo' ativa o a#endi ento a"to +ti#o da il" ina*$o de r"a. 0mb%timento - 0er ite a " o)1eto in#orporar -"n*8es de o"tros' #o o " ,"e >i #arne #o a "dan*a do tipo da lV ina. li,Uidi-i#ador

O89e4/ Pas4a5
Object Pascal K " a ling"age (rientada a ()1etos n$o p"ra as h/)rida por poss"ir #ara#ter/sti#as de progra a*$o n$o s> vis"al as ta )K es#rita' para os progra adores ,"e 1+ #onhe#e tK#ni#as de estr"t"ras de progra a*$o' #o o C' Basi"' Pas"al o" .B#S. entre o"tras ling"agens a Object Pascal providIn#ia " a igra*$o de -or a nat"ral o-ere#endo " prod"to de aior #o ple.i)ilidade. Object Pascal -or*a a vo#I e.e#"tar passos l>gi#os isto torna ais -+#il o desenvolvi ento no a )iente Windows de apli#a*8es 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 e >ria e todo o poder de " #>digo total ente #o pil+vel. AlK disso possi)ilita a #ria*$o e re"tiliza*$o Svantage de re-"so t$o sonhado #o a Orientao a ObjetosT de o)1etos e )i)liote#as dinV i#as SD/nami" 0ink 0i(raries - DAAT. Object Pascal #ontK todo o #on#eito da orienta*$o a o)1etos in#l"indo en#aps"la ento' heran*a e poli or-is o. Alg" as e.tens8es -ora in#l"/das para -a#ilitar o "so tais #o o #on#eitos de propriedades' parti#"lares e p6)li#as' e tipos de in-or a*8es e odo r"n-ti e' an"sea ento de e.#e*8es' e re-erIn#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 progra a*$o' tais #o oM Controle e a#esso das s")#lasses do Windows SA0&TP

!,

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

0assar por #i a das

ensagens de loop do WindowsP

Mensagens se elhantes as do Windows P C>digo p"ro da ling"age #ssem(ler. Object

Co o de" para per#e)er a )ase de toda a progra a*$o Delphi K a ling"age Pascal' ent$o neste #ap/t"lo tratare os e.#l"siva ente deste tipo de progra a*$o.

Smbolos Especiais
A Object Pascal a#eita os seg"intes #ara#teres ASC&&M

Aetras - do Al-a)eto &nglIsM A atK 4 e a atK 5. D/gitos - De#i alM , atK 9 e ?e.aDe#i alM , atK 9 e A atK F So" a atK 2T %ran#os - 3spa*o SA6C77 " T e todos os #ara#teres de #ontrole A6C77
A6C77 "!T' in#l"indo -inal de linha e 3nter SA6C77 !"T.

SA6C77 , atK

3spe#iais - Cara#teresM 8 9 : ; < = > ? @ A B C D E F G H I J K L S/ )olos - Cara#teresM =< >< E< AA C: :D CA AD ;;


( #ol#hetes es,"erdo S ? T e e,"ivalente ao CA e o #ol#hetes direito S @ T e e,"ivalente a AD. A #have es,"erda S I T e e,"ivalente ao C: e a #have direita S J T e e,"ivalente a :D.

Palavras Reservadas
sere
And Array As As %egin Case Class Const Constr"#tor Destr"#tor Div Do DoLnto 3lse 3nd 3.#ept

A Object Pascal se "tiliza das seg"intes palavras reservadas' n$o podendo as "tilizadas o" rede-inidasM
3.ports File Finnaly For F"n#tion Goto && ple entation &n &nherited &nitialization &nline &nter-a#e &s Aa)el Ai)rary Mod 5il 5ot ()1e#t ((n (r 0a#Bed 0ro#ed"re 0rogra 0roperty 4aise 4e#ord 4epeat Set Shl Shr String !hen !o !ry !ype Jnit Jntil Jses =ar Ohile Oith Ror

es as

!!

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

J a o"tra lista a seg"ir' apresenta as diretivas ,"e s$o "tilizadas e identi-i#a*$o de o)1etosM
A)sol"te A)stra#t Asse )ler At Cde#l De-a"lt Dyna i# 3.port 3.ternal Far ForLard &nde. &nterr"pt Message 5a e 5ear 5ode-a"lt (verride 0rivate 0rote#ted 0")li# 0")lished 4ead 4esident Stored =irt"al Orite

#onte.tos de

Nmeros
Q poss/vel de-inir vari+veis e #onstantes de tipos de Inteiro o" Real atravKs de ,"al,"er de#i al ordin+rio S , a 9 T' as a Object Pascal ta )K a#eita a nota*$o ?e.ade#i al "tilizados #o o pre-i.o dollar S K T o" a nota*$o #ient/-i#a S 0 T.

Constantes
J a #onstante K " identi-i#ador #o #onstante poss"i a seg"inte e.press$oM valorSesT -i.oSsT. J )lo#o de de#lara*8es

WDe#lara*$o ConstanteX W&denti-i#adorX SYT W#onstanteX SPT A lista a)ai.o apresenta " de#lara*$o das #onstantesM
A) Chr ?i ?igh Aength Ao AoL (dd

#on1"nto de -"n*8es ,"e pode


(rd 0red 0tr 4o"nd

ser "tilizadas para a


Size(S"## SLap !r"n#

Alg"ns e.e plos para a de-ini*$o de ConstantesM


const Min Y 2P Ma. Y 122P Centro Y SMa. - MinT div 7P %eta Y ChrS775TP 5" Aetras Y (rdSZ[ZT - (rdSZAZT \ 1P Mens(la Y Z&nstr"*$o inv+lidaZP Mens3rro Y Z 3rroM Z \ Mens(la \ Z. ZP 0os3rr Y <2 - AengthSMens3rroT div 7P An12 Y 7.9275<529799:2:5;<:P An124 Y 1 / An12P Dig5" eri#os Y WZ2Z..Z9ZXP AetrasAlpha Y WZAZ..Z[Z' ZaZ..ZzZXP Alpha5" Y AetrasAlpha \ Dig5" eri#osP

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Expresses
As e.press8es e ()1e#t 0as#al S#o o e ,"al,"er ling"age T K -or ada por operadores e operandosP os operadores s$o divididos e ,"atro #ategorias )+si#asM
]ni#os M"ltipli#ativos Adi#ionais 4ela#ionais ^' 5ot _' /' div' od' and' shl' shr' as \' -' or' .or Y' ` _' `' _' ` Y' _ Y' in' is

As e.press8es o)de#e opera*8es.

as regras )+si#as de l>gi#a para a pre#edIn#ia da e.e#"*$o das

denti!icadores
&denti-i#adores pode ser #onstantes' tipos' vari+veis' pro#ed"res' -"n*8es' "nidades' progra as e #a pos de registros. 5$o e.iste li ite de #ara#teres para o no e de " identi-i#ador as apenas os ;9 pri eiros #ara#teres s$o signi-i#antes Sn$o podendo ser idInti#o ao no e das palavras reservadasT. ( no e de " identi-i#ador deve ser ini#iado por Aetras o" o #ar+#ter "nders#ore S M T. ( resto K -or ado por Aetras' D/gitos' #ar+#ter "nders#ore SASC&& a5FT. 5$o K per itido a "tiliza*$o de espa*os para a -or a*$o do no e.

3.e plo de identi-i#adores v+lidosM For 1' SysJtils.StrAen' Aa)el1.Caption

:i/h;;; do;;;<
Deli ita " deter inado )lo#o de de#lara*8es para " identi-i#ador espe#/-i#o evitando a de#lara*$o deste identi-i#ador. A sinta.e do #o ando KM N7$1 Inome do identi2icadorJ DO IcomandosJF. 3.M )egin b ... #o andos ini#iais ... c Oith 2orm! do )egin Caption MY d!esteHP %orderStyle MY )sSiza)leP endP endP

3,"ivalente a For 1.Caption 3,"ivalente a For 1.%orderStyle

arra= > ;;; ? o@ ;;;<


De-ine " #on1"nto de vari+veis o" #onstantes de " es o tipo. A sinta.e do #o ando KM arraP ?IQ%antidade de ocorrenciasJ@ o2 I$ipoJF. (s arrays s$o #ontrolados por trIs -"n*8esM
F%no AoL ?igh Size(Ralor de Retorno 0ri eiro ele ento Aponta para o 6lti o ele ento !a anho do array

3.M

!"

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

#onst tM arraP ?!AA(,@ o2 Char b De#lara 52 ele entos para o tipo Char c var s M arraP?!AA!,,@ o2 Real b De#lara 122 ele entos para o tipo real c indM &ntegerP )egin -or &nd MY 3oOSsT to 1ighSsT do sW&ndX MY 2P b [era os ele entos do array S c i- 6i5eO2StT Y dCH then e.itP b Se o 6lti o ele ento do array ! -or dCH sai do )lo#o c b ... o"tros #o andos... c endP

"eclaraes
De#lara*8es des#reve a*8es de " algor/t o a sere e.e#"tadas.

8eAin;;; end<
0rende " #on1"nto de de#lara*8es e " B0S7/ IcomandosJ 0/DF. 3.M begin b ... #o andos ini#iais ... c begin b ... )lo#o 1 ... c endP begin b ... )lo#o 7 ... c endP b ... #o andos -inais ... c endP )lo#o de #o andos deter inado. A sinta.e do #o ando KM

i@;;; /hen;;; e5se;;;<


3sta e.press$o es#olhe entre o res"ltado de " a #ondi*$o )ooleana o #a inho verdadeiro SthenT o" -also SelseT. A sinta.e do #o ando KM 7F IcondioJ $10/ Ibloco de comandosJ 0360 Ibloco de comandosJF. 3.M )egin b ... #o andos ini#iais ... c i2 T > then b ... %lo#o verdadeiro ... c else b ... %lo#o -also ... cF endP

Ao/o;;; <
!rans-ere a e.e#"*$o de " progra a para o ponto deter inado pelo 3abel. A sinta.e do #o ando KM SO$O I3abelJF. 3.M label pri eiroP

!&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

)egin b ... #o andos ini#iais ... c i- . Y 7 then goto primeiroF b ... o"tros #o andos ... c PrimeiroE b ... #o andos do 0ri eiro ... c endP

4ase;;; o@;;; e5se;;; end<


Consiste de " a lista de de#lara*8es ,"e satiz-az a #ondi*$o de " seletor de e.press8es' se nenh" a parte da lista satis-izer ao seletor e.e#"ta os #o andos do s")-#o ando else. 0ara o seletor ser$o v+lidos os tipos de-inidos' tipo &nteiros o" Aong&nt. A sinta.e do #o ando KM CA60 IseletorJ OF I0Tpresso !JE Icomando da eTpresso !JF I0Tpresso JE Icomando da eTpresso JF I0Tpresso nJE Icomando da eTpresso nJ 0360 IcomandoJF endF. 3.M )egin b ... #o andos ini#iais ... c case T o2 !E b ... %lo#o para . Y 1 ... c B "E b ... %lo#o para . Y 7 o" R Y 9... c &AA#E b ... %lo#o para : `Y . `Y ; ... c else b ... %lo#o para . ` 1 o" . _ ; ... cF endF endP

re6ea/;;; 0n/i5<
4epete " deter inado )lo#o de de#lara*8es atK a #ondi*$o )ooleana do s")#o ando %ntil ser satis-eita. A sinta.e do #o ando KM R0P0A$ IcomandosJF %ntil IcondioJF. 3.M )egin b ... #o andos ini#iais ... c . MY 2P repeat . MY . \ 1 %ntil CT < DF endP

@or;;; /o Bdo:n/oC;;; do;;;<


&n#re enta e 1 " a deter inada vari+vel inteira' repetindo " )lo#o de #o andos' atK ,"e esta atin1a o valor -inal do intervalo' o s")#o ando doOnto realiza o in#re ento reverso. A sinta.e do #o ando KM FOR IvariavelJ E< Ivalor inicialJ to CdoOntoD Ivalor 2inalJ do Ibloco de comandosJF . 3.M )egin b ... #o andos ini#iais ... c 2or i E< ! to !, do b ... Co andos A ... c 2or s E< !, doOnto ! do b ... Co andos %... c endP

3.e#"ta o W#o andos AX para i Y 1'7'9':'5';'7'<'9 e 12 3.e#"ta o W#o andos %X para i Y 12'9'<'7';'5':'9'7 e 1

!(

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

:hi5e;;; do;;;<
4epete " )lo#o de #o andos en,"anto ,"e deter inada #ondi*$o )ooleana se1a satis-eita. A sinta.e do #o ando KM N1730 IcondioJ DO Ibloco de comandosJF. 3.M )egin b ... #o andos ini#iais ... c Ohile i E< ! do b ... %lo#o de #o andos ... c endP

4epete o W%lo#o de #o andosX en,"anto i Y 1

8reaD< o0 4on/in0e;;;<
( #o ando breaU interro pe " )lo#o de repeti*$o 2or' Ohile o" repeat saindo do )lo#o. A sinta.e do #o ando KM BR0AVF en,"anto ,"e o #o ando contin%e retorna a pri eira instr"*$o do )lo#o de repeti*$o 2or' Ohile o" repeat. A sinta.e do #o ando KM CO/$7/W0F. 3.M )egin b ... #o andos ini#iais ... c -or i MY 1 to 12 do )egin i- i Y < then breaUF b... #o andos A...c i- i Y 5 then contin%eF b... #o andos % ...c endP b... #o andos C ...c endP

Salta para os W#o andos CX 4etorna para o #o ando 2or p"lando os W#o andos %X

#locos de Procedimentos o$ %$nes


As pro#ed"res o" -"n*8es s$o de#laradas na se*$o de tipos de de#lara*8es Sa)ai.o do #o ando tPpeT perten#endo ao o)1eto o" sere do tipo p%blic Sp6)li#as - e.e#"tadas por o"tras "nidadesT o" private Sparti#"lares - restritas a "nidade lo#alT.

Pro4ed0re
proced%re IcabealhoJF var Ideclarao das variXveisJF Ibloco de comandosJF

( #a)e*alho da pro#ed"re K #o posto pelo no e do pro#edi ento e vari+veis ,"e ser$o re#e)idas So" odi-i#adas atravKs da de#lara*$o varB e.M pro#ed"re testeSvar .MstringTPT.
pro#ed"re so aSa')M integerTP var #M integerP )egin # MY a \ )P endP &n/#io enviando as vari+veis A e % do tipo inteiro. De#lara*$o de vari+veis lo#ais. Corpo do pro#edi ento.

!#

Borland
-0n4/ion

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

2%nction IcabealhoJ E Ires%ltadoJF var Ideclarao das variXveisJF Ibloco de comandosJF

As -"n*8es se di-ere dos pro#edi entos pela o)rigatoriedade do retorno de " res"ltado' podendo este res"ltado ser retornado pela de#la*$oM Inome da 2%noJ E< valor o" res%lt E< valor.
-"n#tion so aSa')M integerT M integerP )egin so a MY a \ )P endP &n/#io enviando as vari+veis A e % do tipo inteiro. Corpo do pro#edi ento. o" res"lt MY a \ )P

E"nto #o o Delphi $%& ve o an"al de Object Pascal e -or ato A13P' #aso a ling"age se1a novidade para vo#I a#onselho ,"e vo#I dI " a )oa olhada So Delphi 1%& traz o es o an"al' as e -or ato APDFT' as n$o se preo#"pe #o o ,"e -oi e.pli#ado a#i a 1+ est+ ais do ,"e s"-i#iente para " a )oa ini#ializa*$o #o o Delphi. !"do o ,"e vi os a #i a K o ,"e nor al ente te os e o"tras ling"agens #o "ns' as o #ara#teriza real ente a ling"age (rientada e ()1etos K o tra)alho e a anip"la*$o #o os es os.

Cara4/er7s/i4as de O89e/os
Mas a-inal de #ontas' o ,"e K " o)1eto F Co o -oi dito anterior ente' " o)1eto K ,"al,"er tipo de ele ento' o" #o ponente' ,"e envolva dados e #>digo dentro de " 6ni#o pa#ote. J a vantage de progra ar na 0(( e ,"anto a 2eran3a dos o)1etos' este Ktodo -az #o ,"e se1a poss/vel " o)1eto dFilhoH poder herdar todas as #ara#ter/sti#as e #onte6dos de " o)1eto d0aiH. !irando " po"#o do Pas"al da geladeira Sa partir do Pas"al vers$o 7.2 a Borland torno" poss/vel a "tiliza*$o si pli-i#ada de todo o #on#eito de 0((T a,"i vai " #>digo #o pleto de de#lara*$o de dois o)1etos' o pri eiro #ha ado de !0ai e o seg"ndo de !-ilhoM
!0ai Y object 5o eM PCharF constr%ctor &nit S0M 0CharTP destr%ctor DoneP proced%re M"da5o eS0M 0CharTP proced%re ShoL5a eP endP !Filho Y objectS!0aiT proced%re M"da5o eS0M 0CharTP endP

( seg"ndo o)1eto !Filho herda do o)1eto !0ai o ponteiro vari+vel /ome' a constr%ctor 7nit' o destr%ctor Done e a proced%re 6hoO/ame' apenas a proced%re M%da/ome ter+ o

!+

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

-"n#iona ento #o o " a #ara#ter/sti#a 6ni#a para #ada o)1eto. ( Delphi poss"i in6 eros CpaisD S#lasses de o)1etosT prontos para sere "sados por vo#I' tais #o oM
$FormM Centro das apli#a*8es Delphi' "tilizados na #ria*$o de 1anelas' #ai.as de di+logo entre o"tros. $Men%M 4espons+vel pela #on#ep*$o de en"s e en" pop"p. $B%ttonControlM Si pli-i#a o re-ina ento do #ontrole da 1anela serve de )ase para os #o ponentes #o oM %ot8es' Che#B %o. e 4adio %o..

ProAramando 4om o89e/os Delphi


@"ando ini#iado o Delphi' K #riado a"to ati#a ente " novo pro1eto e " o)1eto -or "l+rio Sderivado da #lasse $FormT para o s"porte dos de ais o)1etos. 3.plorando o 3ditor de C>digos SCode .ditorT vo#I poder+ o)servar a de#lara*$o do novo o)1eto da #lasse 45orm ,"e -oi prod"zido a"to ati#a ente #o a #ria*$o do novo -or "l+rio. 3.a inando o #onte6do deste #>digo #riado para o o)1eto' tere osM
%nit Jnit1P inter2ace A)ert"ra de " a nova "nidade 0arV etros do o)e1etos Jso de o"tras "nidades

%ses SysJtils' Oin!ypes' Oin0ro#s' Messages' Classes' Graphi#s' Controls' For s' DialogsP tPpe !For 1 Y classS!For T private 6 Private de"larations 7 p%blic 6 Pu(li" de"larations 7 endP var For 1M !For 1P implementation 68R 9%D5M7 end. A de#lara*$o do o)1eto ini#ia a,"i

A,"i K o -inal da de#lara*$o Atri)"i a vari+vel For 1 as #ara#ter/sti#as do o)1eto !For 1 &n/#io da parte a ser i ple entada Diretiva de #o pila*$o ,"e agrega o desenho da tela Se .DFMT #o o es o no e da "nidade Final da parte i ple entada

J novo tipo de o)1eto 45orm1' K de#larado derivado da #lasse 45orm, ,"e ta )K K " o"tro o)1eto. 4ele )re " o)1eto K " tipo de ele ento #apaz de g"ardar dados e #>digo dentro de " 6ni#o pa#ote. AtK agora' o tipo 45orm1 n$o #ontK #a pos o" Ktodos' isso a#onte#er+ #o a adi*$o de alg"ns #o ponentes neste o)1eto. ()servando o #>digo' nota os ,"e e.iste " a vari+vel de#larada #o para o novo tipo de o)1eto 45orm1M
var For 1M !For 1P

o no e 5orm1

!)

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

5orm1 K a #ha ada de instVn#ia ao tipo 45orm1. 3sta vari+vel re-ere-se ao -or "l+rio e si' aonde ser+ adi#ionado #o ponentes e desenhado a inter-a#e entre o #o p"tador e o "s"+rio ,"e -or operar o siste a. Q se pre notado de#lara*8es de " a o" ais instVn#ias re-eridas ao tipo de o)1eto. F"t"ra ente ser+ ostrado o poder deste tipo de de#lara*8es ,"ando -alar os so)re 1anela MD& SMultiple Do"ument Interfa"e - &nter-a#e de do#" ento 6ltiplosT geren#iando v+rias C1anelas -ilhasD' n$o per itindo ,"e estas C1anelas -ilhasD saia do espa*o #riado pela C1anela paiD. Adi#ionando alg"ns #o ponentes ao -or "l+rio' vere os #o o o Delphi #o pletar+ a apli#a*$o es#revendo a"to ati#a ente o #>digo' e per itindo ,"e ao -inal tornar-se-+ poss/vel a #o pila*$o Sle )ra-se do Clipper' #o A0*0T' e.e#"*$o e distri)"i*$o da apli#a*$o. 3 nosso -or "l+rio' #olo#are os " )ot$o ,"e' e te po 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! para retornar a vis$o do -or "l+rio e na palheta de o)1etos S Componnent PalleteT #li,"e no o)1eto S(utton lo#alizado na p+gina StandardT e #li,"e no -or "l+rio. 5a 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 #>digoM
proced%re !For 1.%"tton1Cli#BSSenderM !()1e#tTP begin For 1.Color MY #lGreenP endP

4eparando no #>digo #o pleto da apli#a*$o' vere osM


%nit Jnit1P inter2ace %ses SysJtils' Oin!ypes' Oin0ro#s' Messages' Classes' Graphi#s' Controls' For s' DialogsP tPpe !For 1 Y classS!For T %"tton1M !%"ttonP proced%re %"tton1Cli#BSSenderM !()1e#tTP private 6 Private de"larations 7 p%blic 6 Pu(li" de"larations 7 endP var For 1M !For 1P implementation 68R 9%D5M7

J novo dado -oi a,"i inserido De#larado " novo Ktodo

!9

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras ( #>digo do novo Ktodo

proced%re !For 1.%"tton1Cli#BSSenderM !()1e#tTP begin For 1.Color MY #lGreenP endP end.

( novo o)1eto 45orm1 agora apresenta " #a po Button1 - o )ot$o ,"e vo#I adi#iono" ao -or "l+rio. 4Button e o tipo do o)1eto' e Button1 K o o)1eto )ot$o propria ente dito. Co o te po vo#I #olo#ar+ novos #o ponentes ao -or "l+rio. 4ode o pro1eto' #li#ando no )ot$o a#onte#e. 0are a apli#a*$o -e#hando a 1anela #o SRunT' dI " Alt8F&. #li,"e no )ot$o e ve1a o ,"e

S> por #"riosidade' salve este ar,"ivo' -e#he-o e a)ra o ar,"ivo :NI41%D5M S#o a op*$o File e Open FileAAAT notare os ,"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*8es de 0ncaps%lamento.

Renomeando os o89e/os e os 4om6onen/es


=o#I se pre deve "tilizar a 1anela do '()e"t Inspe"tor para reno ear os o)1etos #riados. 0or e.e plo' o no e padr$o do -or "l+rio e 5orm1 "de a propriedade Name para 2Cores. ( Delphi se en#arregar+ de "dar ,"al,"er re-erIn#ia ,"e e.istia ao 5orm1. 3nt$o o #>digo apresentar+ a seg"inte odi-i#a*8esM
%nit Jnit1P inter2ace %ses SysJtils' Oin!ypes' Oin0ro#s' Messages' Classes' Graphi#s' Controls' For s' DialogsP tPpe !-Cores Y classS!For T %"tton1M !%"ttonP proced%re %"tton1Cli#BSSenderM !()1e#tTP private 6 Private de"larations 7 p%blic 6 Pu(li" de"larations 7 endP var -CoresM !-CoresP implementation 68R 9%D5M7 A,"i -oi odi-i#ado

A,"i -oi

odi-i#ado

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

proced%re !-Cores.%"tton1Cli#BSSenderM !()1e#tTP begin For 1.Color MY #lGreenP endP end.

A,"i -oi

odi-i#ado

A,"i n$o fff

( Delphi odi-i#ar+ apenas os #>digos gerados a"to ati#a ente pgr ele. (s #>digos para a a*$o 'nCli"k -ora gerados por vo#I e o Delphi n$o os odi-i#ar+. Ca)e a vo#I a an"ten*$o neste #aso. &sto -oi idealizado para preservar o #onte6do original do se" #>digo.
proced%re !-Cores.%"tton1Cli#BSSenderM !()1e#tTP begin -Cores.Color MY #lGreenP endP

Ca67/05o II
Con&ecendo o "elp&i
Se vo#I teve alg" as d6vidas no #ap/t"lo anterior so)re a +rea de tra)alho do Delphi n$o se preo#"pe' neste #ap/t"lo vo#I poder+ san+-las #o pleta ente' ta )K ser+ ostrado o Ktodo de estr"t"ra de apli#a*8es Client/Server. Caso vo#I se1a "s"+rio do Delphi 1%& na )arra de en" sele#ione a op*$o 1elp e 7nteractive $%tors' vo#I re#e)er+ " a a"la 'n;0ine so)re a nova +rea de tra)alho. (s ele entos da inter-a#e Delphi -ora divididos do seg"inte odoM

+5emen/os $is7veis
( a )iente de tra)alho do Delphi K -or ado por o)1etos ,"e est$o vis/veis t$o logo ,"e o apli#ativo se1a ini#iado -or ando a +rea de tra)alho.

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 So)1eto 5ormT s$o os pontos #entrais para o desenvolvi ento Delphi. =o#I se "tilizar+ deles para desenhar s"a #o "ni#a*$o #o o "s"+rio' #olo#ando e organizando o"tros o)1etos. 3stes o)1etos s$o arrastados da Component Palette' ostrada na 1anela lo#alizada a#i a. =o#I pode i aginar ,"e o -or "l+rio K " o)1eto ,"e #ontK 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. Q poss/vel a" entar' over o" o#"par #o pleta ente a tela do onitor' o" atK es o "ltrapass+-la. J -or "l+rio )+si#o in#l"i os seg"intes #o ponentesM

Controles de en"P %ot8es de a.i iza*$o e %arra de t/t"loP e %ordas redi ension+veis.

ini iza*$oP

( #>digo gerado' na +rea #onhe#ida #o o Code .ditor' -i#a e.ata ente 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#I' leia aiores e.pli#a*8es no Cap.t%lo 7.

Q poss/vel enviar "

-or "l+rio para a i pressora' para isto e.iste

d"as

aneirasM

1. !ipo " PrintS"reen de !ela' #olo,"e o seg"inte #o ando CW5o e do -or "l+rioX.0rintPD no evento onShow do -or "l+rioP o"

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

7. 0ara i pri ir " -or "l+rio no ta anho de " papel A:' atravKs do "so de #o andos da )i)liote#a Printer' ve1a o ApYndice D para aiores detalhes.

Code Editor
( editor de #>digos providIn#ia total a#esso ao #>digo 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 ele entos do progra a S#o o por e.e plo #o ent+rios' palavras reservadas' #>digos asse )ler' ...T para tanto a partir do en" prin#ipal entre e $ools e OptionsAAA' lo#alize a p+gina Colors. 0ara o"tras in-or a*8es adi#ionais so)re o re-erIn#ias no 2elp 'n0ine no t>pi#o Code Editor.

odo de "sar este editor' pro#"re

Ao ser a)erto " novo pro1eto' o Delphi gera a"to ati#a ente na p+gina do Code .ditor " a :nit #o o ar,"ivo #>digo S.0AST. 0ara ver o #>digo de " a :nit e parti#"lar' si ples ente Cli"k na ta)"la*$o de p+gina. ( Code .ditor ostrar+ se pre o no e do ar,"ivo #orrente ativo na ta)"la*$o de p+gina.

Q poss/vel alternar entre o o)1eto Form e a Code 0ditor atravKs do pressiona ento

da te#la F! ' do )ot$o )ot$o S4o le 5orm/:nitT da SpeedBar' o" ainda atravKs das op*8es do en" RieO Z $oggle Form;Wnit. S#"riosidadeM o a#esso r+pido atravKs da te#la Alt \ Aetra s")linhada para esta op*$o est+ ar#ado so)re a letra ST

Component Palette
Co ponentes So" o)1etosT s$o os ele entos ,"e vo#I "sar+ para tra)alhar #o a apli#a*$o. Fora in#l"/dos o)1etos e v+rias p+ginas' tais #o o #ai.as de di+logos e )ot8es' a palheta in#l"i ta )K alg"ns espa*os e )ran#o para ser per itida 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 DD0 SD/nami" Data .@"han eT. (s o)1etos da palheta -ora divididos e gr"pos de -"n#ionalidade e di-erentes p+ginas. 0or e.e plo' os o)1etos ,"e representa as 1anelas tradi#ionais do Windows Stais #o o -ontes' palheta de #ores' ...T -ora #olo#ados na p+gina Dialo s da palheta. =o#I poder+ #riar se"s pr>prios o)1etos #o o ta )K instalar o"tros 1+ prontos' para isso -oi #olo#ado os espa*os vazios. 0or e.e plo poder+ ser instalado novos #ontroles e o)1etos do Ris%al Basic &A, S()1etos (CR - o" para os portadores do Delphi 1%& o do Ris%al Basic "A, os o)1etos =%RT. J a das prin#ipais vantagens da POO K ,"e "ito e )reve dever+ ser #olo#ado no er#ado pa#otes de o)1etos prontos para sere integrados aos siste as o ,"e -a#ilitar+ ainda ais o desenvolvi ento e a an"ten*$o dos es os.

"

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Object nspector
0rovidIn#ia a #one.$o entre a inter-a#e vis"al e o #>digo. Q Co posto por d"as p+ginas Properties SpropriedadesT e .vents S3ventosT ,"e ostrar+ as propriedades e eventos do o)1eto sele#ionado. Disponi)iliza " -+#il #a inho para a personaliza*$o dos o)1etos. =o#I "sar+ a p+gina de Propriedades para personalizar os o)1etos #olo#ados no -or "l+rio Sin#l"sive o pr>prio -or "l+rioT' e a p+gina de 0ventos para geren#iar a navega*$o entre #ertas partes do #>digo do progra a. ( seletor de o)1etos S'()e"t Sele"tor ; lo#alizado e " o)1eto do tipo Com(oBo@ no topo do '()e"t Inspe"torT ostra o no e e o tipo de todos os #o ponentes do -or "l+rio #orrente Sin#l"sive o pr>prioT. =o#I pode "sar o seletor de o)1etos para lo#alizar -a#il ente ,"al,"er o)1eto no -or "l+rio.

Speed#ar
ContK os )ot8es ais -re,Uente ente "tilizados. Forne#endo deste navega*$o ao en" prin#ipal do Delphi. odo " atalho de

Q poss/vel a personaliza*$o da SpeedBar #olo#ando nela os #a inhos do ,"e vo#I ais "tiliza' )astando para issoM

en" prin#ipal

1. 4edi ensione 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-or e o desenho a)ai.oM

7. @"ando o #"rsor do o"se "dar de -or ato' #li,"e o )ot$o es,"erdo do a)rindo a +rea da SpeedBar. 9. Cli,"e #o o )ot$o direito do o"se na +rea a)erta' apare*a " #ontendo entre o"tras op*8es a op*$o Properties' sele#ione-a.

o"se e arraste en" PullDown

:. As #ategorias e os #o ando s$o divididos de a#ordo #o o en"' #li,"e e #i a dos #o andos dispon/veis e arraste-os para a +rea a)erta de a#ordo #o a s"a ne#essidade' para retirar os )ot8es da SpeedBar -a*a o pro#esso inverso.

+5emen/os n2o $is7veis


Alg"ns ele entos n$o est$o pronta ente vis/veis ,"ando o Delphi K ini#iado poder+ ter a#esso a eles )astando para isso sele#ionar a op*$o na )arra de en". as vo#I

&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Project 'anager
( Geren#iador de 0ro1etos #ontK " 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" re ovendo-os do pro1eto' organizando as op*8es do pro1eto' entre o"tros.

=o#I ta )K '

poder+ #olo#ar "

)ot$o para ini#iar o Geren#iador de 0ro1etos

atravKs da SpeedBar

'en$ "esigner
( Menu Desi ner per ite a #ria*$o de en"s para os se"s -or "l+rios. =o#I pode #riar en"s o" en"s do tipo pulldown atravKs dos o)1etos MainMenu o" PopupMenu Slo#alizado na p+gina Standard na Component paletteT. A #ria*$o #o pleta de Men%s ser+ #olo#ada de -or a ais a)rangente no Cap.t%lo 7R.

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

%ields Editor
0ara o Delphi K poss/vel editar e odi-i#ar as propriedades de ,"ais,"er #a pos 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 deter inados #a pos de ar,"ivos' K i portante le )rar ,"e esta odi-i#a*$o n$o a-etar+ os #a pos 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.t%lo R.
Add 2ieldsAAA K respons+vel pela adi*$o de de-ini*8es de #a pos da ta)ela' K poss/vel inserir " o" ais #a pos' dependendo de s"a "tiliza*$o para o -or "l+rio.

/eO 2ieldAAA per ite a #ria*$o de " novo #a po' este pode ser a deriva*$o de " o" ais #a pos da ta)ela. C%t envia para +rea de trans-erIn#ia e eli ina todas as de-ini*8es do #a po sele#ionado. CopP #opia para a +rea de trans-erIn#ia todas as de-ini*8es do #a po sele#ionado. Paste re#e)e da +rea de trans-erIn#ia todas as de-ini*8es do #a po sele#ionado #riando-o. Delete e.#l"i ,"ais,"er de-ini*$o para os #a pos. 6elect all sele#iona todas as de-ini*8es dos #a pos. Retrieve Attrib%tes at"aliza os atri)"tos do #a po sele#ionado #o os #a pos do di#ion+rio de dados.

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

6ave attrib%tes salva os atri)"tos do #a po sele#ionado para o di#ion+rio de dados. 6ave attrib%tes asAAA salva os atri)"tos do #a po sele#ionado para o di#ion+rio de dados per itindo a reno ea*$o do #a po. Associate attrib%tesAAA -az a asso#ia*$o dos atri)"tos do #a po sele#ionado #o deter inado #a po do di#ion+rio de dados. Wnassociate attrib%tes re ove a asso#ia*$o dos atri)"tos do #a po sele#ionado #o deter inado #a po do di#ion+rio de dados.

Reposit(rio de Objetos
( Reposit-rio de Objetos do Delphi $%& ar azena e geren#ia os o)1etos da apli#a*$oM For "l+rios' Data Modules' geradores e@perts' e DAA SDinami" 0inked 0i(rar/ - %i)liote#as de a#esso dinV i#oT. 5a essIn#ia' ele #entraliza as lo#aliza*8es dos o)1etos envolvidos agr"pado-os. A proli-era*$o dos o)1etos no reposit>rio in#re enta as seg"intes vantagensM S"porte a e,"ipe de desenvolvi ento para re-erIn#ia aos o)1etos da rede. J a #"sto iza*$o de todo o desenvolvi ento e o re-"so dos es os. gr"pos l>gi#os de o)1etos' -a#ilitando

( Delphi poss"i diversas #ara#ter/sti#as ,"anto a s"a "tiliza*$o. !e os 4utors e .@perts ,"e s$o as -erra entas respons+veis para g"iar-nos atravKs de tK#ni#as' tais #o o' anip"la*$o de #o ponentes e #ria*$o de si ples apli#a*8es. AlK disso o Delphi o-ere#e " a #ole*$o de odelos para -or "l+rios' 1anelas de di+logo e atK es o apli#a*8es #o pletas na -erra enta New Items. A 1anela do New Items K se pre #ha ada a"to ati#a ente ,"ando a op*$o File e /eOAAA do en" prin#ipal K e.e#"tada.

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Q poss/vel para vo#I #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 #o o se #ria " a template visite o diret>rio [BOR3A/D[D03P17 A,[OB'R0PO6' o e,"ivalente no Delphi 1%& K en#ontrado no diret>rio [D03P17[SA330R\' todos os e.e plos s$o a"to-e.pli#ativos. 0ara de-inir o pro1eto padr$o ,"e o New Items e.e#"tar+ no in/#io de #ada pro1eto' #li,"e #o o )ot$o direito a#i a 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 #o o New 5orm o" Main 5orm. ()serve ,"e a seg"nda -olha da 1anela New Items Ster+ o no e do se" ar,"ivo #o a e.tens$o ADPRT K 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/r0/0ra de A65i4a1Ees 4om o Delphi 2.0


J dos o)1etivos de desenhar apli#a*8es do tipo Client / Server para o desenvolvi ento K a re"tiliza*$o dos o)1etos' das regras de neg>#io e das telas do pro1eto. ( Delphi Client / Server Suite $%& K o 6ni#o ,"e i ple enta " a ar,"itet"ra in#orporando a te#nologia RAD SRapid #ppli"ation Development - Desenvolvi ento 4+pido de Apli#a*8esT #o o desenvolvi ento total ente OO S'()e"t 'rientation - (rientado a ()1etosT para a red"*$o do te po de desenvolvi ento e an"ten*8es i prov+veis. Adi#ionando' " a ar,"itet"ra aonde K poss/vel a separa*$o da SW7 S>rafi" :nit Interfa"e - Jnidade de &nter-a#e Gr+-i#aT' das regras de neg>#io l>gi#as e do desenho do )an#o de dados de a#ordo #o o odelo representado a)ai.oM

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Benefcios
1. A separa*$o do desenho da SW7 SatravKs dos o)1etos FormsT #o a +rea de liga*$o l>gi#a de dados SatravKs dos o)1etos Data Mod%lesT per ite ,"e se #a"se " enor i pa#to so)re a )as as +reas. As "dan*as pode ser e.e#"tadas nas telas de entrada o" nas liga*8es' independente ente' de a#ordo #o os re,"eri entos do "s"+rio. 7. A separa*$o do desenho da SW7 #o a +rea de liga*$o l>gi#a de dados realizada #o " a #erta ha)ilidade aos eventos envolvidos' poder+ n$o ne#essaria ente dever+ ser #ontrolada por " ha)ilidoso DBA SData(ase #dministrator - Ad inistrador de %an#o de DadosT' #o s"as -ant+sti#as regras de neg>#io' podendo in#l"sive ser antida por " Canalista de in-or a*8esD. 9. ( desenho do )an#o de dados' a #onstr"*$o das etodologias de neg>#io e o desenho e a #ria*$o das 1anelas de entrada s$o e-etivados dentro da apli#a*$o. ( desenvolvi ento' ent$o paralela ente' res"ltar+ e " a aior rapidez. :. ?erdando as 1anelas de entrada' e n/veis de "tiliza*$o' red"z-se drasti#a ente o pro#esso de #odi-i#a*$o' e e #onse,UIn#ia' o pro#esso -"t"ro de an"ten*$o. As "dan*as l>gi#as das regras de neg>#io o" a in#orpora*$o de novos padr8es' s$o -eitas a"to ati#a ente para todos os o)1etos herdados. 5. ( reposit>rio de o)1etos' os -or "l+rios re"s+veis e a "tiliza*$o dos o)1etos Data Mod%les' envolve e eli ina*$o da d"pli#a*$o de #>digos e de tra)alhos #o desenhos de 1anelas' e e #onse,UIn#ia na red"*$o da e,"ipe de desenvolvi ento.

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Im65emen/a12o e@e/iva
Objetos "ata 'od$le
A partir do Delphi $%& -oi in#orporado o "so de o)1etos #onhe#idos por Data Mod%le' ,"e serve para ,"e s"as apli#a*8es providen#ie " desenho #entralizado da de-ini*$o de a#esso aos dados e das regras de neg>#io. (s o)1etos Data Mod%les' ta )K pode ser separados por neg>#ios l>gi#os S#o o e.e plo por +reasM #o pras' vendas' esto,"e' et#.T -or ando #a inhos de #one.8es si ples.

(s o)1etos Data Mod%les pode ser apli#ados a o)1etos tais #o o $ables' 6tored Proced%res' o" ]%eries per itindo a #entraliza*$o dos eventos envolvidos e antes e depois da grava*$o' e.#l"s$o' inser*$o o" edi*$o dos dados. 3 atK es o na #olo#a*$o de novos o)1etos de #ontrole para aior -a#ilidade. As rela*8es de dados Master / Detail s$o de-inidas e enor ,"antidade. 0ossi)ilita ent$o ao desenvolvedor #riar apli#a*8es do tipo Client / Server de -or a ais -+#il' r+pida' e seg"ra se "tilizando das propriedades dos o)1etos Dataso%rces o" "tilizando o Database Form 0Tpert. (s -or "l+rios das apli#a*8es' pode ser ligados direta ente a " o" ais o)1etos Data Mod%le para a propaga*$o das regras de neg>#io se a ne#essidade de e.e#"*$o de " #>digo e.tra. (s o)1etos Data Mod%les s$o #lasses de o)1etos ,"e perten#e a intera*$o dos dados do data(ase server. &solando total ente o a#esso ao )an#o de dados #o a apli#a*$o Client' si pli-i#ando deste odo toda a an"ten*$o realizada.
",

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

aneiraM

Distrib!i"#o L$%ica da &plica"#o


(s o)1etos Data Mod%le -ora desenvolvidos para #riar " a #entraliza*$o l>gi#a de todas as regras de neg>#io' separando a +rea de vis$o do "s"+rio #o a +rea do desenho do %an#o de Dados. 3ste s>lido -"nda ento de s"porte s$o distri)"/dos e " n-n6 ero de apli#a*8es e ar,"itet"ras servidoras dispon/veis' tais #o o C7C6 da 7BM' $op0nd da A$$' $%Tedo da /ovell' Object BroUer da Digital' 7O/A da OrbiT e "itas o"tras.

"icion)rio de "ados Escal)vel


( dicionXrio de dados K "tilizado para ar azenar in-or a*8es so)re o "so dos dados #ontidos nas s"as ta)elas. ( di#ion+rio deve ser #o o " a +rvore geneal>gi#a tra)alhando #o o " inspetor de odi-i#a*8es ,"e per ite " ar azena ento -a#ilitado. ( di#ion+rio deve #onter in-or a*8es dos atri)"tos dos #a pos tais #o oM valores /ni o' +.i o e #o "ns Svalores defaultT' +s#aras "tilizadas' et#. A "tiliza*$o do di#ion+rio de dados traz as seg"intes vantagensM 1. ConsistYnciaM Ca pos idInti#os s$o ar azenados #entral ente no di#ion+rio isto red"z o te po de de-ini*$o das d"pli#idades. J desenvolvedor poder+ #riar os #a pos #o ple entares #o do /nios e apli#a*8es apropriadas. 7. Red%o do $rX2ico da RedeM ( Delphi per ite ,"e a valida*$o dos dados se1a -eita nas +,"inas "lient o" no servidor. ( Di#ion+rio de dados per ite ,"e a an"ten*$o dos atri)"tos dos #a pos do lado "lient se1a validado de -or a e-i#iente red"zindo a ne#essidade do tr+-ego da rede.

"!

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

*erdando os %orm$l)rios
( desenvolvi ento de apli#a*8es #orporativas de " a -or a padronizada K " -ato de s" a i portVn#ia para as e presas envolvidas. Mas #onseg"ir e anter este padr$o K " a tare-a #onsiderada prati#a ente i poss/vel' 1+ ,"e as apli#a*8es 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 si ples e.tens8es da progra a*$o orientada a o)1etos' #onseg"indo anter' de -or a a"to +ti#a' os padr8es e as odi-i#a*8es realizadas nos pro1etos. 3 e #on1"nto #o o Reposit-rio de Objetos' padroniza' organiza e #entraliza os -or "l+rios res"ltando e odi-i#a*8es de #"rt/ssi o te po.

"

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

-erramen/as A0Fi5iares de SGL


0ara o tra)alho #o )ases de dados padr$o 6]3 SStru"ture Auer/ 0an ua e Aing"age estr"t"rada de Cons"ltasT' o Delphi #onta #o as seg"intes -erra entas RAD ,"e a".ilia ao desenvolvi ento.

'onitor S+,
e J monitor 6]3 K " -erra enta para testes' dep"ra*$o e e.e#"*$o de #ons"ltas 6]3 apli#a*8es Client / Server. &sto res"lta e " a" ento da prod"tividade de desenvolvi ento e elhor per-or an#e da apli#a*$o.

( monitor 6]3' inter#epta as #ha adas entre as +,"inas "lient e o servidor. 3sta in-or a*$o a".ilia ao desenvolvedor e pro)le as rela#ionados as de#lara*8es 6]3 e oti iza este tipo de transa*$o. J a sKrie de #a inhos de inter#epta*8es pode ser tra*ados' dependendo da ne#essidade do desenvolvedor' para ,"e as in-or a*8es a sere #olo#adas e " relat>rio on;line se1a as ais i pres#ind/veis o poss/vel. Q poss/vel in#l"sive salvar e i pri ir o relat>rio gerado para #ons"ltas o" testes posteriores.

""

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

S+, Explorer
A -erra enta 6]3 0Tplorer providen#ia " a in-or a*$o #entralizada do geren#ia ento das de andas da )ase de dadosP tais #o o' s"porte a odi-i#a*$o e #ria*$o de ta)elas' singni os' pro#edi entos de grava*$o' tri ers Sgatilhos disparados pelo )an#oT e e.e#"*$o das regras de neg>#io interativas do 6]3. J a -erra enta gr+-i#a ,"e propor#iona " es,"e a de integridade da )ase da dados e #ontK as -erra entas essen#iais para os ad inistradores de )an#os de dados. ( 6]3 0Tplorer' "ni#a ente para o Delphi' ad inistra de -or a int"itiva e -+#il o )an#o de dados. A si pli#idade de "so da inter-a#e gr+-i#a K " per-eito #a inho para representar o #o ple.o rela#iona ento ,"e e.iste no )an#o de dados do servidor. Apresenta " es,"e a para in-or a*8es e )an#os #o o Oracle' 6Pbase' 7nterBase' 7n2ormiT' DB e o"tros. ( desenvolvedor poder+ trilhar #a pos' ta)elas e pro#edi entos do )an#o dentro da #onstr"*$o da apli#a*$o Delphi rapida ente' podendo ser dire#ionado para 6ltiplos servidores e 6ltiplos )an#os.

"&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

( 6]3 0Tplorer' ta )K ad inistra o DicionXrio de Dados. S"a inter-a#e de "so si pli#ado per ite -a#il ente de-inir novos do /nios para os atri)"tos dos #a pos e asso#ia*$o entre ta)elas.

nter#ase N- . #anco de "ados Relacional


( Delphi Client / Server Suite $%& in#l"i " a li#en*a para dois "s"+rios do "so do )an#o de dados 7nterBase /$. Desenvolvedores pode #riar e +,"inas standalone apli#a*8es "sando este poderoso )an#o de dados S#on#orrente de )an#os #o o Oracle' 6Pbase' 7n2ormiT' DB e o"trosT. Co o #res#i ento do vol" e de dados e do ta anho da apli#a*$o' a )os' o 7nterBase e o Delphi #onseg"e interagir de -or a har oniosa. ( 7nterBase K " )an#o de dados de alta per-or an#e prod"zido pela Borland' #o o plata-or a para SA0 Server. 3st+ dispon/vel e ais de 15 siste as opera#ionais in#l"indoM DO6 e NindoOs "A!' NindoOs 9(' NindoOs /$' /etNare' 6CO' 6%n O6' 6%n 6olaris' 1P9W*' 7BM A7*' 6S7 7R7*' et#. ( 7nterBase K " )an#o a n/vel #NSI SA0 B$' s"portando eventos progra ados e e.#e*8es o#orridas no odelo por a#esso de 6ltiplos "s"+rios. (-ere#e #haves de #ontrole a n/vel de registros para ar,"itet"ras M"lti-Geren#iais #a"sando " per-or an#e "ito s"perior a " a leit"ra das opera*8es de )an#o' e #ontr+rio das leit"ras de )lo#age de opera*8es es#ritas realizadas por o"tros )an#os. A vers$o lo#al do 7nterBase' dispon/vel apenas #o a #>pia Client / Server Suite $%&' providen#ia aos desenvolvedores " #a inho r+pido para o desenvolvi ento de prot>tipos e de siste as #o " )an#o de padr$o #NSI B$ SA0. 3sta vers$o propi#ia as es as -"n#ionalidades da vers$o "lti-"s"+rio para /$ e WniT' in#l"indo #ontroles de transa*8es' pro#edi entos de grava*$o Sstored pro"eduresT' "so de tri ers Sgatilhos disparados do )an#oT' o" eventos de
"(

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

alerta. & agine o desenvolvi ento de " grande siste a sendo realizado e " 0aptop dentro de " tre ' avi$o o" atK es o na -rente do #liente' apenas o a#esso ao )an#o de dados -inal K ,"e ser+ odi-i#ado. Jtilizando o Delphi Client/Server Suite $%&' desenvolvedores poder$o #on#e)er e desenhar prot>tipos e testar a apli#a*$o -inal e " a 6ni#a +,"ina. ( 7nterBase o-ere#e " e.#ep#ional a#esso a inter-a#e gr+-i#a do NindoOs' in#l"indo a #on-ig"ra*$o das propriedades' " per-eito geren#iador de )an#os nativo 97 )its' total interatividade #o -erra entas S@A' e " a #o pleta do#" enta*$o e -or ato de 2elp do NindoOs Sar,"ivos .?A0T.

Ca67/05o III
Projeto Piloto
Q >)vio ,"e -i#a ais si ples o aprendizado de " a nova -erra enta ,"ando se -az alg" tipo de apli#ativo' prin#ipal ente " ,"e se1a 6til' ent$o ao longo deste est"do' ire os desenvolver " apli#ativo destinado ao Cadastro de Co pa#t Dis# SCDHsT. !odas as pessoas ho1e e dia te ontes de CDHs' viro" " a espK#ie de -e)re' ent$o' por,"e n$o -azer " siste a para #adastr+-los e #ontrol+-los' ,"anto te po vo#I 1+ perde" pensando e ,"al deles est+ a,"ela 6si#a ,"e vo#I ,"er o"virF (" " a #apa ,"e se" -ilho rasgo"' ,"e tal i pri i-la nova enteF 3 no #ap/t"lo "lti /dia aprendere os " Ktodo para to#ar o CD. 0ara dar os partida ao nosso pri eiro apli#ativo S0ro1eto 0ilotoT' de-inire os ini#ial ente as nossas ne#essidadesM 1. 0er itir o #adastro #o pleto e a #ons"lta aos CDHsP 7. Ser poss/vel separar os CDHs e ar azena entoP 9. @"anto as #ategorias' -a#ilitando deste odo a )"s#a e o

6si#as deve ser per itido o #adastro do a"tor e o te po de d"ra*$oP

:. 0er itir a in#l"s$o da -oto da #apa do CDP e 5. Co portar relat>rios de #on-erIn#ia e rei press$o da #apa. ( a#esso Delphi a ar,"ivos pode ser -eito atravKs de d"as aneiras lo#al o" re oto' sendo a seg"nda apenas poss/vel pela #>pia C0I.N4;S.R<.R K voltadas a )ases de dados ais #o ple.as #o o 'R#C0. o" SCB#S. ' ini#ial ente' restringire os o nosso est"do a )ase de dados lo#ais #onseg"ida atravKs da vers$o Desktop% Ae )re-se ,"e N vers$o Desktop #ontK a#esso a #ria*$o e a de-ini*$o de )ases dBase e Parado@' alK de o"tras #onseg"idas atravKs de 'DBC. Co )ase no ,"e -oi s"gerido a#i a' va os de-inir as ta)elasM

CA$0SOR7A ()1etivoM Dados das #ategorias do CD. Ca posM S&GAA DA CA!3G(4&A - A)revia*$o da des#ri*$o da #ategoria. D3SC4&hi( DA CA!3G(4&A - Des#ri*$o da Categoria.

"#

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

B^67CO ()1etivoM Dados ini#iais do CD. Ca posM CjD&G( D( D&SC( - C>digo do CD' en#ontrado na pr>pia #apa. 5(M3 D( D&SC( - 5o e do CD. !&0( D( D&SC( - !ipo de Grava*$o do CDM AAA' AAD' ADD o" DDD. F(!( DA CA0A - Ar azenar+ a -oto da #apa do CD. S&GAA DA CA!3G(4&A - Aiga*$o para o #>digo da Categoria. M_67CA6 ()1etivoM Dados das 6si#as do CD. Ca posM CjD&G( D( D&SC( - Aiga*$o #o o CD. 5JM34( DA FA&RA - 56 ero da -ai.a. 5(M3 DA M]S&CA - !/t"lo da 6si#a. 5(M3 D( AJ!(4 - 5o e do a"tor da 6si#a. !3M0( DA M]S&CA - !e po de d"ra*$o da 6si#a MMSS.

Criando o Mode5o Re5a4iona5


0ara #riar " odelo rela#ional si ples e tra)alhar #o )ases lo#ais vo#I pode optar por dois odos do tipo dBase o" Parado@' parti#"lar ente e" pre-iro tra)alhar #o Parado@' as vo#I rapida ente notar+ ,"e tanto -az' tra)alhe #o a,"ela ,"e vo#I se sinta ais a vontade. 3s#olha a )ase de a#ordo #o o porte do siste aM 0ara siste as pe,"enos e si ples e #o po"#os dados "se o dBase' para siste as Kdio' "lti-"s"+rio' #o " a )oa ,"antidade de dados es#olha a )ase Parado@ e para siste as #o ple.os e v+rias plata-or as e a#essos "lti-"s"+rio opte por InterBase. =a os agora vis"alizar " odelo ,"e de onstrar+ #o o as ta)elas dever$o se rela#ionar no siste a' este odelo ta )K -a#ilitar+ as rela*8es e a integra*$o dos -or "l+rios do siste a ,"ando #onstr"ire os nossas #ons"ltas e relat>rios.

5o

odelo de entidade e rela#iona ento a#i a lI-seM

"+

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

1 registro da entidade BXsico 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 BXsico' 1 registro da entidade M`sicas se rela#iona #o 1 registro da entidade BXsico en,"anto ,"e 1 registro da entidade BXsico se rela#iona #o n registros da entidade M`sica.

Co o M34 nas $os 1+ se te a idKia de #o o deve -i#ar as estr"t"ras das ta)elas' ent$o' va os ,"ei ar " po"#o de ne"rgnios.

Tra8a5hando 4om Da/a,ase +nAine Con@iA0ra/ion


Criando o /lias
( A37A6 K si ples ente " apelido Ssingni oT a ser dado para o )an#o de dados' este apelido per itir+ ,"e no l"gar de -alar os para ao Delphi ,"e a nossa )ase se en#ontra e CMkS&S!3MAk... o" DMkD3S35=kS&S!3MAk...' si ples ente diga os se en#ontra e AliasR o" Aliasl' isto -a#ilitar+ o se" tra)alho ,"ando vo#I por e.e plo ,"iser odi-i#ar o diret>rio do siste a' )asta "dar o endere*o do A37A6 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 reapontar os o Alias para o"tra )ase ,"e o siste a a"to ati#a ente ver+ estas novas in-or a*8es. Ae )re-se ,"e para isto ser poss/vel K ne#ess+rio ,"e o no e das ta)elas e dos #a pos se1a ne#essaria ente os es os' in#l"indo o ta anho e o tipo Sno apIndi#e % K en#ontrado " a ta)ela para a #onvers$o das diversas )ases de dadosT. 0ara tra)alhar #o A37A6 o #a inho ais interessante e #o o Data(ase .n ine

Confi uration' no ar,"ivo de progra as do Delphi dI " d"plo #li,"e so)re o /#one a #on-ig"ra*$o do )an#o de dados se divide e v+rias p+ginasM

'

Drivers - Controla os ar,"ivos de a#esso lo#ais e (D%C dos )an#os de dados "tilizadosP Aliases - Controle dos singni os dos siste asP 6Pstem - De-ine os re#"rsos do Windows ,"e ser$o alo#ados pela apli#a*$oP Date - 3spe#i-i#a os -o r atos "tilizados para #a pos tipo dataP $ime - 3spe#i-i#a os -or atos "tilizados para #a pos tipo horaP e /%mber - 3spe#i-i#a os -or atos "tilizados para #a pos tipo n" Kri#o.
Se at"al ente vo#I estiver "tilizando a vers$o de desenvolvi ento' os drivers ,"e apare#er$o ser$oM d%ase' &nter%ase e 0arado.' na vers$o Client/Server alK desses ser$o #olo#adosM (ra#le' &n-or i.' Sy%ase entre o"tros. M"de para a p+gina #liases e #li#B no )ot$o /eO Alias' in-or eM
/eO alias nameE AliasDis#o Alias tPpeE S!A5DA4D

")

Borland
%ot$o OV

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

PathE CMkS&S!3MAkCADD&SC( De2a%lt DriverE 0arado.

5este o ento o se" A37A6 AliasDis#o -oi #riado para a )an#o de dados 0arado.' no -or ato 0adr$o lo#alizado no diret>rio CMkS&S!3MAkCADD&SC(' no en" prin#ipal es#olha a op*$o File e 6ave' o BD. salvo" o se" ar,"ivo de #on-ig"ra*$o #ha ado &DA0&.CFG. Crie #o o Geren#iador de Ar,"ivos o diret>rio CMkS&S!3MAkCADD&SC(' aonde ser+ lo#alizado o siste a.

0ara a )ase d%ase a 6ni#a di-eren*a seria o #o ando De2a%lt DriverM D%AS3.

3n#erre o Data(ase .n ine Confi uration.

Tra8a5hando 4om Da/a,ase DesDTo6

Criando o #anco de "ados via Estr$t$ra


0ara #riar s"as ta)elas' disp8e-se de d"as aneirasM o odo de#lara*8es e SA0 o" pela 1anela de estr"t"ra' ini#ial ente' "tilizare os a 1anela de estr"t"ra' pois alK de ais si ples K ais pr+ti#o' a enos ,"e vo#I tra)alhe #o )ases de a#esso re oto' evite o odo de#lara*8es e SA0 para an"sear a estr"t"ra de ta)elas' prin#ipal ente ta)elas si ples #o o K o #aso do Parado@ o" o dBase' apesar ,"e e.iste "itos -an+ti#os por CR.#4. 4#B0.' #04.R 4#B0. e DR'P+s. 3 seg"ida ostrarei #o o #riar as es as ta)elas "tilizando o Ktodo SA0. Ae )re-se de apagar as ta)elas antes de #ri+-las nova ente. Sen$o n$o ser+ poss/vel e.e#"tar " a 6ni#a de#lara*$o SA0. 4etorne ao Delphi' no en" prin#ipal es#olha a op*$o $OO36eDataBase DesU$op' a.i ize a tela para per itir " a elhor vis"aliza*$o. Co o nosso singni o SA37A6T #riado ire os agora de-inir as nossas ta)elas. &ni#ial ente va os de-inir #o o nossa +rea de tra)alhoM 5o en" prin#ipal' op*$o FileeNorUing DirectorPAAA' na op*$o AliasesE sele#ione AliasDisco' note ,"e a op*$o NorUing DirectorP ser+ a"to ati#a ente odi-i#ada para EAliasDiscoE' -inal ente #on-ir e #li#ando no )ot$o (m. ( diret>rio apontado pelo Alias' agora ser+ o de2a%lt' o" se1a' t"do o ,"e -izer os ser+ apontado para o diret>rio.

"9

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

5o en" prin#ipal' op*$o File' op*$o /eO' e op*$o $ableAAA' ser+ ostrada " a 1anela #o os tipos de poss/veis reposit>rios de ta)elas no $able $Ppe es#olha a op*$o ParadoT + e #li,"e no )ot$o OV. &nsira os seg"intes #a posM
Field 5a e C(DnD&SC( 5(MnD&SC( !&0nD&SC( F(!nCA0A S&GnCA!3G !ype 5 A A % A ;2 9 9 7 Size mey o

Dos #a pos' o 6ni#o ,"e ere#e " a e.pli#a*$o e F(!nCA0A ele -oi es#olhido neste -or ato S%inaryT pois g"ardar+ " a i age %itMap Se.tens$o ABMPT da Capa do CD' todos os o"tros #a pos s$o #ara#teres al-an" Kri#os' #o a e.#e*$o do C(DnD&SC( ,"e K " #a po 5" Kri#o e #have. 0ara esta ta)ela pre#isa os ainda #riar " /ndi#e se#"nd+rio' para tanto na op*$o $able propertiesE #ha e a op*$o 6econdarP 7ndeTes e #li,"e no )ot$o De2ineAAA' ar,"e no #a po /omMDisco Sna lista 5ieldsT e #li,"e no )ot$o o #a po passo" para a lista Inde@ed 5ields' #li,"e no )ot$o OV e digite S&n5o Dis#o para o no e do indi#e e #li,"e no )ot$o OV. 0ara salvar s"a ta)ela #li,"e no )ot$o 6ave asAAA na op*$o /ome do ArQ%ivoE insira o no e da ta)ela - %asi#o. Crie agora as seg"intes ta)elasM !. Categor
Field 5a e S&GnCA!3G D3SnCA!3G !ype A A Size 7 :2 mey o

. M"si#a
Field 5a e C(DnD&SC( 5JMnFA&RA 5(MnMJS&CA !ype 5 5 A ;2 Size mey o o

&,

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

5(MnAJ!(4 !M0nMJS&CA

A A

:2 :

Criando os Relacionamentos via Estr$t$ra


(s rela#iona entos entre as ta)elas poderia ter sido #riado no o ento da #onstr"*$o das es as' as a#redito ,"e deste odo se1a ais si ples' a partir do en" prin#ipal' op*$o File' op*$o Open' e op*$o $ableAAA' 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 Restr%ct%re' o" a partir do en" prin#ipal' op*$o $able' op*$o Restr%ct%reAAA' na op*$o $able propertiesE alterne para a op*$o Re2erential 7ntegritP e #li,"e no )ot$o De2ine...' no lado es,"erdo SAista FieldsD dI " d"plo #li,"e no #a po 67SMCA$0S e no lado direito SAista !a)lesT dI " d"plo #li,"e na ta)ela CA$0SORADB' #li,"e no )ot$o de (m para #on-ir ar e ser+ soli#itado o no e para o /ndi#e. 0ara o no e do /ndi#e #rie " padr$o de Fmn \ bno e do #a poc \ bno e ta)ela paic' " a padroniza*$o dos no es dos /ndi#es -a#ilita a pro#"ra -"t"ra ente' ent$o para o nosso /ndi#e #rie FmnSigCategn%asi#o. Crie agora o o"tro rela#iona ento entre a ta)ela MJS&CA e %AS&C( #on-or e a -ig"ra a)ai.oM

!a )K K poss/vel a#essar o Data(ase Desktop atravKs do /#one no gr"po de tra)alho DELPHI. 3n#erre o Data(ase Desktop e retorne ao Delphi' o" apag"e as ta)elas e...

lo#alizado

Criando o #anco de "ados via S+,


0ara os -an+ti#os por de#lara*8es SA0' va os #riar a es a )ase de dados via SA0' se vo#I ainda n$o o -ez' o)serve no t>pi#o anterior #o o #olo#ar o A37A6 na +rea de tra)alho. &sto ser+ de "ita "tilidade ,"ando -or os salvar o nosso tra)alho. 5o en" prin#ipal' op*$o File' op*$o /eO' e op*$o 6]3 File' ser+ ostrada " a 1anela

para ser digitada a de#lara*$o SA0' o)serve na )arra de #o andos o )ot$o 6elect Alias' o" a partir do en" prin#ipal op*$o 6]3;6elect AliasAAA' apenas o)serve ,"e a +rea de tra)alho NorU 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 K 6]3 0ditor ENORVE=Wntitled>. Digite o seg"inte na 1anelaM
&!

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Create !a)le %asi#o S C(DnD&SC( 5" eri#S:'2T' 5(MnD&SC( =arCharS;2T' !&0nD&SC( CharS9T' F(!nCA0A %lo)S9'7T' S&GnCA!3G CharS7T' 0ri ary meySC(DnD&SC(T TP

Cli,"e no )ot$o R%n 6]3' o" no en" 6]3;R%n 6]3' o" ainda pressione F)' ap>s e.e#"tado o #o ando a ta)ela ser+ #riada. Salve o S@A #o a op*$o File;6ave Sdigite %AS&C( .S@AT A)ra novas 1anelas e #rie o resto das ta)elasM
Create &nde. S&n5o Dis#o on %asi#o S5(MnD&SC(TP Create !a)le CA!3G(4 S S&GnCA!3G CharS7T' D3SnCA!3G =arCharS:2T' 0ri ary meySS&GnCA!3GT TP Create !a)le MJS&CA S C(DnD&SC( 5" eri#S:'2T' 5JMnFA&RA 5" eri#S7'2T' 5(MnMJS&CA =arCharS;2T' 5(MnAJ!(4 =arCharS:2T' !M0nMJS&CA CharS:T' 0ri ary meySC(DnD&SC(' 5JMnFA&RAT TP Criando o indi#e se#"nd+rio da %AS&C( Criando a !a)ela CA!3G(4

Criando a ta)ela MJS&CA

( S@A para o 0arado. n$o #onseg"e e.e#"tar a #ria*$o de indi#es re-eren#iais So" CConstraintsDT ent$o para #riar este tipo de /ndi#e #rie-o atravKs da 1anela de estr"t"ra #on-or e ostrado anterior ente.

Observaes da $tili0ao do S+, com o d#ase


&n-eliz ente o dBase n$o s"porta a #l+"s"la Primar/ De/ ,"e per ite 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#iona entos entre as ta)elas es o ,"e elas n$o este1e vin#"ladas. Caso vo#I este1a "tilizando este tipo de )ase os passos para as #ria*8es das ta)elas s$o os es os as #orte as #l+"s"las Primar/ De/ K ne#ess+rio #riar os /ndi#es separada ente. A)ra " a nova de#lara*$o S@A' idInti#a a anterior' e digite o seg"inte na 1anelaM
Create &nde. 0mnJni#a on %asi#o SC(DnD&SC(TP

&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

( #o ando #orreto para este /ndi#e deveria ser C Create WniQ%e 7ndeT PVMWnica on Basico CCODMD76CODFD as isto provo#a " erro #olo#ando ,"e n$o K poss/vel esta de#lara*$o' ent$o #olo,"e a #l+"s"la W/7]W0 atravKs da 1anela de estr"t"ra. Se vo#I es,"e#e" de ativar o 6elect Alias #olo,"e CCreate 7ndeT CodMDisco on aBasicoAdb2b CCODMD76CODFD As o"tras de#lara*8es s$oM
Create &nde. S&n5o Dis#o on %asi#o S5(MnD&SC(TP Create &nde. FmnSigCategn%asi#o on %asi#o SS&GnCA!3GTP Create &nde. 0mnJni#a on Categor SS&GnCA!3GTP Create &nde. FmnCodDis#onM"si#a on M"si#a SC(DnD&SC(TP Criando o indi#e se#"nd+rio Criando a #have estrangeira Criando a #have pri +ria Criando a #have estrangeira

( #o ando #orreto para a #ria*$o da #have d"pla da ta)ela MJS&CA seria C Create 7ndeT ChvMWnica on M%sica CCODMD76COB /WMMFA7*ADF D as nova ente K provo#ado " erro ostrando a i possi)ilidade de e.e#"*$o do #o ando' ent$o #rie este /ndi#e atravKs da 1anela de estr"t"ra. Q -a#il ente per#e)ido ,"e o DataBase Desk'op atK ,"e tenta #olo#ar todas as )ases de dados #o pat/veis #o a ling"age S@A' as in-eliz ente ainda n$o -oi nesta vers$o. 0ara as ta)elas do tipo (4ACA3' &5!34%AS3' Sl%AS3 e MS S@A Server a #ria*$o das ta)elas pode ser -eitas tanto pelo odo de estr"t"ra ,"anto pelas de#lara*8es S@A as le )re-se ,"e a altera*$o das es as s> poder+ realizar-se atravKs do odo de de#lara*8es S@A. A,"i v$o alg"ns e.e plos destas de#lara*8esM
Create !a)le MJS&CA S C(DnD&SC( 5" eri#S:'2T' 5JMnFA&RA 5" eri#S7'2T' 5(MnMJS&CA =arCharS;2T' !M0nMJS&CA CharS:T' Constraint 0mnJni#a 0ri ary meySC(DnD&SC(' 5JMnFA&RAT' Constraint FmnCodDis#onM"si#a Foreign mey SCodnDis#oT 4e-eren#es JSJA4&(nAG35DA SCodn Dis#oT TP AA!34 !A%A3 MJS&CA ADD 5(MnAJ!(4 =arCharS:2T D4(0 !A%A3 MJS&CAP Criando a ta)ela MJS&CA

Adi#iona o #a po 5o nA"tor 3li ina a ta)ela MJS&CA

3n#erre o Data(ase Desktop e retorne ao Delphi.

&"

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Ca67/05o I$
-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 K li itado por " en" prin#ipal' ini#iare os o nosso pro1eto no Delphi #o a #ria*$o do Men" 0rin#ipal do Siste a.

Me/endo a M2o na Massa


A partir deste ponto' nossa a"la se trans-or a e re#eita de )olo' a 6ni#a #oisa ,"e vo#I pre#isa -azer e seg"ir as orienta*8es passo a passo' no prin#/pio pode pare#er eio idiota' as a-inal o #o p"tador K " a +,"ina idiota. %o ' va os ent$o etendo a $o na assa. Ao ini#iar o Delphi' -oi #riado a"to ati#a ente " novo pro1eto' va os des#art+-lo e ini#iar " novo. 0ara tantoM 1. 3embre9seM no #ap/t"lo anterior #ria os o diret>rio ,"e a)rigar+ o siste a a ser desenvolvido 9 CE[676$0MA[CADD76CO 9 aprende os o ,"e K o Alias e estr"t"ra os as nossas ta)elas' se alg" destes #on#eitos -i#ara dispersos e" lhe a#onselho ,"e retorne ao #ap/t"lo anterior 7. Crie " novo pro1eto digitando File e /eO Application. S4esponda negativa ente ,"ais,"er ensage para gravar o pro1eto at"alT.

Criando a janela do men$


A 1anela do en" prin#ipal e )e si ples' #o o vo#I 1+ deve ter visto e v+rios apli#ativos o en" K 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 #ha adas' e #on1"nto #o o en" tere os trIs -or "l+rios geren#iadores ,"e dare os o no e deM

FMMen% - Men" prin#ipal propria ente ditoP FM6obre - A 1anela CSo)re o siste a...DP e FM7nicio - Eanela Splash ,"e ini#iar+ o nosso apli#ativo.
=a os #riar ini#ial ente o nosso en" prin#ipalM

1. Cli,"e no )ot$o SMain Men"T' lo#alizado na Component Palette na p+gina Standard' e #li,"e dentro do o)1eto Form! Sn$o se preo#"pe #o a posi*$o' pois este o)1eto -i#ar+ invis/vel ,"ando o apli#ativo -or e.e#"tadoT.

&&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Foi #riado neste o ento o o)1eto MainMenu1 derivado da #lasse de o)1eto 4MainMenu' a partir deste o)1eto va os #riar nosso en"M 7. DI " d"plo #li,"e e #i a do o)1eto' o" #li,"e na propriedade 7tems 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 o ento vo" -alar das ais signi-i#ativas' as -"t"ra ente reto are os o ass"ntoM e #onter e

Caption - De-ine o no e do ite de en"' ,"ais,"er no es s$o v+lidos' in#l"indo a#entos' o #ara#tere espe#ial CpD deve ser #olo#ado " a 6ni#a vez' ele #a"sa o s")linhado da letra' tornando-a " a letra Se #on1"nto #o a te#la AltT de a#esso a op*$o. 0nabled - De-ine se o ite est+ dispon/vel o" n$o para o "s"+rio. S#olo#ado a"to ati#a ente na es#olha do r+pido a#esso ao ite SalK da letra

/ame - 5o e interno do ite CaptionT.

6hortC%t - Co )ina*$o de te#las' para " es#olhida #o CpDT. &nserindo os itens ini#iaisM 1. Digite CpAr,"ivoD na propriedade Caption' e

seg"ida pressione a te#la 3nter.

7. Cli,"e no novo espa*o a)erto' #riado lateral ente' e digite CpCons"ltaD na propriedade Caption' e seg"ida pressione a te#la 3nter. 9. 0ro#eda da es a -or a #riando as op*8esM Cp4elat>rioD e CA"p./lioD. :. Cli,"e na op*$o ArQ%ivo' apare#er+ " espa*o vazio a)ai.o' #li,"e neste espa*o e digite Cp!a)elaD na propriedade Caption. Ao ser dado 0nter o Delphi #riar+ ais " espa*o a)ai.o' digite CpCadastroD na propriedade Caption. 5. A)ai.o do Cadastro' digite C-D Ssinal de enosT na propriedade Caption So Delphi #riar+ " a )arra de separa*$oT e altere a propriedade 0nabled para 5alse. ;. 5o novo espa*o #riado' ap>s a )arra' digite CpSairD na propriedade Caption e altere a propriedade 6hortC%t para Ctrl*E. 7. Cli,"e na op*$o $abela' #li,"e #o o )ot$o direito do pulldown' #li,"e na op*$o Create 6%bmen%. <. Digite CpCategoriaD na propriedade Caption.
!a)ela Cadastro Sair Ctrl\R

o"se' apare#er+ "

menu

Co plete os pr>.i os itens de


Categoria CDHs

odo ,"e o

en" -i,"eM
4elat>rio Geral Capa do CD Con-ig"ra & pressora A"./lio So)re o siste a Conte6do !>pi#os de A1"da Co o "sar a A1"da

Ar,"ivo

Cons"lta M6si#a por CDHs

Saia da 1anela Menu Desi ner digitando Alt\F:' o Altere as seg"inte propriedades para o o)1eto form1M

en" 1+ e.iste no o)1eto form1.

&(

Borland
Propriedade %orderStyle Caption Color 5a e OindoLsState

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Ralor Single Co pa#t Dis# Digital A"dio #lMen" FnMen" LsMa.i ized

Descrio 3stilo da )orda da 1anelaP odo si ples. Aa)el es#rito na tar1a s"perior da 1anela. Cor da 1anela' #lMen" K " a #onstante ,"e g"arda a #or padr$o da 1anela de-inido pelo "s"+rio no OindoLs. 5o e do o)1eto interno. Modo de a)ert"ra da 1anela' odo Ma.i izado.

Salvando o -or "l+rio e o pro1etoM 1. Salve o For "l+rio nas op*8es de en" File e 6ave So" pressione Ctrl\ST' o Delphi ,"estionar+ o no e e o diret>rio' o diret>rio S#on-or e #riado no #ap/t"lo anteriorT K o CE[676$0MA[CADD76CO e para o no e digite 2Men% Snote ,"e o no e e.terno e o es o do no e interno di-eren#iado por CnD' isto -a#ilitar+ a identi-i#a*$o do -or "l+rio e da s"a "nidadeT. 7. Salve o 0ro1eto digitando File e 6ave Project' salve o pro1eto no diret>rio CE[676$0MA[CADD76CO #o o no e CDDA.

Criando no

en" " a linha de stat"sM

9. Cli,"e no )ot$o SStatusBarT na p+gina WinBF da Component Pallete e #li,"e e ,"al,"er posi*$o do o)1eto 5GMenu. :. 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 6tat%s Bar Panels 0ditor' #li,"e so)re o )ot$o /eO e para a propriedade $eTt #olo,"e C%e vindo ao siste a...D e #li,"e no )ot$o (m.

5. Altere ta )K

a propriedade Name do o)1eto para AinhaStat"s odoM

Caso vo#I este1e "sando o Delphi 1%& #rie a )arra de stat"s do seg"inte

1. Cli,"e no )ot$o SPanelT na Component Pallete na p+gina Standard e #li,"e e ,"al,"er posi*$o do o)1eto 5GMenu. 7. Cli,"e no o)1eto #riado StatusBar1 e altere as seg"intes propriedadesM

&#

Borland
Propriedade Align Align ent %evel&nner %evel("ter %orderOidth Caption 5a e Font

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Ralor al%otto taAe-tE"sti-y )vAoLered )vAoLered 1 %e vindo ao siste a... AinhaStat"s MS Sans Seri-' 3stilo da -onteM 5or al' !a anhoM <' CorM Az"l Marinho 77

Descrio Alinha ento dentro do form' todo no rodapK Alinha ento da Caption' 1"sti-i#ado N es,"erda %orda 9D interna' tipo pressionado %orda 9D e.terna' tipo pressionado !a anho da )orda Aa)el do o)1eto 5o e do o)1eto !ipo de letra a ser ostrada no o)1eto' para alterar esta propriedade #li,"e no )ot$o Alt"ra do o)1eto

?eight

nserindo os C(digos niciais


=a os inserir o #>digo para o o)1eto 0inhaStatus' este o)1eto re#e)er+ os #onte6dos da propriedade hint dos diversos o)1etos' -or ando assi " a linha de a1"da on-line na parte in-erior do en". Cli,"e no )ot$o .ditor. S4o le 5orm/:nitT da SpeedBar' atK vo#I alternar para o Code

A)ai.o da de#lara*$oM Private insira os #>digosM


private 6 Private de"larations 7 proced%re ShoL?int SSenderM !()1e#tTP p%blic 6 Pu(li" de"larations 7 endF 0ro#ed"res o" F"n*8es Ao#ais. Ca)e*alho de " a pro#ed"re Ao#al. 0ro#ed"res o" F"n*8es 06)li#as. Final da se*$o de de#lara*$o.

A)ai.o da diretiva de #o pila*$oM IKR :ADFMJ


IKR :ADFMJ Diretiva de #o pila*$o asso#iando o no e do

re#"rso e.terno ao es o no e do o)1eto 5orm%


proced%re !FnMen".ShoL?int SSenderM !()1e#tTP Ca)e*alho da 0ro#ed"re asso#iado ao no e do begin o)1eto prin#ipal S!FnMen"T. AinhaStat"s.0anels.&te sW2X.!e.t MY Appli#ation.hintP Atri)"i o valor do hint da apli#a#$o ao endF 7tem criado do o)1eto AinhaStat"s.

Cli,"e no )ot$o S4o le 5orm/:nitT da SpeedBar' atK vo#I alternar para o 5orm #li,"e no o)1eto 5GMenu e na p+gina .vents da '()e"t Inspe"tor' dI " d"plo #li,"e no evento 'nCreate. 1. ( Delphi #rio" a pro#ed"re 5ormCreate a ser ini#iada ,"ando o o)1eto 5GMenu -or #riado. 7. Digite o seg"inte #o ando a)ai.o do #o ando beginM

proced%re !FnMen".For Create SSenderM !()1e#tTP begin Appli#ation.(n?int MY ShoL?intP Atri)"i o valor da pro#ed"re ShoL?int ao On1int da

&+

Borland
endF

Delphi e Delphi Client/Server apli#a*$o.

Desvendando o Caminho das Pedras

Cli,"e no )ot$o S4o le 5orm/:nitT da SpeedBar' atK vo#I alternar para o 5orm #li,"e no o)1eto MainMenu1 e entre no Menu Desi ner' e para #ada op*$o de Men" altere as propriedades hint e name do seg"inte odoM
1int Cadastro e sa/da do siste a. &n-or a*8es )+si#as do siste a. !ipos de #ategoria para os CDHs. &n#l"s$o e an"ten*$o dos CDHs. Sa/da do siste a e retorno ao OindoLs. =eri-i#a*$o e pes,"isa dos CDHs #adastrados. Ao#aliza*$o dos CDHs atravKs de " -iltro esta)ele#ido. Ao#aliza o CD atravKs de " t/t"lo de " a 6si#a. 3 iss8es e papel dos CDHs #adastrados. & press$o dos CDHs por " intervalo de #>digo. & press$o de #apas para os CDHs. =eri-i#a a i pressora a ,"al ser+ destinado os relat>rios. For as de a1"da direta ao siste a. A1"da direta #o o respons+vel pelo desenvolvi ento. Man"al (n-Aine direto. 3.i)e os t>pi#os de a1"da do Man"al (n-Aine. Mostra #o o "tilizar o A"./lio (n-Aine. /ame Ar,"ivo1 !a)ela1 &te !a)ela1 Cadastro1 Sair1 Cons"lta1 &te Cons"lta1 &te Cons"lta7 4elatorio1 &te 4elatorio1 &te 4elatorio7 Con-& pressora1 A".ilio1 &te A".ilio1 &te A".ilio7 &te A".ilio9 &te A".ilio:

Opo do Men% Ar,"ivo !a)ela Categoria Cadastro Sair Cons"lta CDHs CDHs por 6si#a 4elat>rio Geral Capa do CD Con-ig"ra & pressora A"./lio So)re o siste a Conte6do !>pi#os de A1"da Co o "sar a A1"da

Saia do Menu Desi ner' salve o -or "l+rio e o pro1eto. 4ode o pro1eto' #li#ando no )ot$o R%n' o" ainda' digite F9. !este as op*8es do da SpeedBar' o" no en" prin#ipal a op*$o R%n e Alt8F&.

en"' ve1a na linha de Stat"s os hints in-or ados' saia #o

proced%re !FnMen".ShoL?int SSenderM !()1e#tTP begin AinhaStat"s.Caption MY Appli#ation.hintP endF

Caso vo#I este1e "sando o Delphi 1%& tro,"e a pro#ed"re 6hoO1int paraM

Atri)"i o valor do hint da apli#a#$o a 0ropriedade Caption do o)1eto AinhaStat"s.

niciando os comandos do 'en$


Co o nosso "s"+rioM en" pronto' #o e*are os a #odi-i#ar os #o andos ,"e disponi)iliza os ao

A"to atizando o Co ando 6A7RM 5o o)1eto 5GMenu' #li,"e na op*$o ArQ%ivo e #li,"e na op*$o 6air. ( Delphi #rio" o evento Cli#B para o o)1eto 6air!. Digite o seg"inte #o ando a)ai.o do beginM

proced%re !FnMen".Sair1Cli#B SSenderM !()1e#tTP begin CloseP propor#iona o -e#ha ento do -or "l+rio ativo endF

&)

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Colocando os comandos para o /$xlio


( Delphi i ple enta o a"./lio on-line de aneira pr+ti#a e e-i#iente' n$o ensinarei a,"i #o o #onstr"ir " ar,"ivo .?A0' e.iste diversos apli#ativos ,"e 1+ o -aze a"to ati#a ente e -i#a a se" #ritKrio o odo de #ri+-lo' apenas ostrarei #o o i ple ent+-lo e se" pro1eto. Cli,"e na op*$o Project e OptionsAAA e na p+gina #ppli"ation lo#alize o se" ar,"ivo #o a op*$o 1elp 2ile' aproveite ta )K para no ear o pro1eto' #o a op*$o $itle e #olo#ar " /#one para o pro1eto' op*$o 7con S#li,"e no )ot$o 3oad 7conAAAT e ao tKr ino #li,"e no )ot$o OV.

A"to atizando o Co ando CO/$0_DOM 5o o)1eto 5GMenu' #li,"e na op*$o A%T.lio e #li,"e na op*$o Conte`do. DigiteM

proced%re !FnMen". &te A".ilio7Cli#BSSenderM !()1e#tTP begin Appli#ation.?elpCo andS?3A0nC(5!35!S' 2TP endF

Cha a o ar,"ivo de A1"da

A"to atizando o Co ando $cP7CO6 D0 A'WDAM 5o o)1eto 5GMenu' #li,"e na op*$o A%T.lio e #li,"e na op*$o $-picos de Aj%da. DigiteM

proced%re !FnMen". &te A".ilio9Cli#BSSenderM !()1e#tTP const 3 ptyStringM pChar Y ZZP begin Appli#ation.?elpCo andS?3A0n0A4!&AAm3l' Aong&ntS3 ptyStringTTP endF

Cria " a #onstante !>pi#os do A1"da

A"to atizando o Co ando COMO W6AR A A'WDAM 5o o)1eto 5GMenu' #li,"e na op*$o A%T.lio e #li,"e na op*$o Como %sar a Aj%da. DigiteM

proced%re !FnMen". &te A".ilio:Cli#BSSenderM !()1e#tTP begin Appli#ation.?elpCo andS?3A0n?3A0(5?3A0' 2TP endF

Cha a o a"./lio do OindoLs

@"ando -e#har os a nossa apli#a*$o e ne#ess+rio ,"e ta )K desative os o a"./lio' no o)1eto 5GMenu' #li,"e na p+gina de 0vents e #li,"e no evento DestroP. DigiteM

proced%re !FnMen".For DestroySSenderM !()1e#tTP begin

&9

Borland

Delphi e Delphi Client/Server andS?3A0n@J&!' 2TP

Desvendando o Caminho das Pedras Desa)ilita o a"./lio

Appli#ation.?elpCo endF

Saia do Menu Desi ner' salve o -or "l+rio e o pro1eto. 4ode o pro1eto e teste as op*8es do en"' saia #o Ctrl8* o" "tilize o #o ando Sair.

Caso o F! n$o ative o a"./lio (n-Aine' provavel ente o se" en" est+ #o a propriedade 5ormSt/le e odo 2sMD7Form' #olo,"e-a no odo 2s/ormal. Se es o assi ainda n$o -"n#iono"' "de a propriedade 2elpConte@t do -or "l+rio para !.

As palavras-#haves para o #o ando ?elpCo


Dados &nteiro longo' #ontendo o n6 ero do #onte.to. &gnorado. 5or al ente passado 2. &nteiro longo' #ontendo o n6 ero do #onte.to ,"e -oi designado #o o t>pi#o de #onte6do. &nteiro longo' #ontendo o n6 ero do #onte.to. 0onteiro longo #o o " a string #ontendo o t>pi#o designado. 0onteiro longo #o o " a string #ontendo o t>pi#o designado.

and s$oM
A*$o Mostra o a"./lio a partir de t>pi#o sele#ionado identi-i#ado a partir do n6 ero do #onte.to de-inido pela se*$o WMA0X do ar,"ivo .?0E Mostra o #onte6do do pri eiro t>pi#o de-inido pela se*$o WMA0X do ar,"ivo .?0E Deter ina a #ha ada do t>pi#o deter inado atravKs do "so da te#la F1 Mostra " a 1anela 0op-Jp #o " t>pi#o parti#"lar indenti-i#ado pelo n6 ero do #onte.to de-inido pela se*$o WMA0X do ar,"ivo .?0E Mostra " t>pi#o pes,"isado e " a lista de palavras #haves. 3sta palavra #have deve ser e.ata ente o te.to pro#"rado. Mostra " deter inado t>pi#o atravKs de " a lista de palavras #haves. Se a palavra #have n$o -or en#ontrada posi#iona na palavra -onIti#a ais perto. Mostra o t>pi#o indenti-i#ado pela palavra #have o" " a #have da ta)ela alternada.

Co ando ?3A0nC(5!3R!

?3A0nC(5!35!S ?3A0nS3!C(5!35!S

?3A0nC(5!3R!0(0J0

?3A0nm3l

?3A0n0A4!&AAm3l

?3A0nMJA!&m3l

0onteiro longo para " a estr"t"ra de !MJA!&m3l?3A0. 3sta estr"t"ra espe#/-i#a de #ara#teres e palavras #haves. 0onteiro longo' #ontendo a para a e.e#"*$o a#ro

?3A0nC(MMA5D ?3A0nS3!O&50(S

3.e#"ta "

a#ro help.

0onteiro longo para " a estr"t"ra de !MJA!&m3l?3A0. 3sta estr"t"ra espe#/-i#a #ontK o ta anho e a posi*$o da 1anela do help pri +rio o" a 1anela se#"nd+ria para ser ostrado. &gnorado. 5or al ente passado 2. &gnorado. 5or al ente passado 2. &gnorado. 5or al ente passado 2.

Mostra " help do LindoLs #o " /ni o de e >ria' variando o ta anho e a posi*$o de a#ordo #o o dado passado.

?3A0nF(4C3F&A3 ?3A0n?3A0(5?3A0 ?3A0n@J&!

3.e#"ta o Oin?elp a"./lio #orri1ido.

ostrando o ar,"ivo de

Mostra o a"./lio de #o o "sar o a"./lio. Soli#ita o -e#ha ento do a"./lio ativo.

(,

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Criando a 9ane5a HSo8re o Sis/emaI


3 todo o siste a #riado para o Windows K in#l"/do " a 1anela CSo)re o Siste aD' por " a )oa raz$of todos os o"tros siste as para o Windows poss"e " a' e ,"e vai ,"erer ,"e)rar esta aravilhosa tradi*$o e #riar " siste a se " a 1anela destas F Criar o pri eiro -or "l+rio #o o Delphi n$o K " a tare-a assi t$o di-/#il' perde os o edo ini#ial va os #riar a #(outBo@ So" Cai.aSo)reT' o)serveM as para

Criando e alterando os objetos


0ara #riar o -or "l+rio a partir do en" prin#ipal a op*$o File e /eOAAA' apare#er+ a 1anela da New Items S ais in-or a*8es retorne ao Cap.t%lo 77T e #li,"e na p+gina 5orms e no o)1eto entit"lado #(out (o@. Altere os seg"intes o)1etos Slo#alize-os atravKs da '()e"t Inspe"torTM Abo%tBoT Cclasse $Abo%tBoTDM
0ropriedade Caption 5a e =alor So)re o siste a FnSo)re Des#ri*$o Aa)el es#rito na tar1a s"perior da 1anela 5o e interno do o)1eto

Program7con Cclasse $7mageDM


0ropriedade 0i#t"re =alor 3s#olha o %itMap de s"a pre-erIn#ia Des#ri*$o ()1eto i age

Prod%ct/ame Cclasse $3abelDM


0ropriedade Caption Font =alor CDDA Ms Sans Seri-' 5egrito &t+li#o' 1<' Castanho Des#ri*$o Aa)el do o)1eto !ipo de letra a ser ostrada no o)1eto

Rersion Cclasse $3abelDM


0ropriedade Caption Font =alor =ers$o %eta !este Ms Sans Seri-' &t+li#o' <' Az"l Marinho Des#ri*$o Aa)el do o)1eto !ipo de letra a ser ostrada no o)1eto

CopPright Cclasse $3abelDM


0ropriedade Caption Font =alor Copyright

Des#ri*$o 1995 - 5o e da 3 presa arinho Aa)el do o)1eto !ipo de letra a ser ostrada no o)1eto

Ms Sans Seri-' 5or al' <' Az"l

0ropriedade Caption

0ara #onseg"ir "

pressione AA!\1<: e "

q pressione AA!\1;9.

Comments Cclasse $3abelDM


=alor Co pa#t Dis# Digital A"dio - Cadastro de CDHs Des#ri*$o Aa)el do o)1eto

(!

Borland
Font

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Ms Sans Seri-' 5or al' <' 0reto

!ipo de letra a ser

ostrada no o)1eto

3li ine o o)1eto OVB%tton S)ot$o de (mT' #li,"e so)re ele e pressione Delete' #li,"e no o)1eto FM6obre e #li#B no o)1eto BitBtn ' en#ontrado na Component Palette na p+gina #dditional' e #li#B nova ente no FM6obre Altere as seg%intes propriedadesM

0ropriedade mind ?int ShoL?int 5a e Oidth

=alor )B(m 4etorna ao !r"e %"t(m 97 en" prin#ipal

Des#ri*$o Deter ina a #lasse a ser "tilizada pelo )ot$o' a"to ati#a ente ser+ alterado as propriedadesM Caption' SlPph e ModalRes%lt A1"da on-line para o o)1eto espe#/-i#o Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line 5o e do ()1eto Aarg"ra do o)1eto

DI " a organizada geral ,"anto a posi*$o dos o)1etos para vo#I poder ter " a idKia #o pare o desenho do se" -or "l+rio para ver se n$o -i#o" -altando nadaM

Salve o -or "l+rio nas op*8es de en" File e 6ave So" pressione Ctrl\ST' o Delphi ,"estionar+ o no e e o diret>rio' o diret>rio K o CE[676$0MA[CADD76CO e para o no e digite 26obre Snote ,"e nova ente o no e e.terno e o es o do no e interno di-eren#iado por CnDT.

/ssociando o !orm 1Sobre o Sistema2 ao men$


=a os asso#iar o -or 26obre #o o 2Men%M A"to atizando o #o ando 6OBR0 O 676$0MAM 5o o)1eto 5GMenu' #li,"e na op*$o A%T.lio e na op*$o 6obre o 6istema. ( Delphi #rio" o evento ClicU para o o)1eto ite do en" 7temA%Tilio!. Digite o seg"inte #o ando a)ai.o do beginM

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

proced%re !FnMen".&te A".ilio1Cli#BSSenderM !()1e#tTP begin FnSo)re.ShoLModalP A)re o ()1eto FnSo)re e endP

odo Modal.

A)ai.o da diretiva de #o pila*$oM IKR :ADFMJ

68R 9%D5M7 %ses -So)reP Jtiliza a Jnidade -So)re e todos os o)1etos dependentes dela.

proced%re !FnMen".ShoL?int SSenderM !()1e#tTP

Saia do Code .ditor e salve o -or "l+rio e o pro1eto. 4ode o pro1eto e teste o -or "l+rio So)re o Siste a' o odo Modal n$o per itir+ ,"e vo#I #li,"e e nenh" o"tro l"gar atK a -inaliza*$o desta 1anela' volte para o en" #o o )ot$o (m.

5ote ,"e n$o -oi pre#iso #olo#ar nenh" #>digo para ,"e ao pressionar o )ot$o (m o -or "l+rio -osse -e#hado' isto -oi realizado gra*as a op*$o Vind' no Delphi vo#I en#ontrar+ o"tros odelos de )ot$o padr$o do tipoM Can#ela' Si ' 5$o entre o"tros.

Criando a 9ane5a Splash


A 1anela Splash K tida #o o a ais i portante da apli#a*$o. 3sta 1anela apare#e " a 6ni#a vez Sno in/#ioT d"rante a e.e#"*$o do se" siste a in-or ando ao "s"+rio para ter pa#iIn#ia e ag"ardar tran,Uila ente en,"anto o siste a K #arregado' os -or "l+rios s$o #riados' et#. 3.iste v+rios tipos de 1anela Splash. ( tipo ais #o " K a,"ela ,"e ostra o no e da apli#a*$o' o a"tor' a vers$o' direitos a"torais SCopyrightT e " a i age o" /#one ,"e identi-i#a a apli#a*$o. AtravKs da #ara#ter/sti#a de heran*a dos o)1etos va os o)ter -a#il ente esta 1anelaM 1. 5o en" prin#ipal sele#ione a op*$o File e /eOAAA' #li,"e na p+gina CDD# e na -ig"ra entit"lada 5GSo(re. 5este o ento vo#I o)teve " a #>pia da 1anela fSo(re o pro)le a K ,"e a 1anela fSplash ter+ enos o)1etos ,"e a 1anela fSo(re' e por #ara#ter/sti#a de heran*a o -ilho se pre deve s"perar os pais n"n#a ao #ontr+rio' ent$o K ne#ess+rio ,"e inverta os as d"as 1anelas.

Modi2icando o objeto FM6obre


1. Modi-i,"e a propriedade /ame do 5GSo(re para FM6plash e a propriedade Border6tPle para bs/one. 7. Cli,"e so)re o)1eto (ut'D e digite Ctrl\R' a#erte o ta anho da 1anela.

("

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

9. Salve o -or "l+rio nas op*8es de en" File e 6ave AsAAA' o Delphi ,"estionar+ o no e e o diret>rio' o diret>rio K o CE[676$0MA[CADD76CO e para o no e digite fSplash.

Recriando o objeto FM6obre


1. Cli,"e no o)1eto 5GSo(re1 e note ,"e a"to ati#a ente ele ad,"iri" as do o)1eto 26plash. odi-i#a*8es

7. A" ente o ta anho da 1anela de odo a ,"e #ai)a nova ente o )ot$o de (m e digite C!4A\=' tro,"e a propriedade Caption do But'D para dOV. 9. Modi-i,"e a propriedade Border6tPle do form para bsDialog e a propriedade Caption para 6obre o 6istema. :. Salve o -or "l+rio nas op*8es de en" File e 6ave So" pressione C!4A\ST' o Delphi ,"estionar+ o no e e o diret>rio' o diret>rio K o CE[676$0MA[CADD76CO e para o no e digite 26obre S#on-ir e a opera*$o de so)es#ritaT.

Organi5ando o objeto 26plash


1. A partir do en" prin#ipal #li,"e e Project Z OptionsAAA' #li,"e na p+gina 5orms e envie o o)1eto 5GSplash S#li#ando so)re ele e #li,"e no )ot$o #o o sinal de >T ,"e est+ na lista #uto;"reate forms para a lista #vaila(le forms Spara n$o o#"par espa*o e e >ria " a 1anela ,"e s> ser+ "tilizada " a 6ni#a vez' #riare os esta 1anela via #o andosT' #li,"e so)re o )ot$o OV. 7. 5o en" prin#ipal sele#ione a op*$o RieO e Project 6o%rce Sesta os agora a#essando o progra a prin#ipal ,"e #ontrola todas os o"tros -or "l+rios o" unitsT. 9. Ap>s o #o ando begin adi#ione as seg"intes linhasM
FnSplash MY !FnSplash.CreateSAppli#ationTP FnSplash.ShoLP FnSplash.4e-reshP Cria o -or #o o parte da apli#a*$o. Cha a o -or de odo n$o odal. Mostra o -or e devolve o #ontrole para a apli#a*$o.

:. Antes do #o ando ApplicationAR%nF adi#ione a linhaM


FnSplash.FreeP Ai)era o -or da apli#a*$o.

Saia do Code .ditor e salve o -or "l+rio e o pro1eto. 4ode o pro1eto' ,"al,"er pro)le a #o pare #o o #>digo a)ai.oM

program CDDAP %ses F en" in ZFM35J.0ASZ 65GMenu7' FSo)re in ZFS(%43.0ASZ 65GSo(re7P 68R 9%R.S7 begin FnSplash MY !FnSplash.CreateSAppli#ationTP FnSplash.ShoLP FnSplash.4e-reshP

(&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Appli#ation.&nitializeP Appli#ation.?elpFile MY ZCMkSiste akCadDis#okG"ia.hlpZP Appli#ation.CreateFor S!FnMen"' FnMen"TP Appli#ation.CreateFor S!FnSo)re' FnSo)reTP FnSplash.FreeP Appli#ation.4"nP end.

=o#I pode over o #o ando 6plash6creenAFreeF para o evento On6hoO do -or 5GMenu. &sto -ar+ #o ,"e a 1anela 6plash s> desapare*a ,"ando o en" -or ativado. &n-eliz ente para os "s"+rios do Delphi 1%& esta #ara#ter/sti#a de heran*a n$o havia sido i ple entada ent$o' -az-se ne#ess+rio a #onstr"*$o da tela fSplash atravKs de " a #>pia da tela fSo(re #o a "tiliza*$o do #o ando 6ave AsAAA.

Criando o a4esso a ,ase de Dados


Q )e verdade ,"e o nosso siste a se en#ontra na )ase Parado@' as #o o es#revi no #o e*o do tra)alho #o o Delphi K poss/vel odi-i#ar o reposit>rio de dados se pre#isar alterar " a s> linha do siste a prod"zido. 5o #ap/t"lo a respeito das ta)elas ta )K vi os a i possi)ilidade de alg" as a*8es prod"zidas por #l+"s"las 6]3 n$o sere )e vindas e )ase de dados n$o total ente #o pat/veis #o a estr"t"ra do 6]3' ent$o se -az ne#ess+rio identi-i#ar " a (ase padr=o de " a base 6]3. 5o en" prin#ipal insira o o)1eto DataBase p+gina Data #""ess' e altere as seg"intes propriedadesM
0ropriedade Alias5a e Data%ase5a e 5a e =alor AliasDis#o %aseDis#o D%Dis#o Des#ri*$o 5o e do Singni o 5o e do )an#o de dados 5o e do o)1eto

' en#ontrado na Component Palette na

&nsira agora os #>digos ,"e per itir+ a a)ert"ra e o -e#ha ento da )ase de dadosM Cli,"e no )ot$o S4o le 5orm/:nitT da SpeedBar' atK vo#I alternar para a Code .ditor e lo#alize o pro#edi ento 5ormCreate asso#iado ao evento 'nCreateM

proced%re !FnMen".For CreateSSenderM !()1e#tTP begin Appli#ation.(n?int MY ShoL?intP D%Dis#o.Conne#ted MY !r"eP &ni#ia o %an#o de Dados endF

A partir do pr>.i o #ap/t"lo entrare os real ente no ,"e o Delphi K #apaz #o ta)elas' as antes' K ne#ess+rio ,"e os #on#eitos ensinados anterior ente este1a )e -i.ados' se alg" a #oisa de" errada' releia o #ap/t"lo' o" ent$o #on-ira o #>digo do FnMen"M

((

Borland
%nit -Men"P inter2ace

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

%ses OindoLs' Messages' SysJtils' Classes' Graphi#s' Controls' For s' Dialogs' Men"s' Co Ctrls' D%!a)les' D%P tPpe !FnMen" Y classS!For T MainMen"1M !MainMen"P Ar,"ivo1M !Men"&te P Cons"lta1M !Men"&te P 4elatorio1M !Men"&te P A".ilio1M !Men"&te P !a)ela1M !Men"&te P Cadastro1M !Men"&te P 5;M !Men"&te P Sair1M !Men"&te P &te !a)ela1M !Men"&te P &te Cons"lta1M !Men"&te P &te Cons"lta7M !Men"&te P &te 4elatorio1M !Men"&te P &te 4elatorio7M !Men"&te P 517M !Men"&te P Con-& pressora1M !Men"&te P &te A".ilio7M !Men"&te P &te A".ilio9M !Men"&te P &te A".ilio:M !Men"&te P 51:M !Men"&te P &te A".ilio1M !Men"&te P AinhaStat"sM !Stat"s%arP D%Dis#oM !Data)aseP proced%re For CreateSSenderM !()1e#tTP proced%re Sair1Cli#BSSenderM !()1e#tTP proced%re &te A".ilio7Cli#BSSenderM !()1e#tTP proced%re &te A".ilio9Cli#BSSenderM !()1e#tTP proced%re &te A".ilio:Cli#BSSenderM !()1e#tTP proced%re For DestroySSenderM !()1e#tTP proced%re &te A".ilio1Cli#BSSenderM !()1e#tTP private proced%re ShoL?int SSenderM !()1e#tTP p%blic 6 Pu(li" de"larations 7 endP var FnMen"M !FnMen"P implementation 68R 9%D5M7 %ses -So)reP proced%re !FnMen".ShoL?int SSenderM !()1e#tTP

(#

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

begin AinhaStat"s.0anels.&te sW2X.!e.t MY Appli#ation.hintP endP proced%re !FnMen".For CreateSSenderM !()1e#tTP begin Appli#ation.(n?int MY ShoL?intP D%Dis#o.Conne#ted MY !r"eP endP proced%re !FnMen".Sair1Cli#BSSenderM !()1e#tTP begin D%Dis#o.Conne#ted MY FalseP CloseP endP proced%re !FnMen".&te A".ilio7Cli#BSSenderM !()1e#tTP begin Appli#ation.?elpCo andS?3A0nC(5!35!S' 2TP endP proced%re !FnMen".&te A".ilio9Cli#BSSenderM !()1e#tTP const 3 ptyStringM pChar Y ZZP begin Appli#ation.?elpCo andS?3A0n0A4!&AAm3l' Aong&ntS3 ptyStringTTP endP proced%re !FnMen".&te A".ilio:Cli#BSSenderM !()1e#tTP begin Appli#ation.?elpCo andS?3A0n?3A0(5?3A0' 2TP endP proced%re !FnMen".For DestroySSenderM !()1e#tTP begin Appli#ation.?elpCo andS?3A0n@J&!' 2TP endP proced%re !FnMen".&te A".ilio1Cli#BSSenderM !()1e#tTP begin FnSo)re.ShoLModalP endP end.

Caso o se" siste a n$o se1a igrado para nenh" )an#o de dados no padr$o 6]3 Sdo tipo (4ACA3 ' Sl%AS3 '...T 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 te po de a#esso ao siste a' ent$o por,"e n$o prepar+-lo para " a event"al "dan*aF

(+

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Ca67/05o $
3anela para as -abelas
!a)elas pri +rias de in-or a*$o re,"ere entradas de dados si ples' no nosso #aso te os a ta)ela de #ategoria' a #ria*$o de 1anelas para a s"a anip"la*$o de se"s dados n$o K " )i#ho de sete #a)e*as #o o vo#I ver+ a seg"ir.

Rea8rindo o se0 Pro9e/o


Se assi ,"e vo#I -inalizo" o #ap/t"lo anterior vo#I sai" do Delphi' pre#isa agora reativar o pro1eto. 0ara tantoM 1. 5o en" prin#ipal #li,"e e File e OpenAAA. 7. ( siste a desenvolvido K en#ontrado no diret>rio CE[676$0MA[CADD76CO' #o a e.tens$o ADPR. 5este o ento vo#I est+ pronto para o tra)alho' va os #riar a nossa 1anelaM 9. Cli,"e no en" prin#ipal a op*$o File e /eOAAA' e New Items' "de a p+gina para 5orms e #li,"e no o)1eto entit"lado Data(ase 5orm' agora siga as telasM

!. ( tipo a ser #riada. Form OptionsM Create a si ple -or J a 1anela si ples Data6et OptionsM Create a -or "sing !!a)les o)1e#ts Jsando o o)1eto ta)ela %ot$o 5e.t.

. A ta)ela a ser "sada para a 1anela. Drive or Alias nameM AliasDis#o $able /ameM #ategor.d) %ot$o 5e.t

".

&.

()

Borland
Ca pos a sere %ot$o C__C %ot$o 5e.t

Delphi e Delphi Client/Server inseridos

Desvendando o Caminho das Pedras For a*$o dos #a pos =erti#al %ot$o 5e.t

(. 0osi*$o dos Aa)els Ae-t - A es,"erda %ot$o 5e.t

#. Co pleto Gera a tela #o o -or prin#ipal - 5$o ( @"e gerarM For e DataMod"le %ot$o Finish

A5/erando as Jane5as Criadas


Se vo#I seg"i" direito as orienta*8es anteriores' ent$o vo#I est+ #o " )elo prin#/pio de 1anela e s"as $os. Digo " )elo prin#/pio por,"e vo#I h+ de #on#ordar #o igo ,"e a 1anela gerada n$o K nenh" po"#o a ig+vel para o nosso "s"+rio' progra ando h+ " #erto te po #o o Delphi des#o)ri " padr$o de 1anela ,"e e"s "s"+rios gostara ' as vo#I poder+ -"t"ra ente ta )K en#ontrar o se" pr>prio padr$o de 1anela' ent$o va os a alg" as altera*8esM Se vo#I est+ "tilizando o Delphi 1%&' a 6ni#a di-eren*a ser+ nos DataModules' n$o se preo#"pe #olo,"e todas as instr"*8es e " 6ni#o -or "l+rio.

Da/aMod05es K
J a das prin#ipais novidades ,"e a#o panha o Delphi $%& K a possi)ilidade de #ria*$o de DataModules' estas 1anelas espe#iais -"n#iona #o o " a espK#ie de reposit>rio de dados' n$o s$o vis"aliz+veis e te po de e.e#"*$o. Q poss/vel #olo#ar e " 6ni#o DataModule todo o odelo rela#ional e todos os o"tros -or "l+rios do siste a a#essando-o. A#esse ini#ial ente o o)1eto DataModule1 para as altera*8es ,"e se seg"e .

'odi!icando as -abelas e as ,igaes


(s o)1eto ,"e #ontK 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.

(9

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

$abela no Delphi est+ #ontida no o)1eto S4a(leT' en#ontrado na Component Palette na p+gina Data #""ess' este o)1eto n$o K a ta)ela e si' as " ponteiro para a ta)ela' portanto vo#I poder+ "sar d"pli#a*8es da es a ta)ela' se ,"e isso a-ete a integridade de se" )an#o de dados. Alterando as propriedades da 4a(leM 1. Altere na propriedade DataBase/ame' no e do )an#o de dados BaseDisco' #aso vo#I n$o en#ontre na lista o BaseDisco' a)ra o o)1eto 5GMenu e tente nova ente. 7. =eri-i,"e se a propriedade $able/ame est+ apontada para a ta)elaM CA$0SORADB' retire o ADB Svisando a #o pati)ilidade #o o"tras )asesT 9. Colo,"e a propriedade 7ndeTField/ames no no e do /ndi#e pri +rio da ta)ela. 67SMCA$0S. :. Altere a propriedade /ame para !a)Categor' o" se1a' !a) \ 5o e da ta)ela e.terno Sse a s"a e.tens$oT' 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 K Active' ela de-ine se a ta)ela est+ o" n$o ativada para o "so. Alterare os esta propriedade via #>digo' portanto n$o se preo#"pe "ito #o ela neste instante' o ideal e dei.+-la false' i.K inativa. As 3igaees da $abela no Delphi K realizada atravKs do o)1eto SDataSour"eT' 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 #a pos do -or "l+rio. Alterando as propriedades do DataSour"eM 1. 5ote ,"e a propriedade Data6et est+ #o o no e alterado S!a)CategorT' est+ propriedade de-ine a ta(le o" Huer/ S-ale os nelas ais tardeT ,"e ser+ ligada. 7. Altere a propriedade /ame para DsCategor' o" se1a' Ds \ 5o e da ta)ela e.terno Sse a s"a e.tens$oT' #o o 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 #a pos da ta)ela dever$o ser alterados para #ontere as #r/ti#as' le )re-se' os #a pos presentes no DataModule s$o apenas " a C +s#araD para os #a pos da ta)ela. DI " d"plo #li,"e so)re o 4a(Cate or' ser+ a)erta a 1anela do 5ields.ditor.

Mar,"e o #a po S&GnCA!3G e altere as seg"intes propriedadesM


=alor Sigla !r"e _AAP2Pn Des#ri*$o 5o e do #a po a ser ostrado na tela Se o #a po K o" n$o re,"erido para inser*$o de dados na ta)ela Cria " a +s#ara de edi*$o para o #a po' para alterar esta propriedade #li,"e no )ot$o

0ropriedade DisplayAa)el 4e,"ired 3ditMasB

#,

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

("tras propriedades i portantes a sere

levadas e

#onsidera*$o s$oM

AlignmentM Alinha ento dentro do #a poM Centralizado' N es,"erda o" N direitaP DisplaPNidthM !a anho do #a po dispon/vel para inser*$o de dadosP Field/ameM 5o e do #a po na ta)ela' e.ternoP /ameM 5o e do #a po dentro do -or "l+rio' internoP ReadOnlPM Se K " #a po s> de leit"raP 6i5eM !a anho do #a po na ta)elaP e RisibleM Ca po K o" n$o vis/vel.

=e1a

ais o)serva*8es so)re as

+s#aras no apIndi#e 3.

Mar,"e o #a po D3SnCA!3G e altere apenas a propriedade DisplaP3abel para Descrio.

!ro,"e a propriedade 5a e do o)1eto DataModule1 para DMnModelo.

=e1a #o o -i#o" a vis$o -inal do o)1eto DMGModelo' seg"e a)ai.oM

Codi@i4ando o Da/aMod05e
=o#I 1+ deve ter notado ,"e para o Delphi a es#rita de #>digos K )astante red"zida e )e dividida entre os eventos e #o a #ria*$o dos DataModules o #>digo ainda -i#a ais red"zido' di-erente ente para os "s"+rios de Delphi 1%&. !odas as #r/ti#as e #ontroles para as ta)elas -i#ar$o no DataModule en,"anto ,"e o -or "l+rio se preo#"par+ #o o an"sea ento dos #a pos. C>digo para e-etivar as odi-i#a*8es na ta)ela para as )ases S@A' #li,"e no )ot$o S4o le 5orm/:nitT da SpeedBar' atK ter a vis$o nova ente para o DMGModelo' dI " #li,"e si ples no o)1eto 4a(Cate or S ar#ando-oT e na '()e"t Inspe"tor' na p+gina .vents' dI " d"plo #li#B so)re o evento A2terPostM

proced%re !DMnModelo.!a)CategorA-ter0ostSDataSetM !DataSetTP begin i2 FnMen".D%Dis#o.&sS@A)ased then Se a )ase de dados K padr$o S@A begin

#!

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras Gravando as altera*8es da ta)ela 4eini#ia o odo de transa*8es

FnMen".D%Dis#o.Co itP FnMen".D%Dis#o.Start!ransa#tionP endF endF

( o)1eto ,"e #ontrola o )an#o de dados -az parte da Jnit 2Men% ent$o K ne#ess+rio -azer "so desta Jnit' para tanto insira o seg"inte #>digo Sa)ai.o da diretiva de #o pila*$oTM
68R 9%D5M7 %ses -Men"P

0ara as )ases de -or ato S@A e.iste

trIs de#lara*8es )+si#asM

1. Start!ransa#tion - &ni#ia " 7. Co

)lo#o de #ontrole para as de#lara*8esP

it - !er ina o )lo#o de #ontrole gravando as altera*8es -eitas nas ta)elasP e odi-i#a*8es -eitas

9. 4oll%a#B - !er ina o )lo#o de #ontrole #an#elando ,"ais,"er nas ta)elas.

Controlando a d$plicao dos Campos.C&ave


Q a#onselh+vel n$o per itir ,"e o "s"+rio d"pli,"e os #>digos de #ategoria' para tantoM 1. Crie " novo o)1eto 4a(le #o as es as propriedades do o)1eto 4a(Cate or S#li,"e so)re o o)1eto e digite Ctrl\C e Ctrl\=' eli ine as re-erIn#ias aos eventosT' alterando a propriedade /ame para $abCategorCon2A 7. 5o o)1eto 4a(Cate orSI>GC#4.>' lo#alize-o atravKs da '()e"t Inspe"tor' dI " d"plo #li#B so)re o evento OnRalidate
proced%re !DMnModelo.!a)CategorSignCateg=alidateSSenderM !FieldTP begin i2 DSCategorState in Wds3dit' ds&nsertX then =eri-i#a se o odo K de inser*$o o" edi*$o de dados i2 !a)CategorCon-.FindmeySW!a)CategorS&GnCA!3GXT then 0es,"isa o #a po digit.na ta).#riada begin FnCateg.3ditS&GnCA!3G.SetFo#"sP Altera a posi*$o do #"rsor para o o)1eto 0dit67SMCA$0S raise 3.#eption.CreateSZSigla da #ategoria d"pli#adoZr12\ Caso 1+ e.ista ostra ZCli#B no )ot$o sAo#alizas e #aso de d6vidaZTP ensage de erro endP endP

5ote ,"e e.iste " a re-erIn#ia para o o)1eto FnCateg SSer+ o -or "l+rio de CategoriaT pre#isa os ent$o -azer "so de s"a Jnit' para tanto #olo,"e-a a)ai.o da diretiva de #o pila*$oM
68R 9%D5M7 %ses -Men"' b Men" 0rin#ipal do Siste a c -CategP b Cadastro de Categorias c

esta

A de#lara*$o r12' -"n#iona #o o " ensage tenha d"as linhas.

.nter dentro da

ensage ' isto -ar+ #o

,"e

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

( seg"ndo o)1eto $able -oi #riado pois a pri eira 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. ( #o ando raise i pede ,"e o registro d"pli#ado se1a adi#ionado na ta)ela' no odo r"n-ti e este #o ando 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 #o pilado e rodado atravKs do A0*0 o erro n$o travar+ o pro1eto ostrando so ente a ensage de-inida. J 6lti o detalhe para o DataModule ,"e te os ,"e prever ,"e a #ada novo registro o #"rsor deve se posi#ionar no pri eiro #a po do registro' para o in/#io da digita*$oM 1. Mar,"e o o)1eto 4a(Cate or' e dI " d"plo #li#B so)re o evento On/eORecordM

proced%re !DMnModelo.!a)Categor5eL4e#ordSDataSetM !DataSetTP begin FnCateg.3ditSignCateg.SetFo#"sP Altera a posi*$o do #"rsor para o o)1eto 0dit6igMCateg endP

%inali0ando o "ata'od$le
Salve o DataModule #o DataModuleM
%nit DMModeloP inter2ace %ses SysJtils' OindoLs' Classes' Graphi#s' Controls' For s' Dialogs' D%' D%!a)lesP tPpe !DMnModelo Y #lassS!DataMod"leT !a)CategorSignCategM !StringFieldP !a)CategorDesnCategM !StringFieldP DSCategorM !DataSo"r#eP !a)CategorM !!a)leP !a)CategorCon-M !!a)leP StringField1M !StringFieldP StringField7M !StringFieldP proced%re !a)CategorA-ter0ostSDataSetM !DataSetTP proced%re !a)CategorSignCateg=alidateSSenderM !FieldTP proced%re !a)Categor5eL4e#ordSDataSetM !DataSetTP private 6 private de"larations 7 p%blic 6 pu(li" de"larations 7 endP var DMnModeloM !DMnModeloP implementation

o no e de DMModelo. Con-ira o #>digo #o pleto para o

#"

Borland
68R 9%D5M7

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

%ses -Men"' 6 Menu Prin"ipal do Sistema 7 -CategP 6 Cadastro de Cate orias 7 proced%re !DMnModelo.!a)CategorA-ter0ostSDataSetM !DataSetTP begin i2 FnMen".D%Dis#o.&sS@A)ased then begin FnMen".D%Dis#o.Co itP FnMen".D%Dis#o.Start!ransa#tionP endP endP proced%re !DMnModelo.!a)CategorSignCateg=alidateSSenderM !FieldTP begin i2 DSCategor.State in Wds3dit' ds&nsertX then i2 !a)CategorCon-.FindmeySW!a)CategorS&GnCA!3GXT then begin FnCateg.3ditS&GnCA!3G.SetFo#"sP raise 3.#eption.CreateSZSigla da #ategoria d"pli#adoZr12\ ZCli#B no )ot$o sAo#alizas e #aso de d6vidaZTP endP endP proced%re !DMnModelo.!a)Categor5eL4e#ordSDataSetM !DataSetTP begin FnCateg.3ditSignCateg.SetFo#"sP endP end.
Co andos e s"as -"n*8es' por orde de apari*$oM ,"e se en#ontra deter inado o)1eto Data6o%rce. es a ser resolvida.

Wses - Faz o "so de deter inada "nidade de pro#edi entos e )i)liote#a de -"n*8es. WDataSo"r#eXA6tate - De-ine o estado e raise - Cria " W()1etoX.6etFoc%s - 0osi#iona o #"rsor no o)1eto de-inido. erro de #lasse e@"eption ,"e n$o per itir+ ,"e ,"al,"er o"tra a*$o prossiga atK a

A5/erando o -orm05Lrio
Co o DataModule #on#l"/do va os ata#ar a 1anela ,"e ser+ ostrada para o nosso "s"+rio' #ha e o)1eto 5orm$ S#ha e-o atravKs da Pro)e"t Mana er - op*$o do en" RieO Z Project ManagerT. Antes de -azer os ,"ais,"er odi-i#a*$o va os ini#ial ente alterar o no e da 1anela' para tanto pressione a te#la 511 Sapare#er+ a '()e"t Inspe"tor para o o)1eto 5orm$T altere a propriedade /ame para FMCateg.

#&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

("tra odi-i#a*$o i portante e tro#ar a re-erIn#ia do #o ando Wses a)ai.o da diretiva de #o pila*$o ,"e estava re-eren#iado ao antigo no e do o)1eto DataModule S:nit1T' tro,"e-o paraM
68R 9%D5M7 %ses DMModeloP 6 Referen"ia ao DataModule 7

'odi!icando os ,abels e Campos


(s 3abels' representados pelo o)1eto S0a(elT' en#ontrado na Component Palette na p+gina Standard' s$o as eti,"etas de #ada #a po ,"e apare#e a es,"erda dos #a pos. Alterando as propriedades dos Aa)elsM 1. Altere a propriedade Caption de S&GnCA!3G e D3SnCA!3G para Cd6iglaED e CdDescrioED' respe#tiva ente. 7. Modi-i,"e a propriedade Fonte de a )os para MS Sans Seri-' 5egrito' < e CastanhoP e a propriedade A%to6i5e para $r%e. 0ara sele#ionar si "ltanea ente v+rios o)1etos' te#la S?&F! e ar,"e os de ais.

ar,"e o pri eiro o)1eto' seg"re a

@"al,"er pro)le a para di ensionar o ta anho de o)1etos "se a te#la S?&F! \

Setas.

@"al,"er pro)le a para a#ertar a posi*$o de o)1etos "se a te#la C!4A \ Setas.

J a propriedade interessante K a Foc%sControl ela indi#ar+ " #ontrole para a posi*$o do #"rsor. 3..M Caso se1a digitado AA!\S o #"rsor se posi#ionar+ no o)1eto 0dit6igMCateg o" Caso se1a digitado AA!\D o #"rsor se posi#ionar+ no o)1eto 0ditDesMCateg. (s Campos de 0dio' representados pelo o)1eto SDB.ditT' en#ontrado na Component Palette na p+gina Data Controls' s$o os ,"e re#e)er$o o #onte6do dos #a pos da ta)ela. Alterando as propriedades do #a po C>digoM 1. Modi-i,"e a propriedade Fonte Sde a )os os #a posT para MS Sans Seri-' 5or al' < e az"l arinho. 7. =eri-i,"e as propriedades Data6o%rce e DataField' no e da liga*$o #o ModeloAD6Categor e o no e do #a po 6igMCateg' respe#tiva ente. 9. A propriedade /ame' no e do #a po' K #a po. 0dit6igMCateg. Alterando as propriedades do #a po Des#ri*$oM ontada #o DMM

3dit \ 5o e e.terno do

#(

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

:. =eri-i,"e as propriedades Data6o%rce e DataField' no e da liga*$o #o DMMModeloAD6Categor e o no e do #a po DesMCateg' respe#tiva ente. 5. A propriedade /ame' no e do #a po' K #a po. 0ditDesMCateg. ontada #o 3dit \ 5o e e.terno do

Objeto "#Navigator
( o)1eto para o #ontrole da ta)ela' representada pelo o)1eto SDBNavi atorT' en#ontrado na Component Palette na p+gina Data Controls' e apresentada pgr " a )arra de -"n*8es ,"e ligada ao DataSour"e #ontrola a navega*$o dos #a pos' adi*$o de novos registros' edi*$o e e.#l"s$o de registros' o #an#ela ento o" a #on-ir a*$o de " a odi-i#a*$o e a at"aliza*$o do )an#o de dados S,"ando e redeTM

Apresentada pelos )ot8esM n)First Spri eiroT' n)0rior SanteriorT' n)5e.t Spr>.i oT' n)Aast S6lti oT' nd&nsert SinserirT' ndDelete Se.#l"irT' n)3dit SeditarT' n)0ost S#on-ir arT' n)Can#el S#an#elarT e n)4e-resh Sat"alizar dadosT. Alterando as propriedades da )arra de navega*$oM 1. Con-ira a propriedade Data6o%rce veri-i#ando para o no e da liga*$o #o DMMModeloAD6Categor 7. A propriedade Con2irmDelete -ar+ #o o" n$o a e.#l"s$o. 9. Altere a propriedade 1ints' #li#ando e odoM
0ri eiro Anterior 0r>.i o ]lti o &nserir 3.#l"ir 3ditar Con-ir ar Can#elar At"alizar dados

se1a e.i)ida " a

ensage ' #on-ir ando

' digite o no e de #ada )ot$o do seg"inte

:. Cli,"e no )ot$o (m e altere a propriedade 6hoO1int para tr%e' isto -ar+ #o ,"e e )ai.o de #ada )ot$o da )arra' so)reposto pelo #"rsor' se1a ostrado " a #ai.a #o o " a tar1a a arela #o a #onte6do da propriedade 1int. 5. =o#I poder+ de-inir ,"ais )ot8es dever$o apare#er na )arra "tilizando a propriedade RisibleB%ttons' para tanto #li,"e no sinal de \ ,"e apare#e a es,"erda da op*$o e de-ina tr%e o" 2alse para os )ot8es ,"e ser$o o" n$o ostrados.

##

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

'odi!icando os Paineis
3.iste dois o)1etos Panel #riados a"to ati#a enteM o pri eiro s"perior' a)riga o o)1eto DBNavi ator' o seg"ndo o#"pando o restante da 1anela' a)riga " o)1eto do tipo S#roll%o.' la)els e #a pos. Alterando as propriedades do pri eiro painelM 1. Altere a propriedade Alignment' alinha ento da propriedade Caption do painel' para ta3e2t'%sti2P. 7. Colo,"e na propriedade Caption o no e Categoria. 9. Modi-i,"e a propriedade Fonte para MS Sans Seri-' &t+li#o' 1: e az"l Arr" e a )arra de navega*$o de a" ente o ta anho da 1anela. arinho.

odo ,"e n$o #")ra a des#ri*$o' se -or o #aso

Alterando as propriedades do seg"ndo painelM 1. A" ente o" di in"a o ta anho da 1anela e note ,"e este painel di in"e e a" enta #o ela' isto se deve a propriedade Align estar no odo alClient' altere esta propriedade Ste poraria enteT 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 deno inado S"rollBo@ ta )K no odo alClient.

'odi!icando a 3anela
A 1anela est+ " po"#o es#ondida atr+s dos o)1etos painKis #riados' ap>s 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 1anelaM 1. 4etire as op*8es biMinimi5e e biMaTimi5e da propriedade Border7cons. 7. Altere na propriedade Border6tPle para bs6ingle. 9. M"de a propriedade Caption para $abela. :. Se vo#I n$o o -ez' "de a propriedade /ame para FMCateg' o" se1a Fn \ 5o e da ta)ela e.terno Sse a s"a e.tens$oT' isto -a#ilitar+ a identi-i#a*$o entre o form e s"a unit. 5. =eri-i,"e a propriedade Position Sposi*$o da 1anelaT ela deve estar #o 6creenCenter S#entralizadoT. ;. Salve o -or "l+rio #o o no e 2Categ e salve o pro1eto. o valor

Criando o terceiro Painel


Criare os agora " ter#eiro painel para #o portar alg"ns )ot8es

#+

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Criando e alterando o painelE


1. Crie " o)1eto Panel' #li,"e no o)1eto SPanelT' en#ontrado na Component Palette na p+gina Standard' e #li,"e no o)1eto 5GCate ' altere as seg"intes propriedadesM
0ropriedade Align Caption ?eight :1 =alor al%otto Des#ri*$o Alinha ento dentro do form' todo no rodapK Aa)el do o)1eto Alt"ra do o)1eto

"

(s )ot8es ,"e #riare os -ar$o d"as -"n*8esM 1.Sair da 1anela e 7.Ao#aliza*$o r+pida de deter inado registro.

Criando o primeiro botoE


1. Mar,"e o o)1eto panel" #riado' #li#B no o)1eto BitBtn Component Palette na p+gina #dditional' e #li#B no panel". 7. Altere as seg"intes propriedades para o )ot$oM
0ropriedade mind =alor )BClose Des#ri*$o Deter ina a #lasse a ser "tilizada pelo )ot$o' a"to ati#a ente ser+ alterado as propriedadesM Caption' SlPph e ModalRes%lt Aa)el do o)1eto !ipo de letra a ser Alt"ra en" prin#ipal A1"da on-line para o o)1eto espe#/-i#o Alinha ento a es,"erda 5o e do o)1eto Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line !a anho do o)1eto ostrada no o)1eto' para alterar esta propriedade #li,"e no )ot$o ?eight ?int Ae-t 5a e ShoL?int Oidth 75 4etorna ao 917 %"tFe#har !r"e <9

' en#ontrado na

Caption Font

pFe#har MS Sans Seri-' 5or al' <' 0reto

Criando o seg%ndo botoE


1. Crie "
0ropriedade Caption Font Glyph ?eight ?int Ae-t 5a e ShoL?int =alor pAo#alizar MS Sans Seri-' 5or al' <' 0reto WDiret>rioDelphiXk&MAG3Sk%J!!(5Sk F&5D.%M0 75 Ao#aliza deter inado registro na ta)ela 7: %"tAo#alizar !r"e

seg"ndo )ot$o' alterando as seg"intes propriedadesM


Des#ri*$o Aa)el do o)1eto !ipo de letra a ser & age a ser ostrada no o)1eto ostrada no o)1eto

Alt"ra do o)1eto A1"da on-line para o o)1eto espe#/-i#o Alinha ento a es,"erda 5o e do o)1eto Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line

#)

Borland
Font Oidth

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

MS Sans Seri-' 5or al' <' 0reto <9

!ipo de letra a ser !a anho do o)1eto

ostrada no o)1eto

Alterando nova ente as propriedades do seg"ndo painelM 1. 4e#olo,"e a propriedade Align do o)1eto Panel$ para alClient e Salve o -or pro1eto. Se" tra)alho -inal deve ter -i#ado deste odoM

eo

ProAramando no @orm05Lrio
Agora ve a parte de #>digo. Ao -inal deste t>pi#o vo#I o)servar+ ,"e o tra)alho aior -i#o" pgr #onta de organizar e arr" ar os o)1etos do ,"e #o o #>digo e si' i.e.' orienta*$o a o)1etos.

Preservando as )reas de 'em(ria


Co o Delphi K poss/vel tra)alhar de d"as aneiras' a pri eira K per itir ,"e o Delphi #rie todos os o)1etos e e >ria ag"ardando si ples ente ,"e estes se1a #ha ados' as isto i pli#a ,"e a +,"ina Client deva ter " a )oa ,"antidade de e >ria para s"portar os o)1etos ,"e ser$o ali #olo#ados' a seg"nda aneira e #riar os estes o)1etos via #>digo per itindo ,"e o Delphi #rie o /ni o poss/vel' o pro)le a ,"e isto i pli#a e na de ora ,"anto da #ha ada de " -or "l+rio' e Kdia 52 seg"ndos para ativar o -or "l+rio 1. Q pre-er/vel tra)alhar #o o seg"ndo odo " a vez ,"e para entrar e deter inado -or "l+rio o nosso "s"+rio s> o -ar+ " a 6ni#a vez. &ni#ial ente retirare os da +rea de #ria*$o a"to +ti#a o -or "l+rio de #ategoria e o -or "l+rio So)re o siste a' para tanto' a partir do en" prin#ipal #li,"e e Project Z OptionsAAA' #li,"e na p+gina 5orms e envie no o)1etos 5GCate e 5GSo(re S#li,"e so)re o pri eiro' seg"re a te#la 6hi2t e #li,"e no seg"ndo e no ter#eiro e e seg"ida #li,"e no )ot$o #o o sinal de _T ,"e est+ na lista #uto;"reate forms para a lista #vaila(le forms' #li,"e so)re o )ot$o OV Spro#esso se elhante -oi realizado para o -or "l+rio FM6plashT.

3ste te po K #o

)ase e

" a

+,"ina :<; DR7 #o

< M) de

e >ria.

#9

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Altere agora a instr"*$o do -or "l+rio FMMen%' evento OnClicU para o o)1eto 7temA%Tilio!' para #riar os o o)1eto FM6obre e ap>s a s"a #ha ada destr"/-lo da +rea de e >riaM

proced%re !FnMen".&te A".ilio1Cli#BSSenderM !()1e#tTP begin Oith !FnSo)re.CreateSSel-T do Cria o -or "l+rio e e >ria begin ShoLModalP Cha a o -or "l+rio atravKs da +rea a)erta FreeP Ai)era a +rea a)erta endP endP

C>digo para ativar a %ase de dados e as ta)elas ,"ando no DataModule' retorne ao -or "l+rio FMCategM 1. Cli,"e no )ot$o .ditor. S4o le 5orm/:nitT da SpeedBar' atK vo#I alternar para o Code

proced%re For CreateSSenderM !()1e#tTP private 6 private de"larations 7 p%blic 6 pu(li" de"larations 7 proced%re ini#ioP Criando a #ha ada para " endF var FnCategM !FnCategP

pro#edi ento p6)li#o.

+,

Borland
implementation 68R 9%D5M7 %ses FMen"' DMModeloP

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

6 Menu Prin"ipal do Sistema 7 6 Referen"ia ao DataModule 7 &ni#io do pro#edi ento Se a )ase de dados K padr$o S@A &ni#ia o odo de transa*8es Ativa a !a)ela Faz o #"rsor -i#ar no -or ato de Seta Mostra o -or "l+rio FMCateg

proced%re !Fn Categ.&ni#ioP begin i2 FnMen".D%Dis#o.&sS@A)ased then FnMen".D%Dis#o.Start!ransa#tionP DMnModelo.!a)Categor.(penP S#reen.C"rsor MY #rDe-a"ltP ShoLModalP endF

A propriedade c%rsor no e.e plo -oi atri)"/da a "nidade 6creen ,"e atri)"i ao siste a o odelo do #"rsor' as K poss/vel ta )K atri)"ir " deter inado #"rsor a " o)1eto espe#/-i#o' a propriedade pode ser alterada para os diversos tipos de #"rsores de-a"lt do LindoLs #o as -ig"ras ,"e se seg"e M

5$o K ne#ess+rio #olo#ar o #o ando Close para o o)1eto b%tFechar pois a propriedade Vind -ar+ isto a"to +ti#o. C>digo para en#errar as ta)elas do DataModule ,"ando -or dada sa/da no -or "l+rio' o)serve ,"e o "s"+rio n$o deve poder estar inserindo o" editando registrosM 1. 5o o)1eto 5GCate ' lo#alize-o atravKs da '()e"t Inspe"tor' dI " d"plo #li#B so)re o evento OnCloseM

proced%re !FnCateg.For CloseSSenderM !()1e#tP var A#tionM !CloseA#tionTP begin i2 DMnModelo.DSCategor.State in Wds3dit' ds&nsertX then =eri-i#a se o estado do o)1eto begin DataSo"r#e K 3di*$o o" inser*$o MessageDlgSZCan#ele a edi*$o So" inser*$oT da Categoria antes de -e#harfZ' ostra ensage t&n-or ation' W )(mX' 2TP de in-or a*$o A#tion MY #a5oneP Can#ela a sa/da da 1anela 3.itP Sai da pro#ed"re endF S#reen.C"rsor MY #r?o"rGlassP Faz o #"rsor virar " a a p"lheta

+!

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras Fe#ha a ta)ela Se a )ase de dados K padr$o S@A 3n#erra o odo de transa*8es gravando as altera*8es no )an#o de dados

!a)Categor.CloseP i2 FnMen".D%Dis#o.&sS@A)ased then FnMen".D%Dis#o.Co itP endF

A -"n*$o MessageDlg -az parte da Jnit Dialogs ent$o K ne#ess+rio -azer "so desta Jnit' para tanto insira o seg"inte #>digo Sa)ai.o da diretiva de #o pila*$oTM
68R 9%D5M7 %ses FMen"' DMModelo' DialogsP 6 Menu Prin"ipal do Sistema 7 6 Referen"ia ao DataModule 7 6 :tili!ado para o "ontrole da fun3=o Messa eDl 7

C>digo para lo#alizar deter inado registro' o)serve ,"e se o "s"+rio n$o deve estar inserindo o" editando registrosM 1. DI " d"plo Cli#B so) o o)1eto But0o"ali!arM

proced%re !FnCateg.%"tAo#alizarCli#BSSenderM !()1e#tTP var De#lara*$o de vari+veis ()10es,"isaM 6tringP Cria a vari+vel ()10es,"isa do tipo String begin i2 DMnModelo.DSCategor.State in Wds3dit' ds&nsertX then begin MessageDlgSZCan#ele a edi*$o So" inser*$oT da Categoria antes de lo#alizarfZ' t&n-or ation' W )(mX' 2TP 3.itP endF ()10es,"isa MY DMnModelo.!a)CategorSignCateg.=al"eP Atri)"i a ()10es,"isa o valor do #a po de ta)ela SignCateg i2 &np"t@"erySZ3ntre #o a sigla da #ategoriaZ' ZSiglaZ'()10es,"isaT then Soli#ita a digita*$o do #>digo a ser pro#"rado i2 not DMnModelo.!a)Categor.FindmeySW()10es,"isaXT then 0es,"isa o #a po digitado na ta)ela MessageDlgSZSigla da Categoria n$o en#ontrada.Z' Caso n$o se1a en#ontrado in-or a t&n-or ation' W )(mX' 2TP endP

A -"n*$o 7np%t]%erP ta )K (

-az parte da Jnit DialogsA

Ktodo FindVeP -az parte do ()1eto $$able.

Criando %$nes 4lobais


J a -"n*$o o" " pro#edi ento glo)al e " a sKrie de #o andos #o "ns a " siste a #o o " todo' e ling"age 0as#al K ,"ase ,"e proi)ido Sn$o K proi)ido pois a ling"age per iteT a "tiliza*$o de " es o #on1"nto de #o andos repetidas vezes' note ,"e para o nosso -or "l+rio te os os es os #o andos e #ha adas di-erentesM
proced%re !FnCateg.For CloseSSenderM !()1e#tP var A#tionM !CloseA#tionTP begin i2 DMnModelo.DSCategor.State in Wds3dit' ds&nsertX then begin MessageDlgSZCan#ele a edi*$o So" inser*$oT da Categoria antes de 2echarfZ'

A,"i A,"i

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras A,"i

t&n-or ation' W )(mX' 2TP A#tion MY #a5oneP 3.itP endP ... endP proced%re !FnCateg.%"tAo#alizarCli#BSSenderM !()1e#tTP var ()10es,"isaM 6tringP begin i2 DMnModelo.DSCategor.State in Wds3dit' ds&nsertX then begin MessageDlgSZCan#ele a edi*$o So" inser*$oT da Categoria antes de locali5arfZ' t&n-or ation' W )(mX' 2TP 3.itP endP ... endP

A,"i A,"i A,"i

0ode os ent$o retirar o tre#ho e #riar os " 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 Sn$o es,"e*a de de#larar a -"n*$o na +rea 04&=A!3TM
private 2%nction Criti#a3di#aoSAntesDeM StringT M )ooleanP p%blic proced%re ini#ioP endP Cria a -"n*$o na +rea parti#"lar

var ... ... ... 2%nction !FnCateg.Criti#a3di#aoSAntesDeM StringT M )ooleanP 4e#e)e o tipo da ensage begin i2 DMnModelo.DSCategor.State in Wds3dit' ds&nsertX then =eri-i#a o estado begin MessageDlgSZCan#ele a edi*$o So" in#l"s$oT da #ategoria antes de Z \ AntesDe' t3rror' W )(mX' 2TP Monta e envia a ensage 4es"lt MY !r"eP Devolve ,"e envio" a ens. end else 4es"lt MY FalseP Devolve ,"e n$o envio" a ens. endP proced%re !FnCateg.For CloseSSenderM !()1e#tP var A#tionM !CloseA#tionTP begin i2 Criti#a3di#aoSZ-e#harZ T then S")stit"i pela #ha ada a -"n*$o begin A#tion MY #a5oneP 3.itP endP ... endP

+"

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

proced%re !FnCateg.%"tAo#alizarCli#BSSenderM !()1e#tTP var ()10es,"isaM 6tringP begin i2 Criti#a3di#aoSZlo#alizarZ T then 3.itP ... endP

S")stit"i pela #ha ada a -"n*$o

5ote ,"e 1+ ganha os " a #erta vantage ' ao invKs de ter os ,"e alterar e dois l"gares di-erentes s> tere os ,"e alterar e " 6ni#o l"gar' as ainda n$o est+ per-eito pois deve os le )rar ,"e " siste a nor al ente n$o K #o posto por apenas " a ta)ela' se #ontar a parte do #adastro' ent$o se seg"ir os o es o padr$o de #onstr"*$o de -or "l+rios para o"tras ta)elas #ontin"are os a repetir v+rios #o andos' ent$o va os -azer ,"e a nossa -"n*$o sirva para a #riti#a de edi*$o de ,"al,"er ta)ela' para isto pre#isa os enviar ta )K o DataSour"e ,"e pes,"isar+ o estado e " a o"tra vari+vel do tipo Strin para dizer os de ,"al ta)ela esta os -alando para #an#elar a edi*$o' v+ para o o)1eto FnMen" e #rie a seg"inte -"n*$o Sn$o es,"e*a de de#larar na +rea 0J%A&CTM
private proced%re ShoL?int SSenderM !()1e#tTP p%blic 2%nction Criti#a3di#aoSDS(rige M !DataSo"r#eP Do@"e' AntesDeM StringT M )ooleanP endP var ... ... 6 5un3=o Criti"a .di3=o Re"e(eI DS'ri emI DataSou"e para investi ar o estado DoAueI Nome 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 2%nction !FnMen".Criti#a3di#aoSDS(rige M !DataSo"r#eP Do@"e' AntesDeM StringT M )ooleanP begin i2 DS(rige .State in Wds3dit' ds&nsertX then begin MessageDlgSZCan#ele a edi*$o So" in#l"s$oT Z \ Do@"e \ Z antes de Z \ AntesDe' t3rror' W )(mX' 2TP 4es"lt MY !r"eP end else 4es"lt MY FalseP endP

A,"i

Altere agora o o)1eto 5GCate eli inando a -"n*$o Critica0dicao e #ha adasM
private 6 "omandos parti"ulares 7 p%blic proced%re ini#ioP endP 3li ine

odi-i#ando as

+&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

var FnCategM !FnCategP ... ... 0limine as linhas da 2%no ... ... proced%re !FnCateg.For CloseSSenderM !()1e#tP var A#tionM !CloseA#tionTP begin i2 FnMen".Criti#a3di#aoSDMnModelo.DSCategor' ZCategoriaZ' Z-e#harZ T then begin A#tion MY #a5oneP 3.itP endP ... endP proced%re !FnCateg.%"tAo#alizarCli#BSSenderM !()1e#tTP var ()10es,"isaM 6tringP begin i2 FnMen".Criti#a3di#aoSDMnModelo.DSCategor' ZCategoriaZ' lo#alizarZ T then 3.itP ... endP

S")stit"a a,"i

S")stit"a a,"i

/lterando o 'en$ para receber o !orm$l)rio


Agora -inal ente va os rodar nosso pro1eto atravKs do en" prin#ipal para istoM as antes pre#isa os #ha ar o -or "l+rio ar,"e o

1. A)ra o o)1eto FMMen%M no en" prin#ipal es#olha RieO e Project Manager' o)1eto 5GMenu e #li,"e so)re o )ot$o RieO 2orm. 7. Cli,"e e ArQ%ivo' $abela e Categoria' #olo,"e o seg"inte #>digoM

proced%re !FnMen".Categoria1Cli#BSSenderM !()1e#tTP begin S#reen.C"rsor MY #r?o"rGlassP Faz do #"rsor " a a p"lheta FnCateg MY !FnCateg.CreateSAppli#ationTP Cria o -or "l+rio e e >ria FnCateg.&ni#ioP Cha a o -or "l+rio atravKs da +rea a)erta FnCateg.FreeP Ai)era a +rea a)erta S#reen.C"rsor MY #rDe-a"ltP Faz do #"rsor " a seta endP

9. ( o)1eto 5GCate -az parte da Jnit 2Categ ent$o K ne#ess+rio -azer o "so desta Jnit' para tanto insira o seg"inte #>digo Sa)ai.o da diretiva de #o pila*$oTM
68R 9%D5M7 %ses -So)re' 6 Kanela do So(re o Sistema 7 -CategP 6 Cadastro da 4a(ela de Cate oria 7

:. Saia do Code .ditor e salve o -or "l+rio e o pro1eto.

+(

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

5. 4ode 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 #>digo vazio e lo#alizar " registro. ;. Se alg" a #oisa de" errada' releia o #ap/t"lo' o" ent$o #on-ira todo o #>digoM
%nit -#ategP inter2ace %ses SysJtils' OindoLs' Messages' Classes' Graphi#s' Controls' StdCtrls' For s' D%Ctrls' D%' MasB' 3.tCtrls' %"ttonsP tPpe !FnCateg Y #lassS!For T S#roll%o.M !S#roll%o.P Aa)el1M !Aa)elP 3ditSignCategM !D%3ditP Aa)el7M !Aa)elP 3ditDesnCategM !D%3ditP D%5avigatorM !D%5avigatorP 0anel1M !0anelP 0anel7M !0anelP 0anel9M !0anelP %"tFe#harM !%it%tnP %"tAo#alizarM !%it%tnP proced%re For CloseSSenderM !()1e#tP var A#tionM !CloseA#tionTP proced%re %"tAo#alizarCli#BSSenderM !()1e#tTP private 6 private de"larations 7 p%blic proced%re ini#ioP endP var FnCategM !FnCategP implementation 68R 9%D5M7 %ses -Men"' DMModelo' DialogsP 6 Menu Prin"ipal do Sistema 7 6 Referen"ia ao DataModule 7 6 :tili!ado para o "ontrole da fun3=o Messa eDl 7

proced%re !FnCateg.&ni#ioP begin i2 FnMen".D%Dis#o.&sS@A)ased then FnMen".D%Dis#o.Start!ransa#tionP DMnModelo.!a)Categor.(penP S#reen.C"rsor MY #rDe-a"ltP ShoLModalP endP proced%re !FnCateg.For CloseSSenderM !()1e#tP var A#tionM !CloseA#tionTP

+#

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

begin i2 FnMen".Criti#a3di#aoSDMnModelo.DSCategor' ZCategoriaZ' ZFe#harZ T then begin A#tion MY #a5oneP 3.itP endP S#reen.C"rsor MY #r?o"rGlassP DMnModelo.!a)Categor.CloseP i2 FnMen".D%Dis#o.&sS@A)ased then FnMen".D%Dis#o.Co itP endP proced%re !FnCateg.%"tAo#alizarCli#BSSenderM !()1e#tTP var ()10es,"isaM 6tringP begin i2 FnMen".Criti#a3di#aoSDMnModelo.DSCategor' ZCategoriaZ' ZAo#alizarZ T then 3.itP ()10es,"isa MY DMnModelo.!a)CategorSignCateg.=al"eP i2 &np"t@"erySZ3ntre #o a Sigla da #ategoriaZ'ZSiglaZ'()10es,"isaT then i2 not DMnModelo.!a)Categor.FindmeySW()10es,"isaXT then MessageDlgSZSigla da Categoria n$o en#ontrada.Z' t&n-or ation'W )(mX'2TP endP end.
Co andos e s"as -"n*8es' por orde W!a)elaXAOpen - Ativa " de apari*$oM o"tro o)1eto Form anterior se1a ativado' atK

o)1eto $able K e,"ivalente a Active E< $r%e.

WFor XA6hoOModal - Ativa o o)1eto Form' n$o per itindo ,"e nenh" ,"e o es o se1a desativado. 0Tit - Sai da -"n*$o o" pro#edi ento. W!a)elaXAClose - Desativa "

o)1eto $able K e,"ivalente a Active E< False.

Rar - De-ine " a #adeia de vari+veis lo#ais. 7np%t]%erP - Mostra " a #ai.a de di+logo para leit"ra e entrada de vari+veis do tipo 6tring. W!a)elaX.FindVeP - F"n*$o ,"e realiza " a pes,"isa inde.ada no o)1eto $able' atravKs do /ndi#e de-inido' retorna 4rue se en#ontro" o" 5alse se -i de ar,"ivo

++

Ca67/05o $I
-rabal&ando com janela Pai 5 %il&a
Se vo#I atK agora n$o senti" di-i#"ldade e #riar e entender o tra)alho #o ta)elas livres' n$o sentir+ ta )K di-i#"ldade e #riar o -or "l+rio para re#e)er este #aso' ao #ontr+rio' a#onselho ,"e vo#I releia e re-a*a o #ap/t"lo anterior. 3 nosso pro1eto' #ada registro na ta)ela de m`sica s> e.istir+ se ho"ver " #orrespondente na ta)ela bXsico' ent$o a ta)ela bXsico K CpaiD S estreT da ta)ela m`sica ,"e K s"a C-ilhaD SdetalheT. 3sta teoria a#i a K e.pli#ada no #on#eito de odelo rela#ional de dados SM34T. ( Delphi in#orpora este odelo es o para )an#o de dados n$o-rela#ionais' #aso estivKsse os "tilizando o d%ase e nosso pro1eto.

Criando a 9ane5a a0/oma/i4amen/e


Se assi ,"e vo#I -inalizo" o #ap/t"lo anterior vo#I sai" do Delphi' reative o se" pro1eto. Agora ,"e vo#I est+ pronto para o tra)alho' va os #riar a nossa 1anelaM 1. Cli,"e no en" prin#ipal a op*$o File e /eOAAA' e New Items' "de a p+gina para 5orms e #li,"e no o)1eto entit"lado Data(ase 5orm' pare#e #>pia do #ap/t"lo anteriorF #"idado leia as instr"*8es a)ai.oM

!. ( tipo a ser #riada. Form OptionsM Create a aster/detail -or J a 1anela estre e detalhes Data6et OptionsM Create a -or "sing !!a)les o)1e#ts Jsando o o)1eto ta)ela %ot$o 5e.t.

. A ta)ela estre a ser "sada para a 1anela. Drive or Alias nameM AliasDis#o $able /ameM )asi#o.d)%ot$o 5e.t

7<

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

". Ca pos a sere %ot$o C__C %ot$o 5e.t inseridos

&. For a*$o dos #a pos =erti#al %ot$o 5e.t

(. 0osi*$o dos Aa)els Ae-t - A es,"erda %ot$o 5e.t

#. A ta)ela detalhe a ser "sada para a 1anela. Drive or Alias nameM AliasDis#o $able /ameM "si#a.d)%ot$o 5e.t

+. Ca pos a sere %ot$o C__C %ot$o 5e.t inseridos

). For a*$o dos #a pos Grid %ot$o 5e.t

+9

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

9. Montage da #have de liga*$o Available 7ndeTes M 0ri ary Detail Fields M C(DnD&SC( Master Fields M C(DnD&SC( %ot$o Add 'oined Fields C(DnD&SC( -_ C(DnD&SC( %ot$o 5e.t

!,. Co pleto Gera a tela #o o -or prin#ipal - 5$o ( @"e gerarM For e DataMod"le %ot$o Finish

So8re os Da/aMod05es
Co o e" disse no #ap/t"lo anterior K poss/vel #riar " 6ni#o DataModule a)rangendo o odelo rela#ional #o pleto' )asta para isto vo#I -azer o -or "l+rio ,"e est+ #ha ando o DataModule #ontrolar o #o ando 'pen e Close das ta)elas. 5$o -arei desta aneira pois isto ao es o te po ,"e si pli-i#aria o e" tra)alho di-i#"ltaria o se" entendi ento' ,"e K o de " a pessoa ,"e estivesse aprendendo o Delphi neste o ento' ent$o para este tra)alho adotarei " DataModule para #ada #adastro.

-rabal&ando com as -abelas


Cha e o o)1eto DataModule1 #riado' a nossa pri eira providIn#ia ser+ a de alterar a propriedade /ame do o)1eto para DMMBasico' o)serve ,"e -oi #riado dois o)1etos 4a(le' o pri eiro est+ apontado para a ta)ela %AS&C( e o seg"ndo para a ta)ela MJS&CA' note ,"e para este seg"ndo as propriedades Master6o%rce e MasterFields est$o CpresasD pelo pri eiro o)1eto' este K o rela#iona ento entre a )as. =a os antes #riar os alg"ns pe,"enos detalhesM Crie trIs 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 propriedadesM Para o objeto $able! SE+ e.istenteTM
0ropriedade Data)ase5a e !a)le5a e 5a e =alor %aseDis#o Sse este valor n$o estiver dispon/vel #ha e o o)1eto FMMen%T %AS&C( !a)%asi#o Des#ri*$o 5o e do %an#o de Dados o" a lo#aliza*$o do diret>rio das ta)elas 5o e e.terno da ta)ela 5o e do o)1eto 5o e do #a po inde.ado

&nde.Field5a es 5(MnD&SC(

),

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Para o objeto Data6o%rce! SE+ e.istenteTM


0ropriedade DataSet 5a e =alor !a)%asi#o DS%asi#o Des#ri*$o 5o e da ta)ela vin#"lada 5o e do o)1eto

Para o objeto $able SE+ e.istenteTM


0ropriedade Data)ase5a e !a)le5a e 5a e MasterSo"r#e MasterFields =alor %aseDis#o MJS&CA !a)M"si#a DS%asi#o C(DnD&SC( Des#ri*$o 5o e do %an#o de Dados o" a lo#aliza*$o do diret>rio das ta)elas 5o e e.terno da ta)ela 5o e do o)1eto 5o e do #a po inde.ado 5o e do DataSo"r#e Mestre Ca po de liga*$o da ta)ela Mestre

&nde.Field5a es C(DnD&SC(

Para o objeto Data6o%rce SE+ e.istenteTM


0ropriedade DataSet 5a e =alor !a)M"si#a DSM"si#a Des#ri*$o 5o e da ta)ela vin#"lada 5o e do o)1eto

Para o objeto $able" SCriadoTM


0ropriedade Data)ase5a e !a)le5a e 5a e 4ead(nly =alor %aseDis#o %AS&C( !a)%asi#oCon!r"e Des#ri*$o 5o e do %an#o de Dados o" a lo#aliza*$o do diret>rio das ta)elas 5o e e.terno da ta)ela 5o e do o)1eto 5o e do #a po inde.ado So ente para leit"ra

&nde.Field5a es 5(MnD&SC(

Para o objeto $able& SCriadoTM


0ropriedade Data)ase5a e !a)le5a e 5a e MasterSo"r#e MasterFields 4ead(nly =alor %aseDis#o CA!3G(4 !a)Categor DS%asi#o S&GnCA!3G !r"e Des#ri*$o 5o e do %an#o de Dados o" a lo#aliza*$o do diret>rio das ta)elas 5o e e.terno da ta)ela 5o e interno da ta)ela 5o e do #a po inde.ado 5o e do DataSo"r#e Mestre Ca po de liga*$o da ta)ela Mestre So ente para leit"ra

&nde.Field5a es S&GnCA!3G

Para o objeto Data6o%rce" SCriadoTM


0ropriedade DataSet 5a e =alor !a)Categor DSCategor Des#ri*$o 5o e da ta)ela vin#"lada 5o e do o)1eto

Para o objeto $able( SCriadoTM 0osi#ione-o ao lado do o)1eto DSCate %

)!

Borland
0ropriedade Data)ase5a e !a)le5a e 5a e 4ead(nly

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

=alor %aseDis#o CA!3G(4 !a)CategorCon!r"e

Des#ri*$o 5o e do %an#o de Dados o" a lo#aliza*$o do diret>rio das ta)elas 5o e e.terno da ta)ela 5o e do o)1eto 5o e do #a po inde.ado So ente para leit"ra

&nde.Field5a es S&GnCA!3G

los e

(s o)1etos na hora da e.e#"*$o do -or "l+rio -i#ar$o invis/veis' #antos estratKgi#os' isto evita a #on-"s$o.

as K )o

#olo#+-

A "tilidade de #ada o)1eto 4a(leM

!a)%asi#o - !a)ela estre prin#ipal. !a)%asi#oCon- - !a)ela %AS&C( para realizar a valida*$o do no e do CD. !a)M"si#a - !a)ela "tilizada para ostrar as 6si#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 #>digo a"to +ti#o' #al#"lando se pre o #>digo de aior valor' e altere as seg"intes propriedadesM
=alor %aseDis#o @ryContador Sele#t Ma.SC(DnD&SC(T -ro %AS&C( Des#ri*$o 5o e do %an#o de Dados o" a lo#aliza*$o do diret>rio das ta)elas 5o e do ()1eto Cl+"s"la S@A' sele#ione o aior valor do #a po C(DnD&SC( da ta)ela %AS&C(

0ropriedade Data)ase5a e 5a e S@A

( #a po C(DnD&SC( #riado' servir+ apenas #o o " a #have de liga*$o entre a ta)ela %asi#o e M"si#a' ser+ " a #have interna do nosso siste a e s"a ali enta*$o se -ar+ atravKs deste o)1eto S@A #riado pegando o aior valor e adi#ionando 1.

-rabal&ando com os Campos


0re#isa os inserir alg"ns #a pos' pois ire os pre#isar deles no tra)alho #o para o o)1eto DB>rid1' "tilize o 5ields .ditor para inserir os #a pos ,"e -alta M Para o objeto $abBasicoM o #>digo e

C(DnD&SC(' 0ropriedade DisplaP3abelM C>digoP 5(MnD&SC(' 0ropriedade DisplaP3abelM 5o eP !&0nD&SC(' 0ropriedade DisplaP3abelM !ipo e 0ditMasUM _AAAP2Pn F(!nCA0A' 0ropriedade DisplaP3abelM FotoP e S&GnCA!3G' 0ropriedade DisplaP3abelM Categoria e 0ditMasUM _AAP2Pn
)

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Para o objeto $abM%sicaM

C(DnD&SC(' 0ropriedade RisibleM False. 5JMnFA&RA' 0ropriedade DisplaP3abelM Fai.a e DisplaPNidthM 7P 5(MnMJS&CA' 0ropriedade DisplaP3abelM M6si#a e DisplaPNidthM :2P e 5(MnAJ!(4' 0ropriedade DisplaP3abelM A"torP e !M0nMJS&CA' 0ropriedade DisplaP3abelM !e po e 0ditMasUM 22kM22P2Pn
Para o objeto ]rPContadorM

De "

d"plo #li,"e so)re o o)1eto apare#er+ a 1anela Fields 0ditor' #li,"e #o o )ot$o direito e no en" ,"e apare#er+ #li,"e na op*$o Add FieldsAAA e adi#ione o #a po.

Antes de ini#iar os a progra a*$o do DataModule #o pare #o o -i#o" o DataModule e salve-o #o o no e de DMBasicoM

Controlando o "ata'od$le
Agora -alta o #>digo' note ,"e a anterior enteM aior parte K " a repeti*$o da,"ilo ,"e 1+ vi os

Ativando as ta)elas ao ser #ha ado DataModuleM 1. Cli,"e no o)1eto DMBasi"o e na '()e"t Inspe"tor na p+gina .vents dI " #li,"e so)re o evento OnCreate e altere-o do seg"inte odoM

d"plo

proced%re !DMn%asi#o.DMn%asi#oCreateSSenderM !()1e#tTP begin i2 FnMen".D%Dis#o.&sS@A)ased then Se a )ase de dados K padr$o S@A FnMen".D%Dis#o.Start!ransa#tionP &ni#ia o odo de transa*8es !a)Categor.(penP Ativa as ta)elas !a)CategorCon-.(penP !a)M"si#a.(penP !a)%asi#o.(penP !a)%asi#oCon-.(penP endP

)"

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

C>digo para en#errar as transa*8es #o a %ase de Dados e -e#har as ta)elas ,"ando -or en#errado o DataModule. 1. Digite F11 e lo#alize o o)1eto DMGCate ' na '()e"t Inspe"tor' na p+gina .vents' dI " d"plo #li#B so)re o evento OnDestroPM

proced%re !DMn%asi#o.DMn%asi#oDestroySSenderM !()1e#tTP begin !a)%asi#o.CloseP Fe#ha as ta)elas !a)%asi#oCon-.CloseP !a)M"si#a.CloseP !a)Categor.CloseP !a)CategorCon-.CloseP i2 FnMen".D%Dis#o.&sS@A)ased then Se a )ase de dados K padr$o S@A FnMen".D%Dis#o.Co itP 3n#erra o odo de transa*8es gravando as endF altera*8es no )an#o de dados

Ae )re-se da "tiliza*$o do o)1eto FMMen%' ent$o K pre#iso de#larar a "nidade a ,"al ele perten#e #o o #o ando W606 Sa)ai.o da diretiva de #o pila*$oTM
68R 9%D5M7 %ses -Men"P 6 Menu Prin"ipal 7

4epare ,"e no in/#io desta Wnit ta )K e.iste " a o"tra de#lara*$o Wses' ap>s a sess$o inter2ace' ent$o por ,"e n$o #olo#ar todas essas de#lara*8es e " l"gar s>F 1 oT ( Delphi #ontrolar+ S#olo#ando o" re ovendoT as Jnits ali #olo#adas Sdependendo dos o)1etos "tilizadosT e 7oT !odos os #o andos de#larados antes da de#lara*$o implementation S#o e.#e*$o de eventos de #ria*$o do tipo onCreateT' ser$o e.e#"tados e objetos e %nits -i#ar$o e e >ria esperando sere #ha ados' ent$o K i prati#+vel #olo#ar %nits ,"e s> ser$o "tilizadas e te po de e.e#"*$o.

Contadores
( o)1eto Huer/ realiza #ons"ltas e odo S@A' no pr>.i o #ap/t"lo o "tilizare os para #riar os nossas #ons"ltas as' neste o ento ele ser+ "tilizado para veri-i#ar ,"al o aior valor ar azenado no #a po #>digo. A #ada novo registro deve os #riar ta )K " novo C(DnD&SC( Sle )ra do o)1eto Ar/ContadorT. AlK disso' pre#isa os nos posi#ionar no pri eiro #a po do #adastro' isto ser+ realizado e dois eventos distintosM 1. Mar,"e o o)1eto 4a(Basi"o' e dI " d"plo #li,"e so)re o evento on/eORecordM

proced%re !Fn%asi#o.!a)%asi#o5eL4e#ordSDataSetM !DatasetTP begin Fn%asi#o.3dit5(MnD&SC(.SetFo#"sP 0osi#iona o #"rsor no o)1eto endP

()serve ,"e -oi "tilizado o o)1eto FMBasico' ent$o K pre#iso de#larar a "nidade a ,"al ele perten#e #o o #o ando W606 Sa)ai.o da diretiva de #o pila*$oTM
68R 9%D5M7

)&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

%ses -%asi#oP 6 Cadastro do BJsi"o 7 -Men"P 6 Menu Prin"ipal 7

7. Digite F11 e dI "

d"plo #li,"e so)re o evento Be2orePostM

proced%re !Fn%asi#o.!a)%asi#o%e-ore0ostSDataSetM !DatasetTP begin i2 DS%asi#o.State Y ds&nsert then =eri-i#a se K " a in#l"s$o na )ase begin @ryContador.A#tive MY FalseP Desativa a @"ery @ryContador.A#tive MY !r"eP Ativa a @"ery Oith @ryContador.FieldsW2X do ()serve os le )retes i2 &s5"ll then Se o valor do #ontador K n"lo !a)%asi#oC(DnD&SC(.=al"e MY 1 Atri)"i 1 ao #a po C(DnD&SC( else Sen$o !a)%asi#oC(DnD&SC(.=al"e MY As&nteger \ 1P Atri)"i ao #a po C(DnD&SC( a adi*$o endP de 1 ao valor do #ontador #a po endP

( #o ando Oith K "tilizado #o o Ktodo de ta,"igra-ia' para n$o es#rever os v+rias vezes o es o no e de " deter inado o)1eto. 0or,"e n$o #olo#ar os todo o #>digo no evento on/eORecord F 0or #a"sa do #ontrole "lti-"s"+rio' i agine' " indiv/d"o A ini#ia a in#l"s$o de " CD' e " indiv/d"o B ta )K ini#ia o"tra in#l"s$o' #o o o #>digo do indiv/d"o A ainda n$o -oi gravado no )an#o' ser+ dado o es o #>digo para o indiv/d"o B' isto n$o a#onte#er+ se o #>digo -or #al#"lado o entos antes de ser gravado o registro' #o K o #aso do evento Be2orePost. 0ara #on-ir ar os as altera*8es para a )ase S@A' pressione nova ente a te#la F11 e na p+gina .vents' dI " d"plo #li#B so)re o evento A2terPostM

proced%re !DMn%asi#o.!a)%asi#oA-ter0ostSDataSetM !DataSetTP begin i2 FnMen".D%Dis#o.&sS@A)ased then Se a )ase de dados K padr$o S@A begin FnMen".D%Dis#o.Co itP Gravando as altera*8es da ta)ela FnMen".D%Dis#o.Start!ransa#tionP 4eini#ia o odo de transa*8es endF endF

6alidando os Campos
0ara n$o a#onte#er " d"pli#a*$o dos no es dos CDHs' "tilizare os para a #r/ti#a a es a idKia do ,"e a#onte#e" #o o -or "l+rio de CategoriaM 1. Mar,"e o o)1eto 4a(Basi"oN'MGDISC'' e dI " OnRalidateM d"plo #li,"e so)re o evento

proced%re !DMn%asi#o.!a)%asi#o5o nDis#o=alidateSSenderM !FieldTP begin i2 DS%asi#o.State in Wds3dit' ds&nsertX then Se o odo K de inser*$o o" edi*$o i2 !a)%asi#oCon-.FindmeySW!a)%asi#o5(MnD&SC(XT then 0es,"isa o #a po digitado begin

)(

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras Altera a posi*$o do #"rsor Caso 1+ e.ista ostra ensage de erro e i pede o #adastro

Fn%asi#o.3dit5(MnD&SC(.SetFo#"sP raise 3.#eption.CreateSZ5o e do CD d"pli#adoZr12\ ZCli#B no )ot$o sAo#alizas e #aso de d6vidaZTP endP endP

0ara ,"e o nosso "s"+rio es#olha so ente as #ategorias e.istentesM 1. Mar,"e o o)1eto 4a(Basi"oSI>GC#4.>' e dI " d"plo #li,"e so)re o evento OnRalidateM

proced%re !DMn%asi#o.!a)%asi#oSignCateg=alidateSSenderM !FieldTP begin i2 DS%asi#o.State in Wds3dit' ds&nsertX then i2 not S!a)CategorCon-.FindmeySW!a)%asi#oS&GnCA!3GXTT then ()serve o #o ando /O$ begin Fn%asi#o.3ditS&GnCA!3G.SetFo#"sP raise 3.#eption.CreateSZSigla da #ategoria n$o e.isteZr12\ ZCli#B no )ot$o sAo#aliza Categorias e #aso de d6vidaZTP endP endP

Co #>digoM

o DataModule o nosso tra)alho 1+ est+ #on#l"/do' salve o o)1eto e #on-ir e o

%nit DM%asi#oP inter2ace %ses SysJtils' OindoLs' Classes' Graphi#s' Controls' For s' Dialogs' D%' D%!a)lesP tPpe !DMn%asi#o Y #lassS!DataMod"leT !a)M"si#aCodnDis#oM !FloatFieldP !a)M"si#a5" nFai.aM !FloatFieldP !a)M"si#a5o nM"si#aM !StringFieldP DS%asi#oM !DataSo"r#eP !a)%asi#oM !!a)leP !a)M"si#aM !!a)leP DSM"si#aM !DataSo"r#eP !a)%asi#oCon-M !!a)leP !a)CategorM !!a)leP !a)CategorCon-M !!a)leP DSCategorM !DataSo"r#eP !a)%asi#oCodnDis#oM !FloatFieldP !a)%asi#o5o nDis#oM !StringFieldP !a)%asi#o!ipnDis#oM !StringFieldP !a)%asi#oFotnCapaM !%lo)FieldP !a)%asi#oSignCategM !StringFieldP @ryContadorM !@"eryP @ryContadorMAR(FC(DnD&SC(M !FloatFieldP proced%re DMn%asi#oCreateSSenderM !()1e#tTP proced%re DMn%asi#oDestroySSenderM !()1e#tTP proced%re !a)%asi#o5eL4e#ordSDataSetM !DataSetTP proced%re !a)%asi#o%e-ore0ostSDataSetM !DataSetTP proced%re !a)%asi#oA-ter0ostSDataSetM !DataSetTP

)#

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

proced%re !a)%asi#o5o nDis#o=alidateSSenderM !FieldTP proced%re !a)%asi#oSignCateg=alidateSSenderM !FieldTP private 6 private de"larations 7 p%blic 6 pu(li" de"larations 7 endP var DMn%asi#oM !DMn%asi#oP implementation 68R 9%D5M7 %ses -%asi#o' 6 Cadastro do BJsi"o 7 -Men"P 6 Menu Prin"ipal 7 proced%re !DMn%asi#o.DMn%asi#oCreateSSenderM !()1e#tTP begin i2 FnMen".D%Dis#o.&sS@A)ased then FnMen".D%Dis#o.Start!ransa#tionP !a)Categor.(penP !a)CategorCon-.(penP !a)M"si#a.(penP !a)%asi#o.(penP !a)%asi#oCon-.(penP endP proced%re !DMn%asi#o.DMn%asi#oDestroySSenderM !()1e#tTP begin !a)%asi#o.CloseP !a)%asi#oCon-.CloseP !a)M"si#a.CloseP !a)Categor.CloseP !a)CategorCon-.CloseP i2 FnMen".D%Dis#o.&sS@A)ased then FnMen".D%Dis#o.Co itP endP proced%re !DMn%asi#o.!a)%asi#o5eL4e#ordSDataSetM !DataSetTP begin Fn%asi#o.3dit5(MnD&SC(.SetFo#"sP endP proced%re !DMn%asi#o.!a)%asi#o%e-ore0ostSDataSetM !DataSetTP begin i2 DS%asi#o.State Y ds&nsert then begin @ryContador.A#tive MY FalseP @ryContador.A#tive MY !r"eP Oith @ryContador.FieldsW2X do i2 &s5"ll then !a)%asi#oC(DnD&SC(.=al"e MY 1 else

)+

Borland
endP endP

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

!a)%asi#oC(DnD&SC(.=al"e MY As&nteger \ 1P

proced%re !DMn%asi#o.!a)%asi#oA-ter0ostSDataSetM !DataSetTP begin i2 FnMen".D%Dis#o.&sS@A)ased then begin FnMen".D%Dis#o.Co itP FnMen".D%Dis#o.Start!ransa#tionP endP endP proced%re !DMn%asi#o.!a)%asi#o5o nDis#o=alidateSSenderM !FieldTP begin i2 DS%asi#o.State in Wds3dit' ds&nsertX then i2 !a)%asi#oCon-.FindmeySW!a)%asi#o5(MnD&SC(XT then begin Fn%asi#o.3dit5(MnD&SC(.SetFo#"sP raise 3.#eption.CreateSZ5o e do CD d"pli#adoZr12\ ZCli#B no )ot$o sAo#alizas e #aso de d6vidaZTP endP endP proced%re !DMn%asi#o.!a)%asi#oSignCateg=alidateSSenderM !FieldTP begin i2 DS%asi#o.State in Wds3dit' ds&nsertX then i2 not S!a)CategorCon-.FindmeySW!a)%asi#oS&GnCA!3GXTT then begin Fn%asi#o.3ditS&GnCA!3G.SetFo#"sP raise 3.#eption.CreateSZSigla da #ategoria n$o e.isteZr12\ ZCli#B no )ot$o sAo#aliza Categorias e #aso de d6vidaZTP endP endP end.

A5/erando a Jane5a Criada


=a os nova ente alterar a 1anela #riada' #o o 1+ -oi dito' vo" "sar " padr$o de 1anela ,"e a#hei #o o ideal' as vo#I poder+' -"t"ra ente' ta )K en#ontrar+ o se" pr>prio padr$o' ent$o va os as altera*8es' antes' le )re-se' K pre#iso entender e #o preender total ente o #ap/t"lo anterior e o DataModule #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*8es Project Z 6PntaT ChecU. Deve o#orrer " erro na #l+"s"la Wses in-or ando ,"e a "nidade 2Basico n$o e.iste ne o o)1eto FMBasico n$o -oi en#ontrado' ent$o antes de ,"al,"er passo #ha e o o)1eto Form e altere a propriedade /ame para FMBasico e salve o -or "l+rio #o o no e de 2Basico' pode nova ente veri-i#ar a "nidade DMBasico ,"e desta vez n$o haver+ pro)le as.

))

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Aproveite o o)1eto FMBasico para alterar a #l+"s"la %ses logo a)ai.o da diretiva de #o pila*$o paraM
68R 9%D5M7 %ses DM%asi#oP 6 ReferLn"ia ao DataModule 7

Organi0ando os Panels
=a os passar para as altera*8es #o o)1eto 5GBasi"o. (s o)1etos da 1anela se en#ontra distri)"/dos e trIs o)1etos Panel' o pri eiro SPanel1T g"arda o o)1eto DBNavi ator' o seg"ndo SPanel$T g"arda os la)els e os #a pos do ar,"ivo %AS&C( e o ter#eiro S PanelMT g"arda o o)1eto DB>rid1 ,"e #ontrolar+ o ar,"ivo MJS&CA. Altere a propriedade Align do o)1eto PanelM' para al/one. A" ente a 1anela do odo ,"e todos os #a pos do o)1eto estre apare*a .

Colo,"e os o)1etos la(elN e Ima e5'4GC#P# a direita dos o"tros #a pos.

Depois de t"do arr" ado altere a propriedade A%to6croll no o)1eto S"rollBo@ para $r%e depois para False' isto -ar+ #o ,"e a )arra de rolage verti#al desapare*a. Crie " ,"arto o)1eto Panel para #olo#ar os )ot8es' #on-or e as instr"*8es do #ap/t"lo anterior' para -a#ilitar o tra)alho #ha e o o)1eto 5GCate ' atravKs do Pro)e"t Manaa er' #li,"e so)re o o)1eto PanelM e pressione Ctrl*C #ha e nova ente o o)1eto 5orm$ e pressione Ctrl*<' #rie " ter#eiro )ot$o e altere as seg"intes propriedadesM
0ropriedade Caption Font Glyph ?eight ?int 5a e ShoL?int Oidth =alor pM6si#as MS Sans Seri-' 5or al' <' 0reto WDiret>rioDelphiXk&MAG3Sk%J!!(5 SkCDD4&=3.%M0 75 Cadastro e %"tM"si#a !r"e <9 an"ten*$o das 6si#as Des#ri*$o Aa)el do o)1eto !ipo de letra a ser & age a ser ostrada no o)1eto ostrada no o)1eto

Alt"ra do o)1eto A1"da on-line para o o)1eto espe#/-i#o 5o e do o)1eto Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line !a anho do o)1eto

4eorganize os trIs )ot8es no o)1eto PanelN

'odi!icando os campos e ,abels


3.#l"a o la)el So)1eto 0a(el1T e o #a po So)1eto .ditC'DGDISC'T ,"e -az re-erIn#ia ao C(DnD&SC(. Modi-i,"e a -onte dos #a pos e la)els #on-or e des#rito no #ap/t"lo anterior.
)9

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Altere as propriedades Caption dos 0a(els paraM Cd/omeED' Cd$ipoED' CCatedgoriaED e CdCapaED respe#tiva ente Altere a propriedade A%to6i5e dos 0a(els para $r%e Modi-i,"e a propriedade 6tretch do o)1eto Ima e5'4GC#P# para tr%e' isto -ar+ #o ,"e a i age da #apa -i,"e se pre de a#ordo #o o ta anho do o)1eto.

Organi0ando os Panels
=a os organizar #ada o)1eto Panel por partesM Objeto Panel( Modi-i,"e o o)1eto DBNavi ator #on-or e des#rito no #ap/t"lo anterior. 0ara a propriedade 1ints' es#reva nova ente o a"./lio para #ada )ot$o o"' #ha e o -or "l+rio 5GCate e #opie as des#ri*8es da propriedade 1ints #o Ctrl*C e #ha e nova ente o o)1eto D%5avigator e digite Ctrl*< dentro da propriedade. Modi-i,"e ta )K o o)1eto Panel1 #on-or e des#rito no #ap/t"lo anterior e altere a propriedade Caption para CDfs. Objeto Panel) Altere as propriedades 1eight e Nidth para 71; do o)1eto Ima e5'4GC#P#. Crie " novo o)1eto 0a(el e altere as seg"intes propriedadesM
=alor pM6si#asM MS Sans Seri-' 5egrito' <' Castanho D%Grid1 Des#ri*$o Aa)el do o)1eto !ipo de letra a ser Controle do -o#o ostrada no o)1eto

0ropriedade Caption Font Fo#"sControl

A" ente o o)1eto Panel$ de -or a a #a)er os o"tros o)1etos' organize os o)1etos da seg"inte -or aM 5o e' !ipo' Categoria e M6si#as' ao lado #olo,"e a -oto. Dei.e o espa*o de " #a po entre Categoria e M6si#as. 4e ova 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 propriedadesM
=alor DMn%asi#o.DS%asi#o !&0nD&SC( MS Sans Seri-' 5or al' <' Az"l Marinho Sele#ione o tipo AAAP AADP ADDP e DDD Co )o!&0nD&SC( !r"e Des#ri*$o DataSo"r#e vin#"lado Ca po de ta)ela !ipo de letra a ser ostrada no o)1eto A1"da on-line para o o)1eto espe#/-i#o &tens ,"e apare#er$o #o o op*8es do C(M%( %(R' #olo,"e " e #ada linha. 5o e do o)1eto Mostrar o #onte6do da propriedade hint so) a

0ropriedade DataSo"r#e DataField Font ?int &te s 5a e ShoL?int

9,

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

-or a de " a #ai.a de a1"da on-line

5o o)1eto 0a(elM re#olo,"e a propriedade Foc%sControl apontando para o o)1eto Com(o4IPGDISC'. Objeto Panel*

Mar,"e o o)1eto D%Grid1 e altere as propriedades Align para alNone e Border6tPle para (sSin le' pressione Ctrl*E ar,"e o o)1eto 6crollBoT e pressione Ctrl*<' a#erte o o)1eto de -or a ,"e este #ai)a a)ai.o do o)1eto 0a(el1 SM6si#asMT. 3li ine o o)1eto PanelM' #li,"e so)re ele e pressione Del.

'odi!icando a 3anela
Altere as propriedades Border7cons' Border6tPle e Position #on-or e des#rito no #ap/t"lo anterior. M"de a propriedade Caption para Cadastro. Altere a propriedade Align do o)1eto Panel para alClient e a#erte as posi*8es no -or "l+rio. Salve o -or "l+rio e salve o pro1eto. 5o espa*o dei.ado entre os la)els de Categoria e M6si#a' #rie o o)1eto DB4e@t ' en#ontrado na Component Palette p+gina Data Controls' ,"e servir+ para ostrar o no e da #ategoria sele#ionada' altere as seg"intes propriedadesM
=alor DMn%asi#o.DSCategor D3SnCA!3G MS Sans Seri-' 5or al' <' Castanho Des#ri*$o DataSo"r#e vin#"lado Ca po de ta)ela !ipo de letra a ser ostrada no o)1eto

0ropriedade DataSo"r#e DataField Font

Crie agora trIs o)1etos SpeedButton #dditionalM

' en#ontrado na Component Palette p+gina

Para o objeto 6peedB%tton!M 0osi#ione-o ao a)ai.o do la)el Capa%


0ropriedade Glyph ?eight ?int 5a e ShoL?int Oidth =alor Des#ri*$o a ser ostrada no o)1eto WDiret>rioDelphiXk&MAG3Sk%J!! & age (5SkA5&MA!5.%M0 75 C>pia i age tran-erIn#ia %"t0aste !r"e 75 da +rea de

Alt"ra do o)1eto A1"da on-line para o o)1eto espe#/-i#o 5o e do o)1eto Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line !a anho do o)1eto

Para o objeto 6peedB%tton M 0osi#ione-o ao a)ai.o do o)1eto .ditC'DGC#4.>

9!

Borland
0ropriedade Glyph

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

=alor

Des#ri*$o a ser ostrada no o)1eto

WDiret>rioDelphiXk&MAG3Sk%J!! & age (5SkAA5!345A.%M0 Sve1a di#aT 75 0es,"isa deter inada #ategoria %"tAo#Categ !r"e 75

?eight ?int 5a e ShoL?int Oidth

Alt"ra do o)1eto A1"da on-line para o o)1eto espe#/-i#o 5o e do o)1eto Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line !a anho do o)1eto

Para o objeto 6peedB%tton"M 0osi#ione-o ao lado do o)1eto But0o"Cate


0ropriedade Glyph ?eight ?int 5a e ShoL?int Oidth =alor Des#ri*$o a ser ostrada no o)1eto WDiret>rioDelphiXk&MAG3Sk%J!! & age (5SkC4DF&A37.%M0 75 &nsere registro na ta)ela de #ategoria %"t&nsCateg !r"e 75

Alt"ra do o)1eto A1"da on-line para o o)1eto espe#/-i#o 5o e do o)1eto Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line !a anho 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 ire os nos aproveitar dos -or "l+rios 1+ #onstr"/dos anterior ente. 0rovavel ente vo#I n$o ir+ en#ontrar o ar,"ivo AA5!345A.%M0 soli#itado para o seg"ndo )ot$o' tere os de #ri+-loM 1. Salve o -or "l+rio e -e#he o pro1eto' lo#alize Sno diret>rio de os do DelphiT e a)ra o pro1eto WDiret>rioDelphiXkD3M(SkD%kMAS!A00kMAS!A00.D04 7. AtravKs do Pro)e"t Mana er a)ra o -or "l+rio Sear"hDl . 9. Ao#alize o o)1eto Sear"hButton e #li,"e na propriedade SlPph. e no e proposto :. 3s#olha o )ot$o 6aveAAA e salve-o no diret>rio SWDiret>rioDelphiXk&MAG3Sk%J!!(5Sk e AA5!345A.%M0T.

5. 4etorne ao nosso pro1eto des#artando ,"ais,"er aviso para salvar o MAS!A00.D04.

-rabal&ando com 4rid7s


Fale os agora de " o)1eto espe#ial o Grid' 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 db0ditC D' ,"e n$o "tilizo" se"s re#"rsos para ostrar registros o" realizar #ons"ltas #o -iltros espe#iais. ( o)1eto >rid K o CnetoD deste o)1eto #o alg"ns re#"rsos ais si pli-i#ados' no total s$o trIs os o)1etos >rid+sM

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

1. Strin >rid - Co ponente da "nidade >rid sendo "tilizado para' de -or a si pli-i#ada' asso#iar Strin s a " a grade #ontendo linhas e #ol"nas' en#ontrado na Component Palette p+gina #dditional. 7. Draw>rid - Co ponente da "nidade >rid ,"e per ite ostrar " a estr"t"ra de dados e.istentes no -or ato de linhas e #ol"nas' en#ontrado na Component Palette p+gina #dditional. 9. DB>rid - Co ponente da "nidade DB>rids ,"e ostrar dados de " DataSet para " #o ponente no -or ato de linhas e #ol"nas' en#ontrado na Component Palette p+gina Data Controls. 0or en,"anto vo" e deter a -alar do o)1eto DB>rid' ais tarde voltare os a -alar dos o"tros' este o)1eto DB>rid K vin#"lado' ao DataSo"r#e' apresenta as seg"intes propriedades S ais i portantes' alg" as ainda n$o en#ionadasTM

DataSo"r#eM 5o e do o)1eto DataSo"r#e vin#"ladoP FontM !ipo da letra a ser ostrada no #onte6do do o)1etoP (ptionsM sKrie de op*8es de #ontrole Sse a op*$o 4rue -or sele#ionadaTM

dg0ditingM per ite a edi*$o e adi*$o dos dadosP dgAlOaPs6hoO0ditorM ( grid entra a"to ati#a ente e odo de edi*$o' n$o havendo a ne#essidade de pressionar 0nter o" F Sdepende ,"e a propriedade dg0diting < $r%eTP dg$itlesM =ia)iliza o "so do t/t"lo de #ada #a poP dg7ndicatorM ?a)ilita o ponteiro de indi#a*$o da #ol"naP dgCol%mnResi5eM A #ol"na pode ser redi ensionadaP dgCol3inesM ?a)ilita a separa*$o das #ol"nasP dgRoO3inesM ?a)ilita a separa*$o das linhasP dg$absM Jse o pressiona ento das te#las 4a( e Shif*4a( para se over dentro das #ol"nasP dgRoO6electM Sele#iona' #o " a tar1a az"l' todas as #ol"nas de " a linhaP dgAlOaOs6hoO6electionM As #Kl"las do rid s$o ostradas #onstante ente sele#ionadas' es o ,"e este n$o detenha o -o#o. dgCon2irmDeleteM Jse as te#las Ctrl*Del' para e.#l"ir dadosP dgCancelOn0TitM 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 K #an#elada. 0revine a in#l"s$o de registros inv+lidos o" e )ran#o. ostrada nos t/t"los do o)1eto.

$itleFontM !ipo da letra a ser

0ropriedade Font ?int (ptions

(s #a pos no o)1eto DB>rid s$o adi#ionados e #ontrolados atravKs do 5ields.ditor rid ostrar+ apenas as 6si#as de #ada CD' para tanto altere as
Des#ri*$o !ipo de letra a ser (p*8es de #ontrole ostrada no o)1eto A1"da on-line para o o)1eto espe#/-i#o

( nosso o)1eto seg"intes propriedadesM


=alor

MS Sans Seri-' 5egrito' <' Castanho M6si#as deste CD Wdg!itles' dg&ndi#ator' dgColAines'

9"

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

dg4oLAines' dg4oLSele#t' dgAlLaysShoLSele#tionX ShoL?int !r"e Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line

5$o lhe a#onselho "sar este o)1eto para realizar altera*8es e )ases de dados Sapesar de isto ser poss/velT K ais pr+ti#o "tilizar " a 1anela separada para realizar este tra)alho' as idKias -i#ar$o ais )e ordenadas' se #ada -or "l+rio #ontrolar " a 6ni#a entrada e ta)ela de #ada vez. Se vo#I est+ eio perdido #o isto t"do' n$o se desespere' si ples ente #o pare os -or "l+rios para ver se n$o -alta nadaM

%inalmente8 a programao
Agora -alta apenas o #>digo' pelo ta anho do -or "l+rio e pelo n6 ero de #ontroles 1+ d+ para pensar os ,"e pre#isa os progra ar linhas e linhas de #>digo' engano f o aior tra)alho 1+ -oi -eito' o)serveM Criando o DataModule ao ser #ha ado -or "l+rioM 1. Cli,"e no )ot$o .ditor.
p%blic proced%re ini#ioP endF var Fn%asi#oM !Fn%asi#oP

S4o

le 5orm/:nitT da SpeedBar' atK vo#I alternar para o Code

Criando a #ha ada para "

pro#edi ento p6)li#o.

9&

Borland
implementation 68R 9%D5M7

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

proced%re !Fn%asi#o.&ni#ioP begin DMn%asi#o MY !DMn%asi#o.CreateSAppli#ationTP S#reen.C"rsor MY #rDe-a"ltP ShoLModalP endF

Crie o in/#io do pro#edi ento Cria o DataModule Faz o #"rsor -i#ar no -or ato de Seta Mostra o -or "l+rio FMBasico

C>digo para eli inar o DataModule' )asi#a ente K o es o tra)alho realizado #o o)1eto FMBasicoM 1. 5o o)1eto 5GBasi"o' dI " d"plo #li#B so)re o evento OnCloseM

proced%re !Fn%asi#o.For CloseSSenderM !()1e#tP var A#tionM !CloseA#tionTP begin i2 FnMen".Criti#a3di#aoSDMn%asi#o.DS%asi#o' ZCDZ' ZFe#harZT then Ae )ra da F"n*$o begin A#tion MY #a5oneP Can#ela a sa/da da 1anela 3.itP Sai da pro#ed"re endF S#reen.C"rsor MY #r?o"rGlassP Faz o #"rsor virar " a a p"lheta DMn%asi#o.FreeP 3li ina o DataModule endF

Ae )re-se ,"e a -"n*$o Critica0dicao -az parte da Jnit 2Men%' ent$o K pre#iso de#larar esta "nidade #o o #o ando W606 Sa)ai.o da diretiva de #o pila*$oTM
68R 9%D5M7 %ses DM%asi#o' 6 ReferLn"ia ao DataModule 7 -Men"P 6 Menu Prin"ipal do Sistema 7

Colo#ado para o "so da F"n*$o Criti#a3di#ao

4epare ,"e no in/#io desta Wnit e.iste " a de#lara*$o Wses' ap>s o #o ando inter2ace. 3nt$o por ,"e n$o #olo#ar todas essas de#lara*8es e " l"gar s>F 1.( Delphi #ontrolar+ S#olo#ando o" re ovendoT estas Jnits ali #olo#adas Sdependendo dos o)1etos "tilizadosT e 7.!odos os #o andos de#larados antes da de#lara*$o implementation S#o e.#e*$o de eventos de #ria*$o. 3..M onCreateT' ser$o e.e#"tados e objetos e %nits -i#ar$o e e >ria esperando sere #ha ados' ent$o K i prati#+vel #olo#ar %nits ,"e s> ser$o "tilizadas e te po de e.e#"*$o.

Cons$lta
C>digo para pes,"isar os registros das ta)elas' )asi#a ente "tilizare os o tra)alho realizado #o o o)1eto FMCategM 1. DI " d"plo #li#B so) o o)1eto But0o"ali!arM es o

proced%re !Fn%asi#o.%"tAo#alizarCli#BSSenderM !()1e#tTP var ()10es,"isaM StringP begin

9(

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras Ae )ra da F"n*$o

i2 FnMen".Criti#a3di#aoSDMn%asi#o.DS%asi#o' ZCDZ' ZAo#alizarZT then 3.itP ()10es,"isa MY !a)%asi#o5(MnD&SC(.=al"eP

i2 &np"t@"erySZ0es,"isaZ'Z3ntre #o o no e do CD So" parteT.Z' ()10es,"isaT then !a)%asi#o.Find5earestSW()10es,"isaXTP endP

Ae )re-se ,"e a -"n*$o 7np%t]%erP -az parte da Jnit Dialogs' ent$o K pre#iso de#larar esta "nidade #o o #o ando W606 Sa)ai.o da diretiva de #o pila*$oTM
68R 9%D5M7 %ses DM%asi#o' 6 ReferLn"ia ao DataModule 7 -Men"' 6 Menu Prin"ipal do Sistema 7 DialogsP 6 >erente de Mensa ens 7

Colo#ado para o "so da F"n*$o &np"t@"ery

Desta vez -oi "tilizado o #o ando Find/earest' este #o ando #ons"lta por parte ini#ial do #>digo en#ontrado " #>digo ig"al o" aior ,"e o pes,"isado' n$o K pre#iso ao "s"+rio le )rar o no e #o pleto #o o no #o ando FindVeP. AtenoM o #o ando Find/earest n$o retornar+ " a vari+vel boolean S!r"e o" False #o o res"ltado da pes,"isaT ent$o n$o se -az a ne#essidade de #r/ti#as so)re o es o. Salvo e.#e*$o se o #a po -or tipo n" Kri#o o" tipo data ent$o "tilize este #o ando e #on1"nto #o o #o ando $rP. =e1a no pr>.i o #ap/t"lo #o o. ( #>digo para o )ot$o ,"e lo#alizar+ " pr>.i o #ap/t"lo. registro na ta)ela de #ategoria ser+ tratado no

0ara inserir novos registros na ta)ela de #ategoria "tilizare os o -or "l+rio #onstr"/do anterior ente' a 6ni#a di-eren*a K ,"e desta vez deve os estar e odo de edi*$oM 1. DI " d"plo #li#B so)re o o)1eto ButInsCate M

proced%re !Fn%asi#o.%"t&nsCategCli#BSSenderM !()1e#tTP begin i2 not SDS%asi#o.State in Wds3dit' ds&nsertXT then begin MessageDlgSZ=o#I n$o est+ no odo de edi*$ofZ' t&n-or ation' W )(mX' 2TP e.itP end S#reen.C"rsor MY #r?o"rGlassP i2 FnMen".D%Dis#o.&sS@A)ased then FnMen".D%Dis#o.Co itP Oith !FnCateg.CreateSSel-T do begin &ni#ioP FreeP endP i2 FnMen".D%Dis#o.&sS@A)ased then FnMen".D%Dis#o.Start!ransa#tionP S#reen.C"rsor MY #rDe-a"ltP endP

Se n$o estiver e estado de edi*ao o" in#l"s$o 3nvia ensage de erro

Faz o #"rsor virar " a a p"lheta Grava os as altera*8es no )an#o de dados Cria o -or "l+rio na +rea de e >ria Cha a o -or "l+rio 3li ina o -or "l+rio da e >ria

Se a )ase de dados K padr$o S@A &ni#ia o odo de transa*8es Faz o #"rsor -i#ar no -or ato de Seta

9#

Borland
68R 9%D5M7

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

5$o es,"e*a de de#larar a Wnit deste -or "l+rioM

%ses DM%asi#o' 6 ReferLn"ia ao DataModule 7 -Men"' 6 Menu Prin"ipal do Sistema 7 Dialogs' 6 >erente de Mensa ens 7 -CategP 6 Cadastro de Cate orias 7

-rabal&ando com a )rea de -rans!er9ncia


5a aioria dos apli#ativos para OindoLs K #o "n en#ontrar os os #o andos 4e#ortar' Copiar e Colar' o -a oso C%t;CopP;Paste' isto K realizado "tilizando a +rea de trans-erIn#ia do OindoLsM S$o trIs os #o andos ,"e -aze o tra)alho na +rea de trans-erIn#iaM

()1eto.C%t$oClipboard' envia o #onte6do do o)1eto para +rea de trans-erIn#iaP e ()1eto.CopP$oClipboard' -az " a #>pia do #onte6do do o)1eto na +rea de trans-erIn#ia. ()1eto.PasteFromClipboard' traz para o #onte6do do o)1eto da +rea de trans-erIn#iaP
0r>.i o passo' o #>digo para o )ot$o ,"e per itir+ trazer " a i age ar azenada na +rea de trans-erIn#ia do OindoLs SSalva #o o "tilit+rio 0aint%r"sh' por e.e ploT para o #a po da FotoM 1. DI " d"plo #li#B so)re o o)1eto ButPasteM

proced%re !Fn%asi#o.%"t0asteCli#BSSenderM !()1e#tTP begin & ageF(!nCA0A.0asteFro Clip)oardP endF

:tili0ando o objeto Open"ialog


J al"no " a vez e s"geri" " a o"tra aneira de #olo#ar a -ig"ra' ao invKs de se "tilizar da +rea de trans-erIn#ia' poder/a os #ha ar o ar,"ivo S.%M0T direta ente' isto K 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 propriedadesM
0ropriedade Filter 5a e =alor Ar,"ivos )it apeo.%M0 A)re% p Des#ri*$o Sele#iona os tipos de ar,"ivo ,"e ser$o a)ertos 5o e do ()1eto

0r>.i o passo' o #>digo para o )ot$o ,"e per itir+ trazer " a i age para o #a po da FotoM 1. DI " d"plo #li#B so)re o o)1eto ButPasteM

ar,"ivo .%M0

proced%re !Fn%asi#o.%"t0asteCli#BSSenderM !()1e#tTP begin 72 A)re% p.3.e#"te then & ageFotnA ostra.0i#t"re.AoadFro FileS A)re% p.File5a e TP

=eri-i#a se -oi #li#ado e Carrega o ar,"ivo

(m

9+

Borland
endF

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

apYndice F

3s#olha a

aneira ,"e

ais lhe agrada.

("tro o)1eto interessante K o o)1eto 6aveDialog' ve1a o"tras "tiliza*8es so)re eles no

Criando o !orm$l)rio para o cadastro das msicas


Constr"ire os o -or "l+rio para #adastrar as 6si#as' #rie o -or "l+rio #o -or "l+rio #riado para a ta)ela de #ategoria e -a*a as seg"intes altera*8esM )ase no

Altere a propriedade name do -or "l+rio para FMMW67CA. Cha e o DataModule DMBasico e #rie ais " o)1eto 44a(le' para -azer
das
0ropriedade Data)ase5a e !a)le5a e 5a e 4ead(nly

os as #r/ti#as

6si#as d"pli#adas e altere as seg"intes propriedadesM


=alor %aseDis#o MJS&CA !a)M"si#aCon!r"e Des#ri*$o 5o e do %an#o de Dados o" a lo#aliza*$o do diret>rio das ta)elas 5o e e.terno da ta)ela 5o e do o)1eto 5o e do #a po inde.ado So ente leit"ra

&nde.Field5a es CodnDis#oP5" nFai.a

5$o es,"e*a de alterar o progra a do DataModule para a)rir e -e#har a nova ta)ela e #olo,"e a #r/ti#a para a ta)ela de 6si#a' evento OnRalidate do o)1eto $abM%sica/%mMFaiTaM
proced%re !DMn%asi#o.!a)M"si#a5" nFai.a=alidateSSenderM !FieldTP begin i2 DSM"si#a.State in Wds3dit' ds&nsertX then begin !a)M"si#aCon-.3ditmeyP !a)M"si#aCon-.Field%y5a eSZC(DnD&SC(ZT.AsFloat MY !a)M"si#aCodnDis#o.=al"eP !a)M"si#aCon-.Field%y5a eSZ5JMnFA&RAZT.AsFloat MY !a)M"si#a5" nFai.a.=al"eP i2 !a)M"si#aCon-.Gotomey then begin FnM"si#a.3dit5" nFai.a.SetFo#"sP raise 3.#eption.CreateSZFai.a do CD d"pli#adaZTP endP endP endP

4epare no "so do #o ando SotoVeP ao invKs do #o ando FindVePB ele -oi "tilizado por se tratar de " a #have #o posta. Colo,"e ta )K $abM%sicaM

a #r/ti#a para a ta)ela de

6si#a' evento On/eORecord do o)1eto

proced%re !DMn%asi#o.!a)M"si#a5eL4e#ordSDataSetM !DataSetTP begin FnM"si#a.3dit5JMnFA&RA.SetFo#"sP

9)

Borland
endP

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

J a 6lti a #r/ti#a ser+ para #on-ir ar os as altera*8es para a )ase S@A' pressione nova ente a te#la F11 e na p+gina .vents' dI " d"plo #li#B so)re o evento A2terPostM
proced%re !DMn%asi#o.!a)M"si#aA-ter0ostSDataSetM !DataSetTP begin i2 FnMen".D%Dis#o.&sS@A)ased then Se a )ase de dados K padr$o S@A begin FnMen".D%Dis#o.Co itP Gravando as altera*8es da ta)ela FnMen".D%Dis#o.Start!ransa#tionP 4eini#ia o odo de transa*8es endF endF

Dei.e apenas o )ot$o Fe#harP 4e ova o Aa)el e o D%3dit do #a po C(DnD&SC(P e M"de a propriedade do BorderSt/le para bsDialog.
()serve e #o pare #o o desenho do -or "l+rio a)ai.oM

Altere ini#ial ente' a #l+"s"la "ses para o DMBasico' e seg"ida a propriedade de todos os #a pos e do D%5avigator para DMMBasicoAD6M%sica. A progra a*$o do -or perder te po e espa*o 6ni#a "dan*a est+ e edi*$o o" inser*$o e #o "l+rio K )asi#a ente a es a para as ta)elas' ent$o ao invKs de -alando t"do de novo' o)serve o #>digo #o pleto e note ,"e a prevenir para ,"e o -or "l+rio n$o se1a -e#hado e te po de o estado do #"rsorM

%nit -M"si#aP inter2ace %ses SysJtils' OindoLs' Messages' Classes' Graphi#s' Controls' StdCtrls' For s' D%Ctrls' D%' %"ttons' MasB' 3.tCtrlsP tPpe !FnM"si#a Y #lassS!For T S#roll%o.M !S#roll%o.P Aa)el7M !Aa)elP

99

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

3dit5" nFai.aM !D%3ditP Aa)el9M !Aa)elP 3dit5o nM"si#aM !D%3ditP Aa)el:M !Aa)elP 3dit5o nA"torM !D%3ditP Aa)el5M !Aa)elP 3dit! pnM"si#aM !D%3ditP D%5avigatorM !D%5avigatorP 0anel1M !0anelP 0anel7M !0anelP 0anel9M !0anelP %"tFe#harM !%it%tnP proced%re For ShoLSSenderM !()1e#tTP proced%re For CloseSSenderM !()1e#tP var A#tionM !CloseA#tionTP private 6 private de"larations 7 p%blic 6 pu(li" de"larations 7 endP var FnM"si#aM !FnM"si#aP implementation 68R 9%D5M7 %ses DM%asi#oP 6 ReferLn"ia ao DataModule 7 3vento On6hoO do o)1eto FMM%sica

proced%re !FnM"si#a.For ShoLSSenderM !()1e#tTP begin S#reen.C"rsor MY #rDe-a"ltP endP

proced%re !FnM"si#a.For CloseSSenderM !()1e#tP var A#tionM !CloseA#tionTP begin 3vento OnClose do o)1eto FMM%sica i2 FnMen".Criti#a3di#aoSDMn%asi#o.DSM"si#a' ZM6si#aZ' Z-e#harZ T then begin A#tion MY #a5oneP e.itP endP S#reen.C"rsor MY #r?o"rGlassP endP end.

5$o K pre#iso se preo#"par #o a grava*$o para o #a po C(DnD&SC(' isto ser+ -eito a"to ati#a ente pelo Delphi' antendo a integridade re-eren#ial. Salve o -or "l+rio #o o no e fMusi"a.

=a os agora alterar o )ot$o do -or "l+rio prin#ipal' o)1eto (utMusi"a' ,"e ser+ "sado para #ha ar este seg"ndo.

!,,

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

proced%re !Fn%asi#o.%"tM"si#aCli#BSSenderM !()1e#tTP begin i2 DMn%asi#o.DS%asi#o.State in Wds3dit' ds&nsertX then begin MessageDlgSZSalve a edi*$o do CD antes de 3ditar as 6si#asfZ' t&n-or ation' W )(BX' 2TP 3.itP endP S#reen.C"rsor MY #r?o"rGlassP i2 FnMen".D%Dis#o.&sS@A)ased then FnMen".D%Dis#o.Co itP Oith !FnM"si#a.CreateSSel-T do Cria os o -or "l+rio e e >ria begin ShoLModal Cha are os a,"i o novo -or "l+rio FreeP 3li ina os o For "l+rio endP i2 FnMen".D%Dis#o.&sS@A)ased then FnMen".D%Dis#o.Start!ransa#tionP S#reen.C"rsor MY #rDe-a"ltP endP

68R 9%D5M7 %ses DM%asi#o' -Men"' Dialogs' -Categ' -M"si#aP 6 ReferLn"ia ao DataModule 7 6 Menu Prin"ipal do Sistema 7 6 >erente de Mensa ens 7 6 Cadastro de Cate orias 7 6 Cadastro de MOsi"as 7

5$o es,"e*a de adi#ionar a propriedade %ses

5$o es,"e*a ta )K de retirar os o)1etos 5GMusi"a e 5GBasi"o da #ria*$o a"to +ti#a' op*$o do en" prin#ipal #li,"e e Options Z ProjectAAA' ,"al,"er d6vida #ons"lte o #ap/t"lo anterior.

Criando novos Procedimentos 4lobais


=a os #riar ais alg"ns pro#edi entos glo)ais' para a nosso pri eiro pro#edi ento note as #ha adas aos -or "l+rios e.ternos 5GCate e 5GMusi"aM
S#reen.C"rsor MY #r?o"rGlassP i2 FnMen".D%Dis#o.&sS@A)ased then FnMen".D%Dis#o.Co itP ... ... i2 FnMen".D%Dis#o.&sS@A)ased then FnMen".D%Dis#o.Start!ransa#tionP S#reen.C"rsor MY #rDe-a"ltP

(s #o andos listados se repete tanto para o pro#edi ento B%t7nsCategClicU e para o pro#edi ento B%tM%sicaClicU' #ha e o -or "l+rio FMMen% e #rie o seg"inte pro#edi entoM
p%blic proced%re 0reparaS!ipoM )ooleanTP 2%nction Criti#a3di#aoSDS(rige M !DataSo"r#eP Do@"e' AntesDeM StringT M )ooleanP A,"i

!,!

Borland
endP

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

var ... ... proced%re !FnMen".0reparaS!ipoM )ooleanTP begin i2 tipo then begin S#reen.C"rsor MY #r?o"rGlassP i2 D%Dis#o.&sS@A)ased then D%Dis#o.Co itP end else begin i2 D%Dis#o.&sS@A)ased then D%Dis#o.Start!ransa#tionP S#reen.C"rsor MY #rDe-a"ltP endP endP

Se o valor da vari+vel tipo re#e)ida -or verdadeiro Faz a pri eira parte

Sen$o Faz a seg"nda parte

Modi-i,"e agora a )os os pro#edi entos do o)1eto FMBasicoM


proced%re !Fn%asi#o.%"t&nsCategCli#BSSenderM !()1e#tTP begin ... ... FnMen".0reparaS!r"eTP A,"i Oith !FnCateg.CreateSSel-T do begin &ni#ioP FreeP endP FnMen".0reparaSFalseTP A,"i endP proced%re !Fn%asi#o.%"tM"si#aCli#BSSenderM !()1e#tTP begin ... ... FnMen".0reparaS!r"eTP A,"i Oith !FnM"si#a.CreateSSel-T do begin &ni#ioP FreeP endP !a)M"si#a.4e-reshP FnMen".0reparaSFalseTP A,"i endP

J seg"ndo pro#edi ento glo)al pode ser #riado veri-i#ando os eventos A2terPost dos DataMod"les DmGCate e DMGBasi"o Seste seg"ndo e dois l"garesTP o)serva os o es o pro#edi entoM
i2 FnMen".D%Dis#o.&sS@A)ased then begin FnMen".D%Dis#o.Co itP

!,

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

FnMen".D%Dis#o.Start!ransa#tionP endF

Cria os ent$o o seg"inte pro#edi ento no -or "l+rio 5GMenuM


p%blic proced%re Grava%an#o A,"i proced%re 0reparaS!ipoM )ooleanTP 2%nction Criti#a3di#aoSDS(rige M !DataSo"r#eP Do@"e' AntesDeM StringT M )ooleanP endP var ... ... proced%re !FnMen".Grava%an#oP begin i2 D%Dis#o.&sS@A)ased then begin D%Dis#o.Co itP D%Dis#o.Start!ransa#tionP endF endF

3 )"tire os os #o andos p"ros a,"i

Agora s")stit"a os eventos nos dos DataMod"les DmGCate e DMGBasi"oP pela seg"inte #ha ada ao pro#edi ento
begin FnMen".Grava%an#oP endP

4epare ta )K ,"e -oi retirado das -"n*8es ,"e -i#ara no -or "l+rio FnMen" as re-erIn#ias da )ase de dados ao -or "l+rio Sera FMMen%ADBDisco e -i#o" si ples ente DBDiscoT.

A5/erando o Men0 6ara re4e8er o @orm05Lrio


do Agora -inal ente va os rodar nosso -or "l+rio' para tanto pre#isa os #ha +-lo atravKs en" prin#ipal para istoM 1. Cha e nova ente o -or "l+rio FMMen%M no en" prin#ipal es#olha RieO e Project Manager' ar,"e o o)1eto e #li,"e so)re o )ot$o RieO 2orm. 7. Cli,"e e ArQ%ivo' Cadastro' #olo,"e o seg"inte #>digoM
proced%re !FnMen".Cadastro1Cli#BSSenderM !()1e#tTP begin S#reen.C"rsor MY #r?o"rGlassP !rans-or a o #"rsor e " a a p"lheta Fn%asi#o MY !Fn %asi#o.CreateSAppli#ationTP Cria o -or "l+rio e e >ria Fn %asi#o.&ni#ioP Cha a o -or "l+rio atravKs da +rea a)erta Fn %asi#o.FreeP Ai)era a +rea a)erta S#reen.C"rsor MY #rDe-a"ltP !rans-or a o #"rsor e " a seta endP

9. ( o)1eto 5GBasi"o -az parte da Jnit 2Basico ent$o K ne#ess+rio -azer o "so desta Jnit' para tanto insira o seg"inte #>digo Sa)ai.o da diretiva de #o pila*$oTM

!,"

Borland
68R 9%D5M7

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

%ses -So)re' 6 Kanela do So(re o Sistema %%% 7 -Categ' 6 :tili!ada para o "adastro de Cate orias 7 -%asi#oP 6 :tili!ada para o "adastro de CD+s 7

5$o es,"e*a de retirar o -or "l+rio 5GBasi"o da lista de -or "l+rios #riados a"to ati#a ente. :. Saia do Code .ditor e salve o -or "l+rio e o pro1eto. 5. 0ode os agora salvar e testar o -or "l+rio #o pleto' para in#l"ir alg" as i agens "tilize o PaintBrush do OindoLs' 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 #>digoM
%nit -%asi#oP inter2ace %ses SysJtils' OindoLs' Messages' Classes' Graphi#s' Controls' StdCtrls' For s' D%Ctrls' D%' D%Grids' %"ttons' Grids' MasB' 3.tCtrlsP tPpe !Fn%asi#o Y #lassS!For T S#roll%o.M !S#roll%o.P Aa)el7M !Aa)elP 3dit5o nDis#oM !D%3ditP Aa)el9M !Aa)elP Aa)el:M !Aa)elP & ageFotnCapaM !D%& ageP Aa)el5M !Aa)elP 3ditSignCategM !D%3ditP D%5avigatorM !D%5avigatorP 0anel1M !0anelP 0anel7M !0anelP 0anel:M !0anelP %"tFe#harM !%it%tnP %"tAo#alizarM !%it%tnP %"tM"si#aM !%it%tnP Aa)el1M !Aa)elP Co )o!&0nD&SC(M !D%Co )o%o.P D%Grid1M !D%GridP D%!e.t1M !D%!e.tP %"tAo#CategM !Speed%"ttonP %"t&nsCategM !Speed%"ttonP %"t0asteM !Speed%"ttonP 6 A)re% pM !(penDialogP Se vo"L utili!ou o o()eto 'penDialo 7 proced%re For CloseSSenderM !()1e#tP var A#tionM !CloseA#tionTP proced%re %"tAo#alizarCli#BSSenderM !()1e#tTP proced%re %"t&nsCategCli#BSSenderM !()1e#tTP proced%re %"t0asteCli#BSSenderM !()1e#tTP proced%re %"tM"si#aCli#BSSenderM !()1e#tTP private

!,&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

6 private de"larations 7 p%blic proced%re ini#ioP endP var Fn%asi#oM !Fn%asi#oP implementation 68R 9%D5M7 %ses DM%asi#o' -Men"' Dialogs' -Categ' -M"si#aP 6 ReferLn"ia ao DataModule 7 6 Menu Prin"ipal do Sistema 7 6 >erente de Mensa ens 7 6 Cadastro de Cate orias 7 6 Cadastro de MOsi"as 7

proced%re !Fn%asi#o.&ni#ioP begin DMn%asi#o MY !DMn%asi#o.CreateSAppli#ationTP S#reen.C"rsor MY #rDe-a"ltP ShoLModalP endP proced%re !Fn%asi#o.For CloseSSenderM !()1e#tP var A#tionM !CloseA#tionTP begin i2 FnMen".Criti#a3di#aoSDMn%asi#o.DS%asi#o' ZCDZ' ZFe#harZT then begin A#tion MY #a5oneP 3.itP endP S#reen.C"rsor MY #r?o"rGlassP DMn%asi#o.FreeP endP proced%re !Fn%asi#o.%"tAo#alizarCli#BSSenderM !()1e#tTP var ()10es,"isaM 6tringP begin i2 FnMen".Criti#a3di#aoSDMn%asi#o.DS%asi#o' ZCDZ' ZAo#alizarZT then 3.itP ()10es,"isa MY DMn%asi#o.!a)%asi#o5o nDis#o.=al"eP i2 &np"t@"erySZ0es,"isaZ'Z3ntre #o o no e do CD So" parteT.Z' ()10es,"isaT then DMn%asi#o.!a)%asi#o.Find5earestSW()10es,"isaXTP endP proced%re !Fn%asi#o.%"t&nsCategCli#BSSenderM !()1e#tTP begin i2 not SDMn%asi#o.DS%asi#o.State in Wds3dit' ds&nsertXT then begin MessageDlgSZ=o#I n$o est+ no odo de edi*$ofZ' t&n-or ation'W )(mX'2TP e.itP

!,(

Borland
endP

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

FnMen".0reparaS!r"eTP Oith !FnCateg.CreateSSel-T do begin &ni#ioP FreeP endP FnMen".0reparaSFalseTP endP proced%re !Fn%asi#o.%"t0asteCli#BSSenderM !()1e#tTP begin & ageF(!nCA0A.0asteFro Clip)oardP endP 6 'u se vo"L utili!ou o o()eto 'penDialo proced%re !Fn%asi#o.%"t0asteCli#BSSenderM !()1e#tTP begin 72 A)re% p.3.e#"te then & ageFotnA ostra.0i#t"re.AoadFro FileS A)re% p.File5a e TP endF 7 proced%re !Fn%asi#o.%"tM"si#aCli#BSSenderM !()1e#tTP begin i2 DMn%asi#o.DS%asi#o.State in Wds3dit' ds&nsertX then begin MessageDlgSZSalve a edi*$o do CD antes de 3ditar as 6si#asfZ' t&n-or ation' W )(BX' 2TP 3.itP endP FnMen".0reparaS!r"eTP Oith !FnM"si#a.CreateSSel-T do begin &ni#ioP FreeP endP FnMen".0reparaSFalseTP endP end.
Co andos e s"as -"n*8es' por orde de apari*$oM Ktodo de re-erIn#ia para o registro o" objeto.

Oith Wregistro o" o)1etoX do W#o andosX - Cria "

Wta)elaX.Find/earest - realiza " a pes,"isa apro.i ada na ta)ela.

!,#

Ca67/05o $II
-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 #>digo #orreto para deter inada #ategoria' e as #ons"ltas aos CDHs deve ser r+pidas e pr+ti#as' sen$o' -i#aria "ito ais pr+ti#o e -+#il pes,"isar an"al ente #ada CD tentando en#ontrar deter inada 6si#a do ,"e a#essar o #o p"tador para realizar tal tare-a.

Criando 4ons05/as 6ara /a8e5as


( nosso )ot$o de 3ocali5ar So)1eto b%t3ocali5arT no -or "l+rio FMCateg' n$o K ne " po"#o a ig+vel #o o "s"+rio' ele soli#ita apenas " #>digo para lo#alizar " a deter inada #ategoria' as se o nosso "s"+rio n$o le )rar deste #>digoF Maneira idInti#a a#onte#e #o o nosso )ot$o de pes,"isa no o)1eto FMBasico.

-rabal&ando com 4rid7s


( o)1eto DBSrid ostrado no #ap/t"lo anterior servir+ per-eita ente para #riar os " a 1anela ,"e per ita ao "s"+rio " a lo#aliza*$o ais r+pida e pr+ti#a de " deter inado registro' va os ao tra)alhoM &ni#ial ente Cli,"e no )ot$o S5eL For T na Speed Bar' o" no en" prin#ipal a Cli,"e no en" prin#ipal a op*$o File e /eOAAA' e New Items' na p+gina New e #li,"e no o)1eto entit"lado 5orm e altere as seg"intes propriedadesM
=alor )sDialog 0es,"isa Categoria FnSelCate poS#reenCenter Des#ri*$o 3stilo da )orda do -or "l+rio Aa)el do o)1eto S!ar1a az"l do -or "l+rioT 5o e do o)1eto 0osi*$o da 1anela S#entralizadoT

0ropriedade %orderStyle Caption 5a e 0osition

Crie para esta nova 1anela " a rela*$o #o o DataModule DMnModelo #olo#ando-o na #l+"s"la Wses' a)ai.o da diretiva de #o pila*$oM

68R 9%D5M7 %ses DMModeloP 6 ReferLn"ia ao DataModule 7

127

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Crie para esta nova 1anela os seg"intes o)1etosM DB/avigator Sen#ontrado na p+gina Data ControlsT' altere as seg"intes propriedadesM

0ropriedade DataSo"r#e ?ints Ae-t ShoL?int =isi)le%"ttons !op Oidth

=alor DMnModelo.DSCategor J e #ada linhaM 0ri eiro' Anterior' 0r>.i o e ]lti o < !r"e Wn)First' n)0rior' n)5e.t' n)AastX < 119

Des#ri*$o DataSo"r#e vin#"lado S#aso esta op*$o n$o este1a dispon/vel a)ra o DataModule DMMModeloT !>pi#os para a1"da on-line do o)1eto espe#/-i#o 0osi*$o a es,"erda Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line %ot8es vis/veis DistVn#ia do topo Aarg"ra do o)1eto

DBSrid Sen#ontrado na p+gina Data ControlsT' altere as seg"intes propriedadesM


0ropriedade DataSo"r#e Font Ae-t ?eight (ptions =alor DMnModelo.DSCategor MS Sans Seri-' nor al' <' az"l arinho < 1:5 Wdg!itles' dg&ndi#ator' dgColAines' dg4oLAines' dg4oLSele#t' dgAlLaLsShoLSele#tionX MS Sans Seri-' negrito' <' Castanho :< 975 Des#ri*$o DataSo"r#e vin#"lado !ipo da letra a ser 0osi*$o N es,"erda Alt"ra do o)1eto (p*8es de e.e#"*$o para o o)1eto ostrada no #onte6do do dbSrid

!itleFont !op Oidth

!ipo de letra a ser DistVn#ia do topo Aarg"ra do o)1eto

ostrada no t/t"lo do dbSrid

MasU0dit Sen#ontrado na p+gina #dditionalT' altere as seg"intes propriedadesM


0ropriedade Font Ae-t 5a e !e.t Oidth !op 3ditMasB 97 199 _aaP2Pn =alor MS Sans Seri-' nor al' <' az"l 5; 3dt!re#ho arinho Des#ri*$o !ipo de letra a ser 5o e do o)1eto Conte6do do o)1eto Aarg"ra do o)1eto DistVn#ia do topo Cria " a +s#ara de edi*$o para o #a po. ostrada no o)1eto Alinha ento a es,"erda

3abel Sen#ontrado na p+gina StandardT' altere as seg"intes propriedadesM


0ropriedade Caption Fo#"s Font Ae-t =alor SiglaM 3dt!re#ho MS Sans Seri-' negrito' <' Castanho < Des#ri*$o Aa)el do o)1eto Controle para a posi*$o do #"rsor !ipo de letra a ser ostrada no o)1eto

Alinha ento a es,"erda

!,)

Borland
!op

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

721

DistVn#ia do topo

BitBtn Sen#ontrado na p+gina #dditionalT' altere as seg"intes propriedadesM


0ropriedade mind =alor )B(m Des#ri*$o Deter ina a #lasse a ser "tilizada pelo o)1eto' a"to ati#a ente ser$o alteradas as propriedadesM Caption' SlPph e ModalRes%lt Aa)el do o)1eto !ipo de letra a ser Alt"ra do o)1eto A1"da on-line para o o)1eto espe#/-i#o Alinha ento a es,"erda 5o e do o)1eto Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line 3spa*o entre o SlPph e o 3abel DistVn#ia do topo Aarg"ra do o)1eto ostrada no o)1eto

Caption Font ?eight ?int Ae-t 5a e ShoL?int Spa#ing !op Oidth

p(m MS Sans Seri-' nor al' <' preto 75 Con-ir a a pes,"isa 1; %"t(B !r"e 92 7:< <9

BitBtn Sen#ontrado na p+gina #dditionalT' altere as seg"intes propriedadesM


0ropriedade mind =alor )BCan#el Des#ri*$o Deter ina a #lasse a ser "tilizada pelo o)1eto' a"to ati#a ente ser$o alteradas as propriedadesM Caption' SlPph e ModalRes%lt Aa)el do o)1eto !ipo de letra a ser ostrada no o)1eto' alt"ra do o)1eto' Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line' distVn#ia do topo e ta anho do o)1eto A1"da on-line para o o)1eto espe#/-i#o Alinha ento N es,"erda 5o e do o)1eto 3spa*o entre o SlPph e o 3abel Aarg"ra do o)1eto

Caption Font' ?eight' ShoL?int' !op e Oidth ?int Ae-t 5a e Spa#ing Oidth

pCan#ela idInti#a ao o)1eto B%tOU

A)andona a pes,"isa 7<< %"tCan#ela < <9

6peedB%tton propriedadesM
0ropriedade Glyph ?int ShoL?int 5a e Ae-t e !op =alor

Sen#ontrado

na

p+gina

#dditionalT'

altere

as

seg"intes

Des#ri*$o a ser ostrada no o)1eto

WDiret>rioDelphiXk&MAG3Sk%J!! & age (5SkFD4AO341.%M0 0es,"isa o #>digo sele#ionado na ta)ela !r"e %"t0es,"isa Modo ,"e o o)1eto -i,"e ao lado do o)1eto 0dt$recho

A1"da on-line para o o)1eto espe#/-i#o Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line 5o e do o)1eto 0osi*$o es,"erda e distVn#ia do topo

Salve o -or "l+rio #o

o no e 26elCate e #o pare-o #o

o desenho a)ai.oM

!,9

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Programando no !orm$l)rio
( #>digo para este o)1eto n$o #hega a ser " tro*o estranho' edonho e es,"isito' na verdade K atK )e si ples' )asta apenas #o preender os o se" -"n#iona ento' o o)1eto DBSrid -ar+ todo o tra)alho' ostrando ao "s"+rio os registros #adastrados e " a ta)ela' a parte ,"e nos resta e progra ar o o)1eto b%tPesQ%isa de aneira ,"ase idInti#a ao nosso antigo )ot$o de pes,"isaM C>digo para o )ot$o b%tPesQ%isa' respons+vel pela ativa*$o da pes,"isaM 1. DI " d"plo #li,"e no o)1etoM

proced%re !FnSelCate.%"t0es,"isaCli#BSSenderM !()1e#tTP &ni#ia o pro#edi ento begin i2 S3dt!re#ho.!e.t Y ZZT then =eri-i#a se -oi digitado algo begin MessageDlgSZ5$o -oi espe#i-i#ado " a siglafZ' t3rror' W )(mX' 2TP 3.itP A)andona o pro#edi ento endP trP Ativa o #o ando !ry DMnModelo.!a)Categor.Find5earestSW3dt!re#ho.!e.tXTP Faz a pes,"isa na ta)ela eTcept Caso a#onte*a alg" a -alha on e.#eption do MessageDlgSZSigla espe#i-i#ada est+ inv+lidafZ' t3rror' W )(mX' 2TP endP endP !er ina o pro#edi ento

( #o ando $rP -oi "tilizado para prever os ,"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


3.iste d"as aneira de dois -or "l+rios tro#are valores de vari+veis' a )as atravKs da #ria*$o de vari+veis de-inidas na se*$o p%blic' a di-eren*a est+ o" n$o na "tiliza*$o do #o ando propertP. 5o nosso antigo )ot$o 3ocali5ar' envia os para a -"n*$o 7np%t]%erP o #>digo da #ategoria #orrente e a -"n*$o nos devolve o #>digo digitado' por,"e n$o -azer os o es oM Criando " a vari+vel de es#rita e leit"ra 1. =+ para o Code .ditor' e insira o tre#ho a)ai.oM

private 0arte de pro#edi entos privados 2%nction Get!re#hoM 6tringP F"n*$o para enviar a vari+vel proced%re Set!re#hoS5eL!re#hoM 6tringTP 0ro#edi ento para re#e)er o tre#ho p%blic 0arte de pro#edi entos p6)li#os vCriaM %ooleanP Cria " a vari+vel p6)li#a propertP Ca p!re#hoM 6tring read Get!re#ho Orite Set!re#hoP &ni#ializa " vari+vel endP

( #o ando PropertP de#lara " a vari+vel da seg"inte aneira' a s")-op*$o Read envia " string atravKs da -"n*$o >et4re"ho' e a s")-op*$o Nrite re#e)e o valor enviado atravKs da vari+vel para o pro#edi ento Set4re"ho. 7. De#larando o pro#edi ento e a -"n*$oM
2%nction !FnSelCate.Get!re#hoM 6tringP begin i2 vCria then begin 4es"lt MY DMnModelo.!a)CategorS&GnCA!3G.=al"eP DMnModelo.FreeP endF endP proced%re !FnSelCate.Set!re#hoS5eL!re#hoM 6tringTP begin i2 vCria then begin DMnModelo MY !DMnModelo.CreateSAppli#ationTP DMnModelo.!a)Categor.FindmeySW5eL!re#hoXTP endP endP &n/#io do pro#edi ento Se o DataMod"le n$o estiver #riado Cria o DataMod"le Ao#aliza o valor da string enviada &n/#io da -"n*$o =eri-i#a se o DataModule n$o e.istia Atri)"i ao res"ltado da -"n*$o o valor do #a po S&GnCA!3G

/lterando o !orm$l)rio !Categ


Deve os agora "dar o #>digo do -or "l+rio FMCateg para ativar os a pes,"isa' le )re-se ,"e o DataModule K o es o e a ta)ela ta )K ' ent$o n$o e.iste a ne#essidade de enviar os o" trazer os " a vari+vel #o a sigla da Categoria' porK le )re os do )ot$o de cancelar' pre#isa os ent$o' #aso o -or "l+rio n$o saia atravKs do )ot$o de OU' retorna os ao registro anteriorM

!!!

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Cha e o -or "l+rio FMCateg atravKs do o)1eto Pro)e"t Mana er' #li,"e no o)1eto (ut0o"ali!arM 1. DI " d"plo #li,"e no o)1etoM

proced%re !FnCateg.%"tAo#alizarCli#BSSenderM !()1e#tTP A,"i per ane#e o es o var Mar#a4egM !%ooB arBP Cria " a vari+vel de ar#a begin i2 FnMen".Criti#a3di#aoSDMnModelo.DSCategor' ZCategoriaZ' Zlo#alizarZ T then 3.itP Oith DMnModelo.!a)Categ do begin Mar#a4eg MY Get%ooBMarBP FnSelCate MY !FnSelCate.CreateSAppli#ationTP FnSelCate.vCria MY FalseP i2 not FnSelCate.ShoLModal Y r(B then Goto%ooBMarBSMar#a4egTP FnSelCate.FreeP Free%ooB arBSMar#a4egTP endF endP

Salva a posi*$o do registro Cria o -or "l+rio de #ons"lta Seta a vari+vel p6)li#a Caso a sa/da do -or "l+rio n$o se1a o )ot$o (m 4etorna ao registro ar#ado 3li ina o -or "l+rio de #ons"lta Ai)era a vari+vel de ar#a

#on1"nto #o

(s #o andos de BooUMarU s$o todos apli#ados a ta)ela por isso -oi "tilizado e " #o ando Oith para a si pli-i#a*$o do #>digo. A vari+vel de#larada objPesQ%isa n$o K ais ne#ess+ria.

5$o K ne#ess+rio #riti#ar o #o ando FindVeP pois o #>digo retornado pela vari+vel e pego direta ente do ar,"ivo. 5$o es,"e*a ,"e o o)1eto FM6elCate -az parte da Jnit 26elCate ent$o K ne#ess+rio -azer o "so desta Jnit' para tanto altere o seg"inte #>digo Sa)ai.o da diretiva de #o pila*$oTM
68R 9%D5M7 %ses -Men"' DMModelo' Dialogs' -SelCateP 6 Menu Prin"ipal do Sistema 7 6 Referen"ia ao DataModule 7 6 :tili!ado para o "ontrole da fun3=o Messa eDl 7 6 Sele"iona Cate oria 7

/lterando o !orm$l)rio !#asico


=a os -inal ente tornar 6til o o)1eto (ut0o"Cate S)ot$o para lo#alizar a #ategoriaT. 1. Cha e o -or "l+rio FMBasico e dI " d"plo #li,"e no o)1eto (ut0o"Cate

proced%re !Fn%asi#o.%"tAo#CategCli#BSSenderM !()1e#tTP begin i2 not SDMn%asi#o.DS%asi#o.State in Wds3dit' ds&nsertXT then begin MessageDlgSZ=o#I n$o est+ no odo de edi*$ofZ' t&n-or ation' W )(mX' 2TP 3.itP

!!

Borland
endP

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

FnSelCate MY !FnSelCate.CreateSAppli#ationTP FnSelCate.vCria MY !r"eP FnSelCate.Ca p!re#ho MY 3ditS&GnCA!3G.!e.tP i2 FnSelCate.ShoLModal Y r(B then 3ditS&GnCA!3G.!e.t MY FnSelCate.Ca p!re#hoP FnSelCate.FreeP endP

Cria o -or "l+rio de #ons"lta Seta a vari+vel p6)li#a Atri)"i a v+riavel de#larado o valor do #a po da tela Sdispara a -"n*$o 6et$rechoT 3.e#"ta o o)1eto FM6elCate dispara o pro#edi ento Set$recho 3li ina o -or "l+rio de #ons"lta

5ote ,"e para esse #aso n$o ,"ere os lo#alizar " a #ategoria' o)1eto 3ditC(DnCA!3G ao valor do FnSelCate.Ca p!re#ho lo#alizado

as si

atri)"ir ao

5$o es,"e*a ,"e o o)1eto FM6elCate -az parte da Jnit 26elCate ent$o K ne#ess+rio -azer o "so desta Jnit' para tanto altere o seg"inte #>digo Sa)ai.o da diretiva de #o pila*$oTM
68R 9%D5M7 %ses DM%asi#o' -Men"' Dialogs' -Categ' -M"si#a' -SelCateP 6 ReferLn"ia ao DataModule 7 6 Menu Prin"ipal do Sistema 7 6 >erente de Mensa ens 7 6 Cadastro de Cate orias 7 6 Cadastro de MOsi"as 7 6 Sele"iona Cate oria 7

Salve o -or "l+rio' retire-o da +rea de -or "l+rios a%to9create' e.e#"te e teste o pro1eto. Se alg" a #oisa de" errada' releia o #ap/t"lo' o" ent$o #on-ira o #>digo para a FM6elCateM

%nit -SelCateP inter2ace %ses OindoLs' Messages' SysJtils' Classes' Graphi#s' Controls' For s' Dialogs' 3.tCtrls' D%Ctrls' %"ttons' StdCtrls' Grids' D%GridsP tPpe !FnSelCate Y classS!For T D%5avigator1M !D%5avigatorP D%Grid1M !D%GridP 3dt!re#hoM !MasB3ditP Aa)el1M !Aa)elP %"t(mM !%it%tnP %"tCan#elaM !%it%tnP %"t0es,"isaM !Speed%"ttonP proced%re %"t0es,"isaCli#BSSenderM !()1e#tTP private =eCria M )ooleanP 2%nction Get!re#hoM StringP proced%re Set!re#hoS5eL!re#hoM StringTP p%blic propertP Ca p!re#hoM 6tring read Get!re#ho Orite Set!re#hoP !!"

Borland
endP

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

var FnSelCateM !FnSelCateP implementation 68R 9%D5M7 %ses DMCategP 6 ReferLn"ia ao DataModule 7 2%nction !FnSelCate.Get!re#hoM 6tringP begin i2 vCria then begin 4es"lt MY DMnModelo.!a)CategorS&GnCA!3G.=al"eP DMnModelo.FreeP endP endP proced%re !FnSelCate.Set!re#hoS5eL!re#hoM 6tringTP begin i2 vCria then begin DMnModelo MY !DMnModelo.CreateSAppli#ationTP DMnModelo.!a)Categor.FindmeySW5eL!re#hoXTP endP endP proced%re !FnSelCate.%"t0es,"isaCli#BSSenderM !()1e#tTP begin i2 S3dt!re#ho.!e.t Y ZZT then begin MessageDlgSZ5$o -oi espe#i-i#ado " a siglafZ' t3rror' W )(mX' 2TP 3.itP endP trP DMnModelo.!a)Categor.Find5earestSW3dt!re#ho.!e.tXTP eTcept on e.#eption do MessageDlgSZSigla espe#i-i#ada est+ inv+lidafZ' t3rror' W )(mX' 2TP endP endP end.
Co andos e s"as -"n*8es' por orde de apari*$oM

PropertP Wvari+velXM W!ipoX read W-"n*$oX Orite Wpro#edi entoX - De#lara as propriedades para " a vari+vel do tipo leit"ra SreadT e do tipo es#rita SOriteT. Res%lt - #onstante "tilizada para o retorno de " a -"n*$o. $rP Wde#lara*8esX - palavra reservada para ar#ar a pri eira parte de " )lo#o de e.#e*$o. 0Tcept W)lo#o de e.#e*$oX - #aso alg" a de#lara*$o dentro de " e.e#"tado. )lo#o de prote*$o trP a#onte*a erro este )lo#o K

!!&

Borland

Delphi e Delphi Client/Server


#on1"nto #o

Desvendando o Caminho das Pedras


o )lo#o trPAAAeTcept de-ine o #>digo para e.e#"tar " )lo#o

On Wtipo de e.#e*$oX do Wde#lara*$oX - e de e.#e*$o.

Criando 4ons05/as 6ara o 4adas/ro


A#redito ,"e vo#I deve ter a#hado estranho o t/t"lo das #ons"ltas do en" SCDHs e M6si#as por CDHsT' #o o 1+ en#ionei antes deve os per itir ao nosso "s"+rio #ons"ltas +geis pelos ar,"ivos' sen$o n$o valer+ a pena veri-i#ar no #o p"tador onde est+ deter inada 6si#a' seria ais pr+ti#o pro#"r+-la an"al ente.

Cons$ltas S+,
( o)1eto Auer/ ' "tilizado anterior ente para tra)alhar #o o " #ontador' K ais poderoso do ,"e se i agina' "tilizando-o )e nos pode os dar poderes ao nosso "s"+rio ,"e ele 1a ais i agino" ,"e -osse poss/vel' e vo#I ver+ ,"e tra)alhar #o -iltros pode-se trans-or ar e " a agrad+vel s"rpresa.

Reali0ando Cons$ltas com %iltros


(s -iltros s$o realizados para re-inar deter inados registros dentro de " ar,"ivos' ostrarei de -or a si ples #o o "tiliz+-lo' o)serve o -or "l+rio a seg"irM o" ais

=a os #riar "

-or "l+rio idInti#o a este ,"e servir+ para a

ontage

dos -iltrosM

&ni#ial ente Cli,"e no )ot$o S5eL For T na Speed Bar' o" no en" prin#ipal a Cli,"e no en" prin#ipal a op*$o File e /eOAAA' e New Items' na p+gina New e #li,"e no o)1eto entit"lado 5orm e altere as seg"intes propriedadesM
=alor )sDialog De-ine Filtros Des#ri*$o 3stilo da )orda do o)1eto Aa)el do o)1eto

0ropriedade %orderStyle Caption

!!(

Borland
5a e 0osition

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

FnFiltro poS#reenCenter

5o e do o)1eto 0osi*$o do o)1eto

Crie para esta nova 1anela os seg"intes o)1etosM

! Parte 9

ontage

do -iltro

Panel Sen#ontrado na p+gina StandardT - servir+ para g"ardar o )lo#o de ontage do -iltro' a1"ste se" ta anho 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 se pre ar,"e este o)1eto. " objetos 3abel Sen#ontrados na p+gina StandardT - altere as seg"intes propriedadesM
0ropriedade Caption Font =alor Ca po' CritKrio e Co para*$o Srespe#tiva enteT MS Sans Seri-' 5egrito' <' Castanho Des#ri*$o 5o e do o)1eto !ipo de letra a ser ostrada no o)1eto

ComboBoT Sen#ontrado na p+gina StandardT - ,"e ar azenar+ o no e dos #a pos do ar,"ivo' altere as seg"intes propriedadesM
0ropriedade 5a e Font &te s Style !e.t =alor C%Ca po MS Sans Seri-' 5or al' <' Az"l Marinho 5o eP !ipo e Categoria S" #ada linhaT #sDropDoLn e Des#ri*$o 5o e do o)1eto !ipo de letra a ser Conte6do do o)1eto 3stilo do o)1eto !e.to a ser ostrado para o Co )o ,"ando nada -or sele#ionado ostrada no o)1eto

ComboBoT Sen#ontrado na p+gina StandardT - ,"e ar azenar+ os #ritKrios de pes,"isa' altere as seg"intes propriedadesM
0ropriedade 5a e Font &te s Style !e.t =alor C%Criterio MS Sans Seri-' 5or al' <' Az"l Marinho <P >P =P ><P =<P => e Dentro de #sDropDoLn Des#ri*$o 5o e do o)1eto !ipo de letra a ser ostrada no o)1eto e #ada linhaT

Conte6do do o)1eto S#olo,"e " 3stilo do o)1eto

!e.to a ser ostrado para o Co )o ,"ando nada -or sele#ionado

0dit Sen#ontrado na p+gina StandardT - ,"e ar azenar+ o #onte6do a ser #o parado' altere as seg"intes propriedadesM
0ropriedade 5a e Font !e.t =alor 3ditCo para MS Sans Seri-' 5or al' <' Az"l Marinho Des#ri*$o 5o e do o)1eto !ipo de letra a ser !e.to a ser ostrada no o)1eto

ostrado para o #a po

!!#

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

6peedB%tton Sen#ontrado na p+gina #dditionalT - )ot$o ,"e #on-ir ar+ a #ondi*$o para o -iltro es#olhida' altere as seg"intes propriedadesM
0ropriedade Glyph ?int ShoL?int 5a e =alor Des#ri*$o a ser ostrada no o)1eto WDiret>rioDelphiXk&MAG3Sk%J!! & age (5SkC(0l.%M0 Con-ir a os dados digitados !r"e %"t3nvia

A1"da on-line para o o)1eto espe#/-i#o Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line 5o e do o)1eto

6peedB%tton Sen#ontrado na p+gina #dditionalT - este )ot$o servir+ para #ha ar a tela de #ons"lta a ta)ela' -i#ando original ente invis/vel' sendo ativado #aso o #a po es#olhido se1a a Csigla da #ategoriaD' altere as seg"intes propriedadesM
0ropriedade Glyph ?int ShoL?int 5a e =isi)le =alor Des#ri*$o WDiret>rioDelphiXk&MAG3Sk%J!! & age a ser ostrada no o)1eto S#ons"lte o #ap.;' (5SkAA5!345A.%M0 #ria*$o do o)1eto %"tAo#Categ so)re a i age T 0es,"isa Categoria !r"e %"tCons"lta False A1"da on-line para o o)1eto espe#/-i#o Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line 5o e do o)1eto ()1eto deve ser ostrado

Parte 9 servir+ para g"ardar o -iltro ontado e es#onder+ o -iltro e S@A' a1"ste se" ta anho para #a)er os o"tros o)1etos

ling"age

p"ra

Sro%pBoT Sen#ontrado na p+gina StandardT - servir+ para g"ardar os )lo#os ontados do -iltro' a1"ste se" ta anho para #a)er os o"tros o)1etos' altere as seg"intes propriedadesM
0ropriedade Caption Font =alor Filtro Co pleto MS Sans Seri-' 5egrito' <' Castanho Des#ri*$o Aa)el do o)1eto !ipo de letra a ser ostrada no o)1eto

0dit Sen#ontrado na p+gina StandardT - ,"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 propriedadesM
0ropriedade %orderStyle Color Ctl9D Font 5a e 4ead(nly =alor )s5one #l%tnFalse S es a #or do o)1eto >roupBo@T False MS Sans Seri-' 5or al' <' Castanho Filtro=e !r"e Des#ri*$o 3stilo da )orda Cor do o)1eto 0oss"i desenho e !ipo de letra a ser 5o e do o)1eto ()1eto apenas para leit"ra' n$o per itida altera*$o do se" #onte6do. 9D ostrada no o)1eto

!!+

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

0dit Sen#ontrado na p+gina StandardT- ,"e ontar+ o nosso -iltro e ling"age p"ra S@A' ele -i#ar+ invis/vel e odo de e.e#"*$o' altere as seg"intes propriedadesM
0ropriedade 5a e =isi)le =alor FiltroS@A False Des#ri*$o 5o e do o)1eto Se o o)1eto -i#ar+ vis/vel

" Parte 9 )ot8es de #ontrole


BitBtn Sen#ontrado na p+gina #dditionalT - )ot$o ,"e servir+ para #l+"s"la C3 !ipoM :m e 'utroD' -i#ar+ ini#ial ente desa)ilitado e odo de e.e#"*$o' altere as seg"intes propriedadesM
0ropriedade 5a e Glyph Font ?int ShoL?int Caption 3na)led =alor %"t3 Des#ri*$o 5o e do o)1eto a ser ostrada no o)1eto ostrada no o)1eto

WDiret>rioDelphiXk&MAG3Sk%J!! & age (5SkF(AD4D(C.%M0 MS Sans Seri-' 5or al' <' 0reto J CeD ("tro !r"e p3 False

!ipo de letra a ser

A1"da on-line para o o)1eto espe#/-i#o Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line Aa)el do ()1eto ?a)ilita*$o para o "so

BitBtn Sen#ontrado na p+gina #dditionalT- )ot$o ,"e servir+ de C(" - !ipoM :m ou 'utroD' -i#ar+ ini#ial ente desa)ilitado e odo de e.e#"*$o' altere as seg"intes propriedadesM
0ropriedade 5a e Glyph Font ?int ShoL?int Caption 3na)led =alor %"t(" Des#ri*$o 5o e do o)1eto a ser ostrada no o)1eto ostrada no o)1eto

WDiret>rioDelphiXk&MAG3Sk%J!! & age (5SkF(5!%(AD.%M0 MS Sans Seri-' 5or al' <' 0reto J Co"D ("tro !r"e (p" False

!ipo de letra a ser

A1"da on-line para o o)1eto espe#/-i#o Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line Aa)el do ()1eto ?a)ilita*$o para o "so

BitBtn Sen#ontrado na p+gina #dditionalT - )ot$o ,"e servir+ para li par o -iltro' -i#ar+ ini#ial ente desa)ilitado e odo de e.e#"*$o' altere as seg"intes propriedadesM
0ropriedade 5a e Glyph Font ?int ShoL?int =alor %"tAi par Des#ri*$o 5o e do o)1eto a ser ostrada no o)1eto ostrada no o)1eto

WDiret>rioDelphiXk&MAG3Sk%J!! & age (5SkCA3A4.%M0 MS Sans Seri-' 5or al' <' 0reto Apaga o -iltro e.istente !r"e

!ipo de letra a ser

A1"da on-line para o o)1eto espe#/-i#o Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line

!!)

Borland
Caption 3na)led

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

pAi par False

Aa)el do ()1eto ?a)ilita*$o para o "so

BitBtn Sen#ontrado na p+gina #dditionalT - )ot$o ,"e servir+ para #on-ir ar o -iltro' ele -i#ar+ ini#ial ente desa)ilitado e odo de e.e#"*$o' altere as seg"intes propriedadesM
0ropriedade mind =alor )B(m Des#ri*$o Deter ina a #lasse a ser "tilizada pelo o)1eto' a"to ati#a ente ser$o alteradas as propriedadesM Caption' SlPph e ModalRes%lt 5o e do o)1eto !ipo de letra a ser ostrada no o)1eto A1"da on-line para o o)1eto espe#/-i#o Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line Aa)el do ()1eto ?a)ilita*$o para o "so

5a e Font ?int ShoL?int Caption 3na)led

%"t(m MS Sans Seri-' 5or al' <' 0reto Con-ir a o -iltro editado !r"e p(m False

BitBtn Sen#ontrado na p+gina #dditionalT - )ot$o ,"e servir+ para a)andonar o -iltro' altere as seg"intes propriedadesM
0ropriedade mind =alor )BCA5C3A Des#ri*$o Deter ina a #lasse a ser "tilizada pelo o)1eto' a"to ati#a ente ser$o alteradas as propriedadesM Caption' SlPph e ModalRes%lt 5o e do o)1eto !ipo de letra a ser ostrada no o)1eto A1"da on-line para o o)1eto espe#/-i#o Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line Aa)el do ()1eto

5a e Font ?int ShoL?int Caption

%"tCan#ela MS Sans Seri-' 5or al' <' 0reto Can#ela o -iltro editado !r"e pCan#elar

Programando o !orm$l)rio
Antes de prosseg"ir os salve o -or "l+rio #o o no e de -Filtro. ( #>digo para este o)1eto K si ples re,"er apenas ,"e vo#I #o preenda ,"e o -or "l+rio deve -azer. 3ste -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' deve os devolver o #>digo ,"e #o pletar+ a e.e#"*$o de " o)1eto Auer/ #olo#ado no seg"ndo. 3..M S3A3C! o F4(M %AS&C( O?343 W#ondi*$o #riada no -or "l+rioX M C>digo para o )ot$o b%t0nvia' ,"ando -or #on-ir ado os dados digitadosM 1. DI " d"plo #li,"e no o)1etoM

proced%re !FnFiltro.%"t3nviaCli#BSSenderM !()1e#tTP var 5o eCa po M 6tringP begin case #)Ca po.&te &nde. o2

Cria " a vari+vel para ar azenar o no e real do #a po Sele#iona o no e do #a po #orreto

!!9

Borland

Delphi e Delphi Client/Server para o S@A

Desvendando o Caminho das Pedras

2 6 Nome 7 M 5o eCa poMY Z5(MnD&SC(ZP 1 6 4ipo 7 M 5o eCa poMY Z!&0nD&SC(ZP 7 6 Cate oria 7 M 5o eCa poMY ZS&GnCA!3GZP endP

i2 S#)Criterio.&te &nde. Y ;T then se o CritKrio es#olhido -or CDentro deD FiltroS@A.!e.t MY FiltroS@A.!e.t \ ZSZ \ 5o eCa po #o ando CA&m3D e S@A \ Z Z \ ZAiBe ZZtZ \ 3ditCo para.!e.t \ ZtZZTZ else FiltroS@A.!e.t MY FiltroS@A.!e.t \ ZSZ \ 5o eCa po #aso #ontr+rio atri)"i o valor \ Z Z \ #)Criterio.!e.t \ ZZZZ \ 3ditCo para.!e.t \ ZZZTZP es#olhido C_' ` ' _Y' `Y e `_D Filtro=e.!e.t MY Filtro=e.!e.t \ #)Ca po.!e.t \ Z Z \ #)Criterio.!e.t \ Z Z \ 3ditCo para.!e.tP #)Ca po.&te &nde. MY -1P #)Criterio.&te &nde. MY -1P 3ditCo para.!e.t MY ZZP #)Ca po.3na)led MY FalseP #)Criterio.3na)led MY FalseP 3ditCo para.3na)led MY FalseP %"tCons"lta.=isi)le MY FalseP %"t3.3na)led MY !r"eP %"t(".3na)led MY !r"eP %"t(B.3na)led MY !r"eP %"tAi pa.3na)led MY !r"eP endP A#erta o -iltro 4eseta os trIs #a pos envolvidos

Desa)ilita os #a pos de edi*$o

?a)ilita os )ot8es

#aso o siste a ,"e vo#I desenvolver tenha #a pos do tipo Data altere a linha do #ritKrio para o seg"inteM
i2 S#)Criterio.&te &nde. Y ;T then CritKrio sDentro des i2 #)Ca po.&te &nde. in Wn6 ero do #a pos dataX then =I os #a pos Data FiltroS@A.!e.t MY FiltroS@A.!e.t \ ZSZ \ 5o eCa po \ Z Z \ Condi*$o para este tipo de # p ZAiBe ZZtZ \ For atDate!i eSZMM/DD/llZ'Str!oDateS3ditCo para.!e.tTT \ ZtZZTZ else FiltroS@A.!e.t MY FiltroS@A.!e.t \ ZSZ \ 5o eCa po \ Z Z \ Condi*$o #o " para o A&m3 ZAiBe ZZtZ \ 3ditCo para.!e.t \ ZtZZTZ else As o"tras #ondi*8es i2 #)Ca po.&te &nde. Y in Wn6 ero do #a pos dataX then =I os #a pos Data FiltroS@A.!e.t MY FiltroS@A.!e.t \ ZSZ \ 5o eCa po \ Z Z \ #)Criterio.!e.t \ ZZZZ \ For atDate!i eSZMM/DD/llZ'Str!oDateS3ditCo para.!e.tTT \ ZZZTZ else Condi*8es para o"tros #a pos FiltroS@A.!e.t MY FiltroS@A.!e.t \ ZSZ \ 5o eCa po \ Z Z \ #)Criterio.!e.t \ ZZZZ \ 3ditCo para.!e.t \ ZZZTZP

...o resto -i#ar+ idInti#o. 5$o es,"e*a no #o ando W606 #olo#ar a )i)liote#a 6PsWtils para a -"n*$o FormatDate$ime C>digo para o )ot$o b%t0' ,"ando ser+ es#olhida CeD " a o"tra #ondi*$oM

! ,

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

1. DI "

d"plo #li,"e no o)1etoM

proced%re !FnFiltro.%"t3Cli#BSSenderM !()1e#tTP begin Filtro=e.!e.t MY Filtro=e.!e.t \ Z 3 ZP FiltroS@A.!e.t MY FiltroS@A.!e.t \ Z And ZP #)Ca po.3na)led MY !r"eP #)Criterio.3na)led MY !r"eP 3ditCo para.3na)led MY !r"eP %"tAi pa.3na)led MY !r"eP %"t3.3na)led MY FalseP %"t(".3na)led MY FalseP %"t(B.3na)led MY FalseP endP

Altera os -iltros ?a)ilita os #a pos de edi*$o

Desa)ilita os )ot8es

C>digo para o )ot$o b%tO%' ,"ando ser+ es#olhida Co"D " a o"tra #ondi*$oM 1. DI " d"plo #li,"e no o)1etoM

proced%re !FnFiltro.%"t("Cli#BSSenderM !()1e#tTP begin Filtro=e.!e.t MY Filtro=e.!e.t \ Z (" ZP FiltroS@A.!e.t MY FiltroS@A.!e.t \ Z (r ZP #)Ca po.3na)led MY !r"eP #)Criterio.3na)led MY !r"eP 3ditCo para.3na)led MY !r"eP %"tAi pa.3na)led MY !r"eP %"t3.3na)led MY FalseP %"t(".3na)led MY FalseP %"t(B.3na)led MY FalseP endP

Altera os -iltros ?a)ilita os #a pos de edi*$o

Desa)ilita os )ot8es

C>digo para o )ot$o b%t3impa' ,"ando -or li po os -iltrosM 1. DI " d"plo #li,"e no o)1etoM

proced%re !FnFiltro.%"tAi paCli#BSSenderM !()1e#tTP begin #)Ca po.&te &nde. MY -1P #)Criterio.&te &nde. MY -1P 3ditCo para.!e.t MY ZZP Filtro=e.!e.t MY ZZP FiltroS@A.!e.t MY ZSele#t o -ro %asi#o Lhere ZP #)Ca po.3na)led MY !r"eP #)Criterio.3na)led MY !r"eP 3ditCo para.3na)led MY !r"eP %"t3.3na)led MY FalseP %"t(".3na)led MY FalseP %"t(B.3na)led MY FalseP %"tAi pa.3na)led MY FalseP endP

&ni#ia todas as #ondi*8es

?a)ilita os #a pos de edi*$o

Desa)ilita os )ot8es

@"ando o -or "l+rio -or #riado K ini#iado o -iltroM

! !

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

1. Sele#ione o o)1eto FMFiltro na tela de eventos dI " (nCreateM


proced%re !FnFiltro.For CreateSSenderM !()1e#tTP begin Filtro=e.!e.t MY ZZP FiltroS@A.!e.t MY ZSele#t o -ro %AS&C( Lhere ZP endP

d"plo #li#B so)re a op*$o

Ai pa o -iltro vis/vel &ni#ia o -iltro es#ondido

Caso o #a po es#olhido se1a CSigla da CategoriaD K ne#ess+rio ha)ilitar o )ot$o de #ons"ltaM 1. Sele#ione o o)1eto CBCampo na tela de eventos dI " d"plo #li,"e na op*$o OnChangeM

proced%re !FnFiltro.C%Ca poChangeSSenderM !()1e#tTP begin C%Criterio.SetFo#"sP i2 #)Ca po.&te &nde. Y 7 then %"tCons"lta.=isi)le MY $r%e else %"tCons"lta.=isi)le MY FalseP endP

Desvia o -o#o para o pr>.i o #a po Se o #a po sele#iona -or S&GnCA!3G !orna vis/vel o o)1eto %"tCons"lta Sen$o !orna invis/vel o o)1eto %"tCons"lta

C>digo para o o)1eto B%tCons%lta ,"e -ar+ a #ons"lta de #ategoriaM 1. DI " d"plo #li,"e no o)1etoM

proced%re !FnFiltro.%"tCons"ltaCli#BSSenderM !()1e#tTP begin i2 #)Ca po.&te &nde. Y 7 then Se o #a po -or S&GnCA!3G begin FnSelCate.Ca p!re#ho MY 3ditCo para.!e.tP 3nvia o #a po i2 FnSelCate.&ni#io Y r(B then =eri-i#a se -oi retornado (m 3ditCo para.!e.t MY FnSelCate.Ca p!re#hoP !rans-ere o #a po endP endP

0er-" aria para o o)1eto CBCriterio ,"ando sele#ionado " #ritKrio ser+ o #ontrole trans-erido para o #a po seg"inteM 1. Sele#ione o o)1eto na tela de eventos e dI " d"plo #li,"e na op*$o OnChangeM

proced%re !FnFiltro.C%CriterioChangeSSenderM !()1e#tTP begin 3ditCo para.SetFo#"sP endP

Desvia o -o#o para o pr>.i o #a po

5e#essita os agora #riar " a vari+vel #o " se#"nd+riaM !rans-ira para a 1anela do Code 0ditorM 1. Ap>s o #o ando 04&=A!3 digiteM

,"e devolver+ o #>digo S@A para a tela

private 2%nction GetS@AM !3ditP p%blic propertP S@AString M !3dit read GetS@AP endP

&ni#ia " a -"n*$o 0arti#"lar &ni#ia " a vari+vel p6)li#a s> de leit"ra

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

var FnFiltroM !FnFiltroP implementation ba4 o.DFMc %ses -SelCateP 2%nction !FnFiltro.GetS@AM !3ditP begin 4es"lt MY FiltroS@AP endP Jtiliza*$o das )i)liote#as Sele#iona Categoria

3nvia #o o res"ltado para a vari+vel o -iltro es#ondido

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 #>digo para a FMFiltroM

%nit F-iltroP inter2ace %ses Oin!ypes' Oin0ro#s' Classes' Graphi#s' For s' Controls' %"ttons' StdCtrls' 3.tCtrlsP tPpe !FnFiltro Y #lassS!For T 0anel1M !0anelP C%Ca poM !Co )o%o.P C%CriterioM !Co )o%o.P 3ditCo paraM !3ditP %"t3nviaM !Speed%"ttonP Gro"p%o.1M !Gro"p%o.P Aa)el1M !Aa)elP Aa)el7M !Aa)elP Aa)el9M !Aa)elP %"tCan#elaM !%it%tnP %"t3M !%it%tnP %"t("M !%it%tnP Aa)el:M !Aa)elP Filtro=eM !3ditP FiltroS@AM !3ditP %"t(BM !%it%tnP %"tAi paM !%it%tnP %"tCons"ltaM !Speed%"ttonP proced%re %"t3nviaCli#BSSenderM !()1e#tTP proced%re %"t3Cli#BSSenderM !()1e#tTP proced%re %"t("Cli#BSSenderM !()1e#tTP proced%re %"tAi paCli#BSSenderM !()1e#tTP proced%re For CreateSSenderM !()1e#tTP proced%re C%Ca poChangeSSenderM !()1e#tTP proced%re %"tCons"ltaCli#BSSenderM !()1e#tTP proced%re C%CriterioChangeSSenderM !()1e#tTP private 2%nction GetS@AM !3ditP

! "

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

p%blic propertP S@AString M !3dit read GetS@AP endP var FnFiltroM !FnFiltroP implementation ba4 o.DFMc %ses -SelCateP 2%nction !FnFiltro.GetS@AM !3ditP begin 4es"lt MY FiltroS@AP endP proced%re !FnFiltro.%"t3nviaCli#BSSenderM !()1e#tTP var 5o eCa po M 6tringP begin case #)Ca po.&te &nde. o2 2 6 Nome 7 M 5o eCa poMY Z5(MnD&SC(ZP 1 6 4ipo 7 M 5o eCa poMY Z!&0nD&SC(ZP 7 6 Cate oria 7 M 5o eCa poMY ZS&GnCA!3GZP endP i2 S#)Criterio.&te &nde. Y ;T then FiltroS@A.!e.t MY FiltroS@A.!e.t \ ZSZ \ 5o eCa po \ Z Z \ ZAiBe ZZtZ \ 3ditCo para.!e.t \ ZtZZTZ else FiltroS@A.!e.t MY FiltroS@A.!e.t \ ZSZ \ 5o eCa po \ Z Z \ #)Criterio.!e.t \ ZZZZ \ 3ditCo para.!e.t \ ZZZTZP Filtro=e.!e.t MY Filtro=e.!e.t \ #)Ca po.!e.t \ Z Z \ #)Criterio.!e.t \ Z Z \ 3ditCo para.!e.tP #)Ca po.&te &nde. MY -1P #)Criterio.&te &nde. MY -1P 3ditCo para.!e.t MY ZZP #)Ca po.3na)led MY FalseP #)Criterio.3na)led MY FalseP 3ditCo para.3na)led MY FalseP %"tCons"lta.=isi)le MY FalseP %"t3.3na)led MY !r"eP %"t(".3na)led MY !r"eP %"t(B.3na)led MY !r"eP %"tAi pa.3na)led MY !r"eP endP proced%re !FnFiltro.%"t3Cli#BSSenderM !()1e#tTP begin

! &

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Filtro=e.!e.t MY Filtro=e.!e.t \ Z 3 ZP FiltroS@A.!e.t MY FiltroS@A.!e.t \ Z And ZP #)Ca po.3na)led MY !r"eP #)Criterio.3na)led MY !r"eP 3ditCo para.3na)led MY !r"eP %"tAi pa.3na)led MY !r"eP %"t3.3na)led MY FalseP %"t(".3na)led MY FalseP %"t(B.3na)led MY FalseP endP proced%re !FnFiltro.%"t("Cli#BSSenderM !()1e#tTP begin Filtro=e.!e.t MY Filtro=e.!e.t \ Z (" ZP FiltroS@A.!e.t MY FiltroS@A.!e.t \ Z (r ZP #)Ca po.3na)led MY !r"eP #)Criterio.3na)led MY !r"eP 3ditCo para.3na)led MY !r"eP %"tAi pa.3na)led MY !r"eP %"t3.3na)led MY FalseP %"t(".3na)led MY FalseP %"t(B.3na)led MY FalseP endP proced%re !FnFiltro.%"tAi paCli#BSSenderM !()1e#tTP begin #)Ca po.&te &nde. MY -1P #)Criterio.&te &nde. MY -1P 3ditCo para.!e.t MY ZZP Filtro=e.!e.t MY ZZP FiltroS@A.!e.t MY ZSele#t o -ro %AS&C( Lhere ZP #)Ca po.3na)led MY !r"eP #)Criterio.3na)led MY !r"eP 3ditCo para.3na)led MY !r"eP %"t3.3na)led MY FalseP %"t(".3na)led MY FalseP %"t(B.3na)led MY FalseP %"tAi pa.3na)led MY FalseP endP proced%re !FnFiltro.For CreateSSenderM !()1e#tTP begin Filtro=e.!e.t MY ZZP FiltroS@A.!e.t MY ZSele#t o -ro %asi#o Lhere ZP endP proced%re !FnFiltro.C%Ca poChangeSSenderM !()1e#tTP begin C%Criterio.SetFo#"sP i2 #)Ca po.&te &nde. Y 7 then

! (

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

%"tCons"lta.=isi)le MY $r%e else %"tCons"lta.=isi)le MY FalseP endP proced%re !FnFiltro.%"tCons"ltaCli#BSSenderM !()1e#tTP begin i2 #)Ca po.&te &nde. Y 7 then begin FnSelCate.Ca p!re#ho MY 3ditCo para.!e.tP i2 FnSelCate.&ni#io Y r(B then 3ditCo para.!e.t MY FnSelCate.Ca p!re#hoP endP endP proced%re !FnFiltro.C%CriterioChangeSSenderM !()1e#tTP begin 3ditCo para.SetFo#"sP endP end.

5$o -oi #olo#ado nenh"

#o ando ,"e 1+ n$o tenha sido visto anterior ente

Criando o !orm$l)rio 4erente do %iltro


Criado o -or "l+rio anterior' a idKia agora K a seg"inte' #riare os " o"tro -or "l+rio ,"e #onter+ " o)1eto d(>rid para ostrar todos os #a pos de deter inada 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 atravKs do SpeedButton S#adeadoT' o" ainda ser+ poss/vel editar " registro sele#ionado M

=a os #riar "

-or "l+rio idInti#o a este ,"e servir+ para o geren#ia ento do -iltroM

! #

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

&ni#ial ente Cli,"e no )ot$o S5eL For T na Speed Bar' o" no en" prin#ipal a Cli,"e no en" prin#ipal a op*$o File e /eOAAA' e New Items' na p+gina New e #li,"e no o)1eto entit"lado 5orm e altere as seg"intes propriedadesM
=alor )sDialog Cons"lta aos Dis#os FnConDis# poS#reenCenter Des#ri*$o 3stilo da )orda do o)1eto Aa)el do o)1eto 5o e do o)1eto 0osi*$o do o)1eto

0ropriedade %orderStyle Caption 5a e 0osition

Crie para esta nova 1anela os seg"intes o)1etosM $able Sen#ontrado na p+gina Data #""essT - !a)ela ,"e se alternar+ #o altere as seg"intes propriedadesM a ,"ery'

0ropriedade Data)ase5a e !a)le5a e 5a e

=alor AliasDis#o %AS&C(.D%F !a)%asi#o

Des#ri*$o 5o e do Alias o" a lo#aliza*$o do diret>rio das ta)elas 5o e e.terno da ta)ela 5o e do o)1eto 5o e do #a po inde.ado

&nde.Field5a es 5(MnD&SC(

Data6o%rce Sen#ontrado na p+gina Data #""essT - 0osi#ione-o ao lado do o)1eto 4a(Basi"o. ' altere as seg"intes propriedadesM
0ropriedade DataSet 5a e =alor !a)%asi#o DS%asi#o Des#ri*$o 5o e da ta)ela vin#"lada 5o e do o)1eto

]%erP Sen#ontrado na p+gina Data #""essT - @"ery ,"e se alternar+ #o ta)ela' altere as seg"intes propriedadesM
0ropriedade Data)ase5a e S@A 5a e =alor AliasDis#o S3A3C! o F4(M %AS&C( @ry%asi#o Des#ri*$o 5o e do Alias o" a lo#aliza*$o do diret>rio das ta)elas Co ando S@A para #ons"lta 5o e do o)1eto

DB/avigator Sen#ontrado na p+gina Data ControlsT - %arra de navega*$o ,"e servir+ para andar so)re os registro' le )re-se n$o deve ser per itida an"ten*$o nos es osM
0ropriedade DataSo"r#e =isi)le%"ttons ?ints ShoL?int =alor DS%asi#o Wn)First' n)0rior' n)5e.t' n)AastX 0ri eiroP AnteriorP 0r>.i oP ]lti o !r"e Des#ri*$o DataSo"r#e asso#iado %ot8es vis/veis A1"da on-line ,"e ser+ ostrado so)re #ada )ot$o S#olo,"e " e #ada linhaT Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line

6peedB%tton Sen#ontrado na p+gina #dditionalT - )ot$o ,"e servir+ para ativar o" desativar o -iltro' altere as seg"intes propriedadesM
0ropriedade 5a e =alor %"tAtivaDesativa Des#ri*$o 5o e do o)1eto

! +

Borland
Glyph ?int ShoL?int Gro"p&nde.

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

WDiret>rioDelphiXk&MAG3Sk%J!! & age (5SkA(Cm(035.%M0 Ativa/Desativa o -iltro !r"e 1

a ser

ostrada no o)1eto

A1"da on-line para o o)1eto espe#/-i#o Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line 0erten#e a " gr"po de )ot8es' esta propriedade -az #o ,"e o )ot$o per ane*a e estado de pressiona ento. 0er ite ,"e " gr"po de )ot8es n$o tenha nenh" )ot$o e estado de pressiona ento.

AlloLAllJp

!r"e

BitBtn Sen#ontrado na p+gina #dditionalT - )ot$o ,"e servir+ para -iltro' altere as seg"intes propriedadesM
0ropriedade Caption Font Glyph ?int 5a e ShoL?int =alor Filptrar MS Sans Seri-' 5or al' <' 0reto Des#ri*$o Aa)el do o)1eto !ipo de letra a ser a ser ostrada no o)1eto ostrada no o)1eto

ontage

do

WDiret>rioDelphiXk&MAG3Sk%J!! & age (5SkF&5D.%M0 Montage %"tFiltrar !r"e do Filtro

A1"da on-line para o o)1eto espe#/-i#o 5o e do o)1eto Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line

BitBtn Sen#ontrado na p+gina #dditionalT - )ot$o ,"e servir+ para editar o #a po sele#ionado no grid' altere as seg"intes propriedadesM
0ropriedade Caption Font Glyph ?int 5a e ShoL?int =alor p3ditar MS Sans Seri-' 5or al' <' 0reto Des#ri*$o Aa)el do o)1eto !ipo de letra a ser a ser ostrada no o)1eto ostrada no o)1eto

WDiret>rioDelphiXk&MAG3Sk%J!! & age (5SkF(AD4D(C.%M0 3dita #a po sele#ionado %"t3ditar !r"e

A1"da on-line para o o)1eto espe#/-i#o 5o e do o)1eto Mostrar o #onte6do da propriedade hint so) a -or a de " a #ai.a de a1"da on-line

BitBtn Sen#ontrado na p+gina #dditionalT - )ot$o ,"e servir+ para editar o -iltro' altere as seg"intes propriedadesM
0ropriedade mind =alor )BClose Des#ri*$o Deter ina a #lasse a ser "tilizada pelo o)1eto' a"to ati#a ente ser$o alteradas as propriedadesM Caption' SlPph e ModalRes%lt 5o e do o)1eto !ipo de letra a ser Aa)el do ()1eto ostrada no o)1eto

5a e Font Caption

%"tFe#har MS Sans Seri-' 5or al' <' 0reto pFe#har

dbSrid Sen#ontrado na p+gina Data ControlsT - ()1eto Grid ,"e #a pos' altere as seg"intes propriedadesM
0ropriedade DataSo"r#e =alor DSDo#" Des#ri*$o

ostrar+ os

Deter ina a #lasse a ser "tilizada pelo o)1eto' a"to ati#a ente ser$o alteradas as propriedadesM Caption' SlPph e ModalRes%lt

! )

Borland
5a e Font (ptions !itleFont

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

d)Grid%asi#o MS Sans Seri-' 5or al' <' Az"l Marinho dg!itles' dg&ndi#ator' dgColAines' dg4oLAines' dg4oLSele#t MS Sans Seri-' 5egrito' <' Castanho

5o e do o)1eto !ipo de letra a ser (p*8es do Grid !ipo de letra a ser ostrada para o t/t"lo dos #a pos ostrada para os #a pos

Programando o !orm$l)rio
Antes de prosseg"ir os salve o -or "l+rio #o o no e de -ConDis#. 3ste -or "l+rio ostrar+ os dados -iltrados no o)1eto d(>rid' para -iltrar os dados "tilizare os o o)1eto Auer/' t"do o ,"e te os a -azer K #ontrolar ,"ando o -iltro est+ ativo So)1eto DataSour"e aponta para o o)1eto Auer/T o" ,"ando o -iltro n$o est+ ativo So)1eto DataSour"e aponta para o o)1eto t4a(leT C>digo para ,"ando o -or "l+rio K ini#iado' a)ert"ra das ta)elasM 1. =ire para o Code0ditor e insira o seg"inte #>digo a)ai.oM

private 6 Private de"larations 7 p%blic proced%re &ni#ioP endP var FnConDis#M !FnConDis#P implementation 68R 9%D5M7 %ses -Filtro' -3dtDis#P proced%re !FnConDis#.&ni#ioP begin !a)%asi#o.(penP ShoLModalP endF

De#lara "

pro#edi ento p6)li#o

Jtiliza a Jnit para a ontage do -iltro Jtiliza a Jnit para a edi*$o do registro

&ni#ia a ta)ela Mostra o -or "l+rio e

odo

odal

C>digo para o )ot$o Filtrar' ,"ando -or soli#itada a edi*$o do -iltro. 1. DI " d"plo #li,"e no o)1eto b%tFiltrarM

proced%re !FnConDis#.%"tFiltrarCli#BSSenderM !()1e#tTP begin i2 %"tAtivaDesativa.DoLn then =eri-i#a se o )ot$o de prender o -iltro begin est+ pressionado. MessageDlgSZDesative a -iltrage antes de editar os -iltros...Z' t&n-or ation' W )(mX' 2TP e.itP endF

! 9

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

i2 FnFiltro.ShoLModal Y r(B then begin @ry%asi#o.S@A.ClearP @ry%asi#o.S@A.AddSFnFiltro.S@AString.!e.tTP endF endF

Cha a o -iltro e se -or retornado (m Ai pa a @"ery Adi#iona o novo -iltro na @"ery

C>digo para o )ot$o 3ditar' ,"ando -or ar#ado " 1. DI " d"plo #li,"e no o)1eto b%t0ditarM

registro para vis"aliza*$o geral.

proced%re !FnConDis#.%"t3ditarCli#BSSenderM !()1e#tTP begin i2 %"tAtivaDesativa.DoLn then Fn3dtDis#.&ni#ioS@ry%asi#oC(DnD&SC(.=al"eT else Fn3dtDis#.&ni#ioS!a)%asi#oC(DnD&SC(.=al"eTP endP

=eri-i#a se e.iste -iltro preso Cha a a edi*$o atravKs da @"ery Cha a a edi*$o atravKs da t!a)le

C>digo para o )ot$o Ativa o" Desativa o -iltro' para prender o" li)erar o -iltro. 1. DI " d"plo #li,"e no o)1eto b%tAtivaDesativaM

proced%re !FnConDis#.%"tAtivaDesativaCli#BSSenderM !()1e#tTP begin i2 not %"tAtivaDesativa.DoLn then Se o -iltro n$o estiver ativo DS%asi#o.Dataset MY !a)%asi#o Colo#a o DataSo"r#e apontado para o t!a)le else trP Cl+"s"la para " )lo#o de e.#e*$o @ry%asi#o.CloseP Desativa a @"ery @ry%asi#o.(penP Ativa a @"ery DS%asi#o.Dataset MY @ry%asi#oP Colo#a o DataSo"r#e apontado para a @"ery eTcept Caso de alg" a #oisa errada #o o -iltro DS%asi#o.Dataset MY !a)%asi#oP Colo#a o DataSo"r#e apontado para o t!a)le raiseP Co ple ento do #o ando $rPAAAeTceptAAAraise endP endP

Salve o -or "l+rio. Co #erteza ser+ ostrado " erro para a #ha ada da "nit FM0dtDisc.

Editando os registros
( -or "l+rio ,"e editar+ os registro n$o ser+ ontado passo a passo' pois K "ito si ples de ser #onstr"/do' ao invKs disto darei apenas alg" as di#as a respeito da #ria*$o do es oM 1. Copie o -or "l+rio FMBasico' reno eando-o para FM0dtDiscP 7. 4e ova os o)1etos db/avigator' ]%erP e as ta)elas tabCategCon2 e tabBasicoCon2' das ta)elas restante' entre no Fields0ditor de #ada " a e re ova os #a posP 9. 4etire todo o #>digo e prote1a as ta)elas #o 5. &nsira os seg"intes pro#edi entosM a op*$o Read'nl/ P 4rueP :. 4etire todos os )ot8es' dei.ando apenas o )ot$o para Fe#har o -or "l+rioP

!",

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

a. 0ro#ed"re &5&C&(' nas de#lara*8es p%blic S pro#ed"re &ni#ioSvar CodDis#oM &ntegerTP T proced%re !Fn3dtDis#.&ni#ioSvar CodDis#oM &ntegerTP begin !a)%asi#o.(penP A)re as ta)elas !a)M"si#a.(penP !a)Categ.(penP !a)%asi#o.FindmeySCodDis#oTP 0osi#iona a ta)ela %asi#o no CodDis#o enviado ShoLModalP endF ). 0ro#ed"re For Close' no evento OnClose do o)1eto Fn3dtDis# proced%re !Fn3dtDis#.For CloseSSenderM !()1e#tP var A#tionM !CloseA#tionTP begin !a)%asi#o.CloseP Fe#ha as ta)elas !a)M"si#a.CloseP !a)Categ.CloseP endP

;. Salve e #o pile o -or "l+rio #o

o no e 20dtDisc.

Agora si ' vo#I pode #o pilar o pro1eto e rodar o pro1eto' para " a #on-erIn#ia -inal a/ vai o #>digo #o pleto do -or "l+rio FMConDisc.

%nit F#ondis#P inter2ace %ses Oin!ypes' Oin0ro#s' Messages' Classes' Graphi#s' Controls' For s' Dialogs' D%' D%!a)les' Grids' D%Grids' StdCtrls' %"ttons' 3.tCtrls' D%CtrlsP tPpe !FnConDis# Y classS!For T D%Grid1M !D%GridP DS%asi#oM !DataSo"r#eP %"tFiltrarM !%it%tnP %"tFe#harM !%it%tnP @ry%asi#oM !@"eryP D%5avigator1M !D%5avigatorP !a)%asi#oM !!a)leP %"t3ditarM !%it%tnP %"tAtivaDesativaM !Speed%"ttonP !a)%asi#oC(DnD&SC(M !S allintFieldP !a)%asi#o5(MnD&SC(M !StringFieldP !a)%asi#o!&0nD&SC(M !StringFieldP !a)%asi#oC(DnCA!3GM !StringFieldP @ry%asi#oC(DnD&SC(M !S allintFieldP @ry%asi#o5(MnD&SC(M !StringFieldP @ry%asi#o!&0nD&SC(M !StringFieldP @ry%asi#oC(DnCA!3GM !StringFieldP proced%re %"tFiltrarCli#BSSenderM !()1e#tTP

!"!

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

proced%re %"t3ditarCli#BSSenderM !()1e#tTP proced%re %"tAtivaDesativaCli#BSSenderM !()1e#tTP private 6 Private de"larations 7 p%blic pro#ed"re &ni#ioP endP var FnConDis#M !FnConDis#P implementation 68R 9%D5M7 %ses -Filtro' 6 Chama a monta em do 5iltro 7 -3dtDis#P 6 .dita o Dis"o 7 proced%re !FnConDis#.&ni#ioP begin !a)%asi#o.(penP ShoLModalP endP proced%re !FnConDis#.%"tFiltrarCli#BSSenderM !()1e#tTP begin i2 %"tAtivaDesativa.DoLn then begin MessageDlgSZDesative a -iltrage antes de editar os -iltros...Z' e.itP endP i2 FnFiltro.ShoLModal Y r(B then begin @ry%asi#o.S@A.ClearP @ry%asi#o.S@A.AddSFnFiltro.S@AString.!e.tTP endP endP proced%re !FnConDis#.%"t3ditarCli#BSSenderM !()1e#tTP begin i2 %"tAtivaDesativa.DoLn then Fn3dtDis#.&ni#ioS@ry%asi#oC(DnD&SC(.=al"eT else Fn3dtDis#.&ni#ioS!a)%asi#oC(DnD&SC(.=al"eTP endP proced%re !FnConDis#.%"tAtivaDesativaCli#BSSenderM !()1e#tTP begin i2 not %"tAtivaDesativa.DoLn then DS%asi#o.Dataset MY !a)%asi#o else trP @ry%asi#o.CloseP @ry%asi#o.(penP

t&n-or ation' W )(mX' 2TP

!"

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

DS%asi#o.Dataset MY @ry%asi#oP eTcept DS%asi#o.Dataset MY !a)%asi#oP raiseP endP endP end.

Ca67/05o $III
Relat(rios
A parte i pressa do Delphi -i#a a #ritKrio de trIs KtodosM "tilizar a -erra enta Report6mith' #o a "nit Printer o" #o a "tiliza*$o da -erra enta ]%icUReport Sdispon/vel no Delphi 1%& a partir de #o pra de ter#eiro' as dispon/vel grat"ita ente #o o Delphi $%&T. ( Delphi o-ere#e " gerador de relat>rios )astante poderoso' #ha ado Report6mith. Co este "tilit+rio' vo#I pode #riar relat>rios asso#iados aos diversos )an#os ,"e o Delphi se #o "ni#a.

Tra8a5hando 4om o Re6or/Smi/h


( Report6mith poss"i alg"ns relat>rios padr8es' tais #o o relat-rios col%nados S ostra os dados e -or as de #ol"nasT' re2erYncia cr%5ada entre tabelas S ostra os dados tipos " a planilha' asso#iando d"as o" ais ta)elasT' etiQ%etas Sgera eti,"etas e -or atos padr$oT' relat-rios em modo de pXgina S ostra os registros de " a deter inada ta)ela " por p+ginaT. AtravKs do 4eportS ith' e poss/vel gerar relat>rios #o Co )ina*$o de dados entre v+rias ta)elasP (rde e gr"po livre de dados atravKs de deter inados #a posP as seg"intes #ara#ter/sti#asM

&nser*$o de #a)e*alhos e rodapKsP F"n*8es de so a' Kdia' +.i o e /ni oP dos dadosP

Cria*$o de #ai.as de di+logo para inser*$o de in-or a*8es' -iltrage Cria*$o de relat>rios do tipo 3.e#"*$o de A#esso as aster/detailsP

a#ros d"rante o relat>rioP e

ais variadas )ases de dados' entre elasM

%ases de Dados ,"e o 4eportS ith per ite a#esso A##ess &n-or i. S@A%ase

!""

Borland
%trieve D%7 d%ase 3.#el Fo.0ro &5G43S

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

&nter%ase (4ACA3 0arado. 4ai a AS/:22 S@A Server

Sy)ase !eradata Ar,"ivo .!R! Jni-y Oat#o S@A driver (D%C ,"al,"er )ase #o

( Report6mith K " prod"to separado do Delphi' as ao #o prar o Delphi' vo#I ad,"iri" a"to ati#a ente a li#en*a para "sar o Report6mith )e #o o a distri)"i*$o livre do se" 4"n-!i e.

Criando relat(rio com o ReportSmit&


&ni#ie o Report6mith atravKs do /#one ' o" da op*$o do en" prin#ipal do Delphi' $ools Z Report6mith' dependendo da #on-ig"ra*$o da se*$o Options' ser+ ostrada a tela para o in/#io de " novo relat>rio. Can#ele ,"ais,"er op*$o ,"e apare*a e ative no en" prin#ipal File Z ConnectionsAAA' le )ra-se do Alias pois a,"i pre#isa os #riar " a #one.$o para a nossa )ase de dados' pressione o )ot$o /eO e in-or e /ameM Dis#oA00' $PpeM D%AS3S&DA0&T e Data File PathM CMkS&S!3MAkCADD&SC(' pressione o )ot$o 6ave e OV. 5o en" prin#ipal op*$o File Z /eOAAA' es#olha a op*$o Col%mnar Report' #li,"e no )ot$o 6tPle e es#olha o estilo do relat>rio ,"e ais lhe agrade e #aso vo#I dese1e pode ar#ar o estilo es#olhido #o o de-a"lt atravKs da op*$o Wse As De2a%lt #li,"e no )ot$o OV' e #li,"e no )ot$o OV e a seg"inte tela ser+ ostradaM

!"&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

$ables - Adi#iona' re ove o" altera ta)elas o" #ria linBs entre elas. 6elections - Cria' edita e e.#l"i #ritKrios de sele*$o. 6orting - Adi#iona' re ove o" reordena dados a sere organizados. #o andos S@A o" na Derived 2ields - Cria e organiza dados #al#"lados para o"tras #ol"nas do relat>rio' )aseado e ling"age de a#ro 4eport%asi#.

Report variables - Cria' edita o" e.#l"i vari+veis do relat>rio. 3stas vari+veis pode ser #riadas para atender a #ritKrios da #l+"s"la 6elections servindo de #o "ni*$o entre o Report6mith e o Delphi. Database gro%ping - Gr"pos de dados e #ritKrios de sele*$o. 6]3 - 0er ite a edi*$o de de#lara*$o S@A para o relat>rio #orrente.

1. 0ressione o )ot$o $ables. 7. 5a #ai.a de di+logo $ables' pressione o )ot$o Add tableAAA 9. 5o #o )o ConnectionsE sele#ione a #one.$o DiscoAPP e sele#ione a ta)ela BasicoADB e pressione o )ot$o OV' repita a opera*$o para ta)ela CategorADB' #on-ir e e retorne a tela anterior. :. 0ressione o )ot$o Add neO linUAAA 5. ( rela#iona ento entre Basico e Categor K atravKs do #a po 67SMCA$0S' ar,"e a op*$o 7ncl%de %nmatched records Sin#l"a os registros n$o #orrespondentesT do lado de BA67COTDB' #on-ir e e retorne a tela anterior. ;. Sele#ione a ta)ela BA67COTDB e pressione o )ot$o $able col%mnsAAA 7. Sele#ione o #a po FO$MCAPA e ar,"e a op*$o 0Tcl%de 2rom report Sretire do relat>rioT' #on-ir e e retorne a tela anterior.

!"(

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

<. 0ressione o )ot$o Report variables e #rie as vari+veisM Cod7nicial e CodFinal a )as #o a op*$o $Ppe ig"al a /%mber e a op*$o 0ntrP ig"al a $Ppe9in. 9. 0ressione o )ot$o 6elections e #li,"e no )ot$o a arelo ar#ado #o !A e es#olha a op*$o Add selection criteria e ar,"e o seg"inte #ritKrioM data 2ield BA67COTDBACODMD76CO is betOeen report variable Cod7nicial and report variable CodFinal. 12. Cli,"e no )ot$o 6orting' ar,"e o #a po CODMD76CO e #li,"e no )ot$o 7nsert into sort list Sinsira para a lista de ordena*$oT. 11. Cli,"e no )ot$o 6]3 e #o pare a de#lara*$o #riadaM
S3A3C! Z%AS&C(.D%Z.ZC(DnD&SC(Z' Z%AS&C(.D%Z.Z5(MnD&SC(Z' Z%AS&C(.D%Z.Z!&0nD&SC(Z' Z%AS&C(.D%Z.S&GnCA!3GZ' ZCA!3G(4.D%Z.ZS&GnCA!3GZ' ZCA!3G(4.D%Z.ZD3SnCA!3GZ F4(M ZCMkS&S!3MAkCADD&SC(k%AS&C(.D%Z %AS&C(.D% A3F! E(&5 ZCMkS&S!3MAkCADD&SC(kCA!3G(4.D%Z CA!3G(4.D% (5 SZ%AS&C(.D%Z.ZS&GnCA!3GZ Y ZCA!3G(4.D%Z.ZS&GnCA!3GZ T O?343 SSSZ%AS&C(.D%Z.ZC(DnD&SC(Z %3!O335 ``Cod&ni#ial__ A5D ``CodFinal__TTT (4D34 %l Z%AS&C(.D%Z.ZC(DnD&SC(Z

17. Con-ir e o relat>rio pressionando o )ot$o Done. &n-or e os dados ini#iais e -inais e ag"arde a gera*$o do relat>rio.

Organi0ando os campos do relat(rio


A#redito ,"e a esta alt"ra vo#I te " )elo in/#io de relat>rio nas ,"e alterar alg"ns #a pos ,"e n$o -i#ara direitoM $os' agora tere os

1. Sele#ione os #a pos S&GnCA!3G Stanto o t/t"lo ,"anto o detalheT e pressione D03. 7. Sele#ione o detalhe do #a po 5(MnD&SC( e pressione o )ot$o direito do o"se' sele#ione a op*$o Field 1eight e ar,"e a op*$o Can SroO Sredi ensione a vari+vel #on-or e o ta anhoT e Can 6hrinU S#orte os #ara#teres n$o i pri /veisT. 9. !ro,"e os t/t"los de #ada #a po paraM C>digo' 5o e' !ipo e Categoria. S)asta #li#ar d"as vezes so)re #ada t/t"loT. :. !ro,"e o t/t"lo do relat>rio paraM Cadastro de CDfs. 5. 5o en" sele#ione a op*$o 7nsert e FieldAAA' sele#ione 6Pstem Fields' e sele#ione o #a po Print Date;$ime' pressione o )ot$o 7nsert e #li,"e e ,"al,"er posi*$o da se*$o 1eader. ;. Co pare agora o relat>rio geradoM

!"#

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Salve o relat>rio gerado #o

o no e de 4CADAS!.40!

/ssociando o relat(rio ao aplicativo


A parte di-/#il 1+ -oi realizada agora resta #ha ar o relat>rio atravKs do nosso prin#ipal. en"

Cha e o -or "l+rio - en" e insira o o)1eto 4eport ' en#ontrado na Component Palette p+gina Dialo s' este o)1eto realiza o tra)alho de #on-ig"ra*$o da i pressora. 1. Cli,"e na op*$o CCon-ig"ra & pressoraD #ha ando o evento onCli#BP 7. &nsira o #o ando
proced%re !FMen".Con-i"ra& pressora1Cli#BSSenderM !()1e#tTP begin 0rinterSet"pDialog1.3.e#"teP endP

Criare os agora " a 1anela si ples de di+logo' onde sele#ionare os " -inal para os #>digos do CD.

#>digo ini#ial e

&ni#ial ente Cli,"e no )ot$o S5eL For T na Speed Bar' o" no en" prin#ipal a Cli,"e no en" prin#ipal a op*$o File e /eOAAA' e New Items' na p+gina New e #li,"e no o)1eto entit"lado 5orm e altere as seg"intes propriedadesM
=alor )sDialog & pri e Cadastro Geral FnDgGeral poS#reenCenter Des#ri*$o 3stilo da )orda do o)1eto Aa)el do o)1eto 5o e do o)1eto 0osi*$o do o)1eto

0ropriedade %orderStyle Caption 5a e 0osition

Crie para esta nova 1anela os seg"intes o)1etosM 3abel SAo#alizado na p+gina 6tandardT - #rie trIs o)1etos la)elsM
=alor W1X. &n-or e o C>digo dos CDHs a i pri irP W7X. &ni#ialM e W9X. FinalM W1X. MS Sans Seri-' 5egrito' <' Az"l Marinho e W7'9X. MS Sans Seri-' Des#ri*$o Aa)el do o)1eto !ipo de letra a ser ostrada no o)1eto

0ropriedade Caption Font

!"+

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

5egrito' <' Castanho

BitBtn SAo#alizado na p+gina AdditionalT - #rie dois )ot8es para #on-ir ar o" #an#elar a e iss$o do relat>rioM
0ropriedade mind =alor )B(B e )BCan#el Des#ri*$o Deter ina a #lasse a ser "tilizada pelo o)1eto' a"to ati#a ente ser$o alteradas as propriedadesM Caption' SlPph e ModalRes%lt Aa)el do o)1eto

Caption

p(m e pCan#elar

0dit SAo#alizado na p+gina 6tandardT - dois o)1etos de edi*$o para inser*$o do #>digo ini#ial e -inalM
0ropriedade !e.t Font MS Sans Seri-' 5or al' <' Az"l Marinho =alor Des#ri*$o !e.to a ser apresentado ini#ial ente para o o)1eto !ipo de letra a ser ostrada no o)1eto

Co pare #o

o -or "l+rio a)ai.oM

Programando o !orm$l)rio
Antes de prosseg"ir os salve o -or "l+rio #o o no e de -DgGeral. 0ara sele#ionar os os #>digos ini#ial e -inal' pre#isa os -azer " a pe,"ena progra a*$o no -or "l+rioM C>digo para #riar os dois #a pos ,"e enviar$o os #>digos Sle )ra-se do #ap/t"lo =&& 4e-erente a Cons"ltasTM 1. Alterne para o Code0ditor e insira o seg"inte #>digo a)ai.oM
&ni#ializa as -"n*8es Cria tipo #ara#tere as vari+veis' apenas #o o sa/da

private 2%nction GetCod&ni#ialM 6tringP 2%nction GetCodFinalM 6tringP p%blic propertP Ca p&ni#ialM 6tring read GetCod&ni#ialP propertP Ca pFinalM 6tring read GetCodFinalP endP var FnDgGeralM !FnDgGeralP

!")

Borland
implementation 68R 9%D5M7

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

2%nction !Fn DgGeral.GetCod&ni#ialM 6tringP begin 4es"lt MY 3dit1.!e.tP endP 2%nction !Fn DgGeral.GetCodFinalM 6tringP begin 4es"lt MY 3dit7.!e.tP endP

3nvia #o o res"ltado o #onte6do do o)1eto 3dit1

3nvia #o o res"ltado o #onte6do do o)1eto 3dit7

0or in#r/vel ,"e pare*a isto K t"do' agora #ha e o o)1eto -Men"' insira o o)1eto 4eport ' en#ontrado na Component Palette p+gina Data #""ess' este o)1eto realiza o tra)alho de #on-ig"ra*$o da i press$o. 1. Cli,"e na op*$o C4elat>rio e GeralD #ha ando o evento onCli#BP 7. &nsira o #o ando
proced%re !FnMen".Geral1Cli#BSSenderM !()1e#tTP begin i2 FnDgGeral.ShoLModal Y r(m then Cha a e veri-i#a se a DgGeral retorno" (m Oith 4eport1 do 0ara o o)1eto 4eport1... begin 4eport5a e MY Z4CADAS!.40!ZP Altera a propriedade 5o e do 4elat>rio &nitial=al"es.ClearP 3li ina os valores ini#iais &nitial=al"es.AddSZ^Cod&ni#ialY`Z\FnDgGeral.Ca p&ni#ial\Z_ZTP Seta o valor Cod&ni#ial do relat>rio #o o valor do Ca p&ni#ial do -or "l+rio -DgGeral &nitial=al"es.AddSZ^CodFinalY`Z\FnDgGeral.Ca pFinal\Z_ZTP Seta o valor CodFinal do relat>rio #o o valor do Ca pFinal do -or "l+rio -DgGeral 4"nP &ni#ia o relat>rio endP endP

Salve e e.e#"te o siste a' in-or e tre#hos di-erentes para o relat>rio. Caso vo#I ,"eira ,"e o 4eportS ith n$o e.e#"te i ediata ente o relat>rio ostrando antes " a prKvia na tela odi-i,"e a propriedade do o)1eto Report! - Preview para 4rue. =o#I des#o)rir+ ,"e o Report6mith K " a poderosa e si ples -erra enta para a #on#ep*$o de relat>rios' o 6ni#o pro)le a seria #o relat>rios ,"e se pre#ise i pri ir " a 6ni#a o" po"#as -olhas' #o o " re#i)o o" " -or "l+rio prK-i presso' vo#I des#o)rir+ ,"e ele K lento para estas tare-as' e.iste d"as sol"*8es para este #aso "sar a )i)liote#a Printers o" "sar a i press$o livre do -or "l+rio #o o vere os a seg"ir.

!"9

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

mprimindo atrav;s do %orm$l)rio


0ara o nosso pr>.i o relat>rio' pre#isa os apenas i pri ir a #apa de " CD' se vo#I rele )ra a -oto -oi ar azenada e " #a po do tipo %A(% #ha ado F(!nCA0A' no ar,"ivo %AS&C(. A idKia K si ples' #onstr"ir " -or "l+rio e )ran#o' se )orda' este ser+ #ha ado atravKs do en" prin#ipal e soli#itado a in-or a*$o do #>digo do CD a i pri ir' neste -or "l+rio ter+ os o)1etos de a#esso a !a)ela S 4a(le e DataSour"eT asso#iado ao o)1eto D%& age ' en#ontrado na Component Palette na p+gina Data Controls' #on-or e a -ig"ra a)ai.oM

&ni#ial ente Cli,"e no )ot$o S5eL For T na Speed Bar' o" no en" prin#ipal a Cli,"e no en" prin#ipal a op*$o File e /eOAAA' e New Items' na p+gina New e #li,"e no o)1eto entit"lado 5orm e altere as seg"intes propriedadesM
=alor )s5one FnCapa poS#reenCenter WX #lOhite Des#ri*$o 3stilo da )orda do -or "l+rio Aa)el do o)1eto S!ar1a az"l do -or "l+rioT 5o e do o)1eto 0osi*$o da 1anela S#entralizadoT 3li ine todos os )ot8es da 1anela Cor de -"ndo

0ropriedade %orderStyle Caption 5a e 0osition %order&#ons Color

Crie para esta nova 1anela os seg"intes o)1etosM $able SAo#alizado na p+gina Data AccessT ' altere as seg"intes propriedadesM
=alor %aseDis#o %AS&C(.D% C(DnD&SC( !a)%asi#o Des#ri*$o 5o e do Alias o" a lo#aliza*$o do diret>rio das ta)elas 5o e e.terno da ta)ela 5o e do #a po inde.ado 5o e do o)1eto

0ropriedade Data)ase5a e !a)le5a e &nde.Field5a es 5a e

!&,

Borland
4ead(nly

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

!r"e

So ente para leit"ra

Data6o%rce SAo#alizado na p+gina Data AccessT ' altere as seg"intes propriedadesM


0ropriedade DataSet 5a e =alor !a)%asi#o DS%asi#o Des#ri*$o 5o e da ta)ela vin#"lada 5o e do o)1eto

db7mage SAo#alizado na p+gina Data ControlsT ' altere as seg"intes propriedadesM


0ropriedade DataSo"r#e DataField ?eight Stre#h Oidth =alor DS%asi#o F(!nCA0A :57 !r"e :<1 Des#ri*$o 5o e do DataSo"r#e vin#"lado 5o e do #a po na ta)ela Aarg"ra Se o ta anho da i age do o)1eto Alt"ra do o)1eto deve a#o panhar o ta anho

( ta anho da i age -oi #olo#ada e :57 . :<1 pois e i pressoras padr$o 3pson este' ap>s i presso' K o ta anho da #apa do CD. Q ne#ess+rio ,"e vo#I -a*a os a1"stes ne#ess+rios para se adaptar ao padr$o de s"a i pressora.

Cres*a o ta anho do -or "l+rio e

#on1"nto ao ta anho do o)1eto i age .

Salve o -or "l+rio #o

o no e de -Capa.

Criando o C(digo
( #>digo para este -or "l+rio e s"a #ha ada a partir do si ples ,"e o realizado anterior ente' veri-i,"eM 0ara o en" prin#ipal en" prin#ipal K )e ais

C>digo para #riar a #ha adaM 1. Cha e o -or "l+rio -Men"' e #li,"e na op*$o CCapa do CDD M

proced%re !FnMen".CapadoCD1Cli#BSSenderM !()1e#tTP var 5" CDM 6tringP begin 5" CD MY &np"t%o.SZ&n-or eZ' Z3ntre #o o #>digo do CD para i pri irMZ' ZZTP i2 5" CD Y ZZ then begin MessageDlgSZ5$o -oi in-or ado " #>digo para a i press$oZ' t&n-or ation' W )(BX' 2TP e.itP endP FnCapa.&ni#ioS5" CDTP endP

!&!

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

( #>digo para este evento K )e si plesM #ria " a vari+vel #ara#ter e soli#ita a entrada de se" valor atravKs da -"n*$o 7np%tBoT' #aso n$o se1a retornado nenh" valor #an#ela a i press$o ao #ontr+rio #ha a o pro#edi ento Cini#ioD do -or "l+rio CFnCapaD enviando o valor in-or ado.

5$o se es,"e*a de #olo#ar a "nidade -Capa no #o ando Wses.

0ara o -or "l+rio FnCapa C>digo para soli#itar e per itir a i press$oM 1. Cha e o -or "l+rio FnCapa' e alterne para o odo do Code 0ditor M

proced%re !FnCapa.&ni#ioS5" eroM 6tringTP begin !a)%asi#o.(penP i2 not !a)%asi#o.FindmeySWStr!oFloatS5" eroTXT then MessageDlgSZC>digo do CD ine.istente fZ' t3rror' W )(BX' 2T else begin ShoLP i2 MessageDlgSZCon-ir a a i press$o da Capa FZ' tCon-ir ation' )(BCan#el' 2T Y r(B then FnCapa.0rintP endP !a)%asi#o.CloseP CloseP endP

( #>digo para este evento nova ente K )e si plesM a)re a ta)ela e pes,"isa a e.istIn#ia do #>digo enviado' #aso en#ontre ostra a #apa do CD e soli#ita a #on-ir a*$o do relat>rio' e i pri e ao -inal -e#ha a ta)ela e o -or "l+rio. 5$o se es,"e*a de de#larar o pro#edi ento nas de#lara*8es P%blic. Sproced%re &ni#ioS5" eroM 6tringTPT

Tra8a5hando 4om o G0i4DRe6or/


( @"i#B4eport K " prod"to -orne#ido pela @SD S@"i#B So-t Develop entT e vers$o FreeLare para o Delphi $%& e vers$o ShareLare para o Delphi 1%&' pode-se dizer ,"e K o pri eiro gerador de relat>rios total ente orientado a o)1etos' o #>digo -inal gerado pelo @"i#B e in#orporado ao e.e#"t+vel n$o havendo a ne#essidade de se #arregar ar,"ivos e.ternos S#o o K o #aso do 4eport S ithT' os o)1etos do @"i#B s$o -or ados pela seg"inte )andaM

!&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

(s o)1etos #ontidos nesta )anda s$oM @"i#B4eport

( #o ponente @"i#B4eport e o respons+vel pelo #ontrole do relat>rio. Se" tra)alho K trans-or ar o -or "l+rio do Delphi e " relat>rio. 0ara " a prKvia do relat>rio Se odo de #onstr"*$oT )asta si ples ente dar " d"plo #li#B so)re o o)1eto as le )re-se ,"e os #>digos para os eventos n$o ser$o e.e#"tados. Co ponente respons+vel pelo #ontrole prin#ipal do relat>rio. Colo,"e-o e " -or "l+rio ,"e servir+ de )ase para o relat>rio e "tilize os #o andos Print o" Preview. @4%and

J a )anda K " a si ples divis$o do relat>rio. " relat>rio ser+ dividido e di-erentes partes para a i press$o' tais #o oM Detalhe' Ca)e*alho de 0+gina' 4odapK' Gr"pos' et#. Alg"ns tipos de )andas s$o i pressas a"to ati#a ente' en,"anto ,"e o"tros tipos ne#essita dos o)1etos ]RSro%p o" ]RDetail3inU para se" #ontrole. Q poss/vel ta )K "tilizar-se de 6ltiplas )andas de " es o tipo. @4Gro"p

(s gr"pos pode ser -or ados #o o a"./lio deste #o ponente' se "tiliza de #a)e*alho e rodapK para o #ontrole do gr"po. Q poss/vel #riar no +.i o 12 n/veis Sa proprieade 0evel varia de 2 a 9T sendo ,"e os n/veis ais )ai.os do ina a i press$o dos ais altos. @4DetailAinB ( #o ponente @4DetailAinB K "sado para #riar di-erentes tipos de detalhes. @4Aa)el

!e.tos est+ti#o no relat>rio s$o -or ados pelo #o ponente @4Aa)el )astando para isso odi-i#ar a propriedade Caption. Q poss/vel ta )K odi-i#ar a propriedade Caption d"rante a gera*$o do relat>rio @4Me o ( #o ponente @4Me o e "sado para i pri ir @4D%!e.t 3ste #o ponente K respons+vel pela i press$o dos #a pos dos ar,"ivos. "ltiplas linhas de " #a po.

!&"

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

@4D%Cal# Co ponente "tilizado para realizar #+l#"los )+si#os d"rante a gera*$o do relat>rio

@4SysData

& pri e v+rias in-or a*8es so)re o siste a tais #o oM n6 ero da p+gina' data' hora o" t/t"lo do relat>rio. @4Shape Jtilizado para desenhar si ples -ig"ras geo Ktri#as. @40revieL 3ste o)1eto K respons+vel pela odi-i#a*$o no 0revieL padr$o do relat>rio.

=a os agora realizar " e.e plo si ples e pr+ti#o #o o @"i#B' #riando o es o relat>rio proposto #o o Report 6mith' deste odo a#redito' ,"e vo#I pode #o parar a -a#ilidade de a )os os geradores. 1. &ni#ial ente Cli,"e no )ot$o S5eL For T na Speed Bar' o" no en" prin#ipal a Cli,"e no en" prin#ipal a op*$o File e /eOAAA' e New Items' na p+gina New e #li,"e no o)1eto entit"lado 5orm e altere a propriedade name para FMRelato e salve o -or "l+rio #o o 2Relato. 7. Colo,"e os seg"intes o)1etos e -a*a as seg"intes altera*8esM ]%erP SAo#alizado na p+gina Data AccessT ' altere as seg"intes propriedadesM
0ropriedade Data)ase5a e S@A =alor %aseDis#o Des#ri*$o 5o e do Alias o" a lo#aliza*$o do diret>rio das ta)elas

Sele#t %.CodnDis#o' %.5o nDis#o' %.!ipnDis#o' Cl+"s"la de #ons"lta C.DesnCateg -ro %asi#o as % le-t 1oin Categor as C on S%.SignCateg Y C.SignCategT Lhere %.CodnDis#o %etLeen MCod21 and MCod27 order )y %.CodnDis#o A#erte a )os os #a pos para Data$Ppe #o o AsFloat @ry%asi#o 0arV etro da #ons"lta 5o e do o)1eto

0ara s 5a e

Data6o%rce SAo#alizado na p+gina Data AccessT ' altere as seg"intes propriedadesM


0ropriedade DataSet 5a e =alor @ry%asi#o DS%asi#o Des#ri*$o 5o e da ta)ela vin#"lada 5o e do o)1eto

]%icUReport SAo#alizado na p+gina ]ReportT


=alor Des#ri*$o

0ropriedade

!&&

Borland
DataSo"r#e 5a e 4eport!itle

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Ds%asi#o @rCon-ere Cadastro de CDus

5o e do DataSo"r#e vin#"lado 5o e do o)1eto !/t"lo do 4elatorio

0ara o ()1eto ]rBand SAo#alizado na p+gina ]ReportT


=alor r)0age?eader )dCa)e#alho #l5avy Des#ri*$o !ipo da )anda SCa)e*alho de 0+ginaT 5o e do o)1eto Cor da %anda

0ropriedade %and!ype 5a e Color

0ara o ()1eto ]r6PsData SAo#alizado na p+gina ]ReportT' #rie-o #li#ando dentro do o)1eto bdCabecalho
=alor !r"e !r"e ,rs4eport!itle Arial' 1:' 5egrito' %ran#o taCenter Des#ri*$o Alinha #onsiderando a )anda Di ensiona a"to ati#a ente o ta anho !ipo do dado a ser Fonte do o)1eto Alinha ento do o)1eto ostrado

0ropriedade Align!o%and A"toSize Data Font Align ent

0ara o ()1eto ]r6PsData SAo#alizado na p+gina ]ReportT' #rie-o #li#ando dentro do o)1eto bdCabecalho
=alor !r"e !r"e ,rsDate!i e Arial' <' 5or al' %ran#o ta4ightE"sti-y Des#ri*$o Alinha #onsiderando a )anda Di ensiona a"to ati#a ente o ta anho !ipo do dado a ser Fonte do o)1eto Alinha ento do o)1eto ostrado

0ropriedade Align!o%and A"toSize Data Font Align ent

0ara o ()1eto ]rBand SAo#alizado na p+gina ]ReportT


=alor r)Col" n?eader )dCa)Col"na #l5avy )dCa)e#alho Des#ri*$o !ipo da )anda SCa)e*alho de Col"naT 5o e do o)1eto Cor da %anda %anda de depInden#ia

0ropriedade %and!ype 5a e Color AinB%and

0ara o ()1eto ]r3abel SAo#alizado na p+gina ]ReportT' #rie-o #li#ando dentro do o)1eto bdCabCol%na
=alor C>digo Arial' 17' 5egrito' %ran#o Des#ri*$o Aa)el do o)1eto Fonte do o)1eto

0ropriedade Caption Font

0ara o ()1eto ]r3abel SAo#alizado na p+gina ]ReportT' #rie-o #li#ando dentro do o)1eto bdCabCol%na
=alor 5o e Arial' 17' 5egrito' %ran#o Des#ri*$o Aa)el do o)1eto Fonte do o)1eto

0ropriedade Caption Font

!&(

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

0ara o ()1eto ]r3abel SAo#alizado na p+gina ]ReportT' #rie-o #li#ando dentro do o)1eto bdCabCol%na
=alor !ipo Arial' 17' 5egrito' %ran#o Des#ri*$o Aa)el do o)1eto Fonte do o)1eto

0ropriedade Caption Font

0ara o ()1eto ]r3abel SAo#alizado na p+gina ]ReportT' #rie-o #li#ando dentro do o)1eto bdCabCol%na
=alor Categoria Arial' 17' 5egrito' %ran#o Des#ri*$o Aa)el do o)1eto Fonte do o)1eto

0ropriedade Caption Font

0ara o ()1eto ]rBand SAo#alizado na p+gina ]ReportT


=alor r)Detail )dDetalhe )dCa)Col"na Des#ri*$o !ipo da )anda SCa)e*alho de Col"naT 5o e do o)1eto %anda de depInden#ia

0ropriedade %and!ype 5a e AinB%and

0ara o ()1eto ]rDb$eTt SAo#alizado na p+gina ]ReportT' #rie-o #li#ando dentro do o)1eto bdDetalhe
=alor !r"e Ds%asi#o CodnDis#o Des#ri*$o Di ensiona a"to ati#a ente o ta anho DataSo"r#e vin#"lado Ca po vin#"lado

0ropriedade A"toSize DataSo"r#e DataField

0ara o ()1eto ]rDb$eTt SAo#alizado na p+gina ]ReportT' #rie-o #li#ando dentro do o)1eto bdDetalhe
=alor !r"e Ds%asi#o 5o nDis#o Des#ri*$o Di ensiona a"to ati#a ente o ta anho DataSo"r#e vin#"lado Ca po vin#"lado

0ropriedade A"toSize DataSo"r#e DataField

0ara o ()1eto ]rDb$eTt SAo#alizado na p+gina ]ReportT' #rie-o #li#ando dentro do o)1eto bdDetalhe
=alor !r"e Ds%asi#o !ipnDis#o Des#ri*$o Di ensiona a"to ati#a ente o ta anho DataSo"r#e vin#"lado Ca po vin#"lado

0ropriedade A"toSize DataSo"r#e DataField

0ara o ()1eto ]rDb$eTt SAo#alizado na p+gina ]ReportT' #rie-o #li#ando dentro do o)1eto bdDetalhe
=alor !r"e Ds%asi#o DesnCateg Des#ri*$o Di ensiona a"to ati#a ente o ta anho DataSo"r#e vin#"lado Ca po vin#"lado

0ropriedade A"toSize DataSo"r#e DataField

!&#

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Criare os " relat>rio si ples #o #a)e*alho S%dCa)e#alhoT' & press$o das linhas detalhe S)dDetalheT e rodapK S)d4odapeT' a orde de disposi*$o das )andas n$o i porta' o o)1eto @"i#B4eport K respons+vel por este #ontrole. Ao -inal a#erte a tela de odo ,"e -i,"e se elhante a estaM

9. 0or ais in#r/vel ,"e isto possa pare#er nosso relat>rio est+ pronto' pre#isa os so ente "dar a #ha ada a partir do o)1eto FnMen" Saproveitare os o o)1eto FnDgGeral #riado para o "so #o o Report 6mithT #ha e nova ente o o)1eto FMMen% e #li,"e na op*$o C4elat>rio e GeralD #ha ando o evento onCli#BP :. &nsira o #o ando
proced%re !FnMen".Geral1Cli#BSSenderM !()1e#tTP begin i2 FnDgGeral.ShoLModal Y r(m then Cha a e veri-i#a se a DgGeral retorno" (m Oith Fn4elato do 0ara o o)1eto Fn4elato begin @ry%asi#o.0ara sW2X.AsFloat MY Str!oFloatSFnDgGeral.Ca p&ni#ialTP 3nvia os parV etros @ry%asi#o.0ara sW2X.AsFloat MY Str!oFloatSFnDgGeral.Ca pFinalTP @ry%asi#o.(penP A)re a @"ery @rCon-ere.0revieLP Cha a o relat>rio e tela @ry%asi#o.CloseP Fe#ha a @"ery endP endP

0oderia os -i#ar #riando CnD tipos de relat>rios di-erentes as o elhor Ktodo K ,"e vo#I dI " a olhada no diret>rio WDiret>rio de &nstala*$o do DelphiXkDe osk@"i#B4pt e e.e#"te o pro1eto ]rdemoAdpr. @"al,"er o"tra re-erIn#ia pode ser en#ontrada no do#" ento Nord ,"e a#o panha o prod"to' o ar,"ivo ]rMan%alAdoc. ( "s"+rio do Delphi 1%& pode -i#ar se perg"ntando por,"e ad,"irir o" aprender a "tilizar " o"tro gerador de relat>rio ,"ando o Delphi 1+ traz grat"ita ente o Report6mithF ( pro)le a ,"e a#onte#e se restringe a distri)"i*$o de " siste a e Delphi ,"e "tilize relat>rios gerados #o o Report6mith este e.ige " r"n-ti e para e.e#"tar Sdistri)"/do grat"ita ente tanto na vers$o 1.2 ,"anto na vers$o 7.2T o#"pando ais espa*o na +,"ina #liente.

!&+

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

5e#essaria ente' n$o ser+ pre#iso en,"anto vo#I estiver na -ase de CdesenhandoD o -or "l+rio e.e#"tar o siste a para ver #o o -i#o"' si ples ente dI " d"plo #li,"e no o)1eto e o relat>rio ser+ a"to ati#a ente gerado. Obs. C"idado ,"e os eventos #riados do -or "l+rio n$o ser$o e.e#"tados.

Ca67/05o I)
'$ltimdia
3ste #ap/t"lo -oi inserido apenas para sanar ,"ais,"er d6vidas e.istentes ,"anto ao desenvolvi ento de apli#a*8es ,"e envolva "lti /dia #o o Delphi' a pri eira parte n$o -az parte do desenvolvi ento do pro1eto piloto ini#iado.

O M0e N m05/im7dia K
M"lti /dia e " a asso#ia*$o ,"e de#orre #o o "so de i agens' sons e trIs tipos de ar,"ivos ,"e se "tiliza deste -or ato de apli#a*$o s$oM 1. tipo A=& - in#l"i as prod"*8es de v/deo. 7. tipo M&D - ar,"ivos para a prod"*$o de 6si#a "tilizando a inter-a#e de &nstr" entos M"si#ais Digitalizados' o" -or ato M&D&. 9. tipo OA= - ais #o "ns' in#l"i o registro de sons "tilizando a te#nologia Mi#roso-tZs OA=3.. ( pro)le a prin#ipal ,"e o#orre ,"anto a apli#a*8es "lti /dia K o espa*o -/si#o o#"pado' por e.e plo' ar,"ivos do tipo A=&' #o parando " -il e de apenas " in"to o" enos pode o#"par #er#a de 5M) o" atK es o 12M) de espa*o e dis#o. ovi entos' os

"elp&i and '$ltimedia


( o)1eto !Media0layer ' en#ontrado na Component Pallet/ na p+gina S/stem' per ite o a#esso aos ar,"ivos "lti /dia. ( #ontrole K e.tre a ente si ples. De -ato' K -+#il #riar apli#a*8es ,"e envolva so o" i agens e ovi ento #o apenas " a o" d"as linhas de #>digo. AtravKs deste o)1eto vo#I te a#esso e #ontrole a rotinas ais internas atravKs da MC& SMedia Control Interfa"eT. 3ssas rotinas pode ser progra adas para a#essar toda a possi)ilidade do "ndo "lti /dia. Co este o)1etos estas rotinas se torna e.tre a ente si ples e int"itivas para se" "so' #o o vere os a seg"ir.

!&)

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Objeto -'ediaPla<er
0ara #riar " a si ples apli#a*$o "lti /dia #rie " novo pro1eto' e arraste o o)1eto para o -or "l+rio' a"to ati#a ente K #riado " a )arra de tare-as "lti /dia' #on-or e a -ig"ra a)ai.oM

Cli,"e no o)1eto e altere a propriedade 5ileName para CMkO&5D(OSkC?&M3S.OA= esta propriedade asso#ia a ar,"ivos tipo A=&' M&D& o" OA=3 altere ta )K a propriedade #uto'pen para 4rue' esta propriedade ini#ia a"to ati#a ente o ar,"ivo. Depois de #o pletos estes si ples passos vo#I 1+ pode rodar o progra a. 0ressione o )ot$o verde para o"vir o so do ar,"ivo sele#ionado. Mas de repente vo#I n$o o"vi" nada' n$o se desespere a #a"sa pode ser " destes pro)le as 1. =o#I entro" #o 7. Se" siste a de o no e do ar,"ivo inv+lido. "lti /dia n$o est+ #orreto.

9. A propriedade #uto'pen n$o est+ true.

4es"ltados idInti#os o#orre

#o

ar,"ivos M&D& o" A=&.

Colocando as propriedade em modo R$ntime


Dependendo das #ir#"nstVn#ias K pre-er/vel ,"e o ar,"ivo n$o este1a se pre a)erto as apenas ,"ando o "s"+rio #li#ar e " deter inado )ot$o. &sto pode ser o)tido -a#il ente odi-i#ando a propriedade #uto'pen para 5alse e no evento (nCli#B do )ot$o insira o seg"inte #o andoM
proced%re !For 1.%"tton1Cli#BSSenderM !()1e#tTP begin Media0layer1.(penP endP

0ode os ta )K

alterar o ar,"ivo a ,"al ,"ere os o"vir' para isto insira o o)1eto o)1eto BitBtn

(penDialog ' en#ontrado na Component Palette na p+gina Dialo s' e " #on-or e a -ig"ra a)ai.oM

!&9

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

0ara o evento onCli#B do o)1eto 6eleciona insira o seg"inte #>digoM


proced%re !For 1.Sele#ionaCli#BSSenderM !()1e#tTP begin Media0layer1.CloseP i2 (penDialog1.3.e#"te then begin Media0layer1.File5a e MY (penDialog1.File5a eP Media0layer1.(penP endP endP

J a1"ste pode ser -eito para per itir ,"e o o)1eto sele*$o tenha a#esso apenas as e.tens8es A=& ' OA=' or M&D. 0odendo ser #olo#ado de d"as aneiras di-erentes' na propriedade 5ilter do o)1eto OpenDialog!M 1. Ar,"ivos M"lti /dia So.aviP oLavP o. idT e o.aviPo.LavPo. id 7. Ar,"ivo A=& So.aviT e o.avi Ar,"ivo OA=3 So.LavT e o.Lav Ar,"ivo M&D& So.M&DT e o. id

As )arras S e T s$o "tilizadas para dividir d"as se*8esM 5ilter Name e 5ilter.

Pes=$isando vari)veis em modo R$n-ime


J a a ostra "ito si ples de " progra a "lti /dia' e " tanto poderoso ,"e ,"ase ,"al,"er pessoa K #apaz de -aze-lo' pois o progra a K " po"#o ro)"sto' e n$o a#onselho a tentativa por progra adores ine.perientes' para as in-or a*8es a,"i ne#essitadas K pre#iso ter " #ontrole total das #apa#idades "lti /dia.

!(,

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Antes de ini#iar os va os -azer " a pe,"ena o)serva*$o' prin#ipal ente relativo a dois pontosM #ontK 0ara alg"ns progra adores ,"e pro#"ra #oisas 6teis' as in-or a*8es a,"i presentes o essen#ial para trans-or +-los e progra adores "lti /dia.

("tra o)serva*$o seria a respeito de alg"ns #ontroles a ar,"ivos "lti /dia. DI " a olhada no ar,"ivo WDiret>rioDelphiXkS(J4C3k4!AkO&5kMMSlS!3M.0AS' K " a )i)liote#a de -"n*8es ,"e #ontK todas as #ha ada de a#esso a )ai.o n/vel de #o andos OindoLs para apli#a*8es "lti /dia. As tK#ni#as de a#essos est$o #ontidas no pr>prio do#" ento. Co estes dois pontos -res#os e aspe#tos do o)1eto 4MediaPla/er. nossa ente' pode os ini#iar o nosso est"do so)re os

DI " a olhada na '()eto Inspe"tor na p+gina de 3ventos do o)1eto 4MediaPla/er vo#I en#ontrar+ dois KtodosM ( evento 'nCli"k ,"e o#orre ,"ando K pressionado ,"al,"er )ot$o do #ontrole. 0or instVn#ia' atravKs do parV etro enviado Button K poss/vel sa)er se o )ot$o pressionado -oi o 'nPla/. J seg"ndo evento #onsiste no 'nNotif/ por #onter a ensage mmGM"iNotif/ ,"e s$o as #ha adas do OindoLs para o ini#io o" o ter ino de " a e.e#"*$o' #o se"s event"ais erros. A )os os eventos ser$o dis#"tidos nos pr>.i os par+gra-os. Q poss/vel identi-i#ar o )ot$o pressionado atravKs do evento (nCli#B' a,"i est$o todos os tipos gerados pelo 4MPBtn4/peM

)t0layM @"ando pressionado o )ot$o verde' &ni#iar. )t0a"seM @"ando pressionado o )ot$o a arelo' 0a"sa. )tStopM @"ando pressionado o )ot$o ver elho' 0arar. )t%a#BM @"ando pressionado o )ot$o az"l' Avan*a a i age )tStepM @"ando pressionado o )ot$o az"l' 4etorna a i age )t5e.tM @"ando pressionado o )ot$o az"l' Avan*o r+pido. )t0revM @"ando pressionado o )ot$o az"l' 4etorno r+pido.
!(!

. .

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

)t4e#ordM @"ando pressionado o )ot$o ver elho' Grava*$o. )t31e#tM @"ando pressionado o )ot$o az"l' 4etirar.
&ni#ial ente va os deter inar ,"al -oi o tipo de )ot$o pressionado' para tanto' #rie para o evento 'nCli"k o seg"inte #>digoM
proced%re !For 1.Media0layer1Cli#BSSenderM !()1e#tP %"ttonM !M0%tn!ypeP var DoDe-a"ltM %ooleanTP begin case %"tton o2 )t0layM 3dit1.!e.t MY Z!o#andoZP )t0a"seM 3dit1.!e.t MY Z0a"sadoZP )tStopM 3dit1.!e.t MY Z0aradoZP )t5e.tM 3dit1.!e.t MY Z0r>.i oZP )t0revM 3dit1.!e.t MY ZAnteriorZP )tStepM 3dit1.!e.t MY ZAvan*andoZP )t%a#BM 3dit1.!e.t MY Z4etornandoZP )t4e#ordM 3dit1.!e.t MY ZGravandoZP )t31e#tM 3dit1.!e.t MY Z4etirandoZP endP endP

est$o as

0ara en#ontrar o ,"e a#onte#e" #o o pro#esso' ne#essita os do evento 'nNotif/. A,"i ensagens enviadas pelo siste a opera#ionalM


do tipoM

#in5oti-ynS"##ess-"lM Co ando #o pletado #o

I.ito

#in5oti-ynS"persededM Co ando s"spenso por o"tra -"n*$o #in5oti-ynA)ortedM F"n*$o #orrente -oi interro pida #in5oti-ynFail"reM Alg" erro o#orre".

( Delphi n$o re#onhe#e estas diretivas de

ensage '

as ele #onverte para #onstantes

nvS"##ess-"l indi#ando o I.ito. nvS"perseded indi#ando ,"e est+ s"spenso' provavel nvA)orted essages indi#ando ,"e -oi pressionado
-e#ha ento do ar,"ivo.

ente por #a"sa de " a pa"sa. o )ot$o parar' o" #a"sa devido ao

Cli#B no evento 'nNotif/ e #olo,"e o seg"inte #>digoM


proced%re !For 1.Media0layer15oti-ySSenderM !()1e#tTP var SM 6tringP !otalM &nteger begin case Media0layer1.5oti-y=al"e o2 nvS"##ess-"lM begin &n#S!otalTP S MY Z #in5oti-ynS"##ess-"l Z \ &nt!oStrS!otalTP endP nvS"persededM S MY Z #in5oti-ynS"persededZP nvA)ortedM S MY Z #in5oti-ynA)ortedZP nvFail"reM S MY Z #in5oti-ynFail"reZP else S MY Z5$o #onsigo identi-i#ar a ensage ZP

!(

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

endP 3dit7.!e.t MY SP i2 SMedia0layer1.5oti-y=al"e Y nvS"##ess-"lT and SMedia0layer1.Mode Y 3dit1.!e.t MY ZAr,"ivo -inalizadoZP endP

pStoppedT then

3stes eventos veri-i#a os a#onte#i entos ais signi-i#ativos ,"e o#orrera #o o dispositivo MC&. ( odo #orrente #o ,"e o dispositivo MC& K espe#i-i#ado ta )K pode ser "tilizado pelo o)1eto 4MediaPla/er. A,"i " a listage dos valores ais #o "ns designadosM

#inModen5otn4eady #inModenStop #inModen0lay #inModen4e#ord #inModenSeeB #inModen0a"se #inModen(pen

3stes valores s$o a"to-e.pli#ativos. 0or e.e plo' o odo do #a po K -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 #ha ada 6etMode' e insira o seg"inte #>digoM
proced%re !For 1.SetModeP begin 3dit:.!e.t MY Media0layer1.File5a eP case Media0layer1.Mode o2 p5ot4eadyM 3dit9.!e.t MY Z #inModen5otn4eadyZP pStoppedM 3dit9.!e.t MY Z #inModenStopZP p0layingM 3dit9.!e.t MY Z #inModen0layZP p4e#ordingM 3dit9.!e.t MY Z #inModen4e#ordZP pSeeBingM 3dit9.!e.t MY Z #inModenSeeBZP p0a"sedM 3dit9.!e.t MY Z #inModen0a"seZP p(penM 3dit9.!e.t MY Z #inModen(penZP else begin 3dit1.!e.t MY ZDispositivo &nativoZP 3dit7.!e.t MY ZSe essagensZP 3dit9.!e.t MY Z5$o identi-i#adoZP 3dit:.!e.t MY Z5$o h+ ar,"ivo sele#ionadoZP endP endP endP

0ara a #ha ada desta rotina #li#B no o)1eto 4timer e #ha e o evento 'n4imer e insira o seg"inte #>digoM
proced%re !For 1.!i er1!i erSSenderM !()1e#tTP begin SetModeP endP

!("

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Co a propriedade Interval deste o)1eto -i.ada e 1222' signi-i#a ,"e a #ada 1222 iliseg"ndos ser+ disparada a rotina de veri-i#a*$o ,"e in-or ar+ o estado para o o)1eto 4MediaPla/er. 3.e#"te o pro1eto e atente para os seg"intes detalhesM !oda a vez ,"e -or "sado " )ot$o da )arra "lti /dia' ser+ disparado o evento onCli#B ar#ando deste odo o tipo de )ot$o pressionadoP As ensagens da nM#i5oti-y o#orre d"rante toda a e.e#"*$o da apli#a*$o' tente "tilizar os )ot8es 0a"sa e 0arar no eio de " a e.e#"*$o. @"ando -or sele#ionar " novo ar,"ivo' a-aste " #o o est$o os #a pos edit% po"#o a 1anela de di+logo e o)serve

()serve e est"de ta )K o ar,"ivo WDiret>rioDelphiXkS(J4C3k=CAkM0AAl34 .0AS ele K a "nidade prin#ipal de #ria*$o do o)1eto 4MediaPla/er.

Inserindo o m05/im7dia 6ara o Sis/ema


do @"e tal se alK de #adastrar os os nossos CDHs p"desse os o"v/-los' adi#ione " en" prin#ipal do siste a ,"e #ha ar+ o seg"inte -or "l+rio. op*$o

"esenvolvimento do C" Pla<er


&ni#ial ente' #rie " novo o)1eto Form )aseado na te plate BlanU 2orm e altere as seg"intes propriedadesM
=alor )sDialog CD 0layer Fn0layer poS#reenCenter Des#ri*$o 3stilo da )orda do -or "l+rio Aa)el do o)1eto S!ar1a az"l do -or "l+rioT 5o e do o)1eto 0osi*$o da 1anela S#entralizadoT

0ropriedade %orderStyle Caption 5a e 0osition

Crie para esta nova 1anela os seg"intes o)1etosM ' en#ontrado na Component Pallet/ na p+gina S/stem' e altere as
Des#ri*$o

!Media0layer seg"intes propriedadesM


0ropriedade =isi)le%"ttons 5a e =alor

W)t0lay')t0a"se')tStop')t5e.t')t0 %ot8es ,"e -i#ar$o vis/veis rev')t31e#tX CD 5o e do o)1eto

!!i er ' en#ontrado na Component Pallet/ na p+gina S/stem' servir+ para #ontrolar o te po das 6si#as.

!(&

Borland
0anel propriedadesM
Propriedade Align Align ent %evel&nner %evel("ter %orderOidth Caption 5a e Font

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

' en#ontrado na Component Pallete na p+gina Standard' e altere as seg"intes


Ralor al%otto taAe-tE"sti-y )vAoLered )vAoLered 1 &nsira o CD AinhaStat"s MS Sans Seri-' 3stilo da -onteM 5or al' !a anhoM <' CorM Az"l Marinho 77 Descrio Alinha ento dentro do form' todo no rodapK Alinha ento da Caption' 1"sti-i#ado N es,"erda %orda 9D interna' tipo pressionado %orda 9D e.terna' tipo pressionado !a anho da )orda Aa)el do o)1eto 5o e do o)1eto !ipo de letra a ser ostrada no o)1eto' para alterar esta propriedade #li,"e no )ot$o Alt"ra do o)1eto

?eight

0anel propriedadesM
Propriedade Align %evel&nner %evel("ter %orderOidth ?eight Caption

' en#ontrado na Component Pallete na p+gina Standard' e altere as seg"intes


Ralor al!op )vAoLered )v4aise 7 52 Descrio Alinha ento dentro do form' todo no topo %orda 9D interna' tipo pressionado %orda 9D e.terna' tipo pressionado !a anho da )orda Alt"ra do o)1eto Aa)el do o)1eto

Crie ,"atro o)1etos 3abel dentro do o)1eto 0anel7' para os dois pri eiros altere a propriedade Caption para $rilhaE e PosioE respe#tiva ente para os o"tros dois altere a propriedade /ame para 3bl$racU e 3bl$ime' altere a propriedade Font de todos para MS Sans Seri-' 3stilo da -onteM 5or al' !a anhoM <' CorM Castanho. Co pare o desenho do -or "l+rio a seg"irM

@"anto ao progra a vo" e.pli#+-lo na integra' a#o panhe a listage pro#edi entos nos lo#ais indi#adosM
%nit FplayerP inter2ace

#olo#ando os

!((

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

%ses SysJtils' Oin!ypes' Oin0ro#s' Messages' Classes' Graphi#s' Controls' For s' Dialogs' StdCtrls' 3.tCtrls' M0layer' MMSyste P tPpe !Fn0layer Y classS!For T CDM !Media0layerP !i er1M !!i erP AinhaStat"sM !0anelP 0anel7M !0anelP Aa)el1M !Aa)elP Aa)el7M !Aa)elP A)l!ra#BM !Aa)elP A)l!i eM !Aa)elP proced%re !i er1!i erSSenderM !()1e#tTP proced%re CD0ostCli#BSSenderM !()1e#tP %"ttonM !M0%tn!ypeTP proced%re CD5oti-ySSenderM !()1e#tTP proced%re For CreateSSenderM !()1e#tTP private !rilhaCorrenteM )yteP Final!rilhaCorrenteM AongintP !rilhaAidasM )ooleanP CD0laying' CD0a"sedM )ooleanP !a !rilhaM arraPW1..122X o2 Aong&ntP 2%nction CD0osSSenderM!()1e#tP !rilha' Min' Se#M )yteTM AongintP proced%re &nitCDSSenderM!()1e#tTP proced%re 4esetCDSSenderM!()1e#tTP p%blic 6 Pu(li" de"larations 7 endP var Fn0layerM !Fn0layerP implementation 68R 9%D5M7 const ModeStrM arraPW! pModesX o2 stringW12X Y SZ5$o AidoZ' Z0aradoZ' Z!o#andoZ' ZGravandoZ' Z0es,"isandoZ' Z0a"sadoZ' ZA)ertoZTP 6 Criado ; Cal"ula a posi3=o 7 2%nction !Fn0layer.CD0osSSenderM!()1e#tP !rilha' Min' Se#M )yteTM AongintP var iM integerP begin res"lt MY 2P 2or i MY 1 to S!rilha - 1T do begin &n#S4es"lt' #inMSFnSe#ondS!a !rilhaWiXTTP &n#S4es"lt' #inMSFnMin"teS!a !rilhaWiXT o ;2TP endP &n#S4es"lt' Se#TP

!(#

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

&n#S4es"lt' Min o ;2TP endP 6 Criado ; Ini"iali!a os drivers de CD 7 proced%re !Fn0layer.&nitCDSSenderM!()1e#tTP var i M integerP begin i2 not !rilhaAidas then begin AinhaStat"s.Caption MY ZAendo as trilhasZP AinhaStat"s.JpdateP 2or i MY 1 to CD.!ra#Bs do !a !rilhaWiX MY CD.!ra#BAengthWiXP !rilhaAidas MY !r"eP endP endP 6 Criado ; Reseta o formulJrio 7 proced%re !Fn0layer.4esetCDSSenderM!()1e#tTP begin 6 0impa para trilha & 7 !rilhaCorrente MY 1P A)l!ra#B.Caption MY Z2ZP A)l!i e.Caption MY Z22M22ZP 6 Modifi"a a "or para vermelho 7 A)l!ra#B.Font.Color MY #l4edP A)l!i e.Font.Color MY #l4edP 6 Para o CD Pla/er 7 CD.StopP 6 Colo"a a posi"ao da trilha para a ini"ial 7 CD.Start0os MY #inMaBen!MSFS1' 2' 2' 2TP CD0laying MY FalseP CD0a"sed MY FalseP endP 6 .vento 4imer do '()eto 4imer1 7 proced%re !Fn0layer.!i er1!i erSSenderM !()1e#tTP var !rilha' Min"tes' Se#onds M )yteP strMin"to' strSeg"ndoM StringP 0osM Aong&ntP begin 6 #"erta o estado da linha 7 i2 CD0a"sed then AinhaStat"s.Caption MY Z0a"sadoZ else AinhaStat"s.Caption MY ModeStrWCD.ModeXP case CD.Mode o2 pStoppedM begin

!(+

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

6 Ini"iali!a o CD para ser lido 7 i2 not !rilhaAidas then &nitCDSCDTP 6 No "aso de ser Continuous Pla/ 7 i2 CD0laying and Snot CD0a"sedT then begin CD.Start0os MY #inMaBen!MSFS1' 2' 2' 2TP CD.0layP CD.3na)led%"ttons MY W)t0a"se' )tStop' )t5e.t' )t0rev' )t31e#tXP endP endP p(penM begin !rilhaAidas MY FalseP 4esetCDSCDTP endP p0layingM begin 0os MY CD.0ositionP !rilha MY #in!MSFn!ra#BS0osTP Min"tes MY #in!MSFnMin"teS0osTP Se#onds MY #in!MSFnSe#ondS0osTP !rilhaCorrente MY !rilhaP 6 ConstrQi os minutos e se undos para mostrar 7 strMin"to MY &nt!oStrSMin"tesTP strSeg"ndo MY &nt!oStrSSe#ondsTP i- AengthSstrMin"toT ` 7 then strMin"to MY Z2Z \ strMin"toP i- AengthSstrSeg"ndoT ` 7 then strSeg"ndo MY Z2Z \ strSeg"ndoP 6 Mostra os 0a(els 7 A)l!ra#B.Caption MY &nt!oStrS!rilhaTP A)l!i e.Caption MY strMin"to \ ZMZ \ strSeg"ndoP endP endP endP 6 .vento PostCli"k do '()eto CD 7 proced%re !Fn0layer.CD0ostCli#BSSenderM !()1e#tP %"ttonM !M0%tn!ypeTP begin case %"tton o2 )t0layM begin 6 Modifi"a a "or para #!ul Marinho 7 A)l!ra#B.Font.Color MY #l5avyP A)l!i e.Font.Color MY #l5avyP CD0laying MY !r"eP CD0a"sed MY FalseP JpdateP endP )t0a"seM begin 6 Modifi"a a "or para Ro@o 7

!()

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

A)l!ra#B.Font.Color MY #l0"rpleP A)l!i e.Font.Color MY #l0"rpleP CD0laying MY FalseP CD0a"sed MY !r"eP JpdateP endP )tStopM 4esetCDSCDTP )t31e#tM begin !rilhaAidas MY FalseP 4esetCDSCDTP endP endP !i er1!i erS!i er1TP endP 6 .vento 'nNotif/ do '()eto CD 7 proced%re !Fn0layer.CD5oti-ySSenderM !()1e#tTP begin !i er1!i erS!i er1TP endP 6 .vento 'nCreate do '()eto 5GPla/er 7 proced%re !Fn0layer.For CreateSSenderM !()1e#tTP begin CD0laying MY FalseP CD0a"sed MY FalseP !rilhaAidas MY FalseP endP end.

Salve o -or "l+rio #o o no e de FPlaPer e -a*a a #ha ada a partir do do se" siste a' )o diverti ento.

en" prin#ipal

Ca67/05o )
Novos Componentes
J a das aiores vantagens do Delphi so)re os de ais #on#orrentes K o -ato da gera*$o de novos #o ponentes Sde novos o)1etosT. ( e.e plo a seg"ir pretende #olo#ar " a l"z so)re o ass"nto )+si#os para o desenvolvi ento de #o ponentes' estes passos s$oM Criando propriedades e KtodosP ostrando os passos

!(9

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Controle ao a#esso as propriedadesP 0ropriedades de leit"ra e es#ritaP 3nviando e re#e)endo ensagens atravKs dos #o ponentes.

Criando Com6onen/es
Co ponentes s$o #o o )lo#os de #onstr"*$o para as apli#a*8es Delphi. =o#I poder+ #onstr"ir " a apli#a*$o si ples ente adi#ionando estes )lo#os e odi-i#ando os eventos' propriedades o" Ktodos. !odos os #o ponentes poss"e d"as propriedades e #o " M Name e 4a . Alg"ns #o ponentes est$o distri)"/dos na Component Pallete. Mas alg"ns #o ponentes S4#ppli"ation' 4Menu' 4MenuItem' e 4S"reenT s$o dispon/veis apenas atravKs de se" #>digo. =o#I pode #riar novos #o ponentes "tilizando os seg"intes passosM 1. Derivando os novos #o ponentes de " 7. Modi-i#ando " 9. 4egistrando " #o ponente. #o ponente. #o ponente 1+ e.istente.

( #o ponente K #riado #o o " a unit separada de " pro1eto' podendo ser -or ado por " a o" ais unitRs. Ap>s vo#I #ria*$o do #o ponente' #o pila*$o e instala*$o dentro da paleta de #o ponentes. 0ara "sar o #o ponente' sele#ione-o da Component Pallete e adi#ione-o ao -or "l+rio.

/ Classe -Component
=o#I #riar+ " novo #o ponente "tilizando direta ente o Code .ditor' para isso vo#I "sar+ a Component .@pert. 5a verdade todos os #o ponentes #riados ser$o derivados de #o ponentes 1+ e.istentes' es o ,"e vo#I dese1e #riar " #o ponente se eventos o" propriedades ele ser+ herdado de " a #lasse 1+ e.istente a 4Component. A 4Component K " a #lasse ini#ial de #o ponentes' so) ela K ,"e -oi -eita a +rvore de #o ponentes Delphi' por e.e plo' a #lasse 4Control' poss"e ais de 72 #o ponentes des#endentes' tais #o oM 4BitBtn' 4Button' 4Che"kBo@' 4ColorDialo ' 4Com(oBo@' 45orm' 45ontDialo ' 4>roupBo@' 42eader' 4Ima e' 40a(el' 40istBo@' 4MainMenu e 4MediaPla/er. 3 vo#I ainda pode derivar ais alg"ns des#endentes da,"i.

:m Componente Simples
=a os #riar agora " novo #o ponente' para tanto a)ra " novo pro1eto e sele#ione

File e /eOAAA sele#ione a p+gina /eO e o ite . Ser+ ostrada a 1anela da Component .@pert. &n-or e os seg"intes parV etros #on-or e o desenho a)ai.oM

!#,

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Cli,"e no )ot$o (m para a#eitar a entrada. A Component .@pert #riar+ a"to ati#a ente o seg"inte #>digo para a #ha ada da Jnit1M
%nit Jnit1P inter2ace %ses OindoLs' Messages' SysJtils' Classes' Graphi#s' Controls' For s' DialogsP tPpe C"stCo p1 Y classS!Co ponentT private 6 Private de"larations 7 protected 6 Prote"ted de"larations 7 p%blic 6 Pu(li" de"larations 7 p%blished 6 Pu(lished de"larations 7 endP proced%re 4egisterP implementation proced%re 4egisterP begin 4egisterCo ponentsSZC"sto Z' WC"stCo p1XTP endP end.

/dicionando o Componente a Pal&eta


0or in#r/vel ,"e pare*a as vo#I ter ino" de #onstr"ir se" pri eiro #o ponente' e )e verdade ,"e ele n$o -az a)sol"ta ente nada alK de a)rigar as 6ni#as propriedades padr8es e.istentes e ,"al,"er #o ponenteM Name e 4a . Mas 1+ esta os no #o e*o.

!#!

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Salve o #o ponente #o o C%st' sele#ionando File Z 6ave' dentro do diret>rio de instala*$o do Delphi na pasta 3ib. 0ara instalar o #o ponente sele#ione Component Z 7nstallAAA apare#er+ a seg"inte 1anela di+logoM

Cli,"e no )ot$o AddAAA e ser+ ostrada a 1anela di+logo Add Mod%le. Jse o )ot$o BroOse para lo#alizar o ar,"ivo C%stAPA6' note ,"e ele ser+ re etido a 0istBo@ 7nstalled %nitsM e #a inho do #o ponente Sse vo#I salvo"-o e o"tro diret>rioT ser+ #olo#ado no 6earch Path. 0ara novos #o ponentes #rie " diret>rio e )ai.o do Delphi entit"lado 3ib ' pois se vo#I se pre #olo#ar #ada novo #o ponente no diret>rio 3ib' #aso vo#I pre#ise #opiar apenas os se"s #o ponentes' di-i#il ente os disting"ir+ dos #o ponentes padr8es do Delphi. Ae )re-se ,"e o 6earch Path K " #a po te.to li itado e 755 posi*8es ent$o ta )K n$o adianta para #ada #o ponente novo #olo#ar " diret>rio separado' pois -a#il ente vo#I esto"rar+ o ta anho do #a po 6earch Path. Final ente #li,"e no )ot$o (m e a COMP37BADC3 S%i)liote#a padr$o de #o ponentesT ser+ re#o pilada. Ao tKr ino da #o pila*$o' note ,"e -oi #riada " a nova p+gina na Component Pallete SC"sto T e adi#ionado o novo #o ponente SC"sto Co p1T. 0ara testar se" novo #o ponente #rie " novo -or "l+rio insira o #o ponente CustomComp1. ()serve atravKs da '()e"t Inspe"tor as propriedades do se" novo #o ponenteM Name e 4a .

!#

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Criando Propriedades
0ara o nosso #o ponente va os adi#ionar " a propriedade ,"e ar azenar+ " valor inteiro' para isto #ha e nova ente a %nit do #o ponente e insira os #>digos a)ai.o da de#lara*$o privateM
tPpe C"stCo p1 Y classS!Co ponentT private -De o0ropM&ntegerP

Agora #riare os " a propriedade aonde o valor ser+ lido e es#rito atravKs desta vari+vel para tanto insira os #>digos a)ai.o da de#lara*$o p%blishedM
p%blished propertP De o0ropM &nteger read -De o0rop Orite -De o0ropP endP

A se*$o P%blic Sp6)li#aT a)riga as vari+veis' pro#edi entos o" -"n*8es ,"e pode ser lidos e e.e#"tados por ,"ais,"er o"tras %nits ,"e "tilize SatravKs #l+"s"la WsesT a %nit e ,"est$o 1+ a se*$o P%blished S0")li#adoT K "tilizada para inserir propriedades o" eventos aos #o ponentes. Salve o #o ponente e re#o pile a )i)liote#a atravKs das op*8es Component Z Reb%ild 3ibrarPAAA' ao tKr ino da re#o pila*$o' note ,"e para o #o ponente -oi #riada " a nova propriedade de-inida #o o DemoProp ,"e ar azena o valores inteiros.

';todos de /cesso
A propriedade #riada pode disparar " pro#edi ento o" " a -"n*$o para e.e#"tar deter inadas a*8es Spor e.e plo' #olo#ando " intervalo v+lido para a vari+vel #riadaT. 0ri eiro' es#reva a seg"inte -"n*$o para a -"n*$o read do #o ando propertPM
2%nction C"st.GetDe o0ropM integerP begin 4es"lt MY -De o0ropP endP

3s#reva o pro#edi ento para a -"n*$o Orite do #o ando propertPM


proced%re C"st.SetDe o0ropSvalM integerTP begin i2 val _ 99 then begin De o0rop MY -De o0ropP raise e.#eption.#reateSZ=alor n$o pode ser end else -De o0rop MY valP endP

aior ,"e 99ZTP

De#lare a -"n*$o SetDemoProp e o pro#edi ento 6etDemoProp na se*$o private' #on-or e o e.e plo a)ai.oM
private !#"

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

-De o0ropM&ntegerP 2%nction GetDe o0ropM integerP proced%re SetDe o0ropSvalM integerTP

3 para a se*$o p%blished tro,"e as propriedadesM


p%blished propertP De o0ropM &nteger read GetDe o0rop Orite SetDe o0ropP

Salve o #o ponente e re#o pile a )i)liote#a atravKs das op*8es Component Z Reb%ild 3ibrarPAAA' note ,"e a propriedade n$o ais per itir+ valores s"periores a 99.

Criando novos tipos


De odo se elhante aos 1+ des#ritos " a propriedade pode a)rigar " a lista de tipos de-inidos' para tanto na se*$o tPpe de-ina o #on1"nto ,"e a)rigar+ os tiposM
tPpe !Dire#ao Y SdrCi a' dr%ai.o' drAadoTP

5a se*$o private #rie " a nova vari+vel #o


private -De o0ropM&ntegerP -5ova0ropM!Dire#aoP

)ase no tipo de-inidoM

3 -inal ente na se*$o p%blished de-ina a propriedadeM


p%blished propertP De o0ropM &nteger read GetDe o0rop Orite SetDe o0ropP propertP 5ova0ropM !Dire#ao read -5ova0rop Orite -5ova0ropP

Salve o #o ponente e re#o pile a )i)liote#a atravKs das op*8es Component Z Reb%ild 3ibrarPAAA' teste a nova propriedade.

Pensando em O89e/os
Mas para ,"e deve os #riar novos #o ponentesF 0ara aliviar os os C-"t"rosD tra)alhos. Ae )ra-se ,"ando vo#I #opiava a,"eles pe,"enos peda*os de rotinas Sdo tipoM #+l#"lo de C0F/CGC' #+l#"lo de -atorial' " #a)e*alho de relat>rio...T os o)1etos serve e.ata ente para g"arda os estes Cpe,"enos peda*osD de )lo#os de progra a*$o' o" se vo#I pre-erir o ter o serve para encaps%larmos estes #>digos.

Constr$indo $m Objeto
@"ando -or #onstr"ir o)1etos le )re-se ,"e ele deve servir N v+rios apli#ativos' n"n#a #onstr"a " o)1eto ,"e servir+ apenas a " 6ni#o apli#ativo SK perda de te poT. !odo o siste a Spelo enos 2or NindoOsT ne#essita de " a 1anela 6obre o 6istema ent$o va os trans-or ar a 1anela so)re #riada no Cap.t%lo 7R e " o)1eto pr+ti#o ,"e sirva a ,"al,"er siste a' ini#ie " novo pro1eto e #rie " novo #o ponente' para tanto a)ra " novo

!#&

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

pro1eto e sele#ione File e /eOAAA sele#ione a p+gina New e o ite 1anela da Component .@pert. &n-or e os seg"intes parV etrosM Class /ameM So)reDlg Ancestor tPpeM !Co ponent Palette PageM Dialogs

Component. Ser+

ostrada a

Cli,"e no )ot$o (m para a#eitar a entrada. As altera*8es propropostas no o)1eto est$o do#" entadas #o o -onteM
%nit So)reDlgP 6 .ste o()eto permite a "ria3=o de uma S"ai@a so(reS padr=o para diversos apli"ativos% 7 inter2ace %ses SysJtils' Oin!ypes' Oin0ro#s' Messages' Classes' Graphi#s' Controls' For s' Dialogs' -So)reP tPpe !So)reDlg Y #lassS!Co ponentT private F0rod"#t5a e' F=ersion' FCopyright' FCo entsM stringP p%blic 2%nction 3.e#"teM %ooleanP p%blished propertP 5o e0rod"toM string read F0rod"#t5a e Orite F0rod"#t5a eP propertP =ersaoM string read F=ersion Orite F=ersionP propertP DireitosM string read FCopyright Orite FCopyrightP propertP Co entarioM string read FCo ents Orite FCo entsP endP const 04(C3SS(4n&5!3An9<; Y 9<;P 04(C3SS(4n&5!3An:<; Y :<;P 04(C3SS(4n&5!3An035!&JM Y 5<;P 04(C3SS(4n&5!3An<;2 Y <;2P 04(C3SS(4nM&0Sn41222 Y 1222P 04(C3SS(4nM&0Sn47222 Y 7222P 04(C3SS(4nM&0Sn49222 Y 9222P 04(C3SS(4nM&0Sn4:222 Y :222P 04(C3SS(4nAA0?An712;: Y 712;:P 04(C3SS(4n00Cn;21 Y ;21P 04(C3SS(4n00Cn;29 Y ;29P 04(C3SS(4n00Cn;2: Y ;2:P 04(C3SS(4n00Cn;72 Y ;72P var So)reDlgM !So)reDlgP proced%re RegisterP

!#(

Borland
implementation

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

proced%re RegisterP begin 4egisterCo ponentsSZDialogsZ' W!So)reDlgXTP endP 2%nction !So)reDlg.3.e#"teM %ooleanP var (s&n-oM !(S=34S&(5&5F(P Sys&n-oM !SlS!3M&5F(P Me StatM !M3M(4lS!A!JSP DisB5oM &ntegerP begin // Cria a 1anela e e >ria FnSo)re MY !FnSo)re.CreateSAppli#ationTP trP Oith FnSo)re do begin // Colo"a as propriedades nas variaveis do formulario 0rod"#t5a e.Caption MY 5o e0rod"toP =ersion.Caption MY =ersaoP Copyright.Caption MY DireitosP Co ents.Caption MY Co entarioP Caption MY ZSo)re Z \ 5o e0rod"toP (s&n-o.dL(S=ersion&n-oSize MY sizeo-S!(S=34S&(5&5F(TP Get=ersion3.S(s&n-oTP // <ers=o do Windows case (s&n-o.dL0lat-or &d o2 =34n0AA!F(4MnO&597s M Oin=ersion.Caption MY ZOindoLs 9.1ZP =34n0AA!F(4MnO&597nO&5D(OS M Oin=ersion.Caption MY ZOindoLs 95ZP =34n0AA!F(4MnO&597n5! M Oin=ersion.Caption MY ZOindoLs 5!ZP endP Dos=ersion.Caption MY -or atSZtd.td =er M tdZ' W(s&n-o.dLMa1or=ersion'(s&n-o.dLMinor=ersion'A(O(4DS(s&n-o.dL%"ild5" )erTXTP // Pe a o pro"essador GetSyste &n-oSSys&n-oTP case Sys&n-o.dL0ro#essor!ype o2 04(C3SS(4n&5!3An9<; M C0J.Caption MY -or atSZtd tsZ'WSys&n-o.dL5" )er(-0ro#essors' Z&ntel <29<;ZXTP 04(C3SS(4n&5!3An:<; M C0J.Caption MY -or atSZtd tsZ'WSys&n-o.dL5" )er(-0ro#essors' Z&ntel <2:<;ZXTP 04(C3SS(4n&5!3An035!&JM M C0J.Caption MY -or atSZtd tsZ'WSys&n-o.dL5" )er(-0ro#essors' Z&ntel 0enti" ZXTP 04(C3SS(4nM&0Sn41222 M C0J.Caption MY -or atSZtd tsZ'WSys&n-o.dL5" )er(-0ro#essors' ZM&0S 41222ZXTP 04(C3SS(4nM&0Sn47222 M C0J.Caption MY -or atSZtd tsZ'WSys&n-o.dL5" )er(-0ro#essors' ZM&0S 47222ZXTP 04(C3SS(4nM&0Sn49222 M C0J.Caption MY -or atSZtd tsZ'WSys&n-o.dL5" )er(-0ro#essors' ZM&0S 49222ZXTP 04(C3SS(4nM&0Sn4:222 M C0J.Caption MY

!##

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

-or atSZtd tsZ'WSys&n-o.dL5" 04(C3SS(4nAA0?An712;: -or atSZtd tsZ'WSys&n-o.dL5" 04(C3SS(4n00Cn;21 -or atSZtd tsZ'WSys&n-o.dL5" 04(C3SS(4n00Cn;29 -or atSZtd tsZ'WSys&n-o.dL5" 04(C3SS(4n00Cn;2: -or atSZtd tsZ'WSys&n-o.dL5" 04(C3SS(4n00Cn;72 -or atSZtd tsZ'WSys&n-o.dL5" endP

)er(-0ro#essors' ZM&0S 4:222ZXTP M C0J.Caption MY )er(-0ro#essors' ZAA0?A 712;:ZXTP M C0J.Caption MY )er(-0ro#essors' Z0oLer 0C ;21ZXTP M C0J.Caption MY )er(-0ro#essors' Z0oLer 0C ;29ZXTP M C0J.Caption MY )er(-0ro#essors' Z0oLer 0C ;2:ZXTP M C0J.Caption MY )er(-0ro#essors' Z0oLer 0C ;72ZXTP

Me Stat.dLAength MY sizeo-S!M3M(4lS!A!JSTP Glo)alMe oryStat"sSMe StatTP FreeMe ory.Caption MY -or atSZ!otM td m% DispM td m%Z' W!r"n#SMe Stat.dL!otal0hys/127:T'!r"n#SMe Stat.dLAvail0hys/127:TXTP DisB5o MY 9P FreeDisB.Caption MY ZZP Free4eso"r#es.Caption MY ZZP repeat i2 DisB5o ` 7 then FreeDisB.Caption MY FreeDisB.Caption \ -or atSZtsM td M% Z' WChrSDisB5o \ (rdSZAZT- 1T'!r"n#SDisBFreeSDisB5oT/127:/127:TXT else Free4eso"r#es.Caption MY Free4eso"r#es.Caption \ -or atSZtsM td M% Z' WChrSDisB5o \ (rdSZAZT- 1T'!r"n#SDisBFreeSDisB5oT/127:/127:TXTP in#SDisB5oTP %ntil DisBFreeSDisB5oT Y -1P 0rogra &#on.0i#t"re.Graphi# MY Appli#ation.&#onP 4es"lt MY SShoLModal Y &D(mTP endP 2inallP FnSo)re.FreeP endP endP end.

0ara esta pri eira etapa do nosso o)1eto note ,"e t"do gira e torno do pro#edi ento 0Tec%te So no e se deve apenas a " a ,"est$o de padroniza*$o #o os o"tros o)1etos da palheta Dialo sT' atravKs deste pro#edi ento 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' A$0/ghOM 5$o aproveite o -or "l+rio FM6obre 1+ #riado pois este K " a heran*a do -or "l+rio FM6plash' #rie-o #on-or e o desenho a)ai.oM

!#+

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

0ara os o)1etos dentro do painelM altere a propriedade CaptionM 5o e do 0rod"to' =ers$o' Direitos 4esevados e Co ent+rio e a propriedade /ameM 0rod"#t5a e' =ersion' Copyright' Co ents. 0ara os o)1etos -ora do painelM altere os o)1etos 3abels da es,"erda a propriedade Caption S3.M Js"+rio' Co panhiaT e os da direita a propriedade /ame S3.M Jser5a e' Co pany5a eT

A propriedade /ame para todos os #o ponentes' na orde


$ipo !& age !Aa)el !Aa)el !Aa)el !Aa)el !For Objeto 0rod"#t5a e Aa)el1 Aa)el9 Aa)el5 Aa)el7 0anel1 $ipo !Aa)el !Aa)el !Aa)el !Aa)el !Aa)el !0anel Objeto =ersion Jser5a e Oin=ersion C0J FreeDisB $ipo !Aa)el !Aa)el !Aa)el !Aa)el !Aa)el

,"e eles apare#e


Objeto Copyright Aa)el7 Aa)el: Aa)el; Free4eso"r#es

s$oM
$ipo !Aa)el !Aa)el !Aa)el !Aa)el !Aa)el

Objeto 0rogra &#on Co ents Co pany5a e Dos=ersion FreeMe ory FnSo)re

Salve a 1anela #o o no e de F6obre e o #o ponente #o o 6obreDlg e #o pile a )i)liote#a e instale o #o ponenteM So(reDl %P#S' teste o #o ponente da seg"inte -or aM 1. 4e ova do pro1eto o -or "l+rio FM6obre e retire s"a #ha ada da #l+"s"la WsesP 7. Colo,"e o #o ponente no -or "l+rio FMMen% e a#erte as s"as propriedadesP 9. &nsira a #ha ada ao #o ponente na op*$o de 6obre o 6istemaM
proced%re !FnMen".&te A".ilio1Cli#BSSenderM !()1e#tTP begin So)reDlg.3.e#"teP endP

:. Co pile e rode o siste a.

!#)

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

%e -vindo ao

"ndo dos o)1etos.

%inalmente
Q -a#il ente re#onhe#ido ,"e este novo a )iente da Borland poss"i " poder " tanto ili itado' tanto na #ria*$o de siste as #o o no desenvolvi ento de apli#a*8es de "lti /dia resta-nos Sa n>s desenvolvedoresT dei.ar os a i agina*$o -l"ir e ini#iar t"do a,"ilo ,"e se pre dese1a os' espero ,"e lhe tenha a1"dado ao enos a trilhar o #a inho das pedras.

!#9

A6Ondi4e A

Do40men/a12o
A do#" enta*$o in#l"/da #o o Delphi Client/ServerM

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 Referen"e InterBase Data Definition ReportSmith Creatin Reports

!oda a do#" enta*$o K en#ontrada e -or a de livros e odo on-line Spara o seg"ndo #aso -az-se ne#ess+ria a instala*$o do AC4(%A! 4eader 7.2 ,"e a#o panha o prod"toT.

Pard:areQSo@/:are reM0eridos
( Delphi Client/Server re,"erM

Windows M%1T ou superior

4& me a(/tes de espa3o livre para a instala3=o m?nima 9& me a(/tes de espa3o livre para a instala3=o "ompleta
um pro"essador ,&M,U ou maior VN,U re"omendadoW

8 me a(/tes de R#M

0ara instalar' rode o progra a &5S!AAA.3R3 direto do CD 4(M o" do dis,"ete e prossiga #o as instr"*8es. Ser$o in#l"/das in-or a*8es adi#ionais no ar,"ivo 43ADM3.!R! nor al ente instalado no diret>rio kD3A0?&. Alg"ns e.e plos de apli#a*8es est$o #ontidas no diret>rio kD3A0?&kD3M(S.

172

A6Ondi4e ,

Convers2o de Cam6os
Q poss/vel' #o o D.0P2I' #riar os " es o siste a ,"e rode e di-erentes tipos de )ases' atravKs de " 6ni#o A37A6. 0ara isto pre#isa os ,"e a de-ini*$o' ta anho e no e dos #a pos e ta)elas se1a ne#essaria ente os es os. A)ai.o est+ a #onvers$o para ,"atro )ases l>gi#as de dadosM
6intaTe 6]3 - para InterBase' 'R#C0. ' Informi@ entre o"tras. BD0 3-gico - A #ha ada do #a po interna ao D.0P2I. ParadoT - %ases do tipo Parado@% dBA60 - %ases do !ipo .D%F.
Sinta.e S@A SMAAA&5! &5!3G34 D3C&MAAS.'yT 5JM34&CS.'yT FA(A!S.'yT C?A4AC!34SnT =A4C?A4SnT DA!3 %((A3A5 %A(%Sn'1T %A(%Sn'7T %A(%Sn'9T %A(%Sn':T %A(%Sn'5T !&M3 !&M3S!AM0 M(53l AJ!(&5C %l!3SSnT %D3 A>gi#o -ld&5!1; -ld&5!97 -ld%CD -ldFA(A! -ldFA(A! -ld[S!4&5G -ld[S!4&5G -ldDA!3 -ld%((A -ldstM3M( -ldst%&5A4l -ldstFM!M3M( -ldst(A3(%E -ldstG4A0?&C -ld!&M3 -ld!&M3S!AM0 -ldFA(A!' -ldstM(53l -ld&5!97' -ldstAJ!(&5C -ld%l!3SSnT 0arado. Short Aong &nteger %CD 5" )er 5" )er Alpha Alpha Date Aogi#al Me o %inary For atted (A3 Graphi# !i e !i esta p Money A"toin#re ent %ytes e o d%AS3 5" )er S;'12T 5" )er S72':T 5/A 5" )er S.'yT Float S.'yT Chara#ter Chara#ter Date Aogi#al Me o %inary 5$o Apresenta (A3 5$o Apresenta 5$o Apresenta 5$o Apresenta Float S72':T 5$o Apresenta 5$o Apresenta

. Y pre#is$o Sde-a"ltM espe#/-i#o para o driverT y Y es#ala Sde-a"ltM 2T n Y ta anho e )ytes Sde-a"ltM 2T 1-5 Y %A(% s")tipo Sde-a"ltM 1T

171

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@A' as n$o s"porta direta ente dados do tipo $7M0 o" $7M06$AMP. A lista a)ai.o #ontK os tipos de dados dispon/veis para as de#lara*8es S@A no &nter%aseM
/ome %A(% $amanho =ari+vel Preciso 5$o apresenta Descrio ()1eto do tipo )in+rio largo' poss/vel g"ardar dados grandes' tais #o o gr+-i#os' te.tos e voz digitalizada. !a anho -i.o de #ara#teres o" tipo de string. ( no e ta )K pode apresentar M C1ARAC$0R. !a )K in#l"i todas as in-or a*8es so)re a hora.

C?A4SnT DA!3 D3C&MAA Spre#is$o' es#alaT

n Cara#teres ;: )its vari+vel

1 atK 977;7 1 1an 122 atK 11 1an 59:1 0re#is$oM 1 atK 15 e es#ala de 1 atK 15 1'7 . 12-92< atK 1'7 . 1292< 9': . 12-9< atK 9': . 129< -7.1:7.:<9.;:< atK 7.1:7.:<9.;:< 0re#is$oM 1 atK 15 e es#ala de 1 atK 15 -97.7;< atK 97.7;7 1 atK 977;7

3spe#i-i#a-se por pre#is$o o n6 ero de d/gitos a sere gravados e por es#ala o n6 ero de #asas de#i ais' e.e plo D3C&MAAS12'9T K ig"al ao -or atoM ppppppp.eee. Jtilizado para valores #ient/-i#os' #o de pre#is$o. 0re#is$o si ples' #o Ca po do tipo longo. 15 d/gitos

D(J%A3 043C&S&(5 FA(A! &5!3G34

;: )its 97 )its 97 )its

7 d/gitos de pre#is$o.

5JM34&C Spre#is$o' es#alaT

vari+vel

3spe#i-i#a-se por pre#is$o o n6 ero de d/gitos a sere gravados e por es#ala o n6 ero de #asas de#i ais' e.e plo 5JM34&CS12'9T K ig"al ao -or atoM ppppppp.eee. Ca po Kdio.

SMAAA&5! =A4C?A4SnT

1; )its n Cara#teres

!a anho vari+vel de #ara#teres o" tipo de string. ( no e ta )K pode apresentar M RAR\7/S C1AR o" RAR\7/S C1ARAC$0R.

!+

A6Ondi4e C

A65i4a12o rL6ida 4om o O89e/o G0er=


0ara n$o -i#ar ,"ais,"er d6vidas so)re o o)1eto t@"ery ' va os "tiliz+-lo para a de onstra*$o de " a pe,"ena apli#a*$o' neste e.e plo' "tilizare os a )ase de dados en#ontrada no diret>rio CE[D03P17[D0MO6[DA$A "tilizare os as ta)elasM Customer' 'rders, Parts e Items. A idKia K ostrar " -or "l+rio #o o no e do #liente ligado a " Srid #o todas as en#o endas perten#entes a este #liente. Con-or e a -ig"ra a)ai.oM

0ara #o e*ar' #olo,"e e " novo -or "l+rio " o)1eto t$able e " o)1eto t]%erP. ( o)1eto t$able e-et"ar+ a liga*$o #o a ta)ela de Clientes S!a)ela CustomerT' en,"anto ,"e o t]%erP ir+ e.trair os detalhes da en#o enda S!a)elas 'rders, Parts e ItemsT apropriados a #ada #liente. (s dados est$o e " a ta)ela Parado@' pelo ,"e na propriedade DataBase/ame K #olo#ado o no e do diret>rio ,"e #ontK os dados So" de-ina o no e do AliasM D%De osT. A liga*$o K #o pletada atravKs da de-ini*$o das propriedades $able/ame e 7ndeT/ame' e se alternar os a propriedade Active para true ve os os dados reais' es o d"rante a -ase de #onstr"*$o do -or "l+rio. Se os registros #ontendo os detalhes dos pedidos estivesse todos e " a 6ni#a ta)ela' a 1"n*$o poderia ser -a#il ente realizada pela de-ini*$o das propriedades Master6o%rce e

179

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

MasterField de " seg"ndo o)1eto ta)ela' as' " a vez ,"e ne#essita os de dados de ais de " a ta)ela S'rders e Produ"tsT' esta tK#ni#a si ples 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 tK#ni#as para -azer istoM J a delas envolve o "so de vari+veis Cal#"ladas para " a das trIs ta)elas e ,"est$oP " a o"tra S ais si plesT envolve N atri)"i*$o de " valor N propriedade 6]3 do o)1eto t]%erP' o" se1a' " a instr"*$o 6]3 apropriada. 5este e.e plo' va os -azer #olo#ando alg" #>digo no evento OnDataChange do o)1eto Data6o%rce. Ae )re-se ,"e este evento K #ha ado se pre ,"e o registro #orrente K alterado. &nsira a seg"inte instr"*$o na propriedade 6]3 do o)1eto t]%erPM
S3A3C! (rders.(rder5o' &te s.@ty' 0arts.Des#ription' 0arts.Aist0ri#e F4(M (rders' &te s' 0arts O?343 (rders.(rder5o Y &te s.(rder5o A5D &te s.0art5o Y 0arts.0art5o A5D (rders.C"st5o Y MC"st5oP

4epare no #>digo 6]3 na vari+vel ICustNo' v+ para a propriedade Params do o)1eto t]%erP e #olo,"e para a vari+vel C"st5o #riada o Data tPpe #o o 5loat' est+ vari+vel ser+ passada para o 6]3 atravKs do evento OnDataChange do o)1eto Data6o%rce' insira o seg"inte #>digoM
proced%re !For 1.DataSo"r#e7DataChangeSSenderM !()1e#tP FieldM !FieldTP begin @"ery1.CloseP @"ery1.0ara sW2X.AsFloat MY !a)le1C"st5o.=al"eP @"ery1.(penP endP

4ele )rando no Delphi os dados -l"e seg"inte se,UIn#iaM

da )ase de dados para o -or "l+rio na

%ase de Dados o)1eto DataSet St!a)le o" t@"eryT o)1eto DataSo"r#e o)1eto Ca po

( o)1eto Data6o%rce K ne#ess+rio' pois os o)1etos de #a po n$o pode direta ente aos o)1etos do Data6et' as apenas atravKs de " o)1eto Data6o%rce.

ligar-se

0or #onseg"inte' para #ada o)1eto Data6et ta )K K #olo#ado no -or "l+rio " o)1eto Data6o%rce. Final ente' s$o adi#ionados o)1etos de #ai.a de edi*$o de te.to' " o)1eto Srid para as linhas da en#o enda e " o)1eto d)5avigator ligado a ta)ela de Customer' rode o pro1eto. o)1eto Srid est+ ligado ao o)1eto t]%erP SatravKs do o)1eto Data6o%rceT' ent$o este se at"aliza a"to ati#a ente #o os novos res"ltados das #ons"ltas.

!+&

A6Ondi4e D

Im6rimindo 0m -orm05Lrio
0ara i pri ir " -or "l+rio n$o te nenh" segredo' e.iste o #o ando PRIN4 rela#ionado a -or "l+rios' o pro)le a se ini#ia ,"ando o -or "l+rio "ltrapassa as di ens8es da tela do se" onitor' o" se1a' a larg"ra e alt"ra dele K aior ,"e a tela. Diga os " -or "l+rio ,"al,"er ,"e tenha a propriedade ?orzS#roll%ar.4ange Y 7;< e =ertS#roll%ar.4ange Y 122< Sisto #orresponde a " a -olha de papel ta anho A:T. ( progra a a)ai.o resolve e.ata ente este pro)le a' i pri indo so ente o)1etosM $label' $0dit' $Memo' $DB$eTt' $DB0dit e $DBMemo' "tiliza a )i)liote#a Printers para -azer o servi*o' #olo,"e " )ot$o ,"al,"er no -or "l+rio ,"e dese1e i pri ir e para o evento onCli#B' digite os seg"intes #o andosM
proced%re !-or 1.Speed%"tton1Cli#BSSenderM !()1e#tTP var C M arrayW2..755X o- #harP CAen' S#aleR' S#alel' &nd M &ntegerP For at M OordP DC M ?DCP MCo p M ! e oP 4 M !4e#tP begin 0rinter.%eginDo#P DC MY 0rinter.Canvas.?andleP S#aleR MY GetDevi#eCapsSDC' A(G0&R3ASRT div 0i.els0er&n#hP S#alel MY GetDevi#eCapsSDC' A(G0&R3ASlT div 0i.els0er&n#hP 2or &nd MY 2 to Co ponentCo"nt -1 do i2 SCo ponentsW&ndX is !C"sto Aa)elT or SCo ponentsW&ndX is !C"sto 3ditT then begin MCo p MY !Me oSCo ponentsW&ndXTP i2 SMCo p.visi)leT then begin 0rinter.Canvas.Font MY MCo p.FontP DC MY 0rinter.Canvas.?andleP 4 MY MCo p.%o"nds4e#tP 4.!op MY S4.!op \ =ertS#roll%ar.0ositionT o S#alelP 4.Ae-t MY S4.Ae-t \ ?orzS#roll%ar.0ositionT o S#aleRP 4.%otto MY S4.%otto \ =ertS#roll%ar.0ositionT o S#alelP 4.4ight MY S4.4ight \ ?orzS#roll%ar.0ositionT o S#alelP i2 Snot SCo ponentsW&ndX is !C"sto Aa)elTT and SMCo p.%orderStyle Y )sSingleT then 0rinter.Canvas.4e#tangleS4.Ae-t' 4.!op' 4.4ight' 4.%otto TP For at MY D!nA3F!P i2 SCo ponentsW&ndX is !3ditT or SCo ponentsW&ndX is !C"sto MasB3ditT then For at MY For at or D!nS&5GA3A&53 or D!n=C35!34 else

175

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

begin i2 MCo p.OordOrap then For at MY D!nO(4D%43AmP i2 MCo p.Align ent Y taCenter then For at MY For at or D!nC35!34P i2 MCo p.Align ent Y ta4ightE"sti-y then For at MY For at or D!n4&G?!P 4.%otto MY 4.%otto \ 0rinter.Canvas.Font.?eight \ 1P endP CAen MY MCo p.Get!e.t%"-SC'755TP 4.Ae-t MY 4.Ae-t \ S#aleR \ S#aleRP DraL!e.tSDC' C' CAen' 4' For atTP endP endP 0rinter.3ndDo#P CloseP endP

Se vo#I #onhe#e " po"#o de Pas"al -%& n$o a#redito ,"e vo#I teve di-i#"ldades e interpretar o progra a' se vo#I n$o #onhe#e a,"i v$o alg" as di#asM &ni#ial ente -oi de#larado " a sKrie de vari+veis ,"e ser$o "tilizadas posterior ente. 3 ent$o ini#iado o o)1eto de i press$o Printer atravKs do #o andoM
0rinter.%eginDo#P

( o)1eto i pri e atravKs de " a s")#lasse #onhe#ida por Canvas. 3sta #lasse e ,"e torna poss/vel a #ria*$o de toda a inter-a#e gr+-i#a do Delphi S3ste o)1eto parte de " en#aps"la ento da OindoLs ?DCT. J a -or a si ples de se i pri ir seria "tilizar os seg"intes #o andosM
0rinter.%eginDo#P 0rinter.Canvas.!e.t("tS2' 2' d3st+ i pri indo...HTP 0rinter.3ndDo#P

Mas' para se o)ter " a #>pia -iel do -or "l+rio K pre#iso -azer ais do ,"e isto' ini#ial ente e #ha ada a propriedade handle Sesta -az " a #ha ada a OindoLs GD& #ha ando -"n*8es da A0& para re,"erer o odo de desenho dos o)1etos envolvidosT' pr>.i o passo K veri-i#ar o tipo de es#ala Se pi.elsT da larg"ra e alt"ra da 1anela a ser i pressa. Agora resta veri-i#ar o)1eto a o)1eto Sdo tipo 0a(el o" do tipo .ditT e enviar s"as #ara#ter/sti#as para os dados da #lasse Canvas e i pri /-los. Ae )re-se o padr$o de i press$o do OindoLs K e itir a listage so ente ,"ando a es a estiver #o pleta e isto s> a#onte#er+ no #o ando M
0rinter.3ndDo#P

J a o"tra sa/da para a i press$o de se"s relat>rios pode ser #onseg"ida atravKs da "tiliza*$o de in6 eras )i)liote#as prontas ,"e -aze o a#esso ao o)1eto 4Printer. 3ntre elas e.iste a 4eport0rint Sda /evrona DesignsT ,"e pode ser ad,"irido " a vers$o de de onstra*$o atravKs da internet atravKs do seg"inte endere*oM

-tp.pri enet.#o /"sers/1/1g"nBel /delphi/rprinter.zip

!+#

A6Ondi4e +

Tra8a5hando 4om MLs4aras


A)rire os a,"i este apIndi#e para es#lare#er os a respeito de #a pos as#arados no Delphi' alg"ns #a pos pode poss"ir " a as#ara para edi*$o atravKs da propriedade Mask.dit' en#ontrada para os o)1etos !DateField' !Date!i eField' !StringField' !!i eField e o o)1eto. 0ara ontar " a +s#ara' "tiliza-se a propriedade 0ditMasU o)servando o li ite de dados ,"e o #a po poder+ ar azenar. Q "tilizada )asi#a ente para a valida*$o o" a -or ata*$o da entrada de " deter inado #a po. A +s#ara para os #a pos pode restringir o "so de deter inados #ara#teres o" -or atos v+lidos' ostrando a"to ati#a ente " a 1anela de n$o a#eita*$o da +s#ara. A valida*$o o#orre #ara#ter a #ara#ter. Jse o evento 'n<alidate para validar " a entrada #o pleta. A +s#ara )asi#a ente #onsiste de trIs #a pos' separados por ponto e v/rg"la. A pri eira parte e a +s#ara propria ente dita. A seg"nda parte deter ina se os #ara#teres -i.os deve ser o" n$o salvos #o a +s#ara Se.M /' -' S' ...T. A ter#eira parte da +s#ara representa o #ara#ter e )ran#o' podendo ser s")stit"/do por o"tro Se.M n' ^' ...T. 3stes s$o os #ara#teres espe#iais "tilizados #o
Cara#ter f _ ` `_ k A l A a C # 2 9 r M / Jtiliza*$o na +s#ara ,"e os #ara#teres digitados

+s#araM

Ca"sa a digita*$o da +s#ara -i,"e parada no pri eiro #ara#ter' -azendo #o ,"e se ova . 3.M fP2Pn !odos os #ara#teres digitados ser$o #onvertidos para !odos os #ara#teres digitados ser$o #onvertidos para An"la o "so dos #ara#tes _ e `. 3.M _aaa`_aaaP2Pn Jtilizado para

ai6s#"las. 3.M _aaaP2Pn in6s#"las. 3.M `aaaP2Pn

ar#ar deter inado #ara#ter n$o espe#ial #o o -i.o. 3.M fkS999kT222-2222P2Pn as n$o-o)rigat>rios' do tipo A-[' a-z. 3.M lllP1Pn as n$o-o)rigat>rios' do tipo A-[' a-z' 2-9. 3.M

4e,"er so ente #ara#teres al-a)Kti#os o)rigat>rios para a posi*$o' do tipo A-[' a-z. 3.M AAAP1Pn 0er ite so ente #ara#teres al-a)Kti#os para a posi*$o' 4e,"er so ente #ara#teres al-an" Kri#os o)rigat>rios para a posi*$o' do tipo A-[' a-z' 2-9. 3.M AAAP1Pn 0er ite so ente #ara#teres al-an" Kri#os para a posi*$o' aaaP1Pn 4e,"er "

#ara#ter o)rigat>rio para a posi*$o. 3.M CCCP1Pn

0er ite o "so de ,"al,"er #ara#ter para a posi*$o' li itando apenas o n6 ero de #ara#teres "tilizados. 3.M ###P1Pn 4e,"er so ente #ara#teres n" Kri#os o)rigat>rios para a posi*$o' do tipo 2-9. 3.M 222P1Pn 0er ite so ente #ara#teres n" Kri#os para a posi*$o' n$o-o)rigat>rios' do tipo 2-9. 3.M 999P1Pn 0er ite so ente #ara#teres n" Kri#os para a posi*$o e o "so dos sinais de - o" \' n$o-o)rigat>rios. 3.M rrrP1Pn Jtilizado #o o separador de horas' Jtilizado #o o separador de dia' in"tos e seg"ndos. Is e ano.

177

Borland
$ipo !ele-one C30 ?ora

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

3.e plos de M+s#arasM


MXscara fkS999kT222-2222P1Pn 22222k-9999P2Pn f92M22M22 _AAP2Pn 0ntrada 2;19<79952 79215272 1222:90M Formatao S2;1T9<79952 79215-272 12M22M:9 0M 6a.da S2;1T9<7-9952 79215272 77M22M:9

!+)

A6Ondi4e -

Tra8a5hando 4om Im6or/a12o e +F6or/a12o


A i porta*$o e e.porta*$o de ar,"ivos no Delphi pode ser realizada se pro)le as ,"ando se tratar de ta)elas e -or atos padr$o para o Delphi S0arado.' d%ase' (ra#le' Sy)ase' (D%C' et#T o ,"ase pro)le a era se tratando de e.porta*$o para ar,"ivos no -or ato .!R!' ,"ase por,"e ele ser+ resolvido a partir deste apli#ativo. 1. Crie " novo pro1eto. Grave a "nidade padr$o #o o 20Tp7mp e o pro1eto #o o 0Tp7mp. 7. Colo,"e os seg"intes o)1etos e -a*a as seg"intes altera*8esM 0ara o ()1eto $able SAo#alizado na p+gina Data AccessT
Con2ig%rao D)De os 3M0A(l33

Propriedades Data%ase5a e !a)le5a e

0ara o ()1eto OpenDialog! SAo#alizado na p+gina DialogsT


Con2ig%rao !R! Ar,"ivo !e.toeo.!R!

Propriedades De-a"lt3.t Filter

0ara o ()1eto 6aveDialog! SAo#alizado na p+gina DialogsT


Con2ig%rao !R! Ar,"ivo !e.toeo.!R!

Propriedades De-a"lt3.t Filter

Caption 5a e

0ara o ()1eto B%tton SAo#alizado na p+gina 6tandardT


Con2ig%rao p3.porta %"t3.porta

Propriedades

Caption 5a e

0ara o ()1eto B%tton SAo#alizado na p+gina 6tandardT


Con2ig%rao p& porta %"t& porta

Propriedades

( 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 K realizado pelos o)1etos OpenDialog e 6aveDialog. ( resto do #>digo K )e si ples ve1a osM 0ara o evento OnClicU do o)1eto %"t3.porta

179

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

proced%re !For 1.%"t3.portaCli#BSSenderM !()1e#tTP var Ar,M !e.tFileP begin i2 SaveDialog1.3.e#"te then begin S#reen.C"rsor MY #r?o"rGlassP Oith !a)le1 do begin (penP FirstP i2 not 3(F then begin AssignFileSAr,' SaveDialog1.File5a eTP 4eOriteSAr,TP repeat OriteAnSAr,'Field%y5a eSZ3 p5oZT.AsString \ ZeZ \ Field%y5a eSZAast5a eZT.AsString \ ZeZ \ Field%y5a eSZFirst5a eZT.AsString \ ZeZ \ Field%y5a eSZ0hone3.tZT.AsString \ ZeZ \ Field%y5a eSZ?ireDateZT.AsString \ ZeZ \ Field%y5a eSZSalaryZT.AsString \ ZoZTP ne.tP %ntil 3(FP CloseFileSAr,TP endP #loseP endP S#reen.C"rsor MY #rDe-a"ltP endP endP

&ni#ial ente va os e.portar o ar,"ivo Sno #aso 3 ployeeT' o -"n*$o do #o ando AssignFile e ini#iar " o)1eto de ar,"ivo te.to Sdeter inada pelo tipo de vari+vel $eTtFileT e o #o ando ReNrite prepara o o)1eto ini#iado para a grava*$o. Ae )re-se ,"e " ar,"ivo te.to s> pode re#e)er logi#a ente te.to de-inido pelos #o andos Nrite Sinsere " te.to e deter inado ar,"ivo e o #"rsor de grava*$o per ane#e na posi*$oT e Nrite3n Sinsere " te.to e deter inado ar,"ivo e o #"rsor de grava*$o ini#ia " a nova linhaT ent$o o 6ni#o tra)alho ser+ de per#orrer o nosso ar,"ivo #o o #o ando Repeat. 0ara o evento OnClicU do o)1eto %"t& porta

proced%re !For 1.%"t& portaCli#BSSenderM !()1e#tTP var Ar,M !e.tFileP !e.toM 6tringP &M &ntegerP 2%nction Monta=ariavelM 6tringP var ontaM StringP begin onta MY ZZP in#S&TP

!),

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Ohile !e.toW&X `_ ZoZ do begin i2 !e.toW&X Y ZeZ then )reaBP onta MY onta \ !e.toW&XP in#S&TP endP res"lt MY ontaP endP begin i2 (penDialog1.3.e#"te then begin S#reen.C"rsor MY #r?o"rGlassP !a)le1.(penP AssignFileSAr,' (penDialog1.File5a eTP 4esetSAr,TP i2 not 3(FSAr,T then repeat 4eadAnSAr,'!e.toTP Oith !a)le1 do begin &nsertP i MY 2P Field%y5a eSZ3 p5oZT.AsString MY Monta=ariavelP Field%y5a eSZAast5a eZT.AsString MY Monta=ariavelP Field%y5a eSZFirst5a eZT.AsString MY Monta=ariavelP Field%y5a eSZ0hone3.tZT.AsString MY Monta=ariavelP Field%y5a eSZ?ireDateZT.AsString MY Monta=ariavelP Field%y5a eSZSalaryZT.AsString MY Monta=ariavelP 0ostP endP %ntil 3(FSAr,TP CloseFileSAr,TP !a)le1.CloseP S#reen.C"rsor MY #rDe-a"ltP endP endP

=a os agora i portar o ar,"ivo Sno #aso 3 ployeeT' o -"n*$o do #o ando AssignFile e ini#ar " o)1eto de ar,"ivo te.to Sdeter inada pelo tipo de vari+vel $eTtFileT e o #o ando Reset prepara o o)1eto ini#iado para a grava*$o. (s #o andos de leit"ra s$o Read SAI " #ara#tere de deter inado ar,"ivoT e Read3n SAI " a linha de deter inado ar,"ivoT ent$o o tra)alho agora ser+ de separar e peda*os a linha lida isto K realizado na -"n*$o MontaRariavel ,"e ler+ peda*os de ar#ados do ar,"ivo e.portado.

!)!

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

A6Ondi4e .

DoRe me5hores di4as 6ara o De56hi


5este 6lti o apIndi#e do tra)alho reservei " a #oisa espe#ial' pes,"isei e todos os do#" entos tipo 4ips X 4ri"ks SDi#as e !r","esT e en#ontrei " do#" ento ,"e -alava so)re as onze elhores di#as para o Delphi. A"torM 0a"l ?arding 1222:;.7;2:^Co p"serve.Co 1. Co o -azer para o #o p"tador soar o )eepM
essage%eepS2TP

Salg" as -ora

alteradasT

7. Co o pa"sar "

progra a por deter inado n6 ero de seg"ndosM

var 5" Se#M S all&ntP Start!i eM Aong&ntP )egin Start!i e MY 5oLP repeat Appli#ation.0ro#essMessagesP "ntil 5oL _ Start!i e \ 5" Se# o S1/7:/;2/;2TP endP

9. Co o

ostrar o

o"se #o o " a a p"lheta Se depois retorn+-lo ao nor alTM

try S#reen.C"rsor MY #r?o"rGlassP b 3s#reva o a*$o a e.e#"tar a,"i c -inally S#reen.C"rsor MY #rDe-a"ltP endP Appli#ation.0ro#essMessagesP

:. Co o #ontrolar o pressiona ento da te#la `3nter_M


pro#ed"re !For 1.3ditmey0ressSSenderM !()1e#tP var meyM CharTP b atravKs do evento onmey0ress do -or "l+rio de #ontrole... c )egin b se a Cvar meyD retornar o #>digo r19 #orresponde a `3nter_' r9 #orresponde a te#la !A% c i- mey Y r19 then )egin mey MY r2 b S"pri e o so c b es#reva a,"i os se"s #o andos c endP endP

5. Co o

odi-i#ar a #or do te.to dentro de "

#a po D%Grid dependendo do #onte6doM

pro#ed"re !For 1.D%GridDraLDataCellSSenderM !()1e#tP #onst 4e#tM !4e#tP FieldM !-ieldP StateM !GridDraLStateTP )egin i- !a)le1Client.AsString Y dRRRRH then )egin D%Grid.Canvas.%r"sh.Color MY #l4edP D%Grid.Canvas.Font.Color MY #lSilverP D%Grid.Canvas.Fill4e#tS4e#tTP b Desenha o pano de -"ndo c D%Grid1.Canvas.!e.t("tS4e#t.Ae-t\7' 4e#t.!op\1' Field.AsStringTP endP endP

!)

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

;. Co o #ha ar " o"tro progra a Stipo o notepad do OindoLs T a partir de " Sde trIs aneiras di-erentesM nor al' a.i izado e ini izadoTM
Oin3.e#SdCMkLindoLsknotepad.e.eH' SOnS?(O5(4MAATP Oin3.e#SdCMkLindoLsknotepad.e.eH' SOnS?(OMAR&M&[3DTP Oin3.e#SdCMkLindoLsknotepad.e.eH' SOnS?(OM&5&M&[3DTP

apli#ativo

7. Co o varrer " a ta)ela inteiraM


!a)le1.FirstP i- not !a)le1.3o- then repeat b se"s #o andos para a ta)ela c !a)le1.5e.t "ntil !a)le1.3o-P

<. Co o inter#eptar as te#las de -"n*$oM


pro#ed"re !For 1.For meyDoLnSSenderM !()1e#tP var meyM OordP Shi-tM !Shi-tStateTP )egin i- mey Y =mnF5 then ShoLMessageSd=o#I pressiono" a F5HTP endP b pode ser "sado da =mnF1 a =mnF17 c

9. Co o os valores de #a pos de " a ta)ela para o"traM


b 3ste e.e plo #opia apenas ta)elas de es a estr"t"ra c var 5" M S all&ntP )egin -or 5" MY 2 to !a)ela(rige .FieldCo"nt - 1 do )egin !a)elaDestino.&nsertP !a)elaDestino.FieldsW5" X.AssignS!a)ela(rige .FieldsW5" XTP !a)elaDestino.0ostP endP endP

12. Co o veri-i#ar se "

#a po inteiro K par o" / parM

-"n#tion !esta0ara0arS!esta&nteiro M &ntegerT M )ooleanP )egin i- S!esta&nteiro div 7T Y S!esta&nteiro/7T then res"lt MY !r"e else res"lt MY FalseP endP

11. Co o veri-i#ar se " a string #ontK

"

inteiroM

-"n#tion &s&ntegerS!estaStringM StringT M )ooleanP )egin try Str!o&ntS!estaStringTP e.#ept (n 3Convert3rror do res"lt MY FalseP else res"lt MY !r"eP endP endP

17. Co o s")trair datasM


-"n#tion S")DataSData3 presti oM !Data!i eT M &ntegerP )egin res"lt MY Date - Data3 presti oP endP

!)"

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

!)&

Você também pode gostar