Você está na página 1de 23

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

4
1

APNDICE A
Do#" enta*$o 3ard4are/So-t4are re,"eridos

1
12 12

APNDICE !
Convers$o de Ca pos !ipos de Dados para o &nter%ase

11
11 15

APNDICE C
Apli#a*$o r+pida #o o ()6eto 7"ery

1"
18

APNDICE D
& pri indo " For "l+rio

1#
15

APNDICE E
!ra)alhando #o M+s#aras

1$
17

APNDICE %
!ra)alhando #o & porta*$o e 9.porta*$o

1&
19

APNDICE '
Doze elhores di#as para o Delphi

((
55

iii

In)rod*+,o
%e -vindo ao Delphi' o ais novo prod"to de alta per-or an#e da Borland. Delphi : " prod"to ;ni#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*=es Client/Server. 9ste 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 : en#ontrado e dois prod"tos> Delphi Client/Server' de alta per-or an#e e -a#ilidade para o desenvolvi ento de apli#a*=es 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*=es e s"porte a )an#os de dados lo#ais' per itindo total porta)ilidade ? vers$o Client/Server.

Apresento-lhes a seg"ir alg" as in-or a*=es detalhadas para " per-eito desenvolvi ento vis"al' sendo ,"e ao -inal de #ada #ap/t"lo pr+ti#o : 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#@ en#ontrar+ ap@ndi#es ,"e lhe a6"dar$o a resolver pe,"enos pro)le as do dia-a-dia.

Delphi- .omo So/*+,o 0ara Desenvo/vedores


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 A &ni#ial ente' : ne#ess+rio #onhe#er ,"e o Delphi o-ere#e " r+pido #a inho para o desenvolvi ento de apli#a*=es nos a )ientes> Bindo4s' Bindo4s 95 e Bindo4s C!D %an#os de dados do tipo Cliente/Servidor> (ra#le' &n-or i.' &nter%ase' Sy%ase e Mi#roso-t S7E ServerD Alta per-or an#e' e siste as #r/ti#osD %ase de Dados lo#ais e apli#a*=es do tipo net4orFD A )iente gr+-i#o' vis"al e "lti /dia. ele A G poss/vel #riar' dentre o"tros' os seg"intes tipos de

Mas o ,"e : poss/vel -azer #o apli#a*=es e Delphi >

Hs+-lo #o o a ling"age de desenvolvi ento para )an#os do tipo Cliente/ServidorD A )iente heterog@neo para #apt"ra e envio de in-or a*=es e de dadosD diversos tipos de ar,"ivos

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

H pa#ote #orporativo de apli#a*=es inteligentes e interpretadores de dados. &n#orporando DEEIs e 9J9Is e.ternosD 0a#otes "lti /dia #o desenho e ani a*$oD

Ken:ri#os "tilit+rios do Bindo4sD Cria*$o de )i)liote#as LDEEM para leit"ra por o"tras apli#a*=es.

Mas por,"e arris#ar e " a )iente novo ,"ando e.iste no er#ado ling"agens ais di-"ndidas A Co "ndo inteiro Delphi -oi testado' e e 15 eses de vida prod"zi" os seg"intes res"ltados> Delphi est+ sendo "tilizado no o ento por ais de 1.522 l"gares in#l"indo as #orpora*=es' #ons"ltores e organiza*=es de treina entoD 9leito pela %yte Magazines #o o %est o- Co de. A4ardD N+rios livros es#ritosD Kr"pos de dis#"ss$o e peri<di#os #o di#as de desenvolvi ento na BorldBi)e LCons"lte ?s listas da &nterCet atrav:s da palavra DELPHIMD Dezenas de )i)liote#as e -erra entas para o s"porte e DelphiD Dezenas de artigos e p")li#a*=es do "ndo inteiro' tais #o o PC Week, InfoWorld, Computer Reseller News, PC Ma a!ine, Windows Sour"es e "itas o"tras. aiores

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*=es. !odos os re#"rsos ,"e vo#@ 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#@ lo#alizar este s/ )olo signi-i#a ,"e e.iste " a nota ,"e lhe a6"dar+ e #aso de d;vida.

Oo)6etoP.PasteFromClipboard - Copia a i age

da +rea de trans-er@n#ia para o o)6eto sele#ionado.

C$o -oi #olo#ado nenh"

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

A01ndi.e A

Do.*men)a+,o
A do#" enta*$o in#l"/da #o o Delphi Client/Server>

Delphi #ser$s %uide Delphi Component Writer$s %uide Delphi Data&ase 'pli"ation Developer$s %uide S() )inks #ser$s %uide InterBase #ser$s %uide InterBase )an ua e Referen"e InterBase Data Definition ReportSmith Creatin Reports

!oda a do#" enta*$o : en#ontrada e -or a de livros e odo on-line Lpara o seg"ndo #aso -az-se ne#ess+ria a instala*$o do ACR(%A! Reader 5.2 ,"e a#o panha o prod"toM.

2ard3are4So5)3are re6*eridos
( Delphi Client/Server re,"er>

Windows *+,- ou superior

4. me a&/tes de espa0o livre para a instala01o m2nima 9. me a&/tes de espa0o livre para a instala01o "ompleta
um pro"essador 3.*34 ou maior 5634 re"omendado7

8 me a&/tes de R'M

0ara instalar' rode o progra a &CS!AEE.9J9 direto do CD R(M o" do dis,"ete e prossiga #o as instr"*=es. Ser$o in#l"/das in-or a*=es adi#ionais no ar,"ivo R9ADM9.!J! nor al ente instalado no diret<rio SD9E03&. Alg"ns e.e plos de apli#a*=es est$o #ontidas no diret<rio SD9E03&SD9M(S.

A01ndi.e !

Convers,o de Cam0os
G poss/vel' #o o D8)P9I' #riar os " es o siste a ,"e rode e di-erentes tipos de )ases' atrav:s de " ;ni#o ALIAS. 0ara isto pre#isa os ,"e a de-ini*$o' ta anho e no e dos #a pos e ta)elas se6a ne#essaria ente os es os. A)ai.o est+ a #onvers$o para ,"atro )ases l<gi#as de dados>
Sintaxe SQL - para InterBase' :R'C)8 ' Informi; entre o"tras. BD L!gico - A #ha ada do #a po interna ao D8)P9I. Paradox - %ases do tipo Parado;+ dBAS - %ases do !ipo .D%F.
Sinta.e S7E SMAEE&C! &C!9K9R D9C&MAEL.'yM CHM9R&CL.'yM FE(A!L.'yM C3ARAC!9RLnM NARC3ARLnM DA!9 %((E9AC %E(%Ln'1M %E(%Ln'5M %E(%Ln'8M %E(%Ln'1M %E(%Ln'5M !&M9 !&M9S!AM0 M(C9U AH!(&CC %U!9SLnM %D9 E<gi#o -ld&C!1Q -ld&C!85 -ld%CD -ldFE(A! -ldFE(A! -ldTS!R&CK -ldTS!R&CK -ldDA!9 -ld%((E -ldstM9M( -ldst%&CARU -ldstFM!M9M( -ldst(E9(%V -ldstKRA03&C -ld!&M9 -ld!&M9S!AM0 -ldFE(A!' -ldstM(C9U -ld&C!85' -ldstAH!(&CC -ld%U!9SLnM 0arado. Short Eong &nteger %CD C" )er C" )er Alpha Alpha Date Eogi#al Me o %inary For atted (E9 Kraphi# !i e !i esta p Money A"toin#re ent %ytes e o d%AS9 C" )er LQ'12M C" )er L52'1M C/A C" )er L.'yM Float L.'yM Chara#ter Chara#ter Date Eogi#al Me o %inary C$o Apresenta (E9 C$o Apresenta C$o Apresenta C$o Apresenta Float L52'1M C$o Apresenta C$o Apresenta

. W pre#is$o Lde-a"lt> espe#/-i#o para o driverM y W es#ala Lde-a"lt> 2M n W ta anho e )ytes Lde-a"lt> 2M 1-5 W %E(% s")tipo Lde-a"lt> 1M

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Tipos de Dados para o InterBase


( &nter%ase s"porta alg"ns tipos de dados S7E' as n$o s"porta direta ente dados do tipo "IM o" "IM S"AMP. A lista a)ai.o #ont: os tipos de dados dispon/veis para as de#lara*=es S7E no &nter%ase>
#ome %E(% "amanho Nari+vel Precis$o C$o apresenta Descri%$o ()6eto 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 ): pode apresentar > C&ARAC" R. !a ): in#l"i todas as in-or a*=es so)re a hora.

C3ARLnM DA!9 D9C&MAE Lpre#is$o' es#alaM

n Cara#teres Q1 )its vari+vel

1 at: 857Q7 1 6an 122 at: 11 6an 5911 0re#is$o> 1 at: 15 e es#ala de 1 at: 15 1'7 . 12-82X at: 1'7 . 1282X 8'1 . 12-8X at: 8'1 . 128X -5.117.1X8.Q1X at: 5.117.1X8.Q1X 0re#is$o> 1 at: 15 e es#ala de 1 at: 15 -85.7QX at: 85.7Q7 1 at: 857Q7

9spe#i-i#a-se por pre#is$o o n; ero de d/gitos a sere gravados e por es#ala o n; ero de #asas de#i ais' e.e plo D9C&MAEL12'8M : ig"al ao -or ato> ppppppp.eee. Htilizado 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(H%E9 0R9C&S&(C FE(A! &C!9K9R

Q1 )its 85 )its 85 )its

7 d/gitos de pre#is$o.

CHM9R&C Lpre#is$o' es#alaM

vari+vel

9spe#i-i#a-se por pre#is$o o n; ero de d/gitos a sere gravados e por es#ala o n; ero de #asas de#i ais' e.e plo CHM9R&CL12'8M : ig"al ao -or ato> ppppppp.eee. Ca po :dio.

SMAEE&C! NARC3ARLnM

1Q )its n Cara#teres

!a anho vari+vel de #ara#teres o" tipo de string. ( no e ta ): pode apresentar > 'AR(I#) C&AR o" 'AR(I#) C&ARAC" R.

*+

A01ndi.e C

A0/i.a+,o r70ida .om o O89e)o :*er;


0ara n$o -i#ar ,"ais,"er d;vidas so)re o o)6eto t7"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 C,-D LP&I-D M.S-DA"A "tilizare os as ta)elas> Customer' :rders, Parts e Items. A id:ia : ostrar " -or "l+rio #o o no e do #liente ligado a " )rid #o todas as en#o endas perten#entes a este #liente. Con-or e a -ig"ra a)ai.o>

0ara #o e*ar' #olo,"e e " novo -or "l+rio " o)6eto t"able e " o)6eto tQ/er0. ( o)6eto t"able e-et"ar+ a liga*$o #o a ta)ela de Clientes L!a)ela CustomerM' en,"anto ,"e o tQ/er0 ir+ e.trair os detalhes da en#o enda L!a)elas :rders, Parts e ItemsM apropriados a #ada #liente. (s dados est$o e " a ta)ela Parado;' pelo ,"e na propriedade DataBase#ame : #olo#ado o no e do diret<rio ,"e #ont: os dados Lo" de-ina o no e do Alias> D%De osM. A liga*$o : #o pletada atrav:s da de-ini*$o das propriedades "able#ame e Index#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 ;ni#a ta)ela' a 6"n*$o poderia ser -a#il ente realizada pela de-ini*$o das propriedades MasterSo/rce e MasterField de " seg"ndo o)6eto ta)ela' as' " a vez ,"e ne#essita os de dados de ais de " a ta)ela L:rders e Produ"tsM' esta t:#ni#a si ples n$o -"n#iona. ( #ontrole de #ons"lta re#"pera " #on6"nto di-erente de registros para #ada #liente' e.traindo dados das d"as ta)elas

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

ligadas. ( Delphi o-ere#e d"as t:#ni#as para -azer isto> H a delas envolve o "so de vari+veis Cal#"ladas para " a das tr@s ta)elas e ,"est$oD " a o"tra L ais si plesM envolve ? atri)"i*$o de " valor ? propriedade SQL do o)6eto tQ/er0' o" se6a' " a instr"*$o SQL apropriada. Ceste e.e plo' va os -azer #olo#ando alg" #<digo no evento .nDataChange do o)6eto DataSo/rce. Ee )re-se ,"e este evento : #ha ado se pre ,"e o registro #orrente : alterado. &nsira a seg"inte instr"*$o na propriedade SQL do o)6eto tQ/er0>
S9E9C! (rders.(rderCo' &te s.7ty' 0arts.Des#ription' 0arts.Eist0ri#e FR(M (rders' &te s' 0arts B39R9 (rders.(rderCo W &te s.(rderCo ACD &te s.0artCo W 0arts.0artCo ACD (rders.C"stCo W >C"stCoD

Repare no #<digo SQL na vari+vel <CustNo' v+ para a propriedade Params do o)6eto tQ/er0 e #olo,"e para a vari+vel C"stCo #riada o Data t0pe #o o =loat' est+ vari+vel ser+ passada para o SQL atrav:s do evento .nDataChange do o)6eto DataSo/rce' insira o seg"inte #<digo>
proced/re !For 1.DataSo"r#e5DataChangeLSender> !()6e#tD Field> !FieldMD begin 7"ery1.CloseD 7"ery1.0ara sO2P.AsFloat >W !a)le1C"stCo.Nal"eD 7"ery1.(penD endD

Rele )rando no Delphi os dados -l"e seg"inte se,Y@n#ia>

da )ase de dados para o -or "l+rio na

%ase de Dados o)6eto DataSet Lt!a)le o" t7"eryM o)6eto DataSo"r#e o)6eto Ca po

( o)6eto DataSo/rce : ne#ess+rio' pois os o)6etos de #a po n$o pode direta ente aos o)6etos do DataSet' as apenas atrav:s de " o)6eto DataSo/rce.

ligar-se

0or #onseg"inte' para #ada o)6eto DataSet ta ): : #olo#ado no -or "l+rio " o)6eto DataSo/rce. Final ente' s$o adi#ionados o)6etos de #ai.a de edi*$o de te.to' " o)6eto )rid para as linhas da en#o enda e " o)6eto d)Cavigator ligado a ta)ela de Customer' rode o pro6eto. o)6eto )rid est+ ligado ao o)6eto tQ/er0 Latrav:s do o)6eto DataSo/rceM' ent$o este se at"aliza a"to ati#a ente #o os novos res"ltados das #ons"ltas.

*1

A01ndi.e D

Im0rimindo *m %orm*/7rio
0ara i pri ir " -or "l+rio n$o te nenh" segredo' e.iste o #o ando PRIN> rela#ionado a -or "l+rios' o pro)le a se ini#ia ,"ando o -or "l+rio "ltrapassa as di ens=es da tela do se" onitor' o" se6a' a larg"ra e alt"ra dele : aior ,"e a tela. Diga os " -or "l+rio ,"al,"er ,"e tenha a propriedade 3orzS#roll%ar.Range W 7QX e NertS#roll%ar.Range W 122X Listo #orresponde a " a -olha de papel ta anho A1M. ( progra a a)ai.o resolve e.ata ente este pro)le a' i pri indo so ente o)6etos> "label' " dit' "Memo' "DB"ext' "DB dit e "DBMemo' "tiliza a )i)liote#a Printers para -azer o servi*o' #olo,"e " )ot$o ,"al,"er no -or "l+rio ,"e dese6e i pri ir e para o evento onCli#F' digite os seg"intes #o andos>
proced/re !-or 1.Speed%"tton1Cli#FLSender> !()6e#tMD var C > arrayO2..555P o- #harD CEen' S#aleJ' S#aleU' &nd > &ntegerD For at > BordD DC > 3DCD MCo p > ! e oD R > !Re#tD begin 0rinter.%eginDo#D DC >W 0rinter.Canvas.3andleD S#aleJ >W KetDevi#eCapsLDC' E(K0&J9ESJM div 0i.els0er&n#hD S#aleU >W KetDevi#eCapsLDC' E(K0&J9ESUM div 0i.els0er&n#hD 2or &nd >W 2 to Co ponentCo"nt -1 do i2 LCo ponentsO&ndP is !C"sto Ea)elM or LCo ponentsO&ndP is !C"sto 9ditM then begin MCo p >W !Me oLCo ponentsO&ndPMD i2 LMCo p.visi)leM then begin 0rinter.Canvas.Font >W MCo p.FontD DC >W 0rinter.Canvas.3andleD R >W MCo p.%o"ndsRe#tD R.!op >W LR.!op Z NertS#roll%ar.0ositionM [ S#aleUD R.Ee-t >W LR.Ee-t Z 3orzS#roll%ar.0ositionM [ S#aleJD R.%otto >W LR.%otto Z NertS#roll%ar.0ositionM [ S#aleUD R.Right >W LR.Right Z 3orzS#roll%ar.0ositionM [ S#aleUD i2 Lnot LCo ponentsO&ndP is !C"sto Ea)elMM and LMCo p.%orderStyle W )sSingleM then 0rinter.Canvas.Re#tangleLR.Ee-t' R.!op' R.Right' R.%otto MD For at >W D!\E9F!D i2 LCo ponentsO&ndP is !9ditM or LCo ponentsO&ndP is !C"sto MasF9ditM then For at >W For at or D!\S&CKE9E&C9 or D!\NC9C!9R else begin i2 MCo p.BordBrap then For at >W D!\B(RD%R9A]D i2 MCo p.Align ent W taCenter then For at >W For at or D!\C9C!9RD

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

