Você está na página 1de 8

Curso de Delphi 3.

02 - Apostila 1
Autor: Fernando Antonio F. Anselmo eMail: fernandoans@geocities.com Pr-Requisitos: indo!s "# Delphi 3.02 $ers%o Client&'er$er 'uite (D) *.#1 M'-Access "+

'al$e, para $oc- .ue est/ come0ando e participando deste curso, primeiramente gostaria de a$isar .ue o curso 1 totalmente pr/tico, com e2erc3cios e tru.ues .ue lhe a4udar%o a sen%o dominar pelo menos a des$endar os mist1rios desse mara$ilhoso am5iente. 6 Delphi 1 um am5iente de Desen$ol$imento totalmente (aseado na 6rienta0%o a 654etos, n%o 1 puro 7discutiremos isso mais tarde8 mas por en.uanto o .ue $oc- precisa sa5er .ue ele 1 uma ferramenta com um incr3$el poder na constru0%o tanto de soft!ares comple2os, .uanto de sistemas de manipula0%o a 5ancos de dados. 9ara o nosso primeiro contato, selecionei algo pr/tico, f/cil, :til e at1 mesmo 5onitinho, um cart%o eletr;nico, como a 9/scoa est/ chegando ent%o $oc- poder/ mandar para seus amigos um simples e2ecut/$el com uma mensagem, 1 poss3$el apro$eitar a id1ia para outros e$entos tam51m tais como <atal, Ani$ers/rios, nascimentos e assim $ai. =amos come0ar ent%o: Conhecendo o Am5iente A5ra o Delphi, 5em a3 est/ seu am5iente de tra5alho, $amos a uma r/pida e2plica0%o, o Delphi 1 composto por .uatro am5ientes de tra5alho: 1. 9arte superior composta pelo Menu, Component 9allete e (ot>es de Acesso ?/pido 7'peed (utton8: 1 e2atamente o con4unto .ue est/ suspenso na /rea a5erta, o Menu 7locali@ado no topo8 d/ acesso as op0>es, a Component Pallete 7locali@ado na parte superior direita8 cont1m todos os o54etos 7di$ididos em classes8 .ue $oc- utili@ar/ para reali@ar seus pro4etos, e os Botes de Acesso Rpido 7locali@ado na parte superior es.uerda8 .ue s%o uma a5re$ia0%o dos comandos do menu. 2. 654ect Anspector: 1 uma 4anelinha lateral 7chamada como a tecla F118 .ue cont1m as propriedades e os e$entos dos o54etos selecionados. 3. Form: este o54eto ser/ sua prancheta de tra5alho 1 nessa 4anela em 5ranco .ue criaremos nossa comunica0%o entre o sistema e os nossos usu/rios. *. Code )ditor: 1 a /rea locali@ada atr/s do BFormB, ela .ue conter/ nossas unidades 7em linguagem 654ect 9ascal8. 9ro4eto 1 - Cart%o )letr;nico

