Você está na página 1de 57

Tubaro / Santa Catarina / BRAZIL

E-Mail : osmarjr@unisul.rct-sc.br
tt!://""".#$ociti$s.com/"allstr$$t/%&'(
ndice
1. O QUE DELPHI?.................................................................................................................................3
2. COMO FORMADO UMA APLICAO EM DELPHI..................................................................3
).* AR+,I-.S +,E C.M/0EM ,M A/LICA12...............................................................................................3
).) C45I6. 7.8TE 5. AR+,I-. /R.9ECT:.5/R;..........................................................................................%
).( C45I6. 7.8TE 5. AR+,I-. ,8IT :./AS;...............................................................................................%
3. JANELAS.................................................................................................................................................8
(.* C.5E E5IT.R :E5IT.R 5E C45I6.;........................................................................................................<
(.) 7.RM :7.RM,L=RI.;...............................................................................................................................<
(.( .B9ECT I8S/ECT.R :I8S/ET.R 5E .B9ET.S;...........................................................................................'
(.3 C.M/.8E8T /ALETTE: /AL>ETA 5E C.M/.8E8TES;.............................................................................'
(.% ALI68ME8T /ALETTE:/AL>ETA 5E ALI8>AME8T.;.............................................................................*?
4. ORIENTAO A OBJETOS................................................................................................................11
3.* E-E8T.S.................................................................................................................................................**
3.) /R./RIE5A5ES.......................................................................................................................................*)
3.( M@T.5.S...............................................................................................................................................*3
5. APPLICATION......................................................................................................................................15
%.* M@T.5.S:..............................................................................................................................................*%
%.) /R./RIE5A5ES:......................................................................................................................................*%
. MDI APPLICATION.............................................................................................................................15
&.* ,SA85. . M.5EL. 5E A/LICA12. M5I.............................................................................................*%
&.) EAEM/L. M5I.......................................................................................................................................*&
!. TRABALHANDO COM BANCO DE DADOS..................................................................................22
B.* B5E........................................................................................................................................................))
B.) AR+,ITET,RA 5. BA8C. 5E 5A5.S 5. 5EL/>I..................................................................................))
B.( AR+,ITET,RA 5.S C.M/.8E8TES 5E BA8C. 5E 5A5.S....................................................................)(
B.3 /ALETA 5E C.M/.8E8TES 5A /=6I8A 5E ACESS. 5E 5A5.S.............................................................)(
B.% /ALETA 5E C.M/.8E8TES 5A /=6I8A 5E C.8TR.LE 5E 5A5.S........................................................)3
B.& ,SA85. 5ATASETS................................................................................................................................)3
8. A LIN"UA"EM SQL............................................................................................................................32
<.* C.MA85.S 5E MA8I/,LA12. 5E 5A5.S............................................................................................()
<.) ./ERA5.RES..........................................................................................................................................()
<.( EA/RESS0ES...........................................................................................................................................()
<.3 7,810ES.................................................................................................................................................((
<.% EAEM/L.S..............................................................................................................................................((
<.& C.8STR,I85. ,MA C.8S,LTA 5I8AMICAME8TE.................................................................................(3
#. CONSTRUINDO RELAT$RIOS COM O QUIC%REPORT..........................................................3
'.* +,ICCRE/.RT B=SIC.............................................................................................................................(&
'.) CRIA85. RELAT4RI.S...........................................................................................................................(B
1&. ARQUI'OS DE INICIALI(AO...................................................................................................4&
*?.* . .B9ET. TI8I7ILE..............................................................................................................................3?
*?.) CRIA85. ,M AR+,I-. 5E C.87I6,RA12.........................................................................................3?
*?.( LE85. . AR+,I-. 5E C.87I6,RA12................................................................................................3?
*?.3 M.5I7ICA85. ,M AR+,I-. .I8I........................................................................................................3*
*?.% .,TRAS ./ERA10ES C.M AR+,I-.S .I8I..........................................................................................3)
*?.& MA8I/,LA12. 5E AR+,I-.S..............................................................................................................3)
11. CRIANDO HELP...............................................................................................................................43
**.* -IS2. 6ERAL.......................................................................................................................................3(
**.) ESCRE85. .S T4/IC.S.........................................................................................................................3(
**.( I8SERI85. 8.TAS 5E R.5A/@..............................................................................................................3(
)
**.3 A5ICI.8A85. ,M >.TS/.T A. T4/IC...............................................................................................3(
**.% CRIA85. ,M >.TS/.T /ARA ,MA 9A8ELA /./-,/..............................................................................3(
**.& SE 7.R ,SAR ,M T4/IC. 5E .,TR. AR+,I-. 5E >EL/:......................................................................33
**.B ESCRE-E85. AR+,I-. 5E /R.9ET.:...................................................................................................33
**.< C.M/ILA85. . AR+,I-. 5E >EL/:.....................................................................................................3%
**.' I8SERI85. 6R=7IC.S EM ,M T4/IC.:..................................................................................................3%
**.*? CRIA85. ,M >.T S/.T /ARA ,MA 9A8ELA SEC,85=RIA.................................................................3%
**.** T.R8A85. . AR+,I-. 5E >EL/ SE8SD-EL A. C.8TEAT.................................................................3&
**.*) C>AMA5AS A. AR+,I-. 5E >EL/.....................................................................................................3&
12. E)CE*ES..........................................................................................................................................4!
*).* A ESTR,T,RA TREF7I8ALLEFE85..................................................................................................3B
*).) A ESTR,T,RA TREFEACE/TFE85....................................................................................................3B
*).( EACE10ES SILE8CI.SAS.......................................................................................................................3<
13. DICAS...................................................................................................................................................5&
*(.* CRIA12. 5E M5IC>IL5......................................................................................................................%?
*(.) 7.RM EAISTE........................................................................................................................................%?
*(.( CRIA12. S>.GM.5AL.......................................................................................................................%*
*(.3 7EC>AR T.5AS....................................................................................................................................%*
*(.% REL46I. E TECLA5.............................................................................................................................%*
*(.& I87.RMA10ES SISTEMA.......................................................................................................................%(
14. BIBLIO"RAFIA..................................................................................................................................55
(
1. O que Delphi?
. 5$l!i H um ambi$nt$ I$ I$s$nJolJim$nto I$ a!licaKL$sM ori$ntaIo a obj$toM Nu$ !$rmit$ o
I$s$nJolJim$nto I$ a!licaKL$s !ara os Sist$mas o!$racionais GinIo"s (.**M GinIo"s '% $ GinIo"s
8TM com !ouca coIiOicaKo.
. 5$l!i t$m O$rram$ntas I$ I$s$nJolJim$ntoM como t$m!lat$s $ $P!$rts I$ a!licaKL$s $
OormulQriosM Nu$ aum$ntam muito a !roIutiJiIaI$M OacilitanIo a !ro#ramaKo Ia a!licaKo.
2. Como formado uma Aplicao em Delphi
+uanIo JocR abr$ um !roj$to no 5$l!iM $l$ jQ mostra uma ,8IT com JQrias linas I$ cSIi#o.
Est$ t$Pto t$m como obj$tiJo $P!licar um !ouco I$sta $strutura Nu$ o $l$ usa. ,m !roj$to 5$l!i t$mM
inicialm$nt$M Iuas IiJisSrias: uma ,8ITM Nu$ H associaIa a um 7ormM $ outra /roj$ctM Nu$ $n#loba toIos
os 7.RM $ ,8ITs Ia a!licaKo.
Em 5$l!i t$mos: o /roj$ctM os 7orms $ as ,nits. /ara toIo 7orm t$mos !$lo m$nos uma ,nit
:CSIi#o Io 7orm;M mas t$mos ,nits s$m Oorm :cSIi#os I$ !roc$Iur$sM OunKL$sM $tc;.
2.1
.DPR
TESTE

.E)E
UNIT 1

.PAS
FORM 1
.DFM
FORM 1

.DCU
UNIT 2

.PAS
FORM 2
.DFM
FORM 2

.DCU
UNIT N

.PAS
FORM N
.DFM
FORM N

.DCU
ROTINAS

.PAS
3
Arquivos que Compem um Aplicao
2.1.1 A+,-./01 "2+3401 50 42125/06/.72580
EPt$nso ArNuiJo 5$OiniKo 7unKo
.5/R ArNuiJo Io /roj$to CSIi#o Oont$ $m /ascal Io arNuiJo !rinci!al Io
!roj$to. Lista toIos os OormulQrios $ units no
!roj$toM $ contHm cSIi#o I$ inicialiTaKo Ia
a!licaKo. CriaIo NuanIo o !roj$to H salJo.
./AS CSIi#o Oont$ Ia ,nit: .bj$ct
/ascal;
,m arNuiJo ./AS H #$raIo !or caIa OormulQrio Nu$
o !roj$to contHm. S$u !roj$to !oI$ cont$r um ou
mais arNuiJos ./AS associaIos com al#um
OormulQrio. Cont$m toIas as I$claraKL$s $
!roc$Iim$ntos incluinIo $J$ntos I$ um OormulQrio.
.57M ArNuiJo #rQOico Io OormulQrio ArNuiJo binQrio Nu$ contHm as !ro!ri$IaI$s Io
I$s$no I$ um OormulQrio contiIo $m um !roj$to.
,m .57M H #$raIo $m com!ania I$ um
arNuiJo ./AS !ara caIa OormulQrio Io !roj$to.
../T ArNuiJo I$ o!KL$s Io !roj$to ArNuiJo t$Pto Nu$ contHm a situaKo corr$nt$ Ias
o!KL$s Io !roj$to. 6$raIo com o !rim$iro
salJam$nto $ atualiTaIo $m subs$Nu$nt$s
alt$raKL$s O$itas !ara as o!KL$s Io !roj$to.
.RES ArNuiJo I$ R$cursos Io
Com!ilaIor
ArNuiJo binQrio Nu$ contHm o Ucon$M m$nsa#$ns Ia
a!licaKo $ outros r$cursos usaIos !$lo !roj$to.
.V5/ ArNuiJo I$ BacWu! Io /roj$to 6$raIo NuanIo o !roj$to H salJo !$la s$#unIa J$T.
.V/A ArNuiJo I$ BacWu! Ia ,nit S$ um ./AS H alt$raIoM $st$ arNuiJo H #$raIo.
.V57 BacWu! Io ArNuiJo #rQOico Io
OormulQrio
S$ JocR abrir um .57M no $Iitor I$ cSIi#o $ OiT$r
al#uma alt$raKoM $st$ arNuiJo H #$ranIo NuanIo
JocR salJa o arNuiJo.
.5SC SituaKo Ia =r$a I$ Trabalo Est$ arNuiJo armaT$na inOormaKL$s sobr$ a
situaKo Ia Qr$a I$ trabalo $s!$ciOica !ara o
!roj$to $m o!KL$s I$ ambi$nt$: .!tions
EnJironm$nt;.
.bs.: .V57M .V/A M .V5/ so arNuiJos I$ bacWu!: M$nu .!tionsM EnJirom$ntM 6uia EIitor 5is!laXM CaiPa
I$ 6ru!o 5is!laX anI Oil$ o!tionsM o!Ko Cr$at$ BacWu! 7il$sM I$satiJa o s$u salJam$nto;.
5$JiIo a #ranI$ NuantiIaI$ I$ arNuiJos I$ uma a!licaKoM caIa !roj$to I$J$ s$r montaIo $m
um Iir$tSrio $s!$cUOico.
2.1.2 A+,-./01 "2+3401 9263 C079.63:;0
EPt$nso ArNuiJo 5$OiniKo 7unKo
.EAE ArNuiJo com!ilaIo $P$cutQJ$l Est$ H um arNuiJo $P$cutQJ$l IistribuiJ$l I$ sua
a!licaKo. Est$ arNuiJo incor!ora toIos os arNuiJos
.5C, #$raIos NuanIo sua a!licaKo H com!ilaIa.
. ArNuiJo .5C, no H n$c$ssQrio Iistribuir $m sua
a!licaKo.
.5C, CSIi#o obj$to Ia ,nit A com!ilaKo cria um arNuiJo .5C, !ara caIa
./AS no !roj$to.
.bs.: Est$s arNuiJos !oI$m s$r a!a#aIos !ara $conomiTar $s!aKo $m Iisco.
2.2 Cdigo fonte do arquivo Project(.DPR)
8$sta arNuiJo $stQ $scrito o cSIi#o I$ criaKo Ia a!licaKo $ s$us OormulQrios. . arNuiJo /roj$ct
t$m a!$nas uma s$Ko.
Esta s$Ko H OormaIa !$lo s$#uint$ cSIi#o:
TESTE

.E)E
UNIT 1

.PAS
FORM 1
.DFM
FORM 1

.DCU
UNIT 2

.PAS
FORM 2
.DFM
FORM 2

.DCU
UNIT N

.PAS
FORM N
.DFM
FORM N

.DCU
ROTINAS

.PAS
%
/R.6RAM - 5$Oin$ o /roj$toY
,SES - ClQusula Nu$ inicia uma lista I$ outras uniIaI$s.
7orms Z @ a uniIaI$ Io 5$l!i Nu$ I$Oin$ a Oorma $ os com!on$nt$s Io a!licatiJo
In Z A clausula inIica ao com!ilaIor onI$ $ncontrar o arNuiJo ,nit.
,nit* Z A uniIaI$ Nu$ JocR criou
[\R ].RES^ - 5ir$tiJa com!ilaIora Nu$ inclui o arNuiJo I$ r$cursos.
AbaiPo J$ja como Oica o /roj$ct NuanIo JocR abr$ um !roj$to noJo:

program Project1;
uses
Forms,
Unit1 in 'UNIT1.PAS' {Form1};
{$R *.RES}
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
2.3 Cdigo fonte do arquivo Unit (.PAS)
8$sta IiJisSria s$ro $scritos os cSIi#os Ios s$us r$s!$ctiJos Oorms :,nit* Z 7orm*;. ANui
s$ro I$OiniIos os cSIi#os I$ caIa !roc$Iim$nto Ios com!on$nt$s Nu$ JocR colocar no Oorm.
2.3.1 S2:;0 U5.8
5$clara o nom$ Ia unit.
2.3.2 S2:;0 U121
ContHm as units ac$ssaIas !or $st$ arNuiJo.
2.3.3 S2:;0 I582+<3=2
8$sta s$Ko $sto as I$claraKL$s I$ constant$sM ti!os I$ JariQJ$isM OunKL$s $ !roc$Iur$s #$rais
Ia ,nit/7orm. As I$claraKL$s I$sta s$Ko so JisUJ$is !or NualNu$r ,nit. Esta s$Ko H OormaIa !$lo
s$#uint$ cSIi#o:
I8TER7ACE - /alaJra Nu$ inicia a s$KoY
,SES - ClQusula Nu$ inicia uma lista I$ outras uniIaI$s com!ilaIas :units; $m Nu$ s$ bas$a:
SXs,tils Z utilitQrios Io sist$ma :strin#sM Iata/oraM #$rar arNuiJos;
Gin/rocs Z ac$sso a 65IM ,SER $ CER8EL Io GinIo"s
GintX!$sZ ti!os I$ IaIos $ Jalor$s constant$s
M$ssa#$sZconstant$s com os n_m$ros Ias m$nsa#$ns Io GinIo"s $ ti!os I$ IaIos Ias
M$nsa#$ns
Class$sZ$l$m$ntos I$ baiPo nUJ$l Io sist$ma I$ com!on$nt$s
6ra!icsZ$l$m$ntos #rQOicos
ControlsZ$l$m$ntos I$ nUJ$l mHIio Io sist$ma I$ com!on$nt$s
7ormsZcom!on$nt$s I$ Oorma $ com!on$nt$s inJisUJ$is I$ a!licatiJos
5ialo#sZcom!on$nt$s I$ IiQlo#o comuns
2.3.4 S2:;0 T>92
5$clara os ti!os I$OiniIos !$lo usuQrio. Subs$KL$s: /riJat$M I$claraKL$s !riJatiJas Ia ,nit.
/ublic I$claraKL$s !ublicas Ia ,nit.
2.3.5
&
S$Ko -ar
5$clara as JariQJ$is !riJaIas utiliTaIas.
2.3.6 S2:;0 I7962725838.05
ContHm os cor!os Ias OunKL$s $ !roc$Iur$s I$claraIas nas s$KL$s Int$rOac$ $ TX!$. 8$sta s$Ko
tambHm $sto I$OiniIos toIos os !roc$Iim$ntos Ios com!on$nt$s Nu$ $sto incluUIos no 7orm. As
I$claraKL$s I$sta s$Ko so JisUJ$is a!$nas !or $la m$sma. Esta s$Ko H OormaIa !$lo s$#uint$ cSIi#o:
[\R].57M^ - 5ir$tiJa com!ilaIora Nu$ inclui toIa a int$rOac$M !ro!ri$IaI$s Ia Oorma $
com!on$nt$s Io arNuiJo ].57M
[\S`^ - 5ir$tiJa com!ilaIora Nu$ atiJa J$riOicaKo I$ !ila.
2.3.7 S2:;0 -121 34.=.0536
S$rJ$ !ara I$clarar ,nits Nu$ atiJam $sta.
2.3.8 I5.=.36.?38.05
8$sta s$KoM Nu$ H o!cionalM !oI$ s$r I$OiniIo um cSIi#o !ara !roc$I$r as tar$Oas I$
inicialiTaKo Ia ,nit NuanIo o !ro#rama com$Ka. Ela consist$ na !alaJra r$s$rJaIa inicialiTation s$#uiIa
!or uma ou mais I$claraKL$s !ara s$r$m $P$cutaIas $m orI$m.
2.3.9 E@27960
AbaiPo J$ja como Oica a unit NuanIo JocR abr$ um !roj$to noJo:
unit Unit1;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{Uses Adicional}
{Initialization}
end.
B
3. Janelas
3.1Code Editor (Editor de Cdigo)
3.2 or! (or!u"#rio)
-ocR usa OormulQrios !ara OaT$r int$rOac$ com o usuQrioM n$l$ so ins$riIos os com!on$nt$s. .
OormulQrio H uma jan$laM $ !ortantoM !ossui os atributos I$ uma jan$la :m$nu I$ control$M botL$s I$
maPimiTar $ minimiTar;M barra I$ tUtuloM borIas r$Iim$nsionQJ$is;.
B3++3 42 TA8-60
:Mostra o nom$ Io
arNuiJo;
I54.=340+ 42 L.5B3
2 C06-53
I54.=340+ 42
M04.<.=3:;0
I54.=340+ 42 M040
AC3 43 PDE.53
M25- 42 C058+062
B08;0 M.7.5.?3+
M25- 42 C058+062 B08;0 M3@.7.?3+
B3++3 42 TA8-60
<
3.3 $%ject &n'(ector (&n'(etor de $%jeto')
@ uma O$rram$nta com!osta I$ Iuas !Q#inas: /ro!$rti$s :/ro!ri$IaI$s; $ EJ$nts :EJ$ntos;.
A !Q#ina /ro!$rti$s:a/ro!ri$IaI$s; !$rmit$ Nu$ JocR $stab$l$Ka !arbm$tros I$ OormulQrios $
com!on$nt$s. Est$s !arbm$tros $s!$ciOicam os Jalor$s iniciais I$ caract$rUsticas como nom$ Io
com!on$nt$ $ sua !osiKo no OormulQrio.
A !Q#inas EJ$nts :EJ$ntos; !$rmit$ associar os com!on$nt$s com aKL$s Io usuQrio.
3.) Co!(onent Pa"ette( Pa"*eta de Co!(onente')
@ com!osta I$ JQrias !Q#inas cont$nIo caIa uma #ru!os I$ com!on$nt$s. /ara muIar I$ !Q#ina
na !al$ta I$ com!on$nt$sM cliNu$ sobr$ a aba Ia !Q#ina Nu$ JocR Nuis$r ac$ssar.
S26280+ 42 OCF2801
:mostra o nom$ $ o ti!o I$ obj$to s$l$cionaIo;
S293+340+ 42 C06-531 7G/2.1
C06-53 42 '360+21
C06-53 42 P+09+.243421
P+09+.243421 35.5B3431
: 5u!lo cliNu$ !ara JisualiTar sub!ro!ri$IaI$s;
PDE.53 42 P+09+.243421 PDE.53 42 E/25801
P0582.+0
Locais !ara com!on$nt$s aIicionais P36B283 42 C079052582 :/Q#ina StantarI JisUJ$lY !Q#ina I$ com!on$nt$s aIicionais Iis!onUJ$is s$l$cionanIo a aba Ia !Q#ina;
S283 42
+063E27
93+3 4.+2.83
AC3 431 PDE.531
S283 42
+063E27
93+3 21,-2+43
'
3.+ A"ign!ent Pa"ette(Pa"*eta de A"in*a!ento)
O-8+31H Bro"s$rM Br$aW/ointsM CallStacWM Gatc$sM Com!on$nt List $ GinIo"s List.
.bs.: 5$JiIo a #ranI$ NuantiIaI$ I$ jan$las H int$r$ssant$ Nu$ s$ t$na no mUnimo a r$soluKo I$ JUI$o
<??A&??M !ara s$ t$r $s!aKo !ara o I$s$nJolJim$nto.
C258+36.?3 /2+8.=3672582 53 F35263
E193:01 .E-3.1 53 /2+8.=36
A6.5B3 C258+36.?3540 53 /2+8.=36
A6.5B3 93+3 C3.@0
A6.5B3 93+3 =.73
A6.5B3 93+3 0 =3580
4.+2.80
A6.5B3 93+3 0 =3580 21,-2+40
A6.5B372580 B0+.?05836 C258+36.?340
C258+36.?3 B0+.?0583672582 53 F35263 E193:01 .E-3.1 53 B0+.?05836
*?
. Orien!ao a O"#e!os
/or s$r bas$aIo no /ascal .bj$ctM o 5$l!i !$rmit$ Nu$ s$ construa a!licaKL$s ori$ntaIas a
obj$tos. Em linas #$raisM a!licaKL$s ori$ntaIas a obj$tos s$ bas$iam no conc$ito I$ class$. A class$ H um
ti!o I$ IaIosM cont$nIo atributos $ s$rJiKos. . obj$to H uma JariQJ$l I$ I$t$rminaIa class$. /or
$P$m!loM um OormulQrio naIa mais H Io Nu$ um obj$to Ia class$ 7ormulQrio :TOorm;. ContHm atributos $
s$rJiKos.
).1 Evento'
.s !ro#ramas O$itos $m 5$l!i so ori$ntaIos a $J$ntos. EJ$ntos so aKL$s normalm$nt$
#$raIas !$lo usuQrio. EP.: Clicar o mous$ !r$ssionar uma t$claM moJ$r o mous$ $tc. .s $J$ntos !oI$m
s$r tambHm #$raIos !$lo "inIo"s.
EPist$m $J$ntos associaIos ao OormulQrio $ caIa com!on$nt$ ins$riIo n$st$.
EP$m!los:
- Ao OormulQrio $stQ li#aIo on createM Nu$ ocorr$ NuanIo mostramos o OormulQrio na t$la.
- Ao com!on$nt$ boto $stQ li#aIo o $J$nto on click, Nu$ ocorr$ NuanIo Iamos um clicW com o
mous$ sobr$ o boto.
4.1.1 E/25801 =07-51 30 <0+7-6D+.0 2 301 =0790525821.
Al#uns $J$ntos li#aIos tanto ao OormulQrio Nuanto aos com!on$nt$s $sto listaIos a s$#uir.
OnClick: ocorr$ NuanIo o usuQrio clica o obj$to.
OndblClick: ocorr$ NuanIo o usuQrio Ia um Iu!lo cliNu$.
OnKeyDown: ocorr$ NuanIo o usuQrio !r$ssiona uma t$cla $nNuanto o obj$to t$m Ooco.
OnKeyUp: ocorr$ NuanIo o usuQrio solta uma t$cla $nNuanto o obj$to t$m o Ooco.
.nC$X/r$ss: ocorr$ NuanIo usuQrio Ia um cliNu$ numa t$cla A8SI.
.nMous$5o"n: ocorr$ NuanIo o usuQrio !r$ssiona o boto Io mous$.
.nMous$,!: ocorr$ NuanIo o usuQrio solta o boto Io mous$.
.nMous$MoJ$: ocorr$ NuanIo o usuQrio moJ$ o !ont$iro Io mous$.
4.1.2 R08.531 ,-2 R21905427 3 E/25801
CaIa $J$nto #$ra uma !roc$Iur$M aonI$ JocR I$J$ ins$rir as linas I$ cSIi#o Nu$ $nJolJ$m $st$
$J$nto. /or $P$m!loM o $J$nto .nClicWM Nu$ H #$raIo ao clicarmos $m um boto camaIo BT8SairM cria
a !roc$Iur$:
Procedure TForm1.BTNSairClick(Sender: Tobject);
onI$ TOorm* H o obj$to TOorm Nu$ contHm o boto BT8SairM $ S$nI$r H um obj$to Tobj$ct Nu$ r$!r$s$nta
o com!on$nt$ Nu$ I$u ori#$m ao $J$nto.
S$ JocR Nuis$r ins$rir uma rotina Nu$ trat$ um I$t$rminaIo $J$nto I$ um com!on$nt$M OaKa o
s$#uint$:
cliNu$ sobr$ o com!on$nt$Y
no .bj$ct Ins!$ctorM s$l$ciona a !Q#ina EJ$ntsY
IR um Iu!lo cliNu$ sobr$ o $J$nto !ara o Nual Nu$r ins$rir o cSIi#oY
$ntr$ no $Iitor I$ cSIi#o $ $scr$Ja as linas I$ cSIi#o.
EP$m!lo:
Procedure TForm1.BTNSairClick(Sender: Tobject);
begin
Form1.Close;
end;
**
.bs.: Escr$Ja s$u cSIi#o $ntr$ o b$#in $ o $nIM s$ !or acaso JocR Nuis$r r$tirar o $J$nto $ o com!on$nt$M
r$tir$ !rim$iro os $J$ntos Io com!on$nt$ r$moJ$nIo som$nt$ o cSIi#o Nu$ JocR colocou $ I$!ois o
com!on$nt$Y os r$sto Ios !roc$Iim$ntos o 5EL/>I tira !ara JocR.
).2 Pro(riedade'
Como JimosM $J$ntos !oI$m $star associaIos a moIiOicaKL$s $m !ro!ri$IaI$ I$ com!on$nt$ $
OormulQrioM ou s$jaM JocR !oI$ moIiOicar !ro!ri$IaI$s I$ OormulQrios $ com!on$nt$s Iurant$ a $P$cuKo
Io sist$ma. /ara isto JocR I$J$rQ usar a sintaP$:
ccom!on$nt$d.c!ro!ri$IaI$dY
/or $P$m!loM !ara moIiOicar a !ro!ri$IaI$ text I$ uma caiPa I$ $IiKo EIit* !ara eBom 5iaf
OaKa:
EIit*.T$Pt :Z gBom 5iahY
S$ a !ro!ri$IaI$ Io com!on$nt$ tiJ$r sub!ro!ri$IaI$sM !ara ac$ssa-lQM utiliT$ a s$#uint$ sintaP$:
ccom!on$nt$d.c!ro!ri$IaI$d.csub!ro!ri$IaI$d
/or $P$m!loM !ara moIiOicar a sub!ro!ri$IaI$ 8am$ r$O$r$nt$ a !ro!ri$IaI$ Oont$M I$ uma caiPa
I$ $IiKo EIit*M !ara gScri!thM OaKa:
EIit*.7ont.nam$ :Z gScri!thY
.bs.: -$riOiNu$ o ti!o Ia !ro!ri$IaI$ !ara ant$s I$ manIar o JalorM consultanIo no .bj$tc Ins!$ctor.
4.2.1
*)
ConsultanIo /ro!ri$IaI$s $ EJ$ntos I$ um com!on$nt$.
.bs.:
CaIa
com!on$nt$ t$m sua !rS!rias !ro!ri$IaI$s $ $J$ntosM $ !oI$m
$Pistir !ro!ri$IaI$s i#uais I$ um com!on$nt$ !ara o outroM
!ortanto l$mbr$-s$ Ias !ro!ri$IaI$s $ $J$ntos comuns $ntr$
$l$s.
).3 ,-todo'
So !roc$Iur$s ou OunKL$s $mbutiIas nos com!on$nt$s $
OormulQriosM !r$Jiam$nt$ I$OiniIas !$lo 5$l!i.
Al#uns mHtoIos so I$scritos a s$#uir:
So" : Mostra um OormulQrioY
>iI$ : EsconI$ um OormulQrio mais no o I$scarr$#aY
/rint : Im!rim$ um OormulQrio na im!r$ssoraY
S$t7ocus : Estab$l$c$ o Ooco !ara um OormulQrio ou
com!on$nt$Y
Brin#to7ront: EnJia !ara Or$nt$.
4.3.1 CB37340 42 7I80401 =070 +2190183 3 2/25801H
,m $J$nto !oI$ #$rar a camaIa !ara um mHtoIoM ou s$jaM uma subrotina !r$Jiam$nt$ I$OiniIa
!ara um com!on$nt$.
8o cSIi#oM !ara utiliTar um mHtoIoM us$ a s$#uint$ sintaP$:
cnom$ Io obj$tod.cmHtoIod
E/25801 40 OCF280 S262=.05340
P+09+.243421 40 OCF280 S262=.05340
N072 40 C079052582
T.90 40 C079052582
C079052582
S262=.05340
*(
/or $P$m!loM clicar $m um boto !oI$ Iar ori#$m ao $J$nto So" I$ um outro OormulQrioM
mostranIo $st$ noJo OormulQrio na t$la:
7orm).so"Y
*3
$. Applica!ion
S$m!r$ Nu$ JocR !roc$ssa um !roj$to 5EL/>IM o 5$l!i cria automaticam$nt$ o obj$to
A!!lication. -ocR t$m I$ trabalar com !ro!ri$IaI$s $ mHtoIos I$ss$ obj$to !ara !oI$r OaT$r coisas
como $s!$ciOicar o Ucon$ Io a!licatiJoM $s!$ciOicar o nom$ I$ arNuiJo I$ >$l! Io !roj$to ou o titulo Ia
a!licaKo.
+.1 ,-todo'.
M2113E2B0@ - EPib$ uma caiPa m$nsa#$m !aIro GinIo"s.
MI8040 M.5.7.?2 - MinimiTa o a!licatiJo a um Ucon$Y
MI8040 R2180+2 - R$staura o a!licatiJo ao $staIo ant$rior
P+0=211M2113E21 - /$rmit$ ao s$u a!licatiJo I$iPar o GinIo"s !roc$ssar $J$ntos !ara outros
a!licatiJos.
T2+7.5382 - 7inaliTa a a!licaKo.
+.2 Pro(riedade'.
E@2N372 - TraT o nom$ Io $P$cutQJ$l Nu$ H o nom$ !roj$to
H269F.62 - 8om$ I$ arNuiJo I$ >$l!.
I=05 - Dcon$ Ia a!licaKo !or com!l$toM s$nIo Nu$ caIa jan$la t$m s$u !rS!rio Ucon$.
T.862 - TUtulo Ia a!licaKo.
.bs.: Al#umas /ro!ri$IaI$s !oI$m s$r ac$ssaIas !$lo M$nu .!tionsM .!Ko /roj$ctM 6uia A!!lication.
%. &D' Applica!ion
,ma a!licaKo M5I :Multi!l$ 5ocum$nt Int$rOac$; H aNu$la $m Nu$ JQrios OormulQrios ou
jan$las !oI$m s$r ab$rtas $m um !ai.
EP$m!los: GorIM EPc$l.
/.1 U'ando o ,ode"o de A("ica01o ,D&
/ara criar uma a!licaKo M5I automaticam$nt$:
AtiJ$ a #al$ria I$ !roj$tosM atraJHs Io M$nu .!tionsM o!Ko EnJironm$ntM #uia !r$O$r$nc$sM
marcanIo a o!Ko Use on New ProjectM Io NuaIro 6all$rXY
8o M$nu Io 5$l!iM $scola 7il$ o!Ko 8$" /roj$ct.
CliNu$ sobr$ o Ucon$ Ia a!licaKo M5IM
CliNu$ no boto .C.
. 5EL/>I !$I$ $nto o Iir$tSrio onI$ JocR irQ armaT$nar a a!licaKo.
Escola o Iir$tSrioM $ cliNu$ no boto .C.
. 5EL/>I #$ra automaticam$nt$ um !roj$to M5IM cont$nIo Iois OormulQrios: um OormulQrio
!ai $ um OormulQrio 7ilo. . 7ormulQrio !aiM I$ nom$ MainFormM li#aIo a unit MainM !ossui o s$#uint$
as!$cto:
*%
. 7ormulQrio 7ilo moI$loM I$ nom$ M5ICilIM li#aIo a unit CilI"inM a!r$s$nta o s$#uint$ as!$cto:
.bs.: A IiO$r$nKa $ntr$ os Iois OormulQrios $sta na !ro!ri$IaI$ F0+7S8>62M onI$ a Main7orm $stQ como
OsM5I7orm:/ai; $ CilIGin como OsM5ICilI :7ilo;.
/.2 E2e!("o ,D&
6.2.1 P+0F280.DPR
program Projeto;
uses
Forms,
Principa in 'PRINCIPA.PAS' {FrmPrincipal},
Cadastro in 'CADASTRO.PAS' {FrmCadastro};
{$R *.RES}
begin
Application.CreateForm(TFrmPrincipal, FrmPrincipal);
Application.Run;
end.
*&
6.2.2 P+.5=.93.DFM
6.2.3 P+.5=.93.PAS
unit Principa;
interface
uses WinTypes, WinProcs, SysUtils, Classes, Graphics, Forms, Controls,
Menus,StdCtrls, Dialogs, Buttons,Messages, ExtCtrls, Cadastro;
(* Aqui eu declaro as janelas filha *)
type
TFrmPrincipal = class(TForm)
MenPrincipal: TMainMenu;
Panel1: TPanel;
PanLinhaStatus: TPanel;
MenArquivo: TMenuItem;
PanTempo: TPanel;
Window1: TMenuItem;
MenArquivoSair: TMenuItem;
WindowCascadeItem: TMenuItem;
WindowTileItem: TMenuItem;
WindowArrangeItem: TMenuItem;
WindowMinimizeItem: TMenuItem;
PanBotoes: TPanel;
SpbSair: TSpeedButton;
TimTempo: TTimer;
MenArquivoCadastro: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure WindowCascadeItemClick(Sender: TObject);
procedure WindowTileItemClick(Sender: TObject);
procedure WindowArrangeItemClick(Sender: TObject);
procedure MenArquivoSairClick(Sender: TObject);
procedure WindowMinimizeItemClick(Sender: TObject);
procedure TimTempoTimer(Sender: TObject);
procedure MenArquivoCadastroClick(Sender: TObject);
private
{ Private declarations }
procedure ShowHint(Sender: Tobject);
Function Formexiste(nomejanela:Tform):boolean;
*B
public
{ Public declarations }
FrmCadastro : TFrmCadastro; (* Declara a varivel que vai receber
a janela caso voc mude seu nome*)
end;
var
FrmPrincipal: TFrmPrincipal;
implementation
{$R *.DFM}
Function TForm1.Formexiste(Nomejanela:TForm):boolean;
var
I : integer;
begin
Formexiste := false;
for i := 0 to componentcount - 1 do
if Components[i] is TForm then
if TForm(Components[i])= nomejanela then
Formexiste := true
end;
procedure TFrmPrincipal.FormCreate(Sender: TObject);
begin
Application.OnHint := ShowHint;
ContaCadastro := 0; (* Zero a variavel contadora da janela quando
eu crio o formulario principal *)
end;
procedure TFrmPrincipal.ShowHint(Sender: TObject);
begin
PanlinhaStatus.Caption := Application.Hint;
end;
procedure TFrmPrincipal.MenArquivoSairClick(Sender: TObject);
begin
Close;
end;
procedure TFrmPrincipal.WindowCascadeItemClick(Sender: TObject);
begin
Cascade;
end;
procedure TFrmPrincipal.WindowTileItemClick(Sender: TObject);
begin
Tile;
end;
procedure TFrmPrincipal.WindowArrangeItemClick(Sender: TObject);
begin
ArrangeIcons;
end;
procedure TFrmPrincipal.WindowMinimizeItemClick(Sender: TObject);
var
I: Integer;
begin
for I := MDIChildCount - 1 downto 0 do
MDIChildren[I].WindowState := wsMinimized;
*<
end;
procedure TFrmPrincipal.TimTempoTimer(Sender: TObject);
begin
Pantempo.caption:= timetostr(now)+ ' - ' + Datetostr(date)+ ' ';
end;
procedure TFrmPrincipal.MenArquivoCadastroClick(Sender: TObject);
begin
If Formexiste(FrmCadastro) = false then (* Se for falso ento cria a
janela *)
Begin
Screen.Cursor := CrHourGlass; (* Coloca o cursor na forma de uma
ampulheta *)
FrmCadastro := TFrmCadastro.Create(Self); (*Cria a janela filha
e atribui a varivel declarada *)
End
Else
If Formexiste(Frmcadastro) = true then (* Se for tentar abrir a
janela e ela ja estiver sido criada *)
Begin
FrmCadastro.WindowState := WsNormal; (* Se estiver minimizada
restaura *)
FrmCadastro.BringToFront; (*Se estiver atrs, coloca na frente*)
FrmCadastro.Setfocus; (* Coloca o foco na janela *)
End;
end;
end.
.bs.:
8o m$nu !ara colocar s$!araIor$s coloca e- e no ca!tionM I$ um it$m Io m$nu.
/ara sublinar a l$tra Io it$m I$ m$nu Nu$ Jai s$r o atalo coloNu$ o eif ant$s Ia l$tra
$scoliIaM isto tambRm H a!licaIo a outros com!on$nt$s como os buttonsM raIio#ru!ou $
outros.
/ara abrir um Sub-M$nu !r$ssion$ a t$cla Control $ a s$ta !ara Iir$ita no it$m Nu$ Oor
n$c$ssQrio o Sub-M$nu.
Atalo !ara o M$nu
Sub-M$nu
S$!araIor
*'
6.2.4 C34318+0.DFM
6.2.5 C34318+0.P31
unit Cadastro;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, DBCtrls, Mask, DB,
DBTables;
type
TFrmCadastro = class(TForm)
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action:
TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmCadastro: TFrmCadastro;
implementation
{$R *.DFM}
procedure TFrmCadastro.FormCreate(Sender: TObject);
begin
Screen.Cursor := CrDefault; (* Coloca o cursor em modo normal *)
end;
procedure TFrmCadastro.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := Cafree; (* Libera a variavel da janela da memria *)
end;
)?
procedure TFrmCadastro.BitBtn1Click(Sender: TObject);
begin
Close; (* Fecha a janela *)
end;
end.
)*
(. )ra"alhando com *anco de Dados
))
3.14DE
. BorlanI 5atabas$ En#in$ H o coraKo Io 5$l!i $ suas a!licaKL$s com banco I$ IaIos usanIo
o m$smo Iatabas$ $n#in$ usaIo !$lo /araIoP $ IBas$. /araIoP $ IBas$ H claro traT$m ca!aciIaI$s
aIicionais alHm Io Iatabas$ $n#in$ :como o 5$l!i tambHm o OaT;M mas isso H lon#$ I$ IiT$r Nu$ o Jalor
a#r$#aIo I$st$s r$cursos aIicionais H maior I$ ) j Ias ca!aciIaI$s - os outros '<j so !roJiIos !$lo
Iatabas$ $n#in$ $ $sto Iis!onUJ$is !ara toIos os usuQrios I$st$ $n#in$.
. BorlanI 5atabas$ En#in$ :B5E; H uma col$Ko I$ 5LLs Nu$ as a!licaKL$s I$ banco I$ IaIos
iro OaT$r camaIas. CaIa $staKo I$ trabalo Nu$ tiJ$r a a!licaKo I$ banco I$ IaIos instalaIa I$J$rQ
t$rM tambHmM o B5E instalaIo : o 5$l!i J$m com a instalaKo Io B5E !ara JocR aIicionar a sua
a!licaKo;.
. B5E !$rmit$ a JocR usar tab$las IBas$M /araIoP ou .5BC $m moIo multi-usuQrio. A J$rso
Cli$nt$/S$rJiIor Io 5$l!i tambHm J$m com linWs !ara s$rJiIor$s I$ banco I$ IaIos como .racl$M
SXbas$M MS S+L S$rJ$rM InOormiPM $ Int$rBas$.
3.2 Arquitetura do 4anco de Dado' do De"(*i
)(
3.3 Arquitetura do' Co!(onente' de 4anco de Dado'
3.) Pa"eta de Co!(onente' da (#gina de Ace''o de Dado'
C079052582 U8.6.4342
TD383S0-+=2
Atua como um conIuto $ntr$ com!on$nt$s TTabl$M T+u$rXM TStor$I/roc $
com!on$nt$s I$ control$M como um T5B6riI
TT3C62 R$cu!$ra IaIos I$ um tab$la I$ banco I$ IaIos Jia o B5E $ abast$c$ $l$ !ara
um ou mais com!on$nt$s I$ control$ I$ IaIos atraJHs Io com!on$nt$
T5ataSourc$. EnJia IaIos r$c$biIos I$ um com!on$nt$ !ara uma banco I$
IaIos Jia o B5E.
TQ-2+>
,sa $struturas $m S+L !ara r$cu!$rar IaIos I$ uma tab$la I$ banco I$ IaIos
Jia o B5EM $ abast$c$ $l$ !ara um ou mais com!on$nt$s I$ control$ I$ IaIos
atraJHs I$ um T5ataSouc$M ou usa $struturas $m S+L !ara $nJiar IaIos I$ um
com!on$nt$ !ara um banco I$ IaIos Jia o B5E.
TS80+2P+0= >abilita uma a!licaKo !ara ac$ssar !roc$Iim$ntos armaT$naIos $m um s$rJiIor.
EnJia IaIos r$c$biIos I$ um com!on$nt$ !ara um banco I$ IaIos Jia o B5E.
TD383B312
Instala uma con$Po !$rman$nt$ com um banco I$ IaIosM $s!$cialm$nt$ um
banco I$ IaIos r$moto r$Nu$r$nIo um lo#in Io usuQrio $ uma s$na.
TB38=BM0/2 Co!ia a $strutura I$ uma tab$la ou s$us IaIos. /oI$ s$r usaIo !ara moJ$r
tab$las int$iras I$ uma Oormato I$ banco I$ IaIos !ara outro.
TR290+8
>abilita im!rimir $ JisualiTar r$latSrios I$ um banco I$ IaIos atraJHs Io
R$!ortSmit.
3.+
)3
Paleta de Componentes da pgina de Controle de Dados
C079052582 U8.6.4342
TDBN3/.E380+ BotL$s I$ naJ$#aKo !ara control$ I$ IaIos Nu$ moJ$ o a!ontaIor Io r$#istro
corr$nt$ I$ uma tab$la !ara o !ost$rior ou ant$riorM inicia ins$rKo ou moIo I$
$IiKoY conOirma noJos ou moIiOicaKL$s I$ r$#istrosY canc$la o moIo I$ $IiKoY
$ r$Or$sca:r$OaT; a t$la !ara r$cu!$rar IaIos atualiTaIos.
TDBT2@8
RStulo I$ control$ I$ IaIos Nu$ !oI$ mostrar um cam!o corr$nt$ Io r$#istro
atiJo.
TDBE4.8 CaiPa I$ $IiKo I$ control$ I$ IaIos Nu$ !oI$ mostrar ou $Iitar um cam!o
corr$nt$ Io r$#istro atiJo.
TDBCB2=JB0@
CaiPa I$ J$riOicaKo I$ control$ I$ IaIos Nu$ !oI$ mostrar ou $Iitar IaIos
lS#ico I$ uma cam!o corr$nt$ Io r$#istro atiJo.
TDBL.18B0@ CaiPa I$ Lista I$ control$ I$ IaIos Nu$ !oI$ mostrar Jalor$s Ia coluna I$ uma
tab$la.
TDBC07C0B0@
CaiPa I$ Lista mSJ$l I$ control$ I$ IaIos Nu$ !oI$ mostrar ou $Iitar Jalor$s Ia
coluna I$ uma tab$la.
TDBR34.0"+0-9 6ru!os I$ raIio I$ control$ I$ IaIos com botL$s I$ rQIio Nu$ !oI$ mostrar ou
s$tar Jalor$s I$ colunas.
TDB"+.4
6raI$ !aIro I$ control$ I$ IaIos Nu$ !ossibilita JisualiTar $ $Iitar IaIos I$
Oorma tabularM s$m$lant$ a uma !lanilaY OaT uso $Pt$nsiJo Ias !ro!ri$IaI$s Io
T7i$lI :$stab$l$ciIos no EIitor I$ Cam!os:7i$lIs EIitor;; !ara I$t$rminar a
JisibiliIaI$ I$ uma colunaM Oormato Ia JisualiTaKoM orI$mM $tc.
TDBM270 CaiPa m$mo I$ control$ I$ IaIos Nu$ !oI$ mostrar ou $Iitar IaIos t$Ptos
BL.B Io r$#istro corr$nt$ atiJo.
TDBI73E2
CaiPa I$ Ima#$m I$ control$ I$ IaIos Nu$ !oI$ mostrarM cortar ou colar ima#$ns
BL.B bitma!hs Io r$#istro corr$nt$ atiJo.
TDBL00J-9L.18 CaiPa I$ Lista I$ control$ I$ IaIos Nu$ mostrar Jalor$s ma!$aIos atraJHs I$
outra tab$la $m t$m!o I$ com!ilaKo.
TDBL00J-9C07C0
CaiPa I$ Combo I$ control$ I$ IaIos Nu$ mostrar Jalor$s ma!$aIos atraJHs I$
outra tab$la $m t$m!o I$ com!ilaKo.
3./ U'ando DataSet'
As class$s I$ com!on$nt$s TTabl$ $ T+u$rX so I$sc$nI$nt$s I$ T5atas$t atraJHs Io T5B5ataS$t. Esta
class$ I$ com!on$nt$ $rIa uma !art$ I$ !ro!ri$IaI$sM mHtoIos $ $J$ntos.
7.6.1 E183401 40 D383S28
E18340 D21=+.:;0
41I53=8./2
. 5atas$t $sta O$caIo.
41B+0K12
EstaIo I$ Es!$ra. . $staIo I$Oault NuanIo um Iatas$t H ab$rto. R$#istros
!oI$ s$r JisualiTaIos mas no muIaIos ou ins$riIos.
41E4.8
>abilita o a lina corr$nt$ !ara s$r $IitaIa.
41I512+8
>abilita uma noJa lina !ara s$r ins$riIa. ,ma camaIa !ara o /ost ins$rir a
noJa lina.
41S28%2>
>abilita 7inIC$XM 6otoC$XM anI 6oTo8$ar$st !ara !rocurar Jalor$s nas
tab$las Io banco I$ IaIos. Est$s mHtoIos som$nt$ !$rt$nc$m !ara o
com!on$nt$ TTabl$. /ara T+u$rXM a !rocura H O$ita com a sXntaP Io S+L.
41C36=F.2641
MoIo NuanIo os .nCalc7i$lIs H $P$cutaIoY !r$Jin$ NualNu$r muIanKa !ara
outros cam!os ou cam!os calculaIos. Raram$nt$ H usaIo $P!licitam$nt$.
)%
7.6.2 D.3E+373 42 E183401 40 D383128
7.6.3 U13540 01 E/25801 40 D383S0-+=2
7.6.3.1 Evento StateChange
procedure TForm1.DataSource1.StateChange(Sender:TObject);
var S:String;
begin
case Table1.State of
dsInactive: S := 'Inactive';
dsBrowse: S := 'Browse';
dsEdit: S := 'Edit';
dsInsert: S := 'Insert';
dsSetKey: S := 'SetKey';
end;
Label1.Caption := S;
end;
procedure Form1.DataSource1.StateChange(Sender: Tobject);
begin
InsertBtn.Enabled := (Table1.State = dsBrowse);
CancelBtn.Enabled := Table1.State in [dsInsert, dsEdit,
dsSetKey];
...
end;
7.6.4
)&
AbrinIo $ 7$caIo 5ataS$ts
Ant$s Nu$ uma a!licaKo !ossa ac$ssar IaIos atraJHs I$ um Iatas$tM o Iatas$t I$J$ s$r ab$rto.
EPist$m Iois m$ios !ara abrir o Iatas$t:
- AtiJanIo a !ro!ri$IaI$ ActiJ$ !ara TrueM isto !oI$ s$r O$ito atraJHs Io .bj$ct Ins!$ctor ou
!ro#ramaJ$lm$nt$ $m t$m!o I$ $P$cuKo.
Table1.Active := True;
- CamanIo o mHtoIo Io 5atas$t Open $m t$m!o I$ $P$cuKo.
Table1.open;
/ara O$car o !roc$sso $ s$m$lant$ sS muIa o a !ro!ri$IaI$ !ara False $ o $J$nto !ara Close;
7.6.5 N3/2E3540 50 D383128
/ro!ri$IaI$s $ MHtoIos I$ 8aJ$#aKo
MI8040 0- P+09+.24342 D21=+.:;0
MI8040 F.+18 MoJ$ o cursor !ara a !rim$ira lina $m um Iatas$t.
MI8040 L318 MoJ$ o cursor !ara a ultima lina $m um Iatas$t.
MI8040 N2@8 MoJ$ o cursor !ara a !rSPima lina $m um Iatas$t.
MI8040 P+.0+ MoJ$ o cursor lina ant$rior $m um Iatas$t.
P+09+.24342 BOF Tru$ NuanIo o cursor $stQ no inicio Io Iatas$tM $m outro caso H Oals$.
P+09+.24342 EOF Tru$ NuanIo o cursor $stQ no Oinal Io Iatas$tM $m outro caso H Oals$.
MI8040 M0/2B>L5M MoJ$ o cursor !ara n linas a Or$nt$ $m um Iatas$tM NuanIo n H um
num$ro int$iro !ositiJo ou n$#atiJo.
EP$m!lo:
Table1.Last; (* Move o cursor para o ltimo registro da tabela *)
Table1.Next; (* Move o cursor para o prximo registro da tabela *)
7.6.6 M04.<.=3540 43401 50 D383128
.s s$#uint$s mHtoIos abilitam uma a!licaKo !ara ins$rirM atualiTarM $ I$l$tar IaIos no Iatas$t.
MI8040 D21=+.:;0
A99254 ComOirma NualNu$r IaIo !$nI$nt$ $ moJ$ um r$#istro $m branco !ara o Oinal
Io Iatas$tM $ coloca o Iatas$t $m $staIo I$ Ins$rt.
C35=26
Canc$la a o!$raKo corr$nt$ $ coloca o Iatas$t $m $staIo I$ Bro"s$.
D26282
A!a#a o r$#istro corr$nt$ $ coloca o Iatas$t $m $staIo I$ Bro"s$.
D26282T3C62
A!a#a uma tab$la
E4.8
Coloca o Iatas$t $m $staIo I$ $IiKo. S$ um Iatas$t jQ $stQ $staIo I$ EIit ou
Ins$rtM uma camaIa !ara EIit no t$m $O$ito.
E798>T3C62 EsJaTia uma tab$la.
I512+8 ConOirma NualNu$r IaIo !$nI$nt$M $ coloca o Iatas$t $m $staIo I$ ins$rKo.
P018 T$ntatiJa !ara conOirmar um r$#istro noJo ou alt$raIo. S$ suc$ssoM o Iatas$t $
colocaIo $m $staIo I$ Bro"s$Y s$ insuc$ssoM o Iatas$t Oica no $staIo corr$nt$.
R2<+21B
AtualiTa a Jiso Io banco I$ IaIos.
7.6.7 L2540 '360+21 40 C3790
EPist$m al#umas man$iras I$ l$r IaIos I$ um Iatas$t:
1. Edit1.text := Table1Nome_Clie.asstring;
1. Edit1.text := Table1.Fields[1].asstring;
1. Edit1.text := Table1.FieldByName(Nome_Clie).asstring;
/ara associar outros ti!os I$ cam!os Nu$ no t$Pto a uma caiPa I$ $IiKo :Nu$ sS ac$ita Jalor$s
Io ti!o strin#;M I$J$mos utiliTar !ro!ri$IaI$s I$ conJ$rso Io com!on$nt$ T7i$lI: AsBool$anM
As5ataTim$M As7loat :R$al;M AsInt$#$rM AsStrin#.
)B
/ara atribuir Jalor$s !ara o Iatas$t o !roc$Iim$nto H o m$smo sS Nu$ no s$ntiIo inJ$rsoM I$sI$
Nu$ Nu$ a tab$la $st$ja $m moIo I$ $IiKo ou ins$rKo.
7.6.8 M3+=3540 D3401
.s mHtoIos !ara marcar so
6$tBooWmarW - /$#a a !osiKo Io r$#istro $ coloca $m uma JariQJ$l Io ti!o TBooWmarWY
6otoBooWmarW - L$Ja o a!ontaIor !ara uma JariaJ$l Io ti!o TBooWmarWY
7r$$BooWmarW - 5$saloca uma JariaJ$l Io ti!o TBooWmarWY
EP$m!lo:
procedure DoSomething;
var
Marca: TBookmark;
begin
Marca := Table1.GetBookmark; {Marca a posio}
Table1.DisableControls; {Desabilita o controle de dados}
try
Table1.First;
while not Table1.EOF do
begin
{Faz alguma coisa}
Table1.Next;
end;
finally
Table1.GotoBookmark(Marca);
Table1.EnableControls;
Table1.FreeBookmark(Marca); {Desaloca a variavel}
end;
end;
7.6.9 P+0=-+3540 43401 27 -73 T3C263
.s mHtoIos 6oToC$X $ 6oTo8$ar$st abilita uma a!licaKo !ara !rocurar uma caJ$ $m uma
tab$la. S$tC$X coloca a tab$la $m moIo I$ !rocura. 8o $staIo S$tC$XM atribui-s$ Jalor$s !ara a !rocura
$m um cam!o inI$PaIo. 6oToC$X $nto moJ$ o cursor !ara a !rim$ira lina Ia tab$la Nu$ $ncontrou
$st$ Jalor. Como 6oToC$X H uma OunKo $la r$torna Tru$ ou 7als$ s$ t$J$ suc$sso na !rocura. .
6oTo8$ar$st H uma OunKo Nu$ l$Ja !ara o Jalor mais !ar$ciIo $ncontraIo.
EP$m!lo:
procedure TSearchDemo.SearchExactClick(Sender: TObject);
begin
Table1.SetKey; {Primeiro campo a chave}
Table1.Fields[0].AsString := Edit1.Text; (*
Table1.Fieldbyname(Cidade) := Edit1.Text *)
Table1.GoToKey;
end;
ToIo !roc$Iim$nto acima !oI$ s$r substituUIo usanIo a OunKo Find
EP$m!lo:
procedure TSearchDemo.SearchExactClick(Sender: TObject);
begin
Table1.FindKey([Edit1.text]);
end;
)<
EP$m!lo I$ outra Oorma I$ !rocura $m uma tab$la.
procedure TSearchDemo.SearchExactClick(Sender: TObject);
begin
Table1.SetKey; {Primeiro campo a chave}
Table1.Fieldbyname(Cidade) := Edit1.Text;
Table1.GoToKey;
end;
/rocura $m um inIUc$ s$cunIQrio.
procedure TSearchDemo.SearchExactClick(Sender: TObject);
begin
Table1.indexname := Nome_Clie;
Table1.open;
Table1.setkey;
Table1Nome_clie.asstring := Edit1.text;
Table1.gotonearest;
end;
/rocura $m um inIUc$ !rimQrio ou s$cunIQrio.
procedure TSearchDemo.SearchExactClick(Sender: TObject);
begin
Table1.indexfieldnames := Codi_Clie;
Table1.open;
Table1.setkey;
Table1Nome_clie.asstring := Edit1.text;
Table1.gotonearest;
end;
7.6.10 F.68+3540 R2E.18+01 27 -73 T3C263
-ocR !oI$ Oiltar r$#istros I$ uma tab$la atraJHs I$ mHtoIos $s!$cUOicos:
S$tRan#$Start: Estab$l$c$ o limit$ inicial Io Oiltro.
S$tRan#$EnI: Estab$l$c$ o limit$ Oinal Io Oiltro.
A!!lXRan#$: A!lica o Oiltro k tab$la.
Canc$lRan#$: Canc$la o Oiltro a!licaIo k tab$la.
C$XEPclusiJ$: EPclui a cam$ Io inIUc$ s$taIo.
EP$m!lo:
Table1.SetRangeStart;
Table1.FieldByName(Codigo):=100;(*Table1Codigo.asinteger := 100 *)
Table1.KeyExclusive := False;
Table1.SetRangeEnd;
Table1.FieldByName(Codigo):=200;(*Table1Codigo.asinteger := 200 *)
Table1. KeyExclusive := True;
Table1.ApplyRange;
.bt$rQ um Oiltro Ios r$#istros I$ cli$nt$s com cSIi#o $ntr$ *?? $ *''.
7.6.11
)'
DnIic$s I$ uma Tab$la
MI8040 D21=+.:;0
"28I542@N3721
R$torna uma lista I$ nom$s Iis!oniJ$is I$ UnI$c$s !ara uma tab$la Io banco I$
IaIos.
I542@F.264C0-58 8_m$ro I$ Cam!os Io DnIic$.
I542@F.2641 -$tor I$ nom$s I$ cam!os usaIos no UnIic$
I542@N372 /ara usar o UnIic$ !rimQrio I$ uma tab$la /araIoP.
I542@F.264N3721 /ara muIa o UnIic$ !ara NualNu$r cam!o.
As !ro!ri$IaI$s InI$P8am$ $ InI$P7i$lI8am$s so mutualm$nt$ $PclusiJas. ColocanIo uma
!ro!ri$IaI$M lim!a o Jalor Ia outra.
7.6.12 S.5=+05.?3540 T3C2631
. mHtoIo 6otoCurr$nt H um mHtoIo Nu$ sincroniTa Iois com!on$nt$s tabl$ li#aIos a uma
m$sma tab$la $m um banco I$ IaIos $ usanIo o m$smo inIUc$.
Table1.GotoCurrent(Table2);
+.
(?
A Linguagem SQL
A lin#ua#$m S+L :Structur$I +u$rX Lan#ua#$ - Lin#ua#$m EstruturaIa I$ /$sNuisa; Ooi criaIa
!ara s$r uma lin#ua#$m !aIro !ara consultaM atualiTaKo $ mani!ulaKo I$ banco I$ IaIos $m um banco
I$ IaIos r$lacional.
Com$rcialm$nt$ im!l$m$ntaIa !$la IBMM s$ tornou um !aIro I$ lin#ua#$m I$ ac$sso a IaIos
$m JQrios bancos I$ IaIos r$lacionaisM como .racl$M 5B)M S+L S$rJ$rM SXbas$M Int$rbas$M $tc.
,sar$smos as 5$claraKL$s $m S+L !ara $Ptrair/AtualiTar r$#istros I$ uma ou mais tab$las Nu$
at$nIam as conIiKL$s $s!$ciOicaIasM mani!ulanIoM assimM som$nt$ os IaIos Nu$ s$jam I$ nosso int$r$ss$.
/or $P$m!loM a I$claraKo a !$rmit$ Nu$ som$nt$ os r$#istros cujo o cam!o 8om$ Com$KanIo
!$la l$tra A Ia tab$la I$ Cli$nt$s s$jam $PibiIos na t$la:
Select *
From Clientes
Where Nome=A*
/oI$mos IiJiIir os comanIos Ia lin#ua#$m S+L $m trRs cat$#orias Iistintas:
ComanIos I$ 5$OiniKo I$ 5aIos: !$rmit$m I$Oinir ou alt$rar tab$las $m um banco I$
IaIos.
ComanIos I$ Control$ I$ 5aIos: s$rJ$m !ara #$r$nciar o ac$sso Ios usuQrios a
I$t$rminaIas tab$las.
ComanIos !ara a Mani!ulaKo I$ 5aIos: s$rJ$m !ara mani!ular os IaIos contiIos nas
tab$las.
5.1 Co!ando' de ,ani(u"a01o de Dado'
8.1.1 U94382
AtualiTa r$#istros.
8.1.2 D26282
5$l$ta R$#istros
8.1.3 S262=8
R$cu!$ra r$#istros Nu$ satisOaKam a uma conIiKo.
8.1.4 I512+8
Ins$r$ um noJo r$#istro.
5.2 $(eradore'
/oI$mos usar o s$#uint$s o!$raIor$s:
AritimHticos ` M - M ] M /
Com!araKo: Z M dM cM cdM cZM Zd
Int$rJalo: BETGEE8....A85....
I8 $ 8.T I8
LICE
IS 8,LL
A85M .R $ 8.T
+uantiIaI$: ALLM S.MEM A8E
ll Concat$naKo
5.3 E2(re''6e'
/oI$mos construir uma I$claraKo S+L usanIo as s$#uint$s $P!r$ssL$s:
(*
8.3.1 F+07
Es!$ciOica o nom$:s; Ia:s; tab$la:s; Nu$ ori#inaro os IaIos.
8.3.2 NB2+2
Es!$ciOica uma conIiKo.
8.3.3 "+0-9 B>
S$!ara os r$#istros !$lo #ru!o $s!$ciOicaIo.
8.3.4 H3/.5E
Estab$l$c$ a conIiKo Nu$ caIa #ru!o I$J$ at$nI$r.
8.3.5 O+42+ B>
Es!$ciOica a orI$naKo Ios r$#istros s$l$cionaIos. /oI$-s$ usar ainIa o !arbm$tros
ASC:Asc$nI$nt$; $ 5ESC :5$sc$nI$nt$;
8.3.6 D.18.5=8
R$tira as r$!$tiKL$s
5.) un06e'
/oI$mos ainIaM $s!$ciOicar as s$#uint$s OunKL$s:
C.,8T :ContaIor;Y
A-6:MHIia;Y
7IRST:/rim$iro;Y
LAST:mltimo;Y
MI8:MUnimo;Y
MAA:MQPimo;Y
S,M:Soma;Y
,//ER:Maisculo;Y
L.GER:Minusculo;Y
TRIM:R$moJ$ r$!$tiKL$s I$ um caract$r $s!ciOicaIo Ia $sNu$rIa ou Iir$ita I$ uma strin#;Y
5.+ E2e!("o'
1) Select *
From Clientes
S$l$ciona toIos:]; os cam!os I$ toIos r$#istros Ia tab$la cli$nt$s.
2) Select Codigo,Nome
From Clientes
Where Codigo > 10 And Codigo < 200
S$l$ciona os cam!os CSIi#o $ 8om$ Ia tab$la Cli$nt$s !ara os r$#istros Nu$ t$nam os cam!o
CSIi#o d :Maior; Nu$ *? $ c:M$nor; Nu$ )??.
3) Select *
From Clientes
Group By Cidade
S$l$ciona toIos os cam!os $ r$#istros Ia tab$la Cli$nt$s a#ru!aIa !$lo cam!o CiIaI$.
4) Select *
From Clientes
Order By Codigo
()
S$l$ciona toIos os cam!os $ r$#istros Ia tab$la Cli$nt$s orI$naIa !$lo cam!o CoIi#o.
((
5) Select *
From Fornecedores, Produtos
Where Fornecedores.Codigo = Produtos.Codigo
S$l$ciona toIos os cam!os $ r$#istros Ias tab$las I$ 7orn$c$Ior$s $ /roIutos Nu$ t$nam o
cam!o coIi#o I$ 7orn$c$Ior$s i#ual ao cam!o CoIi#o I$ /roIutos.
6) Select *
From Clientes
Where Nome Like S*
S$l$ciona toIos os cam!os $ r$#istros Ia tab$la I$ Cli$nt$s cujo o cam!o 8om$ com$c$ !$la
l$tra S.
7) Update Funcionarios
Set Salario = Salario * 1.2
AtualiTa o cam!o Salario I$ toIos os r$#istros Ia tab$la I$ 7uncionarios !ara o cont$_Io atual
multi!licaIo !or *.) :aum$nto I$ )?j;.
8) Update Funcionarios
Set Salario = Salario * 1.2
Where Cargo = Diretor
AtualiTa o cam!o Salario I$ toIos os r$#istros Ia tab$la I$ 7uncinarios Nu$ cam!o Car#o s$ja
i#ual a e5ir$torf !ara o cont$_Io atual multi!licaIo !or *.) :aum$nto I$ )?j;.
9) Delete From Produtos
Where Codigo > 5 And Codigo < 20
A!a#a toIos os r$#istros Ia tab$la /roIutos !ara CoIi#o d:maior; Nu$ % $ c :m$nor; Nu$ )?.
5./ Con'truindo u!a Con'u"ta Dina!ica!ente
/roc$Iim$nto !ara criar construir uma consulta $m S+L Iinamicam$nt$.
Query1.Close; {Fecha a query}
Query1.SQL.Clear; {Limpa o contedo da propriedade SQL}
Query1.SQL.Add(Select *); {Adiciona}
Query1.SQL.Add(From Country);
Query1.SQL.Add(Where Name = Argentina );
Query1.Open; {Abre e executa a Query}
8.6.1 P3113540 P3+O728+01
Cont$uIo Ia /ro!ri$IaI$ S+L Ia +u$rX*:
Select *
From Country
Where Name Like :NomeRegiao
Procedure TForm1.ButtonClick(Senderl: Tobject);
Begin
Query1.close;
Query1.Params[0].AsString := edit1.text;
Query1.open;
end;
/ara 8om$R$#iao $ !assaIo o cont$_Io I$ EIit*.t$Pt.
.bs.*:
Query1.open; = Query1.ExecSQL;
(3
.bs.):
/ara car$#ar I$ um arNuiJo t$Pto:
Query1.SQL.LoadFromFile(C:\MYQUERY.TXT);
(%
,. Cons!ruindo -ela!.rios com o /uic0-epor!
. /r$s$nt$ trabalo t$m como obj$tiJo I$mostrar os !roc$Iim$ntos !ara criar r$latSrios $m
!ro#ramas O$itos $m 5$l!i utiliTanIo o +uicWR$!ort. . 5$l!i *.? jQ !ossui um #$raIor I$ r$latSrios o
R$!ortSmit Nu$ !$rI$ $m I$s$m!$no $ I$s$nJoltura $m r$laKo ao +uicWR$!ortM alHm I$ n$c$ssitar I$
sua instalaKo !rHJia NuanIo Ia sua utiliTaKo. /or s$r um !ro#rama a !art$ torna-s$ muito l$nto $m
r$laKo a o +uicWR$!ort Nu$ H uma bibliot$ca I$ com!on$nt$s Nu$ !assa a OaT$r !art$ Ia a!licaKo
NuanIo Ia sua utiliTaKo a!Ss a com!ilaKo.
7.1 8uic9Re(ort %#'ico
+uicWR$!ort H um #$raIor I$ r$latSrios !or banIa. S$u r$latSrio H construUIo $m cima I$ JQrios
ti!os I$ banIaM onI$ so colocaIos com!on$nt$s JisUJ$is como cam!os I$ banco I$ IaIosM rStulosM
ima#$ns $ outros com!on$nt$s im!rimUJ$is.
OCF2801 40 Q-.=JR290+8 53 B3++3 42 F2++3725831 40 D269B..
9.1.1 C0790525821 40 Q-.=JR290+8.
9.1.1.1 QuickRepot
Est$ H o com!on$nt$ !rinci!al Io +uicWR$!ortM !ois $l$ transOorma a Oorm !aIro $m um
r$latSrio.
9.1.1.2 QR!and
-ocR constrSi s$us r$latSrios com IiO$r$nt$s +RBanIs $ colocanIo com!on$nt$s JisUJ$is I$
control$ Io +uicWR$!ort sobr$ $la. EPist$m IiO$r$nt$s ti!os I$ banIasM como banIa I$ I$tal$sM banIa
I$ cab$KaloM banIa I$ roIa!H $ outras.
9.1.1.3 QR"oup
EPist$ Iuas man$iras I$ im!rimir r$latSrios m$str$/I$tal$s com o +uicWR$!ort. ,m H usar um
com!on$nt$ T+u$rX li#aIo com um +u$rX:Consultas; $ +R6rou!s !ara #ru!os I$ IatasM a outra
man$ira H usar o com!on$nt$ 5$tailLinW combinaIo com banIas 5$tail6rou!. CaIa mHtoIo t$m o
+R/r$Ji$"
+uicWR$!ort
+RBanI
+R6rou!
+R5$tailLinW
+RLab$l
+RM$mo
+R5BT$Pt
+R5BCalc
+RSXs5ata
+RSa!$
(&
m$smo r$sultaIo. S$ JocR tiJ$r n$c$ssiIaI$ I$ r$latSrios m$str$s/I$tal$s com mais I$ Iuas camaIas
$nto us$ +R6rou! $ T+u$rX t$rQ uma !robabiliIaI$ I$ s$r m$lor I$s$m!$no.
9.1.1.4 QRDetail#ink
+R5$tailLinW H o s$#unIo camino !ara criar r$latSrios m$str$/I$tal$s no +uicWR$!ort.
Ti!icam$nt$ JocR usaria +R5$tailLinW com TTabl$s :ou T+u$ri$s; NuanIo JocR t$m som$nt$ Iois nUJ$is
I$ con$Po. A OorKa Io +R5$tailLinW contuIoM H Nu$ JocR !oI$ t$r muitas tab$las I$tal$s.
9.1.1.5 QR#abel
. Com!on$nt$ +RLab$l H usaIo !ara mostrar t$Ptos $m um r$latSrio. A !ro!ri$IaI$
Ca!tion:TUtulo; !oI$ s$r alt$raIo $m al#uns $J$ntos Iurant$ a !r$!araKo Io r$latSrio. S$ JocR
n$c$ssitar um t$Pto !ara saUIa I$ um cam!o I$ IaIos us$ o com!on$nt$ +R5BT$Pt.
9.1.1.6 QR$e%o
. Com!on$nt$ +RM$mo H utiliTaIo montar linas Nu$ !r$cisam s$r com!osta !or JQrios it$ns
I$ IaIos ou t$Ptos Nu$ !r$cis$m s$r Ii#itaIos !ara com!or o r$latSrio.
9.1.1.7 QRD!&e't
. Com!on$nt$ +R5BT$Pt H uma control$ I$ t$Pto I$ IaIos cli$nt$. T$Pto H con$ctaIo com um
cam!o I$ banco I$ IaIos.
9.1.1.8 QRD!Calc
Est$ com!on$nt$ automatiTa !roc$ssos I$ soma $ conta#$m I$ cam!os I$ IaIos. Em aIiKo
!ara $sta !ro!ri$IaI$ o +R5BCalc t$m toIas a !ro!ri$IaI$s $ $J$ntos $rIaIos Io +R5BT$Pt.
9.1.1.9 QRSysData
. Com!on$nt$ +RSXs5ata mostra JQrias inOormaKL$s Io sist$ma. Em aIiKo !ara as
!ro!ri$IaI$ Io +RSXs5ata t$m-s$ toIos os com!on$nt$s Nu$ o +RLab$l t$mM $Pc$to a !ro!ri$IaI$
Ca!tion.
9.1.1.10 QRShape
+RSa!$ H usaIo !ara mostrar linas sim!l$s $ Oi#uras $m um r$latSrio.
9.1.1.11 QR(eview
+R/r$Ji$" H usaIo !ara criar uma Oorm I$ !rH JisualiTaKo. Est$ com!on$nt$ mostra toIas as
saUIas I$ uma JisualiTaKo Io !r$Ji$" atual. /ara camar sua !rS!ria Oorm I$ !rH JisualiTaKo ao inJHs
I$ usar uma Oorm !aIro com +uicWR$!ort atribuinIo o $J$nto +R/rint$r..n/r$Ji$". 8$st$ $J$nto JocR
traT sua !rS!rio Oorm a Nual I$J$ cont$ o com!on$nt$ +R/r$Ji$". -ocR no !oI$ s$l$cionar Nu$ !Q#ina
!ara JisualiTar usanIo a !ro!ri$IaI$ /a#$8umb$r.
7.2 Criando Re"atrio'
+uicWR$!ort !oI$ criar JQrios ti!os I$ r$latSriosM I$ Oato com um br$J$ con$cim$nto I$ 5$l!i
$ um !ouco I$ criatiJiIaI$ !oI$ s$r usaIo !ara criar NualNu$r ti!o I$ r$latSrio.
L$mbrar Nu$ ainIa Nu$ s$ os r$latSrios so criaIos como as OormsM mas no com a int$nKo I$
s$r mostraIo na t$la como Oorms. Em uma Oorm r$latSrio I$J$ s$r incluUIo um com!on$nt$
T+uicWR$!ortM $ JocR usa n$st$ com!on$nt$ os mHtoIos /RI8T $ /RE-IEG !ara criar s$u r$latSrio.
8o t$nt$ usar $m um r$latSrio os mHtoIos I$ Oorm S>.G ou S>.GM.5AL. ,ma 7orm r$latSrio
nunca I$J$rQ s$r $m sua a!licaKo o Oorm !rinci!al.
9.2.1 R2638G+.0 42 6.183 S.79621
Criar um r$latSrio I$ lista sim!l$s Io cont$_Io I$ uma tab$la ou uma consulta H muito OQcil.
Si#a as instruKL$s !asso a !asso a s$#uir !ara criar um r$latSrio listanIo toIos os cli$nt$s I$ 5B5$mos. A
tab$la cli$nt$s $stQ incluUIa no 5$l!i.
1. Criar um noJo !roj$to com um Oorm $ sobr$ um _nico Oorm. Esta H sua !rinci!al Oorma I$
a!licaKo. SalJar uniIaI$ Io Oorm como MAI87.RM $ a a!licaKo como +RTEST.
(B
1. AIicionar um Oorm $m branco !ara o !roj$to . Estab$l$c$r o nom$ !ara a !ro!ri$IaI$
MERE/.RT. Estab$l$c$r a lar#ura:GiIt; Ia Oorm !ara mais ou m$nos <??. . atual n_m$ro no
H crUtico.
1. AIicionar uma TTabl$ !ara o com!on$nt$ Oorm. 8om$ar o com!on$nt$ Custom$rTabl$M
$stab$l$c$r a !ro!ri$IaI$ 5ataBas$8am$ !ara 5B5EM.S $ a !ro!ri$IaI$ Tabl$8am$ !ara
C.ST,MER. Estab$l$c$r a !ro!ri$IaI$ atiJa !ara TR,E.
1. AIicionar um com!on$nt$ T5ataSourc$ !ara o Oorm. 8om$ar o Custom$r5S $ $stab$l$c$r a
!ro!ri$IaI$ 5at$S$t !ara Custom$rTabl$.
1. AIicionar um com!on$nt$ T+uicWR$!ort !ara o Oorm. 8om$ar o com!on$nt$ RE/. Estab$l$c$r a
!ro!ri$IaI$ 5ataSourc$ !ara Custom$r5S.
1. AIicionar um com!on$nt$ +RBanI !ara o Oorm. Estab$l$c$r a !ro!ri$IaI$ BanITX!$ !ara
rb5$tail.
1. Colocar um com!on$nt$ T+R5BT$Pt sobr$ o banI. Estab$l$c$r a !ro!ri$IaI$ 5ataSourc$ !ara
Custom$r5S $ a !ro!ri$IaI$ 5ata7i$lI !ara Com!anX8am$.
1. SalJar o Oorm como RE/.RT.
1. -oltar k MAI87.RM :Oorm !rinci!al; $ aIicionar a clQusula ,SES MERE/.RT no to!o Io
cSIi#o Oont$.
1. 5ar um Iu!lo cliNu$ no boto Ia Oorm !rinci!al. Isto irQ mostrar o $J$nto .8CLICC Io boto.
AIicionar o s$#uint$ cSIi#o !ara o $J$nto : MXR$!ort.R$!./r$Ji$"Y
1. RoI$ s$u !roj$to .
-ocR criou a#ora um !roj$to com r$latSrio. S$u !ro#rama !oI$ a#ora: a!r$s$ntarM im!rimirM
salJar $ carr$#ar r$latSriosn
9.2.2 C+.3540 -7 +2638G+.0 =0790180
. +uicWR$!ort !oI$ im!rimir r$latSrios m$str$ $ I$tal$s muito Oacilm$nt$. Est$s r$latSrios
!oI$m s$r im!rimiIos juntam$nt$ com com!on$nt$s T+u$rX :consulta; $ I$ com!on$nt$s TTabl$
:tab$la; con$ctaIas com Mast$rSourc$ :Oont$ m$str$;/!ro!ri$IaI$s Mast$r7i$lI:cam!o m$str$;. Em
acrHscimo o +uicWR$!ort !oI$ criar m$str$s com!l$Pos/r$latSrios I$tal$s com r$#istros I$ um n_m$ro
ilimitaIo I$ tab$las I$tal$s.
-ocR !oI$rQ J$r como criar ambos os ti!os I$ r$latSrios a s$#uir. R$latSrios m$str$/I$tal$s
usanIo o com!on$nt$ TTabl$ :tab$la;.
CrianIo um m$str$/I$tal$s com o com!on$nt$ TTabl$ :tab$la; I$iPa o r$latSrio muito mais
rQ!iIo $ Ol$PUJ$l. Em aIiKo JocR !oI$ incluir IaIos I$tal$s I$ muitas outras tab$las I$tal$s Nu$ JocR
Nu$ira. -ocR !oI$ criar um r$latSrio I$ uma r$laKo r$sumiIa I$ cli$nt$s I$ toIos os s$us cli$nt$s :mast$r
Iata; $ !ara caIa cli$nt$ Ia lista toIas as orI$ns Nu$ o cli$nt$ t$na O$ito :I$tail Iata;M toIos os s$us
contatos !$ssoais com s$us cli$nt$s :I$tail Iata;M toIos os !roIutos I$ uma cat$#oria Nu$ o cli$nt$ $st$ja
int$r$ssaIo :I$tail Iata; $ muitas outras tab$las Nu$ JocR Nuis$r unir com a tab$la cli$nt$s. CaIa uma
I$stas tab$las I$tal$s !oI$m cont$r a sua banIa cab$KaloM banIa I$tal$ $ banIa roIa!H.
/ara criar r$latSrios m$str$ usanIo com!on$nt$s TTabl$ si#a as instruKL$s a s$#uir. -ocR Jai t$r a
n$c$ssiIaI$ I$ olar o r$latSrio M5RE/ Io !roj$to I$monstraKo. El$ $ um r$latSrio m$str$/I$tal$ Nu$
JocR !oI$ usar como moI$lo.
Cri$ um r$latSrio !aIro s$#uinIo o $P$m!lo I$st$ ca!Utulo CrianIo R$latSrios.
1. Alt$rar a !ro!ri$IaI$ MXR$!ort.R$!ortTX!$ !ara NrMast$r5$tail.
1. Acr$sc$ntar um noJo com!on$nt$ TTabl$ !ara o r$latSrio. 8om$ar $l$ .rI$r$sTabl$M colocar a
!ro!ri$IaI$ 5ataBas$8am$ !ara 5B5EM.SM a !ro!ri$IaI$ Tabl$8am$ !ara .rI$rsM o Mast$rSourc$
(<
!ara Custom$r5S $ na caiPa I$ Iialo#o Mast$r7i$lIs con$ct$ o UnIic$ s$cunIQrio :custno; !ara
Custom$r. Custno. ColoNu$ a !ro!ri$IaI$ ActiJ$ Ia TTabl$ !ara TR,E.
1. AIicion$ um com!on$nt$ T5ataSourc$ !ara o r$latSrio. 8om$i$ $l$ .rI$rs5S $ coloNu$ a
!ro!ri$IaI$ 5ataS$t !ara .rI$rsTabl$
1. AIicion$ um T+RBanI !ara o r$latSrio. ColoNu$ a !ro!ri$IaI$ BanITX!$ !ara rbSubI$tail. 8om$i$
$l$ !ara .rI$rs5$tailBanI.
1. AIicion$ um com!on$nt$ T+R5$tailLinW !ara o r$latSrio. ColoNu$ a !ro!ri$IaI$ 5ataSourc$ !ara
.rI$rs5s. ColoNu$ a !ro!ri$IaI$ 5$tailBanI !ara .rI$r5$tailBanI. ColoNu$ a !ro!ri$IaI$ Mast$r
!ara RE/.
1. ColoNu$ um com!on$nt$ T+R5BT$Pt sobr$ o .rI$rs5$tailBanI. ColoNu$ a !ro!ri$IaI$ 5ataSourc$
!ara .rI$rs5S $ a /ro!ri$IaI$ 5ata7i$lI !ara .rI$r8o.
1. 5u!lo cliNu$ no com!on$nt$ +uicWR$!ort !ara JisualiTar o r$latSrio.
S$ JocR I$s$jar mais tab$las I$ I$tal$s JocR I$J$rQ r$!$tir os !assos ( a B !ara cara tab$la I$
I$tal$s Nu$ JocR ira incluir. /ara muIar a orI$m I$ im!r$sso r$or#aniT$ a orI$m I$ criaKo Ios
com!on$nt$s T+R5$tailinW. As Tab$las I$ I$tal$s so im!rimiIas na orI$m corr$s!onI$nt$ com a
criaKo Ios com!on$nt$s T+R5$tailinW.
11.
('
Arquivos de niciali!ao
1:.1 $ $%jeto ;&nifi"e
/ara mani!ular arNuiJos .I8IM o 5$l!i oO$r$c$ o obj$to TiniOil$. . .bj$to TIni7il$M I$claraIo na
unit IniOil$sM !$rmit$ Nu$ sua a!licaKo $scr$Ja $ l$ia um arNuiJo .I8I.
/ara usar o obj$to TIni7il$M JocR I$J$ aIicionar a unit IniOil$s k clQusulas us$s I$ sua a!licaKo.
1:.2 Criando u! Arquivo de Configura01o
,s$ o mHtoIo Cr$at$ !ara criar m$mSria !ara um obj$to Io ti!o TIni7il$M !assanIo como
!arbm$tros o nom$ Io arNuiJo a s$r criaIo.
NomeObjeto := TIniFile.Create(NomedoArquivo.INI);
/oI$ s$r inOormaIo o junto ao nom$ o camino I$ onI$ s$ $ncontra o arNuiJoM mas o !aIro H
armaT$nar o arNuiJo .I8I no subIir$tSrio Io GinIo"s.
/ara criar as s$KL$sM as $ntraIas $ os Jalor$s Ias $ntraIasM utiliT$ os s$#uint$s mHtoIos:
WriteBool - /ara criar um Jalor bool$anoY
WriteInteger - /ara criar um Jalor int$iroY
WriteString - /ara criar uma strin#.
,s$ o mHtoIo 7r$$ !ara lib$rar a m$mSria utiliTaIa !$lo obj$to TIni7il$ criaIo:
NomeObjeto.Free;
. $P$m!lo abaiPo criaM ao clicar no boto Button*M um arNuiJo .I8I camaIo 8oJo9o#oM com
Iuas s$KL$s: .!co$s :com Iuas $ntraIas; $ ConOi#uracao :com uma $ntraIa;:
Procedure TForm1.Button1Click(Sender:TObject);
Var
IniJogo : TIniFile;
Begin
IniJogo := TIniFile.Create(NOVOJOGO.INI);
IniJogo.WriteBool(Opcoes,Som,True);
IniJogo.WriteInteger(Opcoes,Nivel,3);
IniJogo.WriteString(Configuracao,Nome,Oliveira);
IniFile.Free;
End;
. arNuiJo I$ conOi#uraKo 8.-.9.6..I8I H armaT$naIo no Iir$tSrio oGinIo"sM $ !ossui o
s$#uint$ Oormato:
[Opcoes]
Som=1
Nivel=3
[Configuracao]
Nome=Oliveira
+uanIo JocR Oor Iistribuir sua a!licaKoM no $sNu$Ka I$ oO$r$c$r o arNuiJo .I8I. .utra o!Ko H criar o
arNuiJo .I8I atraJHs I$ um !ro#rama I$ instalaKo Io s$u a!licatiJoM oO$r$c$nIo ao usuQrio a
!ossibiliIaI$ I$ !$rsonaliTar o arNuiJo .I8I ja na instalaKo.
1:.3 <endo o Arquivo de Configura01o
+uanIo s$u a!licatiJo Oor $P$cutaIoM I$J$ l$r o arNuiJo .I8I $Pist$nt$. Isto !oI$ s$r O$itoM !or
$P$m!loM no $J$nto .nCr$at$ Io 7ormulQrioM ou na s$Ko InicialiTation.
/ara l$r um arNuiJo .I8IM utiliT$ os mHtoIos:
ReadBool - /ara l$r uma $ntraIa com Jalor$s bool$anosY
ReadInteger - /ara l$r uma $ntraIa com Jalor$s int$irosY
ReadString - /ara l$r uma $ntraIa com Jalor$s strin#.
3?
Atribua o r$sultaIo Ia l$itura a JariQJ$is #lobais :criaIas na clQusula Jar Ia s$Ko int$rOac$ Ia
unit Io OormulQrio !rinci!al;M Nu$ !oI$m s$r utiliTaIas !or toIa a a!licaKoM NuanIo n$c$ssQrio. 8o
$sNu$Ka I$ aIicionar a unit Io OormulQrio !rinci!al a clQusula us$s Ia s$Ko im!l$m$ntation NuanIo Oor
utiliTar as JariQJ$is.
. $P$m!lo abaiPo lR as $ntraIas Io arNuiJo 8.-.9.6..I8IM mostranIo !ara o usuQrio $m
Lab$ls:
Var
Form1 : Tform1;
Vsom : Boolean;
Vnivel : Integer;
Vnome : String;
IniJogo : Tinifile;
Implementation
{$R *.DFM}
Procedure TForm1.FormCreate(Sender:TObject);
Begin
Label1.Caption := Nvel+InttoStr(Vnivel);
If Vsom then
Label2.Caption := Som Ligado);
else
Label2.Caption := Som Desligado);
Label3.Caption := Nome : + Vnome;
End;
Initialization
Begin
IniJogo := TIniFile.Create(NOVOJOGO.INI);
Vsom := IniJogo.ReadBool(Opcoes,Som,False);
Vnivel := IniJogo.ReadInteger(Opcoes,Nivel,-1);
Vnome := IniJogo.ReadString(Configuracao,Nome,);
IniFile.Free;
end;
1:.) ,odificando u! Arquivo .&=&
-ocR !oI$ utiliTar os mHtoIos Grit$Strin#M Grit$Bool $ Grit$Int$#$r !ara moIiOicar as $ntraIas
I$ um arNuiJo .I8I jQ $Pist$nt$. /or $P$m!lo o Oormato I$ moI$ $stab$l$ciIo no GI8.I8IM s$Ko aIntlpM
$ntraIa sCurr$ncXM !ara R\:
Procedure TForm1.Button1Click(Sender:TObject);
Var
IniMoeda : TIniFile;
Begin
IniMoeda := TIniFile.Create(WIN.INI);
IniMoeda.WriteString(Intl,sCurrency,R$);
IniMoeda.Free;
End;
1:.+ $utra' $(era06e' co! Arquivo' .&=&
AtraJHs Io mHtoIo R$aIS$ctionM JocR lR toIas as $ntraIas I$ um s$Ko I$ um arNuiJo .I8I !ara
um obj$to Ia class$ Tstrin#M como ListBoPM ComboBoP ou M$mo:
ReadSection(Const Seo:String; ListaEntradas: TStrings);
A constant$ S$Ko I$t$rmina a s$Ko Nu$ s$rQ liIa. . !arbm$tro ListaEntraIas corr$s!onI$ ao
obj$to Io ti!o TStrin# Nu$ armaT$narQ as $ntraIas :!or $P$m!loM ListBoP*.It$ms;.
3*
AtraJHs Io mHtoIo R$aIS$ction-alu$sM JocR lR toIas as $ntraIas $ s$us Jalor$s I$ uma s$Ko Io
arNuiJo .I8I !ara um obj$to Ia class$ TStrin#M como ListBoPM ComboBoP ou M$mo:
ReadSectionValues(Const Seo:String; ListaEntradas: TStrings);
A constant$ S$Ko I$t$rmina a s$Ko Nu$ s$rQ liIa. . !arbm$tro ListaEntraIas corr$s!onI$ ao
obj$to Io ti!o TStrin# Nu$ armaT$narQ as $ntraIas :!or $P$m!loM m$mo*.lin$s;. -ocR !oI$ usar a
!ro!ri$IaI$ -alu$s I$ uma strin# ou lista I$ strin#s !ara ac$ssar uma strin# $s!$cUOica na lista I$ strin#.
/ara a!a#ar uma s$Ko int$ira I$ uma arNuiJo .I8I us$ o mHtoIo Eras$S$ction.
A !ro!ri$IaI$ 7il$8am$ contHm o nom$ Io arNuiJo .I8I Nu$ $stQ s$nIo mani!ulaIo !$lo obj$to
TIni7il$.
1:./ ,ani(u"a01o de Arquivo'
Al#uns comanIos !oI$m s$r ut$is !ara mani!ular o arNuiJo .I8I :
10.6.1 "28D.+
R$torna o Iir$tSrio corr$nt$ Io IriJ$ $s!$ciOicaIo.
5 !oI$ assumir os s$#uint$s Jalor$s:
? - 5$Oault
* - A
) - B
( - C
SintaP$:
6$t5ir:5: BXt$Y Jar S: Strin#;Y
10.6.2 F.62E@.181
A OunKo 7il$EPist r$torna Tru$ s$ o arNuiJo $s!$ciOicaIo $Pist$.
SintaP$:
7il$EPists:const 7il$8am$: strin#;: Bool$anY
10.6.3 D26282F.62
A OunKo 5$l$t$7il$ a!a#a o arNuiJo $s!$ciOicaIo Io Iisco. S$ o arNuiJo no !oI$r s$r a!a#aIo ou no
$Pistir r$torna Oalso.
SintaP$:
5$l$t$7il$:const 7il$8am$: strin#;: Bool$anY
3)
11. Criando 2345
3(
11.1 >i'1o ?era"
Inicialm$nt$ JocR cria os tS!icos Io $l! $m um arNuiJo t$PtoM atraJHs I$ um $Iitor I$ t$Ptos
conJ$ncional :"orI;.
A !art$M cria outro arNuiJo t$Pto :>/9; cont$nIo inOormaKL$s sobr$ o arNuiJo I$ >$l! !ara o
com!ilaIor.
/or OimM utiliTa um !ro#rama $s!$cUOico :>C(*; !ara com!ilar o arNuiJo I$ >$l!M #$ranIo o
arNuiJo I$ $Pt$nso .>L/.
. !ro#rama Gin >$l!M #$r$nciaIor I$ >$l! Io GinIo"sM #$r$ncia a JisualiTaKo Io arNuiJo
.>L/.
11.2 E'crendo o' t(ico'
/ara criar o arNuiJo >$l!M utiliT$ um $Iitor I$ t$Ptos Nu$ !$rmita a #raJaKo $m um arNuiJo
RT7M como o GorI.
/ara $scr$J$r os tS!icos Io >$l!M abra um noJo Iocum$nto no $Iitor I$ t$Pto $:
Escr$Ja o tUtulo Io tS!icoM JocR !oI$ Oormatar $st$ tUtulo !ara I$stacar Io r$sto Io t$PtoY
Escr$Ja o t$Pto Io tS!icoY
Cri$ uma cr$bra I$ !Q#inaY
Escr$Ja o noJo tS!ico.
11.3 &n'erindo nota' de roda(-
-ocR !r$cisa ins$rir $m s$us tS!icos notas customiTaIas !ara Nu$ o Gin >$l! !ossa iI$ntiOicar $
criar os NuaIros I$ IiQlo#a !aIroM como o NuaIro !rocura.
q : Strin# I$ cont$PtoM iI$ntiOica o tS!ico. . usuQrio no a JRM mas s$rQ usaIa !ara linWs $ntr$
tS!icos.
\ : TUtulo. A!ar$c$ como tUtulo Io tS!ico Ia caiPa /rocura. 8ormalm$nt$ H i#ual ao atributo Io
tS!ico.
C : /alaJras caJ$s. A!ar$c$m na lista /rocura. -ocR !oI$ $scol$r mais I$ uma !alaJra caJ$M
s$!aranIo-as como o !onto $ JUr#ula :Y;.
` : S$NuRncia I$ Ool$am$nto. 5$t$rmina a orI$m Ios tS!icos NuanIo o usuQrio Ool$ia o $l!.
. iI$ntiOicaIor !oI$ s$r um m$mbro :?*; ou um nom$ I$ #ru!o s$#uiIo I$ um sinal I$
Iois !ontos ::; $ um m$mbro :Ioc:?*;.
11.) Adicionando u! @ot'(ot ao t(ico
,m ots!ot H uma !alaJra ou #rQOico Nu$ s$ clicaIo l$Ja a um outro tS!ico.
/ara criar um ots!ot:
5i#it$ o t$Pto ou insira o #rQOico Nu$ JocR Nu$r Nu$ s$ja o ots!otY
S$l$cion$ o t$Pto $ a!liNu$ o Oormato Iu!lo sublinaIo a $l$Y
Im$Iiatam$nt$ a!Ss o t$Pto ou #rQOico ots!otM Ii#it$ a strin# I$ cont$Pto Io tS!ico Io
I$stinoY
S$l$cion$ a strin# I$ cont$PtoM $ a!liNu$ o OunIo I$ t$Pto oculto a $l$.
5$!ois I$ com!ilaIo a!ar$c$rQ sublinaIoM $m J$rI$.
11.+ Criando u! *ot'(ot (ara u!a jane"a (o(Au(
/ara criar um ots!ot !ara um tS!ico Io m$smo arNuiJo I$ $l!M mostranIo $st$ tS!ico $m uma
jan$la !o!-u!.
7ormat$ a !alaJra Nu$ s$rQ o ots!ot com um sublinaIo sim!l$sY
Im$Iiatam$nt$ a!Ss $sta !alaJra Ii#it$ o nom$ Ia strin# I$ cont$Pto Nu$ r$!r$s$nta o tS!icoM
muIanIo s$u Oormato !ara oculto.
33
11./ Se for u'ar u! t(ico de outro arquivo de *e"(.
7ormat$ a !alaJra Nu$ s$rQ o ots!ot com sublinaIo sim!l$sY
Im$Iiatam$nt$ a!Ss a !alaJraM Ii#it$ o nom$ Ia strin# I$ cont$Pto Nu$ r$!r$s$nta o tS!icoM
muIanIo s$u Oormato !ara ocultoY
5i#it$ um @Y
5i#it$ o nom$ Io arNuiJo I$ $l! Nu$ contHm o tS!ico a s$r ac$ssaIo.
EP.: CrianIo um noJo Iocum$ntoCriar5oc@outrol!.l!
11.3 E'crevendo Arquivo de Projeto.
. arNuiJo I$ !roj$to H um arNuiJo t$Pto cont$nIo inOormaKL$s Nu$ o com!ilaIor I$ >$l! usa
!ara construir o arNuiJo I$ >$l!. . arNuiJo I$ !roj$to!oI$ incluir muitas instruKL$s Nu$ controlam
as!$ctos Io arNuiJo $l!.
/ara $scr$J$r um arNuiJo I$ !roj$to !ara o >$l!:
Cri$ um arNuiJo t$Pto. 5R a $l$ o m$smo nom$ Nu$ JocR #ostaria Nu$ Ooss$ IaIo ao s$u arNuiJo
I$ $l! com!ilaIoM acr$sc$ntanIo a $Pt$nso .>/9.
AIicion$ as s$#uint$s linas ao aruNiJo :$Pist$m outras s$KL$s alHm Ias $P!ostas abaiPo;.
[OPTIONS]
CONTENSTS = String_Contexto
TITLE = Ttulo
COMPRESS = Nvel_de_Compresso
ERRORLOG = Nome_do_arquivo_log
[CONFIG]
Browse Buttons()
[FILES]
NomeArquivoRTF_1
NomeArquivoRTF_2
NomeArquivoRTF_3
.nI$:
String_Contexto: @ a strin# I$ cont$Pto Io tS!ico I$ cont$_Ios. Esta lina no H r$Nu$riIa. S$
JocR no inclui-laM o Gin$l! usarQ o !rim$iro tS!ico Io !rim$iro arNuiJo como tS!ico I$ cont$_Ios.
Ttulo: @ o nom$ Nu$ a!ar$c$ na Barra I$ TUtulo Ia jan$la I$ >$l!. 8o coloNu$ $ntr$ as!as.
N!el_de_compress"o: 5$t$rmina Nuanto arNuiJo H com!rimiIo NuanIo $l$ H com!ilaIo. Esta
lina no H r$Nu$riIa. S$ JocR a I$iPar $m brancoM com!ilarQ o arNuiJo s$m com!r$sso. .s Jalor$s
!oI$m s$r:
-alor Com!r$sso
--------- --------------
7als$ S$m com!r$sso
M$Iium MHIia com!r$sso
>i# Alta com!r$sso
Nome_do_ar#ui!o_log: @ o nom$ I$ um arNuiJo onI$ os $rros ocorriIos Iurant$ a com!ilaKo
s armaT$naIos. A lina no H r$Nu$riIa. S$ JocR no I$t$rminar o arNuiJoM os $rros s$ro mostraIos na
t$la.
S$ JocR incluir a lina Bro"s$Buttons:; os botL$s dd :!rSPimo; $ cc :ant$rior; so aIicionaIos
k barra I$ botL$s Io >$l!. Esta lina no H r$Nu$riIa.
11.5
3%
Compilando o arquivo de "elp#
>Q Iois com!ilaIor$s I$ >$l! !ara GinIo"s (.*:
>C/.EAE
>C(*.EAE M >C(*.ERR
+uanIo JocR com!ilar o arNuiJo I$ >$l! os arNuiJos abaiPo I$J$m I$ !r$O$rRncia $star no
m$smo Iir$tSrio:
ToIos os RT7
. com!ilaIor I$ >$l! :>C(*.EAE;
. arNuiJo I$ r$cursos cont$nIo as m$nsa#$ns I$ $rro Io com!ilaIor I$ >$l! :>C(*.ERR;
. arNuiJo I$ !roj$to :.>/9;
+ualNu$r Bitma! utiliTaIo.
/ara com!ilar o arNuiJo I$ >$l! no !rom!t Io Ios:
nom$rIorcom!ilaIor nom$rarNuiJorI$r!roj$to
11.7 &n'erindo gr#fico' e! u! t(ico.
-ocR !oI$ ins$rir #rQOicos como siMm!l$s ilustrKL$sM como um >ots!ot ou como i!$r#rQOico
:#rQOico cont$nIo IiJ$rsos ot s!ots;.
.s bitma!s I$J$m s$ $ncontrar no Iir$tSrio Io arNuiJo I$ !roj$to.
8o arNuiJo RT7 I$J$ s$r ins$riIo a s$#uint$ r$O$rRncia:
{bmc bitmap.bmp} ou
{bml bitmap.bmp}
11.1: Criando u! @ot S(ot (ara u!a jane"a
'ecund#ria
/ara criar um ot s!ot !ara um tS!ico mostraIo $m uma jan$la s$cunIQria:
7ormat$ a !alaJra Nu$ s$rQ o ot s!ot com um sublinaIo Iu!lo.
Im$Iiatam$nt$ a!Ss $sta !alaJraM Ii#it$ o nom$ Ia strin# Io cont$Pto Nu$ r$!r$s$nta o tS!icoM
muIanIo s$u Oormato !ara oculto.
5i#it$ um d
5i#it$ o nom$ Ia jan$la s$cunIQria
. nom$M tamano $ !osiKo Ia jan$la s$cunIQria !r$cisam s$r I$OiniIos na s$Ko aGI85.GSp
Io arNuiJo !roj$to Io >$l!.
[WINDOWS]
nome_da_janela = "ttulo", (x, y, largura, altura), tamanho,
(clientRGB), (nonscrollRGB), (ftop)
/or $P$m!lo:
[WINDOWS]
Jan1 = "Exemplo", (123,123,256, 256), 0, (0,255,255), (255,0,0)
11.11
3&
$ornando o arquivo de "elp sens%vel ao conte&to
A!Ss criar o arNuiJo I$ >$l!M JocR !oI$ utiliTQ-lo na sua a!licaKo $m 5$l!i M li#anIo !art$s
I$ sua a!licaKo :como it$ns I$ m$nuM botL$sM $tc...; a tS!icos Io arNuiJo I$ >$l!.
/ara li#ar o arNuiJo I$ >$l! a A!licaKo:
Co!i$ o >L/ !ara o Iir$tSrio Io /roj$to
Entr$ na a!licaKo $m .!tions//roj$ct.
8a caiPa >$l!7il$M $ntr$ com o nom$ Io arNuiJo I$ >$l! :.>L/; Nu$ s$rQ li#aIo a a!licaKo
. 5$l!i li#a um com!on$nt$ a um tS!ico Io >$l! atraJHs I$ um n_m$ro I$ cont$Pto. Est$
n_m$ro I$ cont$Pto I$J$ s$r atribuUIo sa strin# I$ cont$Pto Io tS!icoM na s$Ko MA/ Io arNuiJo I$
/orj$to. A s$Ko aMA/p ma!$ia toIos os n_m$ros I$ cont$PtoM associanIo-os as strin#s I$ cont$Pto
r$s!$ctiJas.
/or $P$m!lo:
[MAP]
Abrir_doc 001
Criar_doc 002
11.12 C*a!ada' ao arquivo de @e"(
Camar o tS!ico Io cont$_Io:
Application.helpcommand(help_contents,0)
Camar um tS!ico $s!$cUOico:
Application.helpcommand(help_contents,xx)
PP Z DnIic$ Ia strin# I$ cont$Pto I$OiniIo na s$Ko aMA/p Io arNuiJo I$ !roj$to Io
>$l!.
7$car o arNuiJo I$ >$l!:
Application.HelpCommand(help_quit,0);
3B
12. 36ce7es
3<
12.1 A E'trutura ;rBCina""BCEnd
S$u cSIi#o !r$cisa #arantir Nu$M m$smo ocorr$nIo um $rroM os r$cursos alocaIos s$jam
I$salocaIos. Entr$ $st$s r$cursos $sto: arNuiJosM m$mSriaM r$cursos Io GinIo"sM obj$tos.
/ara #arantir a I$salocaKo Ios r$cursosM usamos a $strutura abaiPo:
{Aloca os recursos}
Try
{Comandos que usam os recursos}
Finally
{Libera os recursos}
end;
A a!licaKo s$m!r$ $P$cutarQ os comanIos ins$riIos na !art$ 7inallX Io blocoM m$smo Nu$ uma
$P$c$Ko ocorra. +uanIo um $rro ocorr$ no bloco !rot$#iIoM o !ro#rama !ula !ara a !art$ OinallXM
camaIa I$ cSIi#o lim!oM Nu$ H $P$cutaIo. M$smo Nu$ no ocorra um $rroM $st$s comanIos so
$P$cutaIos.
8o cSIi#o a s$#uirM alocamos m$mSria $ #$ramos um $rroM ao t$ntarmos uma IiJiso !or ?.
A!$sar Io $rro o !ro#rama lib$ra a m$mSria alocaIa:
Procedure TForm1.Button1Click(Sender:TObject);
Var
Apointer : Pointer;
AnInteger, Adividend : Integer;
Begin
Adividend := 0;
GetMem(Apointer, 1024);
Try
Aninteger := 10 Div Adividend;
Finally
FreeMem(Apointer, 1024);
End;
End;
12.2 A E'trutura ;rBCE2ce(tCEnd
,m tratam$nto I$ $Pc$Ko H um cSIi#o Nu$ trata $rros Nu$ ocorr$m I$ntro I$ blocos !rot$#iIos.
/ara I$Oinir um tratam$nto I$ $Pc$KoM utiliT$ a s$#uint$ construKo:
Try
{Comandos que voc deseja proteger}
Except
{Comandos de tratamento de erros}
end;
A a!licaKo irQ $P$cutar os comanIos na !art$ $Pc$!t som$nt$ s$ ocorr$r um $rro. S$ na !art$
trX JocR camar uma rotina Nu$ no trata $rrosM $ um $rro ocorr$rM ao Joltar !ara $st$ bloco a !art$ $Pc$!t
s$rQ $P$cutaIa. ,ma J$T Nu$ a a!licaKo localiTa um tratam$nto !ara $Pc$Ko ocorriIaM os comanIos so
$P$cutaIosM $ o obj$to $Pc$Ko H I$struUIo. A $P$cuKo continua atH o Oim Io bloco.
5$ntro Ia !art$ $Pc$!t I$Oinimos um cSIi#o a s$r $P$cutaIo !ara mani!ular ti!os $s!$cUOicos I$
$Pc$Ko. /or $P$m!loM o cSIi#o abaiPo trata o $rro I$ IiJiso !or T$roM atraJHs Ia $Pc$Ko E5iJBXZ$ro:
Function Diviso (Soma, Numero : Integer) : Integer;
Begin
Try
Result := Soma div Numero;
Except
on EDivByZero do Result 0;
End;
3'
End;
A !alaJra r$s$rJaIa on I$Oin$ r$s!ostas !ara uma $Pc$Ko. On $stQ s$m!r$ junto I$ do, !ara
mani!ular a $Pc$Ko.
/ara l$r inOormaKL$s $s!$cUOicas sobr$ o $rro ocorriIoM JocR usa uma JariaKo Ia $strutura on$
doM Nu$ !roJR uma JariQJ$l t$m!orQria Nu$ $n#loba a $Pc$Ko. 8$ss$ casoM JocR !oI$rQ criar s$u !rS!rio
NuaIro I$ m$nsa#$m cont$nIo a strin# Ia m$nsa#$m Ia $Pc$Ko:
Try
{Comandos}
Except
on E:EInvalidOperation do
MessageDlg(gnorando a exceo : +E.Message,
mtinformation,[mbOk],0);
End;
.nI$ a JariQJ$l t$m!orQria % H Io ti!o %&n!alidOperation'
-ocR !oI$ !roJ$r um tratam$nto !aIro I$ $rro !ara tratar $Pc$KL$s Nu$ no t$m tratam$ntos
$s!$ciOicaIos. /ara istoM aIicion$ uma !art$ else na !art$ $Pc$!t Io bloco:
Try
{Comandos}
Except
on EPrimeiroTipo do
{Cdigo especifico para o primeiro tipo de erro]
on ESegundoTipo do
{Cdigo especfico para o segundo tipo de erro}
Else
{Cdigo padro de tratamento de erros}
End;
AlHm IissoM JocR !oI$ utiliTar as $Pc$KL$s #$nHricas !ara tratar um $rroM $m J$T I$ uma $Pc$Ko
$s!$cUOica. /or $P$m!loM s$ JocR Nu$r tratar um $rro r$lacionaIo a uma o!$raKo com int$irosM mas no
sab$ $Patam$nt$ o $rroM !oI$rQ utiliTar a $Pc$Ko %&nt%rrorM Nu$ H a $Pc$Ko #$nHrica Ia Nual I$riJam
outras $Pc$KL$s r$lacionaIas a int$iros:
Try
{Comandos}
Except
on EIntError do
{Cdigo de tratamento de erros}
End;
12.3 E2ce06e' Si"encio'a'
-ocR !oI$ I$Oinir $Pc$KL$s Nu$ no mostram um NuaIro I$ m$nsa#$m !ara o usuQrios NuanIo
a!ar$c$m. So camaIas $Pc$KL$s sil$ciosas.
. camino mais curto !ara criar $sta $Pc$Ko H atraJHs Ia !roc$Iur$ ()ort' Esta !roc$Iur$
automaticam$nt$ #$ra uma $Pc$Ko Io ti!o %()ortM Nu$ abortarQ a o!$raKo s$m mostrar uma m$nsa#$m.
. $P$m!lo abaiPo aborta a o!$raKo I$ incluso I$ it$ns $m um ListBoP NuanIo t$ntamos
ins$rir o t$rc$iro $l$m$nto:
Begin
For i := 1 to 10 do
begin
ListBox1.items.Add(IntToStr(i));
If i = 3 then
Abort;
end;
End;

%?
%*
13. Dicas
%)
13.1 Cria01o de ,D&C*i"d
procedure TForm1.Teste1Click(Sender: TObject);
begin
if formexiste(Form2)= false then
begin
Screen.Cursor := CrHourGlass; {Cursor ampulheta}
Form2 := TForm2.Create(Self);
end;
else
begin {Traz a janela para frente}
Form2.WindowState := WsNormal;
Form2.BringToFront;
Form2.Setfocus;
end;
end;
.bs*.:
interface
uses {Declarao da unit da form a ser criada}
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,
Controls, Forms, Dialogs, Menus, unit2, StdCtrls;
.bs).:
public
{ Public declarations }
Form2 : Tform2; {Declarao da janela a ser criada}
end;

.bs(.:
{Na form Filha criada}
procedure TForm2.FormCreate(Sender: TObject);
begin
Screen.Cursor := CrDefault; {Cursor na forma normal}
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := cafree; {Libera da memria a janela}
end;
13.2 or! E2i'te
Function TForm1.Formexiste(Nomejanela:TForm):boolean;
var
I : integer;
begin
Formexiste := false;
for i := 0 to componentcount - 1 do
if Components[i] is TForm then
if TForm(Components[i])= nomejanela then
Formexiste := true
%(
end;
.bs.:
public
{ Public declarations }
Function Formexiste(nomejanela:Tform):boolean;
end;
13.3 Cria01o S*oD,oda"
procedure TForm1.Teste2Click(Sender: TObject);
begin
try
Application.CreateForm(TForm3, Form3);
Form3.showmodal;
Finally
Form3.free;
end;
end;
.bs.:
interface
uses {Declarao da unit da form a ser criada}
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,
Controls, Forms, Dialogs, Menus, unit3, StdCtrls;
13.) ec*ar ;oda'
procedure TForm1.Teste31Click(Sender: TObject);
Var
I: Integer;
begin
for I := MDIChildCount - 1 downto 0 do
MDIChildren[I].close;
end;
.bs.: /oI$ s$r utiliTaIa !ara minimiTar toIas $ maPimiTar toIas.
13.+ Re"gio e ;ec"ado
procedure TForm1.Timer1Timer(Sender: TObject);
begin
{Atualiza a hora do Relgio }
label1.caption:=timetostr(now)+' - '+Datetostr(now)+ ' ';
{Atualiza o Painel de Teclas}
if (GetKeyState(vk_NumLock) and $01) <> 0 then
Label2.Caption := ' Num ' {Tecla NumLock}
else
Label2.Caption := '';
if (GetKeyState(vk_Capital) and $01) <> 0 then
Label3.Caption := ' Cap ' {Tecla CapsLock}
else
Label3.Caption := '';
if (GetKeyState(vk_Insert) and $01) <> 0 then
Label4.Caption := ' Ins ' {Tecla Insert}
else
%3
Label4.Caption := '';
end;
13./
%%
n'ormaes Sistema
procedure TForm2.FormCreate(Sender: TObject);
type
FlagSet = set of 120..135;
var
Flgs : FlagSet;
L : Longint;
s : String;
begin
image1.picture.graphic := application.icon;
titulo.caption := application.title;
L := GetVersion;
windows.caption := Format ('Windows %u.%.2u', [Lobyte(loword(L)),
Hibyte(loword(L))]);
dos.caption := Format ('DOS %u.%.2u',[Hibyte(Hiword(L)),
Lobyte(HIword(L))]);
L := GetWinFlags;
If L and WF_Enhanced = 0 then
modo.caption := 'Modo Standard';
If L and WF_80x87 = 0 then
coprocessador.caption := 'Ausente';
memoria.caption:=FormatFloat('#######',MemAvail DIV 1024) + ' KB
Livres';
{---------- Processador --------------}
l := GetWinFlags;
Flgs := FlagSet(Word(l));
s := 'unknown';
if 121 in Flgs then
s:= '286';
if 122 in Flgs then
s:= '386';
if 123 in Flgs then
s:= '486 ou Pentium';
Processador.Caption:= s;
{--------- GDI Recursos -------------}
l := GetFreeSystemResources(gfsr_GDIResources);
gauge1.progress := l;
{--------- User Recursos -------------}
l := GetFreeSystemResources(gfsr_UserResources);
gauge2.progress := l;
{--------- Espao Disco -------------}
l:= (DiskFree(0) div 10240) div (DiskSize(0) div 1024000);
Label18.Caption:= IntToStr(DiskFree(0) div 1024000) +
+' MB ';
gauge3.progress := l;
end;
%&
1. *i"lio8rafia
5$l!i !or AI$liT$ 6$n$rini I$ .liJ$ira
BooWStr$ EIitora
7on$: ?3<-)))-**)%
E-mail: BooWstor$.liJraria@omnibbs.aP.a!c.or#
A!licaKL$s $m 5$l!i !or AI$liT$ 6$n$rini I$ .liJ$ira
BooWStor$ EIitora
7on$: ?3<-)))-**)%
E-mail: BooWstor$.liJraria@omnibbs.aP.a!c.or#
Mani!ulanIo Banco I$ 5aIos com 5$l!i !or AI$liT$ 6$n$rini I$ .liJ$ira
BooWStor$ EIitora
7on$: ?3<-)))-**)%
E-mail: BooWstor$.liJraria@omnibbs.aP.a!c.or#
5$l!i - THcnicas AJanKaIas !or AI$liT$ 6$n$rini I$ .liJ$ira
BooWStor$ EIitora
7on$: ?3<-)))-**)%
E-mail: BooWstor$.liJraria@omnibbs.aP.a!c.or#
/ro#ramaKo $m 5$l!i - !ara L$i#os !or 8$il 9. Rub$nWin#
EIitora B$rW$l$X
7on$: ?**-<()-<?('
A!r$nI$nIo 5$l!i AJanKaIo !or AmHrico 5amasc$no 9r.
EIitora @rica
7on$: ?**-)'%-(?&&
5$l!i S$#r$Ios $ SoluKL$s !or 6arX Corn$ll/TroX Strain
EIitora MaWron BooWs
7on$: ?**-<)'-<&?3
BorlanI 5$l!i - 6uia I$ R$O$rRncia Int$li#$nt$ !or Marc$lo L$o
APc$l BooWs Io Brasil LtIa
BorlanI 5$l!i - Curso BQsico $ RQ!iIo !or Marc$lo L$o
APc$l BooWs Io Brasil LtIa
Manuais BorlanI 5$l!i *.? Oor GinIo"s
Manuais BorlanI 5$l!i /roO$ssional (.? Oor GinIo"s
Sit$s
5$l!i Club
tt!://""".#$ociti$s.com/Coloss$um/*<B?/
5$l!i Brasil
tt!://""".#$ociti$s.com/Silicon-all$X/<(*3/I$l!i.tm
5$l!i Su!$r /a#$
tt!://sunsit$.icm.$Iu.!l/I$l!i/inI$P.tml
%B

Você também pode gostar