i2 MCo p.Align ent W taRightV"sti-y then For at >W For at or D!\R&K3!D R.%otto >W R.%otto Z 0rinter.Canvas.Font.3eight Z 1D endD CEen >W MCo p.Ket!e.t%"-LC'555MD R.Ee-t >W R.Ee-t Z S#aleJ Z S#aleJD Dra4!e.tLDC' C' CEen' R' For atMD endD endD 0rinter.9ndDo#D CloseD endD

Se vo#@ #onhe#e " po"#o de Pas"al ?+. n$o a#redito ,"e vo#@ teve di-i#"ldades e interpretar o progra a' se vo#@ n$o #onhe#e a,"i v$o alg" as di#as> &ni#ial ente -oi de#larado " a s:rie de vari+veis ,"e ser$o "tilizadas posterior ente. 9 ent$o ini#iado o o)6eto de i press$o Printer atrav:s do #o ando>
0rinter.%eginDo#D

( o)6eto i pri e atrav:s de " a s")#lasse #onhe#ida por Canvas. 9sta #lasse e ,"e torna poss/vel a #ria*$o de toda a inter-a#e gr+-i#a do Delphi L9ste o)6eto parte de " en#aps"la ento da Bindo4s 3DCM. H a -or a si ples de se i pri ir seria "tilizar os seg"intes #o andos>
0rinter.%eginDo#D 0rinter.Canvas.!e.t("tL2' 2' ^9st+ i pri indo...IMD 0rinter.9ndDo#D