(em, agora .ue estamos familiari@ados com o am5iente, $amos come0ar como uma receita de 5olo, siga um passo atr/s do outro, mas antes de come0ar crie uma pasta .ue a5rigar/ seu pro4eto, por e2emplo Carto, e colo.ue nela o .BMP en$iado: 1. <a Component Pallete locali@e uma p/gina chamada Additional e dentro dessa p/gina de um cli.ue no o54eto Image 7acredito .ue se4a o se2to8 e d- um cli.ue no Form. 7automaticamente o Delphi criou um .uadrado .uadriculado .ue representa o o54eto Image 8. 2. 6lhe na !"#ect Inspector e $erifi.ue as propriedades do o54eto Image criado, e altere as seguintes propriedades: 2.1. Auto$i%e: Crue 7Far/ com .ue o tamanho do o54eto fi.ue automaticamente do tamanho da figura selecionada8 2.2. Picture: Cli.ue nos B...B e locali@e o ar.ui$o .(M9 en$iado 7'eleciona determinada figura8 3. =/ na !"#ect Inspector e locali@e o o54eto &orm seleciona-lo8, e altere as seguintes propriedades: 75asta clicar no Com5o (o2 para

3.1. Border$t'le: 5sDialog 7Far/ com .ue a 4anela fi.ue no formato padr%o de uma 4anela de mensagens8 3.2. Caption: Feli@ 9/scoa 7Conte:do da tar4a do formul/rio8 3.3. Color: cl(lacD 7Cor do formul/rio para preto8 3.*. &ont: Cli.ue nos B...B e fa0a as seguintes alte0>es na 4anela de Fonts: 3.*1. Cor: (ranco 3.*2. (aman)o: 10 3.*. *ame: FECartao 7<ome interno do formul/rio8 3.#. Position: po'creenCenter 7Far/ com .ue o formul/rio fi.ue sempre centrali@ado .uando for e2ecutado8 !"ser+a,o interessante: ApFs alterarmos a Cor 7propriedade Color8 e a Fonte 7propriedade &ont8 todos os outros o54etos criados em cima deste &orm, automaticamente herdar%o essas altera0>es. *. D- uma sal$adinha no seu pro4eto, para tanto, no menu $/ em &ile - $a+e All...: *.1. Aonde aparece .nit .pas 7o Delphi est/ se referindo do nome do formul/rio8 mude para /Cartao.PA$ *.2. Aonde aparece Pro#ect .dpr 7o Delphi est/ se referindo do nome do pro4eto - .ue ser/ o nome do e2ecut/$el final8 mude para Cartao.0PR #. <a Component Pallete locali@e uma p/gina chamada $tandard e dentro dessa p/gina locali@e o o54eto 1a"el 7acredito .ue se4a o terceiro8 pressione a tecla $2I&( e cli.ue no o54eto 7de$e ter ficado um .uadriculado a@ul em $olta do o54eto, como se ficasse marcado8 e d- oito cli.ues no Form - um a5ai2o do outro e na /rea preta. 7automaticamente o Delphi criou oito o54etos chamados respecti$amente 1a"el , 1a"el3, 1a"el4, 1a"el5, 1a"el6, 1a"el7, 1a"el8 e 1a"el98

G. Huando terminar cli.ue dentro da Component Pallete na setinha para poder desmarcar o o54eto 1a"el. +. D- uma comparadinha no desenho para $er como est/ ficando:

(om, todos os o54etos .ue ser%o $is3$eis 4/ est%o a3, agora $amos criar dois o54etos .ue ser$ir%o apenas como meros au2iliares: +. <a Component Pallete na mesma p/gina $tandard cli.ue no o54eto Memo 7acredito .ue se4a o .uinto8 e d- um cli.ue no Form 7automaticamente o Delphi criou um .uadrado .ue representa o o54eto Memo 8. I. 6lhe na !"#ect Inspector e $erifi.ue as propriedades do o54eto Memo criado, e altere as seguintes propriedades: I.1. &ont: Cli.ue nos B...B e fa0a as seguintes alte0>es na 4anela de Fonts: I.11. Cor: 9reto I.12. (aman)o: I I.2. 1ines: Cli.ue nos B...B e copie o seguinte te2to: Recebe, Oh Senhor, em sua gloria eterna e envolve com paz e amor este sacrifcio em incenso, que sobe clamando por justia por todos os meninos assassinados pelos pobres que morrem de fome pelas mulheres violentadas pelo povo roubado e explorado. perdoa, Oh Senhor,

perdoa o !rasil, seu presidente estratosf"rico, seus deputados escondidos, seus senadores omissos, sua igreja distrada, seus militares fantoches, sua polcia ausente, perdoa n#s todos, Senhor, perdoa a mim e a meu irm$o que nada fizemos, que n$o agimos, e que n$o vimos a imagem de seu filho %risto na %ruz. 6u digite um outro te2to .ue mais lhe agradar, mas anote o n:mero de linhas 7neste a.ui temos 2# linhas8 I.3. :isi"le: False 7<%o mostrar/ o o54eto em tempo de e2ecu0%o8 ". <a Component Pallete na p/gina $'stem cli.ue no o54eto (imer 7acredito .ue se4a o primeiro8 e d- um cli.ue no Form 7automaticamente o Delphi criou um .uadradinho com um relFgio, .ue por sinal 1 uma cFpia do desenho do o54eto8. Codificando Cudo pronto, agora 1 sF meter a m%o no programa, mas $amos de$agar, a id1ia do cart%o, se $oc- ainda n%o entendeu, 1 .ue ao ser e2ecutado a mensagem .ue est/ guardada dentro do o54eto Memo rolar/ entre os oito la5els 7como se ti$esse su5indo8 para isso foi criado um Cempori@ador 7654eto (imer 8, .ue 1 ati$ado a cada segundo 7atra$1s da propriedade Inter+al, medida em mil1simos de segundo8 .ue simular/ o mo$imento entre os la5els. )nt%o $amos come0ar a 5rincadeira: 10. 9ressione a tecla F12, at1 $oc- ter acesso a Code ;ditor, sugiro .ue $oc- ma2imi@e a /rea para tra5alhar melhor, locali@e as seguintes linhas: pri+ate J 9ri$ate declarations K pu"lic J 9u5lic declarations K endL e altere para o seguinte: pri+ate <umMinha: AntegerL pu"lic J 9u5lic declarations K endL

=oc- aca5a de criar uma $ari/$el particular 7 Pri+ate8 do tipo inteira 7Integer8 .ue ser$ir/ apenas a este formul/rio, sendo criada e destru3da 4unto com ele. 11. Mocali@e na !"#ect Inspector o o54eto &<Cartao, mude para a p/gina de e$entos 7 ;+ents8 e locali@e o e$ento !n$)o=, d- um duplo cli.ue na /rea em 5ranco. Automaticamente o Delphi criar/ para $oc- a chamada ao e$ento e o transferir/ para a Code ;ditor, insira o seguinte cFdigo: procedure CFECartao.Form'ho!7'ender: C654ect8L +ar i : AntegerL "egin /or i :N ComponentCount - 1 do=nto 0 do i/ 7ComponentsOAP is CMa5el8 t)en 7ComponentsOAP as CMa5el8.Caption :N QQL <umMinha :N 0L Cimer1Cimer7'ender8L endL <este e$ento .ue 1 disparado assim .ue o formul/rio se inicia, limparemos os oito Ma5els para isso simplesmente utili@aremos uma string $a@ia, use aspas simples 7nunca duplas8 e sem espa0os entre elas, para chamar os oito la5els utili@aremos a $ari/$el ComponentCount para contar .uantos componentes tem o formul/rio, $erificamos .uais deles s%o la5elQs e estes limparemos, iniciarmos a nossa $ari/$el *um1in)a com 0 e chamaremos o procedimento (imer (imer en$iando para ele uma $ari/$el (!"#ect chamada 'ender. 0ica interessante: Muitos dos procedimentos .ue o Delphi cria automaticamente 7atra$1s dos e$entos8 re.uisitam a passagem de um o54eto do tipo (!"#ect 7'ender: C654ect8, isso fa@ $ocsa5er .uem foi .ue ati$ou tal e$ento, se foi por a0%o de um mouse ou de um cli.ue num 5ot%o, e assim $ai. !"ser+a,o Importante: Claro .ue ao in$1s de usarmos: /or i :N ComponentCount - 1 do=nto 0 do i/ 7ComponentsOAP is CMa5el8 t)en 7ComponentsOAP as CMa5el8.Caption :N QQL poderiamos muito 5em utili@ar: Ma5el1.Caption :N QQL Ma5el2.Caption :N QQL Ma5el3.Caption :N QQL Ma5el*.Caption :N QQL Ma5el#.Caption :N QQL Ma5elG.Caption :N QQL Ma5el+.Caption :N QQL Ma5elI.Caption :N QQL

Mas isso al1m de ficar um tantinho mais inchado, fica muito deselegante, 1 $erdade .ue estamos tratando apenas com I o54etos la5elQs mas e se amanh% utili@amos 20 ou 30 RR Al1m do .ue isso pode-se di@er .ue 1 o primeiro passo para um recurso de Macro'u5stitui0%o, como foi utili@ado com o CMa5el, pode tam51m ser utili@ado para o C)dit, C)ditMasD , CD(Ce2t ou .ual.uer outro .ue $oc- dese4e. 12. Mocali@e na !"#ect Inspector o o54eto (imer , mude para a p/gina de e$entos 7 ;+ents8 e locali@e o e$ento !n(imer, d- um duplo cli.ue na /rea em 5ranco. Automaticamente o Delphi criar/ para $oc- a chamada ao e$ento e o transferir/ para a Code ;ditor, entre os inter$alos 5egin e end escre$a: procedure CFECartao.Cimer1Cimer7'ender: C654ect8L /unction Monta : $tring> "egin result :N Memo1.MinesO<umMinhaPL inc7<umMinha8L i/ <umMinha S 30 t)en <umMinha :N 0L end> +ar i : AntegerL "egin <umMinha :N <umMinha - +L Ma5el1.Caption :N MontaL Ma5el2.Caption :N MontaL Ma5el3.Caption :N MontaL Ma5el*.Caption :N MontaL Ma5el#.Caption :N MontaL Ma5elG.Caption :N MontaL Ma5el+.Caption :N MontaL Ma5elI.Caption :N MontaL endL <este e$ento 1 .ue est/ toda a 4ogada do programa, note .ue dentro da procedure colocamos uma fun0%o interna Monta .ue nos retornar/ o conte:do de uma determinada linha do o54eto Memo , note .ue tra5alhamos com I la5elQs, ent%o: no primeiro segundo .ue passar: Ma5el1 at1 Ma5el+ N (ranco e o Ma5elI com o conte:do da primeira linha do o54eto Memo . <o prF2imo segundo .ue passar: Ma5el1 at1 Ma5elG N (ranco, Ma5el+ com o conte:do da primeira linha do o54eto Memo e o Ma5elI com o conte:do da segunda linha do o54eto Memo . <o prF2imo segundo .ue passar: Ma5el1 at1 Ma5el# N (ranco, Ma5elG com o conte:do da primeira linha do o54eto Memo e o Ma5el+ com o conte:do da segunda linha do o54eto Memo e Ma5elI com o conte:do da terceira linha do o54eto Memo

) assim $ai aumentando segundo apFs segundo, at1 um total de 30 segundos, note a.ui .ue s%o 2# linhas, aumentei mais # para ter um inter$alo entre a :ltima linha e o come0o de uma no$a montagem .uando a $ari/$el monta linha 1 no$amente reiniciada a @ero. !"ser+a,o Importante: os 5rancos s%o conseguidos pes.uisando $alores negati$os dentro da propriedade 1ines do o54eto Memo . <ote .ue eu fa0o O<umMin :N <umMin - +P como resultado disto teremos primeiramente o $alor -+, depois -G, e assim $ai at1 chegar a 0 no primeiro segundo. !utra !"ser+a,o Importante: a.ui n%o adianta tentar usar o recurso da ComponentCount pois pode a$acalhar na hora da montagem, ent%o 1 prefer3$el fa@er o lote da montagem dos oito la5elQs na m%o mesmo. )n$iando o pro4eto para um Amigo 9rontinho agora 5asta apenas $oc- compilar o pro4eto, $/ ao menu nas op0>es Pro#ect T Compile... 7ou pressione C(R1?&@ e prontinho 1 sF mandar o e2ecut/$el gerado para sua7seu8 namorada7o8, parente, colega ou amigo7a8, acredito .ue de$a ca5er num :nico dis.uete 7Aten0%o: <%o precisa mandar o .(M9 o Delphi 4/ se encarrega de guard/-lo no e2ecut/$el8. ?eali@ando uma pe.uena otimi@a0%o Anote antes desses passos .ual foi o tamanho em (Utes .ue ficou o seu e2ecut/$el. 1. Vma coisa .ue $oc- pode 7e de$e fa@er8 1 ir em Pro#ect T !ptions... na p/gina Application atri5ua um t3tulo 7(itle8 e um no$o 3cone 7Icon8 ao seu pro4eto, depois $/ na p/gina Compiler e desmar.ue todas as op0>es do Wrupo 0e"ugging 7elas sF ser$em para .uando $oc- esti$er testando o aplicati$o8. 2. <o in3cio do programa do seu formul/rio dei2e apenas as seguintes 5i5liotecas: unit fCartaoL inter/ace uses indo!s, Classes, Controls, )2tCtrls, 'tdCtrls, FormsL 3. D- uma compilada final escolhendo as op0>es Pro#ect T Build All Compare agora o tamanho do seu e2ecut/$el final. Mas n%o se preocupe esses macetes $ocaprender/ ao longo do nosso curso. 7Aten0%o: tam51m n%o precisa mandar o Xcone .ue $ocescolheu para seu pro4eto o Delphi tam51m se encarrega de coloc/-lo no e2ecut/$el8 D:$idas da Apostila de Ceste Aonde de$o instalar a .DMM en$iada R

=oc- n%o precisa instal/-la, 5asta apenas coloc/-la no diretFrio: 9rogramasY(orlandYCommon FilesY(D) <%o possuo o Delphi 3.02 apenas o 3.0 isso pode acarretar algum pro5lema R

C:YAr.ui$os de

6 Curso ser/ todo desen$ol$ido com o Delphi 3.02, pois o 3.0 apresentou alguns B(ugsB, ent%o de repente en$io para $oc- um passo .ual.uer .ue $oc- n%o consegue e2ecutar e2atamente por se tratar de um B5ugB, aconselho .ue $oc- o5tenha a 3.02. 9osso utili@ar o 9arado2 ao in$1s do Access R Mandarei todos os modelos para a cria0%o de 5ase de dados e comandos 'HM $oltados para o Access, F5$io .ue neste :ltimo caso o comparei com o 'HM normal 79adr%o Ansi "+8, mas aconselho .ue $oc- trate de o5ter uma $ers%o do M'-Access "+ .ue 1 o .ue ser/ o padr%o do curso. 6 ar.ui$o de teste $eio muito grande, ser/ assim mesmo R <%o, todos os ar.ui$os compactarei no inZip $ers%o G.3 e mandarei como este um ar.ui$o Zipado, a.uele ser$iu apenas como um teste de comunica0%o. )sta 5i5lioteca 7ADA3#32.DMM8 1 espec3fica para o M' Access "+ ou com ela posso tam51m usar 9arado2, D5ase, e outros R [ apenas para o M'-Access "+, os outros 5ancos o Delphi 4/ tem o acesso nati$o. Como posso usar a macrosu5stitui0%o no Delphi R <%o e2iste isso em uma linguagem estruturada como 1 o caso do 9ascal, mas ao longo do curso darei dicas de como $oc- reali@ar/ esse tra5alho. <o \elp do Delphi, como consigo os cFdigos de error e as descri0>es R 'e $oc- est/ pensando em tradu@ir as mensagens de erros do Delphi, 5asta simplesmente $ocpegar os ar.ui$os: 5deconsts.pas, comstrs.pas, consts.pas, d5consts.pas, i5const.pas, m2consts.pas, oleconst.pas e e5const.pas, mas para isso $oc- precisa possuir a cFpia Client&'er$er, eles est%o no diretFrio ODelphi 3Y'ourceY=CMP, tradu@a-os, compile-os para gerar os DCV]s e colo.ue eles em ODelphi 3YMi5P su5stituindo os .ue l/ est%o.

Você também pode gostar