Mas' para se o)ter " a #<pia -iel do -or "l+rio : pre#iso -azer ais do ,"e isto' ini#ial ente e #ha ada a propriedade handle Lesta -az " a #ha ada a Bindo4s KD& #ha ando -"n*=es da A0& para re,"erer o odo de desenho dos o)6etos envolvidosM' pr<.i o passo : veri-i#ar o tipo de es#ala Le pi.elsM da larg"ra e alt"ra da 6anela a ser i pressa. Agora resta veri-i#ar o)6eto a o)6eto Ldo tipo )a&el o" do tipo 8ditM e enviar s"as #ara#ter/sti#as para os dados da #lasse Canvas e i pri /-los. Ee )re-se o padr$o de i press$o do Bindo4s : e itir a listage so ente ,"ando a es a estiver #o pleta e isto s< a#onte#er+ no #o ando >
0rinter.9ndDo#D

H a o"tra sa/da para a i press$o de se"s relat<rios pode ser #onseg"ida atrav:s da "tiliza*$o de in; eras )i)liote#as prontas ,"e -aze o a#esso ao o)6eto >Printer. 9ntre elas e.iste a Report0rint Lda #evrona DesignsM ,"e pode ser ad,"irido " a vers$o de de onstra*$o atrav:s da internet atrav:s do seg"inte endere*o> -tp.pri enet.#o /"sers/6/6g"nFel

/delphi/rprinter.zip

*3

A01ndi.e E

Tra8a/hando .om M7s.aras


A)rire os a,"i este ap@ndi#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 atrav:s da propriedade Mask8dit' en#ontrada para os o)6etos !DateField' !Date!i eField' !StringField' !!i eField e o o)6eto. 0ara ontar " a +s#ara' "tiliza-se a propriedade ditMas4 o)servando o li ite de dados ,"e o #a po poder+ ar azenar. G "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 6anela de n$o a#eita*$o da +s#ara. A valida*$o o#orre #ara#ter a #ara#ter. Hse o evento :n@alidate para validar " a entrada #o pleta. A +s#ara )asi#a ente #onsiste de tr@s #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 Le.> /' -' L' ...M. A ter#eira parte da +s#ara representa o #ara#ter e )ran#o' podendo ser s")stit"/do por o"tro Le.> \' _' ...M. 9stes s$o os #ara#teres espe#iais "tilizados #o a
Cara#ter ` a b ba S E l A a C # 2 9 c > / Htiliza*$o na +s#ara ,"e os #ara#teres digitados

+s#ara>

Ca"sa a digita*$o da +s#ara -i,"e parada no pri eiro #ara#ter' -azendo #o ,"e se ova . 9.> `D2D\ !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 a e b. 9.> aaaabaaaaD2D\ Htilizado para

ai;s#"las. 9.> aaaaD2D\ in;s#"las. 9.> baaaD2D\

ar#ar deter inado #ara#ter n$o espe#ial #o o -i.o. 9.> `SL999SM222-2222D2D\ as n$o-o)rigat<rios' do tipo A-T' a-z. 9.> lllD1D\ as n$o-o)rigat<rios' do tipo A-T' a-z' 2-9.

Re,"er so ente #ara#teres al-a):ti#os o)rigat<rios para a posi*$o' do tipo A-T' a-z. 9.> EEED1D\ 0er ite so ente #ara#teres al-a):ti#os para a posi*$o' Re,"er so ente #ara#teres al-an" :ri#os o)rigat<rios para a posi*$o' do tipo A-T' a-z' 2-9. 9.> AAAD1D\ 0er ite so ente #ara#teres al-an" :ri#os para a posi*$o' 9.> aaaD1D\ Re,"er "

#ara#ter o)rigat<rio para a posi*$o. 9.> CCCD1D\

0er ite o "so de ,"al,"er #ara#ter para a posi*$o' li itando apenas o n; ero de #ara#teres "tilizados. 9.> ###D1D\ Re,"er so ente #ara#teres n" :ri#os o)rigat<rios para a posi*$o' do tipo 2-9. 9.> 222D1D\ 0er ite so ente #ara#teres n" :ri#os para a posi*$o' n$o-o)rigat<rios' do tipo 2-9. 9.> 999D1D\ 0er ite so ente #ara#teres n" :ri#os para a posi*$o e o "so dos sinais de - o" Z' n$o-o)rigat<rios. 9.> cccD1D\ Htilizado #o o separador de horas' Htilizado #o o separador de dia' in"tos e seg"ndos. @s e ano.

9.e plos de M+s#aras>


"ipo !ele-one M5scara `SL999SM222-2222D1D\ ntrada 2Q18X78852 Formata%$o L2Q1M8X78852 Sa6da L2Q1M8X7-8852

Borland
C90 3ora

Delphi e Delphi Client/Server 22222S-9999D2D\ `92>22>22 aEED2D\ 78215252 1222180M 78215-252 12>22>18 0M

Desvendando o Caminho das Pedras 78215252 55>22>18

*7

A01ndi.e %

Tra8a/hando .om Im0or)a+,o e E<0or)a+,o


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 L0arado.' d%ase' (ra#le' Sy)ase' (D%C' et#M o ,"ase pro)le a era se tratando de e.porta*$o para ar,"ivos no -or ato .!J!' ,"ase por,"e ele ser+ resolvido a partir deste apli#ativo. 1. Crie " novo pro6eto. Krave a "nidade padr$o #o o 2 xpImp e o pro6eto #o o xpImp. 5. Colo,"e os seg"intes o)6etos e -a*a as seg"intes altera*=es> 0ara o ()6eto "able LEo#alizado na p+gina Data AccessM
Con2ig/ra%$o D)De os 9M0E(U99 Propriedades Data%aseCa e !a)leCa e

0ara o ()6eto .penDialog* LEo#alizado na p+gina DialogsM


Con2ig/ra%$o !J! Ar,"ivo !e.tod[.!J!

Propriedades De-a"lt9.t Filter

0ara o ()6eto SaveDialog* LEo#alizado na p+gina DialogsM


Con2ig/ra%$o !J! Ar,"ivo !e.tod[.!J!

Propriedades De-a"lt9.t Filter

Caption Ca e

0ara o ()6eto B/tton LEo#alizado na p+gina StandardM


Con2ig/ra%$o e9.porta %"t9.porta

Propriedades

Caption Ca e

0ara o ()6eto B/tton LEo#alizado na p+gina StandardM


Con2ig/ra%$o e& porta %"t& porta

Propriedades

( aior tra)alho da #odi-i#a*$o -i#aria por #onta de #riar 6anelas de Salvar e A)rir as todo esse tra)alho : realizado pelos o)6etos .penDialog e SaveDialog. ( resto do #<digo : )e si ples ve6a os> 0ara o evento .nClic4 do o)6eto %"t9.porta

proced/re !For 1.%"t9.portaCli#FLSender> !()6e#tMD var Ar,> !e.tFileD begin

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

i2 SaveDialog1.9.e#"te then begin S#reen.C"rsor >W #r3o"rKlassD 8ith !a)le1 do begin (penD FirstD i2 not 9(F then begin AssignFileLAr,' SaveDialog1.FileCa eMD ReBriteLAr,MD repeat BriteEnLAr,'Field%yCa eLf9 pCofM.AsString Z fdf Z Field%yCa eLfEastCa efM.AsString Z fdf Z Field%yCa eLfFirstCa efM.AsString Z fdf Z Field%yCa eLf0hone9.tfM.AsString Z fdf Z Field%yCa eLf3ireDatefM.AsString Z fdf Z Field%yCa eLfSalaryfM.AsString Z f[fMD ne.tD /ntil 9(FD CloseFileLAr,MD endD #loseD endD S#reen.C"rsor >W #rDe-a"ltD endD endD

&ni#ial ente va os e.portar o ar,"ivo Lno #aso 9 ployeeM' o -"n*$o do #o ando AssignFile e ini#iar " o)6eto de ar,"ivo te.to Ldeter inada pelo tipo de vari+vel "extFileM e o #o ando Re9rite prepara o o)6eto ini#iado para a grava*$o. Ee )re-se ,"e " ar,"ivo te.to s< pode re#e)er logi#a ente te.to de-inido pelos #o andos 9rite Linsere " te.to e deter inado ar,"ivo e o #"rsor de grava*$o per ane#e na posi*$oM e 9riteLn Linsere " te.to e deter inado ar,"ivo e o #"rsor de grava*$o ini#ia " a nova linhaM ent$o o ;ni#o tra)alho ser+ de per#orrer o nosso ar,"ivo #o o #o ando Repeat. 0ara o evento .nClic4 do o)6eto %"t& porta

proced/re !For 1.%"t& portaCli#FLSender> !()6e#tMD var Ar,> !e.tFileD !e.to> StringD &> &ntegerD 2/nction MontaNariavel> StringD var onta> StringD begin onta >W ffD in#L&MD 8hile !e.toO&P ba f[f do begin i2 !e.toO&P W fdf then )reaFD onta >W onta Z !e.toO&PD in#L&MD endD

+:

Borland
res"lt >W endD

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

ontaD

begin i2 (penDialog1.9.e#"te then begin S#reen.C"rsor >W #r3o"rKlassD !a)le1.(penD AssignFileLAr,' (penDialog1.FileCa eMD ResetLAr,MD i2 not 9(FLAr,M then repeat ReadEnLAr,'!e.toMD 8ith !a)le1 do begin &nsertD i >W 2D Field%yCa eLf9 pCofM.AsString >W MontaNariavelD Field%yCa eLfEastCa efM.AsString >W MontaNariavelD Field%yCa eLfFirstCa efM.AsString >W MontaNariavelD Field%yCa eLf0hone9.tfM.AsString >W MontaNariavelD Field%yCa eLf3ireDatefM.AsString >W MontaNariavelD Field%yCa eLfSalaryfM.AsString >W MontaNariavelD 0ostD endD /ntil 9(FLAr,MD CloseFileLAr,MD !a)le1.CloseD S#reen.C"rsor >W #rDe-a"ltD endD endD

Na os agora i portar o ar,"ivo Lno #aso 9 ployeeM' o -"n*$o do #o ando AssignFile e ini#ar " o)6eto de ar,"ivo te.to Ldeter inada pelo tipo de vari+vel "extFileM e o #o ando Reset prepara o o)6eto ini#iado para a grava*$o. (s #o andos de leit"ra s$o Read LE@ " #ara#tere de deter inado ar,"ivoM e ReadLn LE@ " a linha de deter inado ar,"ivoM ent$o o tra)alho agora ser+ de separar e peda*os a linha lida isto : realizado na -"n*$o Monta'ariavel ,"e ler+ peda*os de ar#ados do ar,"ivo e.portado.

+*

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

A01ndi.e '

Do=e me/hores di.as 0ara o De/0hi


Ceste ;lti o ap@ndi#e do tra)alho reservei " a #oisa espe#ial' pes,"isei e todos os do#" entos tipo >ips A >ri"ks LDi#as e !r","esM e en#ontrei " do#" ento ,"e -alava so)re as onze elhores di#as para o Delphi. A"tor> 0a"l 3arding 12221Q.5Q21_Co p"serve.Co Lalg" as -ora 1. Co o -azer para o #o p"tador soar o )eep>
essage%eepL2MD

alteradasM

5. Co o pa"sar "

progra a por deter inado n; ero de seg"ndos>

var C" Se#> S all&ntD Start!i e> Eong&ntD )egin Start!i e >W Co4D repeat Appli#ation.0ro#essMessagesD "ntil Co4 a Start!i e Z C" Se# [ L1/51/Q2/Q2MD endD

8. Co o ostrar o

o"se #o o " a a p"lheta Le depois retorn+-lo ao nor alM>

try S#reen.C"rsor >W #r3o"rKlassD g 9s#reva o a*$o a e.e#"tar a,"i h -inally S#reen.C"rsor >W #rDe-a"ltD endD Appli#ation.0ro#essMessagesD

1. Co o #ontrolar o pressiona ento da te#la b9ntera>


pro#ed"re !For 1.9dit]ey0ressLSender> !()6e#tD var ]ey> CharMD g atrav:s do evento on]ey0ress do -or "l+rio de #ontrole... h )egin g se a ivar ]eyj retornar o #<digo c18 #orresponde a b9ntera' c9 #orresponde a te#la !A% h i- ]ey W c18 then )egin ]ey >W c2 g S"pri e o so h g es#reva a,"i os se"s #o andos h endD endD

5. Co o odi-i#ar a #or do te.to dentro de "

#a po D%Krid dependendo do #onte;do>

pro#ed"re !For 1.D%KridDra4DataCellLSender> !()6e#tD #onst Re#t> !Re#tD Field> !-ieldD State> !KridDra4StateMD )egin i- !a)le1Client.AsString W ^JJJJI then )egin D%Krid.Canvas.%r"sh.Color >W #lRedD D%Krid.Canvas.Font.Color >W #lSilverD D%Krid.Canvas.FillRe#tLRe#tMD g Desenha o pano de -"ndo h D%Krid1.Canvas.!e.t("tLRe#t.Ee-tZ5' Re#t.!opZ1' Field.AsStringMD endD endD

++

Borland

Delphi e Delphi Client/Server

Desvendando o Caminho das Pedras

Q. Co o #ha ar " o"tro progra a Ltipo o notepad do Bindo4sM a partir de " Lde tr@s aneiras di-erentes> nor al' a.i izado e ini izadoM>
Bin9.e#L^C>S4indo4sSnotepad.e.eI' SB\S3(BC(RMAEMD Bin9.e#L^C>S4indo4sSnotepad.e.eI' SB\S3(BMAJ&M&T9DMD Bin9.e#L^C>S4indo4sSnotepad.e.eI' SB\S3(BM&C&M&T9DMD

apli#ativo

7. Co o varrer " a ta)ela inteira>


!a)le1.FirstD i- not !a)le1.9o- then repeat g se"s #o andos para a ta)ela h !a)le1.Ce.t "ntil !a)le1.9o-D

X. Co o inter#eptar as te#las de -"n*$o>


pro#ed"re !For 1.For ]eyDo4nLSender> !()6e#tD var ]ey> BordD Shi-t> !Shi-tStateMD )egin i- ]ey W N]\F5 then Sho4MessageL^No#@ pressiono" a F5IMD endD g pode ser "sado da N]\F1 a N]\F15 h

9. Co o os valores de #a pos de " a ta)ela para o"tra>


g 9ste e.e plo #opia apenas ta)elas de es a estr"t"ra h var C" > S all&ntD )egin -or C" >W 2 to !a)ela(rige .FieldCo"nt - 1 do )egin !a)elaDestino.&nsertD !a)elaDestino.FieldsOC" P.AssignL!a)ela(rige .FieldsOC" PMD !a)elaDestino.0ostD endD endD

12. Co o veri-i#ar se "

#a po inteiro : par o" / par>

-"n#tion !esta0ara0arL!esta&nteiro > &ntegerM > )ooleanD )egin i- L!esta&nteiro div 5M W L!esta&nteiro/5M then res"lt >W !r"e else res"lt >W FalseD endD

11. Co o veri-i#ar se " a string #ont: "

inteiro>

-"n#tion &s&ntegerL!estaString> StringM > )ooleanD )egin try Str!o&ntL!estaStringMD e.#ept (n 9Convert9rror do res"lt >W FalseD else res"lt >W !r"eD endD endD

15. Co o s")trair datas>


-"n#tion S")DataLData9 presti o> !Data!i eM > &ntegerD )egin res"lt >W Date - Data9 presti oD endD

+;

Você também pode gostar