Sei sulla pagina 1di 133

InforBRs - Informtica Brasileira Ltda.

Borland Delphi - Bsico



InforBRs - Informtica
Brasileira Ltda.
1
InforBRs - Informtica Brasileira Ltda.
Captulo 1
O Que o Delphi
Diferenas entre Delphi Client/Server do Delphi for Windows
Caractersticas que compem o Integrated Development Invironment ID!"
Como o Delphi se encai#a na famlia $orland
Overview
% Delphi oferece uma nova maneira de desenvolver aplicaes Client/Server para &S Windows' !le
com(ina a facilidade de utili)a*o de um am(iente de desenvolvimento visual+ o poder de uma linguagem
compilada orientada a o(,etos e uma tecnologia de ponta em (anco de dados' !ste captulo o introdu) as
v-rias caractersticas do Delphi e da famlia de produtos $orland'
Introduo ao Delphi
Introduo
% Delphi . um am(iente de desenvolvimento de aplicaes+ orientado a o(,eto+ que permite o
desenvolvimento de poderosas aplicaes (aseadas no &S Windows com o mnimo de codifica*o' %
Delphi tam(.m oferece ferramentas de desenvolvimento+ tais como templates de aplicaes e forms+ que
lhe permitem criar e testar r-pidamente o prot/tipo de suas aplicaes' 0oc1 pode utili)ar o con,unto de
componentes e c/digo gerado para transformar seus prot/tipos em aplicaes ro(ustas que satisfaam
suas necessidades' % Delphi tam(.m oferece ferramentas de (ancos de dados que lhe permitem
desenvolver aplicaes Client/Server e relat/rios' 2s ferramentas de (ancos de dados permitem que voc1
visuali)e seus dados dinamicamente durante o desenvolvimento para que verifique imediatamente se os
resultados de suas queries est*o de acordo com suas necessidades'
Edies do Software
% Software Delphi v1m em duas edies3
Delphi for Windows
% Delphi for Windows !dition . voltado aos desenvolvedores de aplicaes des4top que est*o interessados
em desenvolver aplicaes des4top de alta performance que acessem dados arma)enados nos formatos
d$ase e 5arado#' % Delphi for Windows inclui3
Servidor Inter$ase 6ocal para Windows 7'1
8eportSmith
Delphi Client/Server
% Delphi Client/Server !diton . voltado aos desenvolvedores corporativos de aplicaes Client/Server
interessados em desenvolver aplicaes Wor4group de alta performance'
Caractersticas do Delphi
% Delphi consiste de v-rios elementos+ ferramentas de design e de (anco de dados para au#ili-9lo a
desenvolver e testar suas aplicaes de forma r-pida e intuitiva' 2 seguir descrevemos as caractersticas do
Delphi3
:
InforBRs - Informtica Brasileira Ltda.
Constrtor !isal de Interface com o "srio
% ID! permite criar visualmente aplicaes Client/Server de forma r-pida atrav.s da sele*o de
componentes na paleta'
#r$itetra Baseada em Componentes
%s componentes asseguram que as aplicaes Delphi se,am ro(ustas+ reutili)-veis e de f-cil manuten*o'
Compilador de C%di&o 'ativo de #lta (erformance
% Compilador gera c/digo otimi)ado de m-quina ao inv.s de p9code interpretado e lento+ fa)endo com
que as aplicaes se,am at. vinte ve)es mais r-pidas'
)ow-Wa* )ools
2 capacidade de alternar entre um form e seu c/digo permite aos desenvolvedores tra(alhar tanto na
edi*o de te#to como no modo de design visual atrav.s de total sincroni)a*o do c/digo fonte com a
representa*o visual'
Bi+lioteca de Componentes !isais
2 (i(lioteca de componentes visuais 0C690isual Component 6i(rar;" consiste de o(,etos reutili)-veis
incluindo o(,etos padr*o de interface com o usu-rio+ gerenciamento de dados+ gr-ficos e multimidia+
gerenciamento de arquivos e quadros de dialogo padr*o' 2 Client/Server edition inclui o c/digo fonte do
0isual Component 6i(rar;'
#r$itetra #+erta
2 arquitetura do ID! permite adicionar componentes e ferramentas personali)adas e de terceiros'
Lin&a&em Orientada a O+,etos
% Delphi utili)a o Object Pascal+ que oferece a facilidade de programa*o em <=6 de alto nvel com a
performance e poderio de um 7=6'
Sporte - )ecnolo&ia do Windows
% Delphi . compatvel com a tend1ncia da tecnologia Windows+ incluindo suporte a %6! :'>+DD!+0$?s
e %D$C'
Deptador .rfico
% De(ugger permite encontrar e eliminar @(ugs@ em seu c/digo'
/di01o /stilo Brief
% !ditor permite a utili)a*o de um con,unto de sm(olos para e#presses' Consulte $rief 8egular
!#pressions no Aelp on9line'
#m+iente (ersonali2vel
2 op*o de menu !nvironment %ptions permite personali)ar seu am(iente para o m-#imo de
produtividade'
O+,ect Browser
% %(,ect $rowser permite a visuali)a*o da hierarquia dos o(,etos na visual component li(rar;'
.erenciador de (ro,etos
% 5ro,ect &anager oferece uma visuali)a*o de todos os forms e units de um determinado pro,eto e
oferece um mecanismo conveniente para gerenciar pro,etos'
/3perts
7
InforBRs - Informtica Brasileira Ltda.
Bma variedade de !#perts o guiam atrav.s do desenvolvimento de tipos padres de forms' 5or e#emplo+ o
Data(ase form e#pert au#ilia9o na constru*o de forms que e#i(am dados em (ancos de dados locais ou
remotos'
.erador de Relat%rios
% ReportSmith oferece a mais avanada ferramenta de gera*o de relat/rios para desenvolvedores que
precisem criar relat/rios que acessem grandes volumes de dados'
Servidor Local Baseado em S4L
% 6ocal Inter$ase Server permite desenvolvimento off9line econCmico com um engine SD6 de alta
performance compatvel com 2ESI F: que oferece acessi(ilidade a outros servidores+ incluindo %racle+
S;(ase+ Informi#+ e Inter$ase em outras plataformas'
Caractersticas do Delphi Client/Server
% Delphi Client/Server !dition inclui todas as caractersticas do Delphi for e as seguintes caractersticas
especficas ao am(iente Client/ Server3
Conectividade de #lta (erformance
%s SD6 6in4s oferecem acesso de alta performance aos drives nativos+ conectando com (ancos de dados
populares+ incluindo %racle+ S;(ase+Informi#+ e Inter$ase'
Sporte a )eam Development
% Intersolv 50CS permite que grupos de desenvolvedores tra(alhem ,untos com c/digos fonte
integrados+ chec49in+ chec49out e gerenciamento de controle de vers*o'
!sta caracterstica requer Intersolv 50CS G'1 ou posterior'
Constrtor !isal de 4er*
% 0isual Duer; $uilder oferece uma ferramenta visual para criar facilmente queries sofisticadas e gerar
automaticamente o c/digo SD6 correspondente'
Coo o Delphi se Encai!a na "alia
#orland
Introduo
%s produtos Client/Server da $orland compartilham de um design e tecnologia em comum' !sta
caracteristica da aos produtos $orland consist1ncia e funcionalidade+ mas ao mesmo tempo+ oferece
fle#i(ilidade ao desenvolvedor para escolher a linguagem de desenvolvimento e fonte de dados'
Eo nvel des4top e 62E+ os (ancos de dados+ linguagens e ferramentas $orland compartilham o
mesmo $orland Data(ase !ngine $D!"+ que podem conectar com e integrar quaisquer tipos de dados
em sua organi)a*o' !stes tipos de dados incluem3
$ancos de dados 5C tais como d$ase e 5arado#
$ancos de dados wor4group tais como %racle+ S;(ase+ Informi#+ e Inter$ase
<
InforBRs - Informtica Brasileira Ltda.
$ancos de dados acessados atrav.s de drives %D$C
0oc1 pode misturar componentes $orland para construir o am(iente Client/Server que melhor
atenda suas necessidades'
Componentes Chave da 5am6lia Borland
2 $orland fornece uma linha completa de solues Client/Server nas seguintes famlias de componentes
chave3
"psi2in& Cients
Bpsi)ing . o processo de escalar aplicaes de (anco de dados (aseados em 5C para a arquitetura
Client/Server' Como aplicaes de (anco de dados (aseados em 5C e aplicaes de (anco de dados
Client/Server (aseados em SD6 cresceram em diferentes mercados+ o Bpsi)ing Client Hools satisfa) os
requisitos de am(os os mercados' 2trav.s dos SD6 6in4s+ aplicaes d$ase e 5arado# podem continuar
a utili)ar as ferramentas ,- famliares enquanto aproveitam a vantagem de servidores de (anco de
dados Wor4group'
5erramentas de Desenvolvimento de 7ltima .era01o
2s ferramentas de desenvolvimento de ultima gera*o como Delphi e $orland CII+ permitem criar
aplicaes Client/Server escal-veis do des4top ao nvel enterprise' !stas ferramentas permitem r-pida
prototipa*o+ desenvolvimento e alta performance' !stas ferramentas s*o orientadas a o(,eto+ permitem
reutili)a*o de c/digo e componentes+ e tam(.m suportam o team development'
Servidores de +anco de dados
2 estrat.gia Client/Server da $orland inclui verses do Inter$ase Wor4group Server para &S Windows
EH e Eovell EetWare+ (em como verses BEI?' % Inter$ase . um lder em tecnologia no mercado de
(ancos de dados relacionais e esta de acordo com o SD6 F:+ suportando diversas e#tenses da linguagem
SD6'
Delphi Companion (rodcts
%s seguintes produtos est*o disponveis para o Delphi3
$8I!J 7'1K
Delphi/6in4 for Eotes
JoreAelpK
Hur(o 2ssem(lerK
0$ Conversion 2ssistant
C6 Source Code
0isual Solutions 5ac4K
K Ham(.m tra(alha com $orland CII
$esuo do Captulo
(ontos Chave
2p/s completar este captulo+ voc1 aprendeu que3
o Delphi . um am(iente de desenvolvimento de aplicaes (aseado em componentes que permitem
desenvolver poderosas aplicaes (aseadas em &S Windows'
dentre as caractersticas do Delphi incluem ferramentas de (ancos de dados que permitem o
desenvolvimento de aplicaes e relat/rios de (ancos de dados'
o software Delphi v1m em duas edies3
K Delphi for Windows
G
InforBRs - Informtica Brasileira Ltda.
K Delphi Client/Server
a $orland oferece solues Client/Server nas seguintes famlias de componentes chave3
K Bpsi)ing clients
KJerramentas de desenvolvimento de ultima gera*o
KServidores de (ancos de dados
K Companion products
)ermos e Defini08es
2 ta(ela a seguir . uma refer1ncia r-pida aos termos apresentados neste captulo3
)ermo Descri01o
DB/ $orland Data(ase !ngine+ que pode conectar com e integrar quaisquer tipos de dados em uma
organi)a*o+ incluindo3
$ancos de dados 5C tais como d$ase e 5arado#
$ancos de dados wor4group tais como %racle+ Informi#+ S;(ase+ e Inter$ase
$ancos de dados acess-veis atrav.s de drives %D$C
ID/ Integrated Development !nvironment 2m(iente de Desenvolvimento Integrado "+ um con,unto de
elementos+ ferramentas de design e de (ancos de dados que au#iliam a desenvolver e testar r-pida e
intuitivamente em uma interface com o usu-rio
L
InforBRs - Informtica Brasileira Ltda.
Captulo %
& 'our pelo ()iente de *ro+raao do Delphi
2o final deste captulo+ voc1 estar- apto a3
Identificar os elementos do ID! do Delphi
Identificar os elementos essenciais que formam uma aplica*o
Overview
% Delphi oferece um am(iente integrado de deselvolvimento que permite desenvolver sofisticadas
aplicaes Windows com um mnimo de codifica*o' !ste captulo introdu) o Intergrated Development
!nvironment ID!" e descreve os elementos essenciais do am(iente de programa*o'
Eleentos do IDE do Delphi
Introduo
% Integrated Development !nvironment ID!" do Delphi consiste de diversos elementos ou ferramentas
visuais' Bma ve) acostumados a estes elementos+ voc1 pode comear a desenvolver aplicaes' !ste captulo
discute os seguintes elementos para famliari)a9lo ao am(iente de desenvolvimento3
Jorm
Component 5alette
%(,ect Inspector
Code !ditor
Speed$ar
5ro,ect&anager
Speed&enus
%n96ine Aelp
2s ferramentas s*o apresentadas na ordem em que seriam utili)adas para desenvolver uma aplica*o'
(par,ncia Inicial da Interface
Duando voc1 utili)a o Delphi+ aparecem as seguintes ,anelas' !stas ,anelas formam a interface do Delphi'
%utras ,anelas e elementos aparecem posteriormente conforme for desenvolvendo uma aplica*o'
M
InforBRs - Informtica Brasileira Ltda.
"ors
Introduo
Jorms s*o a caracterstica central das aplicaes Delphi' Duando voc1 a(re o Delphi+ um form se torna uma
,anela em sua aplica*o' Duando estiver desenvolvendo a interface de usu-rio de sua aplica*o+ voc1
adicionar- itens chamados de componentes ao seu form' Bm componente . um o(,eto Delphi+ tal como um
la(el (o# ou edit (o#' Duando voc1 iniciali)a o Delphi+ um form em (ranco Jorm1 aparece+ como segue3
*artes de u "or
Cada form+ por default+ cont.m as seguintes partes padres+ como mostrado3
N
Conponent (alette
Speed
9en
O+,ect
Inspector
5orm
Bot1o 9a3imi2ar
Barra de )6tlo Bot1o 9inimi2ar
9en
Control
Borda
InforBRs - Informtica Brasileira Ltda.
&enu Control
$otes de ma#imi)ar e minimi)ar
$arra de ttulo
$ordas
Bm form pode ser movido e rea,ustado movendo9se suas (ordas'
Coponent *alette
Introduo
2p/s iniciar com um form+ o pr/#imo passo no design da interface . adicionar componentes ao form'
Componentes s*o elementos de programa das ,anelas+ tais como la(els+ edit (o#es+ e list (o#es' %s
componentes do Delphi est*o locali)ados na Component 5alette e s*o utili)ados para construir a interface
com o usu-rio' 2 Componente 5alette e#i(e uma sele*o de componentes agrupados por fun*o ou
utili)a*o'
Bm ponto chave do Delphi . que ele permite a cria*o de seus pr/prios componentes e personali)a*o da
Componente 5alette' 0oc1 pode adicionar ou remover componentes da paleta+ (em como criar uma nova
p-gina na paleta' 5or e#emplo+ voc1 pode adicionar um controle 0$? de terceiros O sua paleta para um
pro,eto em especfico e depois remove9lo quando tiver sido utili)ado' 0oc1 tam(.m pode criar diferentes
verses da Componente 5alette para diferentes pro,etos e permitir que diversos desenvolvedores
compartilhem uma Componente 5alette personali)ada'
2 Componente 5alette aparece a(ai#o da (arra de menu+ a direita+ e consiste dos seguintes (otes e p-ginas3
Duando voc1 passar com o ponteiro do mouse so(re cada (ot*o+ . e#i(ido o Aelp Aint do componente'
Descrio das *-+inas dos Coponentes
Duando voc1 clica com o mouse so(re uma a(a de p-gina+ . e#i(ido o grupo de componentes da p-gina' 2
ta(ela a seguir descreve a fun*o de cada grupo de componentes por p-gina3
(&ina .rpo de Componentes
Standard Componentes padr*o em uma interface &S Windows tais como (ot*o+ list (o#+ e la(el'
#dditional =rupo adicional de componentes padr*o+ tais como Speed$utton+ Ha(Set+ e componentes
Eote(oo4'
Data #ccess Componentes especiali)ados para acesso de dados em (anco de dados+ tais como Ha(le+
Duer; e DataSource
F
Componentes da p&ina Standard
Seta de scroll Seta de scroll
#+a da p&ina de componentes
(&ina e3i+indo &rpos de componentes
InforBRs - Informtica Brasileira Ltda.
Data Controls Componentes especiali)ados de (anco de dados utili)ados para e#i(ir dados de (ancos de
dados+ tais como =rid de dados+ Eavigator+e !dit'
Dialo&s Duadros de dialogos comuns do &S Windows que possuem uma apar1ncia consistente
para e#ecutar operaes de arquivo+ tais como a(ertura+ grava*o e impress*o'
S*stem Componentes que pertencem O tecnologia do sistema Windows+ tais como um timer+ DD!+
ou %6!'
!B: Controle 0isual $asic que acompanham o Delphi ou de outros fa(ricantes'
Samples Componentes diversos+ tais como Color=rid+ Calendar e Spin$utton'
O).ect Inspector
Introduo
% %(,ect Inspector tra(alha com a Component 5alette' Bma ve) selecionado um componente da Component
5alette . adicionado ao form+ o %(,ect Inspector automaticamente e#i(e as propriedades e eventos que
podem ser utili)ados como o componente' 2s propriedades e eventos e#i(idos no formato de menu"
permitem personali)ar os componentes visualmente sem a necessidade de codifica*o'
%s menus s*o dinPmicos no tocante em que somente as propriedades e eventos que se aplicam aos
componentes selecionados aparecer*o' Se mQltiplos componentes s*o selecionados+ somente as propriedades
e eventos compartilhados por todos os componentes aparecer*o no %(,ect Inspector'
(par,ncia do O).ect Inspector
5or default+ o %(,ect Inspector aparece a esquerda da ,anela do Delphi+ como segue3
1>
InforBRs - Informtica Brasileira Ltda.
O).ect Selector
2 lista drop9down do %(,ect Selector e#i(e o nome e o tipo de o(,eto de cada componente no form atual+
incluindo o pr/prio form' %s componentes aparecem na lista quando voc1 os adiciona ao form' 2 lista drop9
down pode ent*o ser utili)ada para alternar r-pidamente entre cada um dos componentes' 2 ilustra*o a
seguir mostra um e#emplo da lista drop9down do %(,ect Inspector3
Duando um form ou componente . selecionado no %(,ect Selector+ as propriedades ou eventos pertencentes a
ele s*o e#i(idos'
*roperties *a+e
5ropriedades s*o atri(utos de um componente' !las controlam a forma como um componente aparece e se
comporta na aplica*o' &uitas propriedades na coluna 5roperties tem um valor default atri(udo na coluna
0alues' 2 figura a seguir mostra um e#emplo da p-gina 5roperties'
11
O+,ect Selector
Drop-Down
List
InforBRs - Informtica Brasileira Ltda.
/vents (a&e
2 p-gina !vents do %(,ect Inspector lista os eventos que um componente pode reconhecer' Eo Delphi+ voc1
escreve procedures chamadas event handlers+ e as utili)a na p-gina !vents para associar o nome de um
event handler com o evento' !ventos s*o aes do usu-rio ou ocorr1ncias de sistema que o componente pode
reconhecer' Bm e#emplo de uma a*o de usu-rio . um clique em um (ot*o' Bm e#emplo de uma ocorr1ncia
de sistema . um alarme gerado em um intervalo de tempo pr.9determinado' 2 ilustra*o a seguir mostra um
e#emplo da p-gina !vents3
1:
Colna de
propriedades
Colna de valores
(&ina de
(ropriedades
InforBRs - Informtica Brasileira Ltda.
Code Editor
Introduo
Eo processo de desenvolvimento+ ap/s atri(uir propriedades e eventos a cada componente adicionado ao
form+ o Code !ditor . utili)ado' % Code !ditor . um editor de te#to que e#i(e o c/digo fonte que voc1
escreve ou que o Delphi gera para criar uma aplica*o' % c/digo fonte aparece em um arquivo chamado
BEIH'52S que . um dos tipos de arquivos que compe um pro,eto do Delphi'
17
Colna de
/ventos
Colna de
manipladores de
/ventos
(&ina de
/ventos
InforBRs - Informtica Brasileira Ltda.
Caractersticas do Code Editor
% Code !ditor oferece comandos de edi*o+ Aelp sensvel ao conte#to+ e as seguintes caractersticas de
edi*o estilo $rief3
=rava*o e e#ecu*o de macros
Sinta#e de destaque colorida
Bndo ilimitado
&arca*o de (loco de coluna
Hoques de teclado personali)-veis
O (r/uivo &nit
% Code !ditor aparece no arquivo unit+ que . posicionado atr-s do Jorm1 default quando voc1 iniciali)a o
Delphi' Duando voc1 da um duplo clique em um evento na p-gina !vents do %(,ect Inspector+ o Code !ditor
automaticamente torna9se a ,anela para que voc1 possa digitar o c/digo para manipular o evento' % Code
!ditor pode e#i(ir mQltiplos arquivos unit'
Bma unit . utili)ada para organi)ar as declaraes de programa*o do Delphi' 5or e#emplo+ procedures
utilit-rias podem ser agrupadas como uma unit' Bm form . organi)ado como uma unit'
0oc1 tam(.m pode e#i(ir um arquivo unit atrav.s do menu 0iew selecionando )o&&le 5orm/"nit' % arquivo
default+ Bnit1'52S+ aparece na ,anela do Code !ditor+ como segue3
0oc1 deve evitar o nome default de um arquivo unit' 8enomeie a Bnit1 para um nome mais descritivo so(re
o conteQdo do arquivo' 2 e#tens*o 52S n*o deve ser alterada'
1<
;anela do Code /ditor
C%di&o 5onte
Indicador de
Linha < Colna
Indicador de Indicador de
#+a de (&ina 9odifica01o 9odo
InforBRs - Informtica Brasileira Ltda.
Speed#ar
Introduo
2 Speed$ar . feita de (otes que economi)am tempo+ permitindo que voc1 clique so(re um (ot*o ao inv.s
de utili)ar a (arra de menu para e#ecutar operaes e comandos mais comuns' 2 Speed$ar aparece a(ai#o
da (arra de menu+ O esquerda+ e consiste dos seguintes (otes3
Duando voc1 passa com o ponteiro do mouse so(re cada (ot*o+ o Aelp Aint do (ot*o . e#i(ido' 2 Speed$ar .
totalmente personali)-vel' 0oc1 pode adicionar ou remover (otes para personali)-9la' %s (otes e#i(idos na
figura anterior . a configura*o default'
Descrio dos #otes Default
2 ta(ela a seguir descreve cada (ot*o na Speed$ar default3
Bot1o Descri01o
Open (ro,ect
2(re um pro,eto e#istente
Save (ro,ect
=rava um pro,eto e#istente
#dd 5ile to (ro,ect
2diciona um novo arquivo ao pro,eto
Select "nit 5rom List
Seleciona uma unit da lista das units e#istentes
Select 5orm 5rom list
Seleciona um form da lista de forms e#istentes
Rn
Compila e e#ecuta sua aplica*o
(ase
Interrompe momentaneamente a e#ecu*o da aplica*o
Open 5ile
2(re um arquivo e#istente
Save 5ile
=rava o arquivo' 2rquivos unit e form s*o ligados' =ravando um+
grava9se o outro
Remove 5ile 5rom (ro,ect
8emove o arquivo selecionado no 5ro,ect &anager da cl-usula
uses do arquivo de pro,eto corrente
)o&&le Between a 5orm and "nit
!#i(e o from inativo associado com a unit ativa+ ou vice9versa
'ew form
Cria um form em (ranco e uma nova unit associada para ser
adicionado ao pro,eto
)race into
!#ecuta um programa+ uma linha por ve) e e#ecuta cada linha de
uma procedure
Step over
!#ecuta um programa+ uma linha por ve) e pula as procedures
e#ecutando9as como uma Qnica unit
1G
InforBRs - Informtica Brasileira Ltda.
*ro.ect 0ana+er
Introduo
Eo Delphi+ os arquivos que compem uma aplica*o+ form e units+ s*o organi)ados como um pro,eto' %
5ro,ect &anager lista cada arquivo de unit e form em sua aplica*o e permite navegar entre elas'
1isuali2ando a 3anela do *ro.ect 0ana+er
0oc1 pode e#i(ir o pro,ect &anager atrav.s do menu 0iew selecionando 5ro,ect &anager' % 5ro,ect &anager
aparece com o nome do pro,eto' Se o pro,eto n*o tiver um nome+ o arquivo default chamado 5ro,ect1+
aparece como segue3
1L
InforBRs - Informtica Brasileira Ltda.
Speed0enus
Introduo
Bm elemento importante do ID! do Delphi . o Speed&enu' Speed&enus s*o menus que oferecem acesso
r-pido aos comandos disponveis no momento' !les s*o sensveis ao conte#to e podem ser e#i(idos de duas
maneiras3
Clicando9se com o (ot*o direito do mouse enquanto o ponteiro do mouse estiver so(re o o(,eto
5ressionando9se #lt=5>? enquanto estiver selecionado
E!eplos de Speed0enus
Speed&enus est*o disponveis para uma grande variedade de elementos e outros o(,etos no Delphi' 5ara
uma lista completa+ consulte o Aelp on9line' !sta se*o oferece alguns e#emplos de Speed&enus para os
seguintes elementos3
Component 5alette
%(,ect Inspector
Speed$ar
SpeedMenu para a Component Palette
% Speed&enu da Component 5alette aparece quando voc1 clica com o (ot*o direito do mouse quando o
ponteiro do mouse estiver so(re a Component 5alette' %s itens do menu s*o 3
Confi&re 9 2ltera o conteQdo da Component 5alette
Show @ints - !#i(e o Aelp Aint para cada (ot*o
@elp - %ferece Aelp on9line para a Component 5alette
Ea figura a seguir+ Show @ints est- ha(ilitado3
SpeedMenu para o Object Inspector
% Speed&enu do %(,ect Inspector aparece+ como segue+ quando voc1 clicar com o (ot*o direito do mouse
quando o ponteiro do mouse estiver so(re o %(,ect Inspector' Duando Stay on top estiver ha(ilitado+ o %(,ect
Inspector sempre aparece so(re a interface'
1M
InforBRs - Informtica Brasileira Ltda.
SpeedBar
% Speed&enu da Speed$ar aparece+ como segue+ quando voc1 clicar com o (ot*o direito do mouse quando
o ponteiro do mouse estiver so(re a Speed$ar' % item de menu Configure permite adicionar ou remover
icones da Speed$ar de acordo com sua necessidade'
4elp On56ine
Introduo
% Aelp %n96ine . uma grande fonte de refer1ncia so(re o Delphi' Eo menu Aelp+ os itens Contents e Hopic
Search s*o comuns as aplicaes &S Windows+ mas documentam o produto t*o (em que voc1 pode utili)a9lo
no lugar de uma c/pia impressa'Contents+ em particular+ inclui um gloss-rio+ que . especialmente Qtil para
uma refer1ncia r-pida so(re o significado de termos'
2 figura a seguir mostra o menu @elp3
1N
InforBRs - Informtica Brasileira Ltda.
4elp Sensvel ao Conte!to
Aelp sensvel ao conte#to est- disponvel para cada elemento na interface' 5ressionando 5> so(re um
elemento destacado e#i(e a descri*o do elemento' 5or e#emplo+ se Jorm1 estiver destacado e voc1
pressionar 5>+ a descri*o do componente HJorm tipo de o(,eto" aparece+ incluindo as propriedades+
m.todos+ eventos e tarefas associadas a ele' % Aelp sensvel ao conte#to tam(.m est- disponvel quando o
Code !ditor for e#i(ido e oferece au#lio na sinta#e da linguagem+ palavras reservadas+ e assim por diante'
Inforao de Instruo
% Aelp on9line tam(.m cont.m uma e#tensiva informa*o instrucional' 2s tr1s ferramentas seguintes+ em
particular+ oferece suporte no desenvolvimento de uma aplica*o3
Interactive Hutors o guiam atrav.s de cada est-gio no processo de desenvolvimento de uma
aplica*o'
Data(ase Jorm !#pert permite9lhe criar forms master9detail+ (em como forms com uma Qnica
ta(ela'
Windows 25I descreve como utili)ar a 25I do &S Windows'
Interactive 'utors
2 op*o Interactive Hutors . um tutorial que o ensina as operaes (-sicas na cria*o de uma aplica*o' %
tutorial . interativo pois voc1 pode utili)ar seus pr/prios dados+ (em como dados de e#emplo que
acompanham o Delphi
Consulte o tutorial para relem(rar o conhecimento o(tido no curso'
Data)ase "or E!pert
2 op*o Data(ase Jorm !#pert no menu Aelp permite criar um form que e#i(a dados de um (anco de dados
local ou remoto' !sta ferramenta . uma das muitas ferramentas !#pert no Delphi' %utras ferramentas !#pert
incluem o 2pplication Hemplate !#pert+ Jorm Hemplate !#pert+ Component !#pert+ e Dialog $o# !#pert' 2
maioria delas s*o acessadas atrav.s do menu Jile quando voc1 cria uma aplica*o ou form' 2s ferramentas
!#pert ser*o estudadas com mais detalhes posteriormente durante o curso'
7indows (*I
2 op*o 25I no menu Aelp oferece uma descri*o da 25I do &S Windows' !#emplos de alguns dos t/picos
incluem o seguinte3
Junes e mensagens para o &S Windows vers*o 7'1
=rupos de funes
&acros
Sadas de impress*o
8esources
1F
InforBRs - Informtica Brasileira Ltda.
$esuo do Captulo
Pontos Chave
2p/s completar este captulo+ voc1 aprendeu3
Bma aplica*o desenvolvida no Delphi comea com um form em (ranco'
Btili)ar a Component 5alette para adicionar componentes ao form+ e depois utili)ar o %(,ect
Inspector para definir propriedades e programar eventos aos componentes'
Btili)ar o Code !ditor+ que e#i(e o c/digo fonte no arquivo unit+ adicionar c/digo a um evento
handler se voc1 adicionou um evento no %(,ect Inspector'
Termos e Definies
2 ta(ela a seguir . uma refer1ncia r-pida aos termos e#plicados neste captulo3
)ermo Defini01o
#pplication )emplates Jerramenta de design predefinidas para iniciar o desenvolvimento de uma
aplica*o
#r$ivo "nit Bm arquivo que cont.m uma parte ou todo o c/digo fonte de uma aplica*o'
Cada form possui um arquivo unit associado' 2lgumas units podem n*o estar
associadas a um form'
Code /ditor % editor de te#to que lhe permite escrever c/digo de programa*o
Component (alette 2 (arra de (otes de componentes para a constru*o de uma aplica*o'
Componente Bm o(,eto Delphi utili)ado para construir uma aplica*o &S Windows' Bm
componente tam(.m . chamado de o(,eto de programa
Data+ase 5orm Desi&ner Jerramenta de design para gerar um form que possa e#i(ir dados de um (anco
de dados e#terno'
/vent Bma intera*o ou a*o de usu-rio+ ou uma ocorr1ncia interna de sistema'
/vent @andler Bma procedure ou fun*o e#ecutada sempre que ocorrer um evento'
5orm Bm componente utili)ado para construir uma aplica*o . o primeiro a aparecer
na tela' Bm form pode conter outros componentes' % form se torna uma ,anela
na aplica*o'
O+,ect Inspector 2 ,anela que e#i(e propriedades e eventos utili)ados para definir ou ver as
propriedades de um componente'
(ro,eto Hodos os arquivos que cont.m uma aplica*o'
(ropriedade Bm atri(uto descritivo atri(udo a um componente para definir sua apar1ncia e
como tra(alha'
SpeedBar Bma (arra de (otes onde cada uma . relacionado a um comando utili)ado com
freqR1ncia' 2 Speed$ar permite r-pido acesso a estas operaes+ que s*o itens
de menu'
Speed9ens &enus que se aplicam ao elemento selecionado no ID! do Delphi' !les s*o
e#i(idos clicando9se com o (ot*o direito do mouse so(re o elemento'
)emplates de 5orm Jorms predefinidos utili)ados para desenvolver uma interface com o usu-rio'
:>
InforBRs - Informtica Brasileira Ltda.
:1
InforBRs - Informtica Brasileira Ltda.
Captulo 8
::
InforBRs - Informtica Brasileira Ltda.
Desenvolvendo ua (plicao
2o final deste captulo+ voc1 deve estar apto a 3
Desenvolver uma aplica*o
Btili)ar o 5ro,ect &anager
Btili)ar o Intergrated De(ugger
Overview
% Delphi . uma poderosa linguagem de programa*o orientada a o(,eto com um avanado am(iente de
desenvolvimento visual' !stas caractersticas+ quando com(inadas com a arquitetura de (ancos de dados
$orland+ permite criar r-pidamente aplicaes Client/Server' Eeste captulo + voc1 aprender- so(re o
processo de constru*o de uma aplica*o Delphi+ criar uma aplica*o de e#emplo e e#plorar os conceitos de
gerenciamento de pro,etos'
Descrio do processo
Introduo
Bma caracterstica do Delphi . que ele permite construir aplicaes r-pidamente' !sta se*o descreve o processo
de desenvolvimento de aplicaes Delphi+ como segue3
Criando um 5ro,eto
2dicionando um Jorm ao 5ro,eto
2dicionando Componentes ao Jorm
Definindo 5ropriedades dos Componentes
2dicionando !vent Aandlers
Compilando+ !#ecutando e Depurando a 2plica*o
Est-+io 9 5 Criando u *ro.eto
% primeiro passo no desenvolvimento de uma aplica*o no Delphi . criara um pro,eto' 2plicaes no Delphi s*o
gerenciadas como pro,etos' Criar um novo pro,eto gera um arquivo de pro,eto' % arquivo de pro,eto controla
uma aplica*o Delphi construindo os v-rios forms+ e#ecutando a aplica*o e e#i(indo o form principal da
aplica*o'
2rquivos de pro,eto cont.m c/digo fonte %(,ect 5ascal gerado pelo Delphi que se torna parte do e#ecut-vel da
aplica*o quando for compilado e @6in4ado@'
0oc1 pode comear um novo pro,eto iniciali)ando o Delphi' Sempre que voc1 iniciali)ar o Delphi+ um novo
pro,eto . a(erto' Se o Delphi ,- estiver a(erto+ voc1 pode a(rir um novo pro,eto atrav.s do menu 5ile+
Selecionando 'ew (ro,ect'
% Delphi cria um arquivo de pro,eto default chamado 58%S!CH1'D58+ que o Delphi mant.m durante o
desenvolvimento da aplica*o' Conforme o pro,eto for alterado+ tal como adicionando novos forms+ o Delphi
atuali)a o arquivo de pro,eto' % arquivo de pro,eto se parece com a figura a seguir3
:7
InforBRs - Informtica Brasileira Ltda.
Est-+io % 5 (dicionando u "or ao *ro.eto
Como discutido anteriormente+ os forms s*o a funda*o das aplicaes Delphi e fornece uma tela onde voc1
pode criar a interface com o usu-rio de seu programa' Bm pro,eto ou aplica*o geralmente possui mQltiplos
forms' 2dicionar um form ao pro,eto cria os seguintes arquivos adicionais3
Bm arquivo form com e#tens*o 'DJ& contendo informaes de resources para a
constru*o do form'
Bm arquivo unit com e#tens*o '52S contendo c/digo %(,ect 5ascal'
Hodo form em uma aplica*o possui estes dois arquivos associados a ele' Conforme for adicionando novos
forms+ o arquivo de pro,eto . atuali)ado automaticamente' % e#emplo a seguir mostra o Jorm:+ a ser
adicionado ao pro,eto'
:<
InforBRs - Informtica Brasileira Ltda.
Duando voc1 cria um pro,eto+ um form Jorm1" . criado por default' % nome de arquivo deste form .
BEIH1'DJ&'
Para dicionar um !orm ao Projeto
!#ecute os seguintes passos para adicionar um form um ao pro,eto3
(asso #01o
> 5ara adicionar um ou mais forms ao pro,eto+ no menu 5ile+ selecione 'ew 5orm'
Dependendo das configuraes de =aller; na p-gina 5references do quadro de dialogo
!nvironment %ptions+ pode ocorrer3
9 Bm form em (ranco aparece e . adicionado ao pro,eto
9 % quadro $rowse =aller; aparece+ como segue3
(asso #01o
A 2parecendo o quadro de dialogo $rowse =aller;+ selecione o tipo de form que voc1 dese,a adicionar
ao pro,eto e de um clique em OB'
Est-+io 8 5 (dicionando Coponentes ao "or
Como discutido anteriormente+ componentes s*o o(,etos visuais de programa que voc1 manipula durante o
design' %s componentes disponveis no momento est*o na Component 5alette' 2p/s inserir um componente
no form+ voc1 pode move9 lo+ edita9lo e rea,usta9lo de acordo com suas necessidades' % e#emplo a seguir
mostra tr1s componentes 6a(el e tr1s componentes !dit em um form3
:G
InforBRs - Informtica Brasileira Ltda.
Passos para dicionar um Componente em um !orm
!#ecute os seguintes passos para adicionar um componente ao form3
(asso #01o
> De um clique so(re um componente na Component 5alette'
A De um clique so(re o form onde o componente deve aparecer'
C 8ea,uste o componente arrastando seus manipuladores'
0oc1 tam(.m pode adicionar um componente com um duplo9clique no componente na
Component 5alette' Bm componente at. o local dese,ado e rea,usta9lo atrav.s dos manipuladores'
C"di#o !onte da $nit ap"s dicionar Componentes
Duando um componente . adicionado ao form+ o c/digo fonte do arquivo . modificado' !specificamente a
defini*o t;pe para o mem(ro correspondente ao componente adicionado' % e#emplo a seguir e#i(e a
defini*o de t;pe no arquivo unit que corresponde ao form mostrado anteriormente com tr1s componentes
6a(el e tr1s componentes !dit3
:L
InforBRs - Informtica Brasileira Ltda.
Est-+io : 5 Definindo *ropriedades dos
Coponentes
Como discutido anteriormente+ cada componente tem um con,unto de atri(utos chamados de propriedades'
Cada propriedade que possa ser alterada durante o design . e#i(ido no %(,ect Inspector' 0oc1 pode definir
propriedade durante o design ou codificar para que uma propriedade do componente se,a alterada durante a
e#ecu*o do programa'
Passos para Definir uma Propriedade de um Componente
!#ecute os passos a seguir para definir uma propriedade de um componente durante o design3
(asso #01o
> D1 um clique so(re o componente no form cu,a propriedade voc1 queira alterar'
A D1 um clique so(re a a(a da p-gina 5roperties no %(,ect Inspector'
% e#emplo a seguir mostra a p-gina 5roperties para o componente $utton'
C Selecione a propriedade que voc1 queira definir'
D 2ltere o valor da propriedade na coluna 0alues'
:M
InforBRs - Informtica Brasileira Ltda.
Est-+io ; 5 (dicionando Event 4andlers
!m programas dirigido a evento+ responder a eventos do usu-rio ou do sistema . um ponto chave de sua
aplica*o' 2lem das propriedades+ os componentes possuem uma lista de eventos que podem ser detectados'
Duando voc1 adiciona event handlers a sua aplica*o+ voc1 est- di)endo ao componente que e#ecute os
comandos programados sempre que um evento em especfico se,a detectado' 5or e#emplo+ um (ot*o em seu
form pode detectar quando um usu-rio clica so(re si+ o que . conhecido como evento %nClic4' % evento
%nClic4 fa) com que sua aplica*o e#ecute a a*o especificada no event handler'
Passos para dicionar um %vent &andler
!#ecute os passos a seguir para adicionar um event handler3
(asso #01o
> D1 um clique so(re o componente no form que precise de um event handler'
A D1 um clique so(re a a(a da p-gina !vents no %(,ect Inspector para e#i(ir uma lista de eventos
para o componente'
C D1 um duplo9clique O direita da coluna de eventos para fa)er com que o Delphi gere um event
handler va)io e e#i(a o handler no Code !ditor'
D Digite o c/digo a ser e#ecutado quando ocorrer o evento'
Est-+io < 5 Copilando= E!ecutando e Depurando
a (plicao
% compilador e o depurador de(ugger" s*o partes do am(iente Delphi' % compilador inclui um ha(ilitador
&a4e autom-tico para que quando sua aplica*o for alterada+ somente os arquivos alterados se,am
recompilados' % de(ugger est- ativo sempre que voc1 e#ecutar aplicaes dentro do am(iente do Delphi'
Passos para Compilar e %'ecutar a plica(o
!#ecute os passos a seguir para compilar e e#ecutar a aplica*o3
(asso #01o
:N
InforBRs - Informtica Brasileira Ltda.
> 5ara compilar o pro,eto atual sem iniciali)ar o arquivo e#ecut-vel resultante+ no menu Compile+
selecione Compile'
A 5ara compilar quaisquer alteraes e e#ecutar o arquivo do pro,eto corrente+ selecione 8un no menu
8un'
'utoria> Criando ua (plicao
Introduo
% processo a seguir . um tutorial de e#emplo' Bma maneira de entender o processo de desenvolvimento de
aplicaes no Delphi . construir uma aplica*o de e#emplo' !sta se*o fornece um rumo na constru*o de
uma aplica*o simples utili)ando diversos componentes padr*o do Delphi' 2 aplica*o permite que o te#to
se,a digitado em edit (o# e adicionado em um list (o# com o clique de um (ot*o'
Est-+ios do 'utorial
% processo deste tutorial envolve os seguintes est-gios3
/st&io (rocesso
> Criar um pro,eto de e#emplo
A 2dicionar componentes padr*o
C
Definir propriedades dos componentes
D 2dicionar um event handler
E Compilar e e#ecutar a aplica*o de e#emplo
Passos para %st)#io *
!#ecute os passos para a(rir um novo pro,eto e cham-9lo 5S2&56!'D583
(asso #01o
> Eo menu Jile+ selecione Eew 5ro,ect para criar um pro,eto'
% processo de a(ertura de um novo arquivo pro,eto adiciona automaticamente um novo form' Se o
quadro de dialogo $rowse =aller; aparecer+ BlanF 5orm . a op*o default' D1 um clique em OB'
A Se for solicitado a grava*o das alteraes do pro,eto atual selecione 'o'
C Eo menu Jile+ selecione Save (ro,ect #s'
D Duando o nome da unit for solicitado+ digite USAMPLE.PAS'
!ste nome su(stitui o nome default BEIH1'52S'
E Duando o nome do pro,eto for solicitado+ digite PSAMPLE.DPR' !ste nome su(stitui o nome
default 58%S!CH1'D58'
Passos para o %st)#io +
!#ecute os passos a seguir para adicionar componentes da p-gina Standard ao form no pro,eto 5S2&56!3
(asso #01o
> D1 um clique so(re a a(a da p-gina Standard da Component 5alette para visuali)ar os
componentes Standard'
A &ova o ponteiro do mouse vagarosamente so(re cada componente para que o Aelp Aint se,a
e#i(ido+ e locali)e os componentes $utton+ !dit e 6ist$o#'
C
D1 um duplo9clique so(re o componente $utton para inseri9lo no form' 2rraste o componente at.
a parte inferior do form'
D D1 um duplo9clique so(re o componente !dit+ e mova o componente at. a parte superior do form'
E D1 um duplo9clique so(re o componente 6ist$o# para inseri9lo no form'
:F
InforBRs - Informtica Brasileira Ltda.
G 2rran,e os componentes e rea,uste o tamanho do form para que se parea coma figura a seguir'
Passos para %st)#io ,
!#ecute os passos a seguir para definir as propriedades dos componentes !dit e $utton3
(asso #01o
> D1 um clique so(re o componente !dit'
2s propriedades do componente !dit s*o e#i(idas no %(,ect Inspector' % nome default deste
componente . !dit1+ e seu tipo de o(,eto . H!dit'
A Eo %(,ect Inspector+ d1 um clique so(re a coluna 0alues da propriedade He#t de !dit1 e a apague'
C Defina a propriedade Caption para #dd Item'
Seu form deve se parecer com a figura a seguir3
7>
InforBRs - Informtica Brasileira Ltda.
Passos para o %st)#io -
!#ecute os passos a seguir para adicionar um event handler para o evento %nClic4 do componente #dd
Item3
(asso #01o
> D1 um clique so(re o (ot*o #dd Item de seu form para e#i(ir as propriedades no %(,ect Inspector'
A D1 um clique so(re a a(a !vents do %(,ect Inspector para e#i(ir a p-gina !vents do (ot*o'
C D1 um duplo9clique so(re a coluna a direita do evento %nClic4' % nome da procedure
$utton1Clic4 aparecera na coluna' % Delphi gera um event handler va)io e o e#i(e no Code !ditor'
Digite o c/digo a seguir dentro das declaraes +e&in....endH da procedure'
if Eit!."e#t$% & then ' Eit! n(o esta )a*io +
be,in
List-o#!..tems.A/Eit!.te#t01
Eit!."e#t 23 &1
en1
Passos para o %st)#io .
!#ecute os passos a seguir para compilar e e#ecutar sua aplica*o3
(asso #01o
> Eo menu 8un+ selecione 8un'
!sta op*o compila e e#ecuta sua aplica*o'
A Digite algum valor+ tal como seu nome+ no componente !dit'
C D1 um clique em 2dd Item para adicionar cada item a list (o#'
2dicione nove ou de) itens a list (o#'
D Eo menu Jile+ selecione Save 5ro,ect+ e depois Close 5ro,ect'
&tili2ando o *ro.ect 0ana+er
Introduo
% Delphi permite que voc1 gerencie seus pro,etos atrav.s do 5ro,ect &anager' % 5ro,ect &anager lista os
arquivos que compe seu pro,eto e permite que voc1 navegue pelos arquivos' 0oc1 tam(.m pode utili)ar o
5ro,ect &anager para3
2dicionar units e forms ao pro,eto
8emover units e forms de um pro,eto
!specificar o form principal
!specificar a locali)a*o dos arquivos de Aelp e cone
71
InforBRs - Informtica Brasileira Ltda.
E!i)indo a 3anela do *ro.ect 0ana+er
5ara e#i(ir o 5ro,ect &anager+ no menu !iew+ selecione (ro,ect 9ana&er' 2 ,anela 5ro,ect &anager
aparecer-+ como segue3

Descrio dos #otes do *ro.ect 0ana+er
2 ta(ela a seguir descreve os (otes do 5ro,ect &anager3
Bot1? Descri01o
2diciona um arquivo de unit ao pro,eto atual
8emove um arquivo de unit do pro,eto atual
!#i(e um arquivo de unit do pro,eto atual
!#i(e um form no pro,eto atual
!#i(e o quadro de di-logo 5ro,ect %ptions para3
2lterar o form default+ opes do compilador+ aplica*o+ lin4er e diret/rio
Define sm(olos condicionais
7:
InforBRs - Informtica Brasileira Ltda.
=rava as alteraes no pro,eto atual
(dicionando &nits e "ors ao *ro.eto &tili2ando o
*ro.ect 0ana+er
Bm pro,eto default inicialmente cont.m um form e um arquivo de unit de c/digo fonte' !ntretanto+ a maioria
dos pro,etos cont.m mQltiplos forms e units'
0oc1 pode dar um clique com o (ot*o direito do mouse e selecione 'ew 5orm no Speed&enu para adicionar
units e forms ao seu pro,eto' 0oc1 tam(.m pode adicionar forms e units e#istentes ao seu pro,eto utili)ando o
(ot*o #dd na Speed$ar do 5ro,ect &anager e selecionar o form ou unit a ser adicionado'
$eovendo &nits e "ors de u *ro.eto
&tili2ando *ro.ect 0ana+er
Durante o desenvolvimento de um pro,eto+ voc1 pode achar necess-rio remover forms e units de seu pro,eto'
0oc1 pode fa)19lo a qualquer momento durante o desenvolvimento' !ntretanto+ como um form est- sempre
associado a uma unit+ voc1 n*o pode remove um sem remover o outro a menos que a unit n*o possua
nenhum form associado a ele' 0oc1 pode remover units de um pro,eto utili)ando o (ot*o 8emove no 5ro,ect
&anager'
8emover arquivos utili)ando qualquer outro programa gerenciador de pro,eto ou digitando
comandos no prompt do D%S n*o . recomendado' !stas aes n*o removem as entradas da
cl-usula Bses dos arquivos 'D58 ou da ,anela do 5ro,ect &anager e causar- erros quando voc1
compilar o programa'
Definindo Opes de *ro.eto
% quadro de dialogo 5ro,ect %ptions permite definir diversas opes que afetam seus pro,etos' 5ara acessar
o quadro de dialogo 5ro,ect %ptions+ de um clique so(re o (ot*o %ptions no 5ro,ect &anager' % quadro
5ro,ect %ptions aparecera+ como segue3
77
InforBRs - Informtica Brasileira Ltda.
Descrio das *-+inas do *ro.ect Options
2 ta(ela a seguir descreve cada uma das p-ginas no quadro de dialogo 5ro,ect %ptions e algumas das opes
mais importantes em cada p-gina3
(&ina Descri01ao
5orms !specifica o form principal de sua aplica*o+ os forms que devem ser criados
automaticamente+ e a ordem destes forms'
#pplication !specifica um ttulo+ arquivo de help+ e um cone para sua aplica*o'
Compiler 5ermite definir opes para a forma como seu programa ser- compilado' !stas
opes correspondem a definir diretivas a seu estado positivo I" no c/digo de
seu programa'
LinFer 5ermite especificar a forma como seus arquivos de programa ser*o lin4ados'
Directories / Conditionals !specifica a locali)a*o dos arquivos que o Delphi necessita para compilar+
lin4ar e distri(uir seu programa'
&tili2ando Inte+rated De)u++er
Introduo
% Delphi possui um depurador totalmente integrado que permite depurar uma aplica*o sem dei#ar o
am(iente visual de desenvolvimento' !le oferece a capacidade de 3
=erar informaes a depura*o de dentro de seu e#ecut-vel
Aa(ilitar e desa(ilitar a depura*o integrada de dentro do ID!
Definir (rea4points
0isuali)ar o conteQdo das vari-veis do programa
&odificar valores de dados durante a e#ecu*o do programa
0isuali)ar o call stac4
?erando Inforao de Depurao
% Delphi gera informa*o sim(/lica de depura*o quando voc1 compila seu programa com a a*o de
depura*o ha(ilitada' 2s opes de depura*o encontram9se na p-gina compiler do quadro de dialogo
5ro,ect %ptions'
7<
InforBRs - Informtica Brasileira Ltda.
2 p-gina Compiler e opes de depura*o para uma aplica*o tpica aparece como segue3
Descrio das Opes do Depurador na *-+ina
Copiler
2 ta(ela a seguir descreve as opes de depura*o na p-gina Compiler do quadro de dialogo 5ro,ect
%ptions3
Op01o Descri01o
De+&
Information
Insere informa*o de depura*o no arquivo BEIH'DCB' Informa*o de depura*o
consiste de uma ta(ela com linhas numeradas para cada procedure que mapeia
endereos de c/digo de o(,etos nos nQmeros'
Local S*m+ols =era local s;m(ols information' 6ocal s;m(ols information consiste de 3
%s identificadores na implementation part e n*o na interface part "
do m/dulo
%s identificadores dentro das procedures e funes do m/dulo'
6ocal s;m(ols information n*o inclui vari-veis glo(ais ou nomes declarados na
interface section de uma unit'
S*m+ol Info =era s;m(ol information' S;m(ol reference information consiste de ta(elas que
fornecem os nQmeros de linhas de todas as declaraes e refer1ncias aos sm(olos em
m/dulo'
7G
InforBRs - Informtica Brasileira Ltda.
4a)ilitando o Inter+rated De)u++er
2 depura*o integrada est- ha(ilitada ap/s a instala*o do Delphi' T uma op*o de am(iente da p-gina
5references que voc1 pode definir' 2 p-gina 5references do quadro de dialogo !nvironment %ptions aparece
como segue3
Descrio das Opes de Depurao na *-+ina
*references
2 ta(ela descreve as opes de depura*o na p-gina 5references do quadro de dialogo !nvironment %ptions3
Op01o Descri01o
Inter&rated De+&&in& Duando ha(ilitada+ a depura*o integrada est- em efeito'
Step (ro&ram BlocF Duando ha(ilitada+ o depurador passa pelos (locos de programa'
@ide Desi&ner on rn Duando ha(ilitada+ a interface de design . oculta enquanto a aplica*o estiver
sendo e#ecutada'
BreaF on e3ception Duando ha(ilitada+ a aplica*o para quando ocorrer uma e#ception e a linha de
c/digo causadora . e#i(ida no Code !ditor'
9inimi2e on rn Duando ha(ilitada+ o Delphi . minimi)ado sempre que voc1 e#ecutar uma
aplica*o dentro do ID!'
7L
InforBRs - Informtica Brasileira Ltda.
Controlando a E!ecuo do *ro+raa
Bma caracterstica importante do depurador . que ele permite selecionar como o programa ser- e#ecutado+
uma declara*o por ve)' Bma linha de c/digo por ve)+ uma fun*o inteira por ve)+ e assim por diante' %
depurador permite controlar a e#ecu*o de seu programa das opes no menu Rn' % menu Rn+ como
segue3
Descrio do 0enu $un
2 ta(ela a seguir fornece uma declara*o das opes disponveis no menu 8un'
Op01o Descri01o
Rn 5ermite compilar e e#ecutar suas aplicaes'
(arameters 5ermite especificar os parPmetros de iniciali)a*o para sua aplica*o
Step Over 5ermite e#ecutar seu programa uma linha por ve)+ pulando procedures+ e#ecutando9as
como uma Qnica unit'
)race Into 5ermite e#ecutar seu programa uma linha por ve)+ rastreando a procedure e seguindo a
e#ecu*o de cada linha'
Rn to Crsor 5ermite e#ecutar o programa at. a locali)a*o do cursor no Code !ditor
(ro&ram (ase 5ermite interromper temporariamente a e#ecu*o de um programa
(ro&ram Reset 5ermite terminar o programa sendo e#ecutado e remove9 lo da mem/ria
#dd Watch 2(re o quadro de dialogo Watch 5roperties+ permitindo criar e modificar o(servaes
#dd BreaFpoint 2(re o quadro de dialogo !dit $rea4point+ permitindo criar e modificar pontos de
interrup*o
/valate/9odif* 2(re o quadro de dialogo !valuate/&odif;+permitindo avaliar ou alterar o valor de uma
7M
InforBRs - Informtica Brasileira Ltda.
e#press*o e#istente
Definindo *ontos de Interrupo
0oc1 pode definir pontos de interrup*o onde quiser que a e#ecu*o se,a interrompida' 5ontos de interrup*o
s*o particularmente Qteis quando utili)ados em con,unto com Watches' Seu programa . e#ecutado na
velocidade normal ate atingir o ponto de interrup*o' 2tingindo o ponto+ o depurador e#i(e o Code !ditor
com a linha contendo o ponto de interrup*o+ permitindo modificar o c/digo ou e#i(ir o valor de vari-veis
utili)ando a ,anela de o(serva*o'
5ara definir um ponto de interrup*o+ voc1 pode3
Dar um duplo9clique a esquerda da linha do c/digo fonte onde quiser definir um ponto de
interrup*o'
Selecionar Hoggle $rea4point utili)ando o Speedmenu Code !ditor'
*ontos de Interrupo no Code Editor
Duando definir um ponto de interrup*o+ a linha de c/digo correspondente ao ponto . realada e um cone
de sinal de parada aparece na margem esquerda como mostrado na figura a seguir3
0oc1 tam(.m pode utili)ar a p-gina !ditor Colors do quadro de dialogo !nvironment %ptions
para definir uma cor diferente+ indicando pontos de e#ecu*o+ linhas de pontos de interrup*o
inv-lidos+ e a propriedade ha(ilitado/desa(ilitado do ponto de interrup*o'
1isuali2ando o Conte@do de 1ari-veis
2 ,anela Watches monitora a altera*o do valor das vari-veis ou e#presses durante a e#ecu*o de seu
programa' Conforme seu programa se,a e#ecutado+ quer este,a pulando so(re o c/digo+ o conteQdo da ,anela
de o(serva*o . alterado conforme os valores das vari-veis contidas na e#press*o de o(serva*o'
7N
InforBRs - Informtica Brasileira Ltda.
(dicionando E!presses de O)servao
5ara iniciar uma e#press*o de o(serva*o+ selecione 2dd Watch no menu 8un' % quadro de dialogo Watch
5roperties aparece+ como segue3
E!i)indo E!presses de O)servao
2 ,anela Watches e#i(e os valores atuais de e#presses de o(serva*o e permite adicionar+ editar+ deletar+
ha(ilitar e desa(ilitar o(servaes' 5ara e#i(ir a ,anela Watch 6ist+ selecione Watches no menu 0iew' 2
,anela Watch 6ist aparece'
Quadro de Di-lo+o Evaluate/0odifA
Eo Delphi+ voc1 pode alterar os valores de vari-veis e itens nas estruturas de dados durante a depura*o'
5ara avaliar ou alterar o valor de uma e#press*o e#istente+ utili)e o quadro de dialogo !valuate/&odif;'
2lteraes feitas no quadro de dialogo !valuate/&odif; n*o afetam o c/digo fonte ou o programa compilado'
5ara tornar as alteraes permanentes+ modifique seu c/digo fonte e recompile seu programa' % quadro de
dialogo !valuate/&odif; aparece como segue3
7F
InforBRs - Informtica Brasileira Ltda.
1isuali2ando o Call StacB
Duando estiver depurando+ voc1 pode achar Qtil a ordem das chamadas de funes ativas' 2 ,anela Call e#i(e
o flu#o atual das chamadas de funes'
3anela Call StacB
2 ,anela Call Stac4 e#i(e chamadas de funes ativas' Cada fun*o aparece com uma lista de argumentos
utili)adas na chamada' 0oc1 tam(.m pode utili)ar a ,anela Call Stac4 para visuali)ar ou editar o c/digo9
fonte associado com uma determinada chamada de fun*o' 5ara visuali)ar a ,anela Call Stac4+ voc1 pode
selecionar 0iew na (arra de menu+ e depois Call Stac4' 2 ,anela Call Stac4 aparece como segue3
<>
InforBRs - Informtica Brasileira Ltda.
6a)> 0odificando a (plicao de E!eplo
O).etivos
!ste 6a( refora sua ha(ilidade em3
U 2dicionar um componente ao form'
U Definir propriedades de um componente'
U 2dicionar um event handler'
U Compilar um programa Delphi'
Cen-rio
Eeste captulo+ voc1 aprendeu a criar uma aplica*o em um pro,eto chamado 5S2&56!' !m 5S2&56!+
voc1 adicionou os componentes 6ist$o#+ $utton e !dit ao Jorm' % !vento %nClic4 do form adiciona itens
digitados no componente !dit a list (o#' Eeste la(+ voc1 vai melhorar esta aplica*o+ adicionando um (ot*o
Deletar e um Sair para esta aplica*o'
*rocesso
Btili)e as seguintes diretivas para modificar a aplica*o 5S2&56!3
/st&io (rocesso
> 2(ra a aplica*o 5S2&56! criada neste captulo e adicione dois (otes ao form'
A Defina as propriedades para estes (otes para que um (ot*o $utton:" tenha o Caption Deleter
.tem e o outro (ot*o $utton7" tenha o Caption !#it e o primeiro com #dd Item'
C 2dicione um event handler para o evento %nClic4 do (ot*o com o Caption /3it'
Btili)e o m.todo Close do HJorm para sair da aplica*o'
2 declara*o para este evento segue a(ai#o3
4lose1
D 2dicione um event handler para o %nClic4 do (ot*o com o Caption Delete Item' % event handler
completo segue a(ai#o3
Proceure "5orm.-utton64lic7/Sener2 "Object01
be,in
8ith List-o#! o
be,in
if .tem.ne#$% -! then
.tems.Delete/.tem.ne#01
en1
en1
E Inclua tam(.m no event %nClic4 do (ot*o com Caption 2dd Item o c/digo a(ai#o3
List-o#!..tems.A/ Eit!."e#t 01
G =rave e e#ecute a aplica*o
I 2dicione quatro ou cinco itens O lista (o#
J Delete itens da lista
<1
InforBRs - Informtica Brasileira Ltda.
Seu from deve estar similar a figura a seguir3
*rocessos Opcionais
% event handler para o evento %nClic4 do (ot*o Deletar Item utili)a uma declara*o de programa*o
chamada de declara*o with'
Btili)e o sistema de help para determinar o que esta declara*o fa)' 8evise o event handler $utton:Clic4+
ha(ilitando o m.todo para que voc1 possa deletar a declara*o with e as palavras9chave +e&in...end
associadas'
$esuo do Captulo
Pontos chave
2p/s completar este captulo+ voc1 aprendeu3
U Due arquivos de pro,eto do Delphi controlam as aplicaes construindo v-rios forms+
e#ecutando as aplicaes e e#i(indo o form principal da aplica*o'
U Due adicionar um form cria dois arquivos3
U Bm arquivo de form com e#tens*o 'DJ& contendo informaes de resource do
Windows e c/digo %(,ect 5ascal do Delphi para a constru*o do form'
U Bm arquivo de unit com e#tens*o '52S contendo c/digo %(,ect 5ascal'
<:
InforBRs - Informtica Brasileira Ltda.
U % 5ro,ect &anager do Delphi lista os arquivos que compem sua aplica*o e permite
navegar pelos arquivos'
U Due o Delphi possui um depurador totalmente integrado que permite depurar aplicaes
sem ter que dei#ar o am(iente de desenvolvimento visual'
'eros e definies
2 ta(ela a seguir . uma refer1ncia r-pida para os termos e#plicados neste captulo'
)ermo Descri01o
BreaFpoint Bma marca*o em seu programa que causa uma pausa na e#ecu*o durante o processo de
depura*o'
/vent handler Bma procedure que di) ao componente para que e#ecute determinadas declaraes do
programa quando um evento em especial . detectado'
(ro,ect 5ile Bm aquivo que controla uma aplica*o Delphi construindo v-rios forms+ e#ecutando a
aplica*o e e#i(indo o form principal da aplica*o' % nome default . 58%S!CH1'D58'
Watches !#presses que permite monitorar o valor das vari-veis ou e#presses enquanto seu
programa estiver sendo e#ecutado'
<7
InforBRs - Informtica Brasileira Ltda.
Captulo :
%studo Detalhado de Componentes
2o final do captulo+ voc1 estar- apto a3
!#plicar o que s*o componentes visuais e n*o9visuais
!#plicar o que s*o propriedades+ eventos e m.todos
Descrever tr1s maneiras de manipular ou personali)ar componentes
/stdo Detalhado de Componentes
Overview
Componentes s*o (locos de constru*o de uma aplica*o' !ste captulo co(re os principais aspectos
de componentes3 propriedades+ eventos e m.todos' % estudo dos componentes tam(.m inclui v-rias maneiras
de arran,-9los+ alinh-9lose definir propriedades de componentes'
!ste captulo tam(.m enfati)a a utili)a*o do help on9line+ pois . uma fonte e#tensiva so(re
componentes'
Descri!o de "m Componete
Introd01o
2plicaes do Delphi s*o construdas utili)ando9se componente' Bm componente . um o(,eto que pode ser
manipulado para construir e personali)ar uma aplica*o' &esmo um form+ em(ora n*o se,a encontrado
na Component 5alette+ . um componente' !le . um componente que pode conter outros componentes'
=enericamente+ o termo componente refere9se a itens encontrados na Component 5alette' !ste significado
aplica9se no decorrer do curso'
%s componentes s*o categori)ados em componente visuais e n*o9visuais'
Componentes !isais
Componentes 0isuais aparecem durante a e#ecu*o da mesma forma como aparecem durante o design'
!#emplos s*o (otes e edit fields'
% Delphi utili)a o termo controle+ como um significado para um componente visual que possa ser
visuali)ado quando a aplica*o estiver sendo e#ecutada' %s controles s*o divididos em dois grupos3
controles a,anelados e n*o a,anelados' Consulte o 2p1ndice 23 Controles no Delphi+ para mais detalhes'
Componentes '1o-visais
Componentes n*o9visuais aparecem durante o design como pequenas figuras em um form' !ntretanto+ eles3
Ja)em com que um quadro de dialogo se,a e#i(ido quando chamado' Bm e#emplo . o componente
SaveDialog'
E*o aparecem em momento nenhum durante a e#ecu*o' !#emplos s*o os componentes Himer+
DataSource+ e Ha(le'
<<
InforBRs - Informtica Brasileira Ltda.
E!eplos de Coponentes Co51isuais
2 figura a seguir mostra e#emplos de componentes 0isuais e n*o9visuais3
Componente Componente
)imer SaveDialo&
Kn1o-visalL Kn1o-visalL
Componente
DataSorce
Kn1o-visalL
Componente
4er*
Kn1o-visalL
Componente
/ditBo3
KvisalL
Componente Componente
Btton KvisalL ListBo3 KvisalL
CDdi+o ?erado para u "or
Como mencionado+ o Delphi permite criar uma aplica*o com um mnimo de codifica*o' Duando voc1
iniciali)a o Delphi+ um novo form . automaticamente gerado e o Delphi cria um arquivo unit
correspondente' % c/digo correspondente ao form pode ser visuali)ado na ,anela do code editor' 2 ,anela
code editor geralmente . posicionada atr-s do form default+ Jorm1' c/digo . gerado quando voc1 adiciona
um componente . um evento+ como voc1 vera posteriormente neste captulo' 2 ,anela do code editor
aparece+ como segue3
<G
InforBRs - Informtica Brasileira Ltda.
CDdi+o ?erado (dicionando u Coponente
Duando voc1 adiciona um componente ao form+ o Delphi gera o c/digo para isto+ como mostrado no
e#emplo a seguir+ com um componente !dit3
(spectos de u Coponente
Bm componente Delphi possui os tr1s seguintes aspectos3
5ropriedades
!ventos
&.todos
Cada 2specto . e#plicado nas sees a seguir3
*ropriedades
5ropriedades s*o atri(utos ou campos de componente' 5ropriedades podem ser definidas durante a e#ecu*o
ou design' 2s propriedades controlam a forma como um componente se comporta e sua apar1ncia em uma
aplica*o' 5or e#emplo+ um (ot*o . um componente que voc1 pode adicionar a um form' Bma das muitas
propriedades de um (ot*o . a propriedade Caption' Definir a propriedade Caption altera o te#to e#i(ido no
(ot*o'
Inflenciando o Comportamento de m Componente
% %(,ect Inspector e#i(e as propriedades de um componente' % %(,ect Inspector . a cone#*o entre a
apar1ncia visual do componente e o c/digo que o Delphi gera para fa)er com que a aplica*o se,a
e#ecutada' % %(,ect Inspector . utili)ado para definir propriedades durante o design'
/3emplo<
(ropriedade para o Component /dit
2s propriedades s*o listadas na p-gina 5roperties do %(,ect Inspector' % e#emplo a seguir mostra parte
desta lista para o componente !dit adicionado ao form'
<L
InforBRs - Informtica Brasileira Ltda.
/3emplo<
Descri01o das (ropriedades para o Componente /dit
&uito em(ora as propriedades no %(,ect Inspector variem para cada componente selecionado+ uma ve)
que voc1 entenda as propriedades de um componente+ voc1 pode aplicar este conhecimento para outros
componentes' 2 ta(ela a seguir descreve a lista completa das propriedades do componente !dit' !sta lista .
uma representa*o das propriedades comumente encontradas para os componentes do Delphi'
(ropriedade Descri01o
#toSelect Determina se o te#to . selecionado automaticamente quando o usu-rio mover9se ate o
componente !dit ou &emo utili)ando ta(
#toSi2e Determina se um componente tem o tamanho rea,ustado automaticamente para acolher
seu conteQdo
BorderSt*le Determina o tipo de (orda e#i(ido para um componente
CharCase Determina se o estilo dos caracteres e#i(idos sera em maiQsculas+ minQsculas ou
misturadas
Color Determina a seguir3
<M
InforBRs - Informtica Brasileira Ltda.
2 cor de fundo de form
2 cor de um controle ou figura
CtlCD Determina se o controle possui um visual tridimensional ou (idimensional
Crsor Determina a imagem que o ponteiro do mouse assume tal como seta ou I9(eam" quando
passar por -rea co(erta pelo componente
Dra&Crsor Determina a imagem que o cursor assume tal como seta ou I9(eam" quando passar por
so(re um componente que aceite arrasto
Dra&9ode Determina o componente drag9and9drop de um componente
/na+led Determina se o componente responde a eventos do mouse+ teclado ou timer
5ont
Determina os atri(utoscor+ tamanho+ estilo+ ou nome" do seguinte3
He#to escrito so(re ou dentro de um componente ou o(,eto
He#to enviado a impressora
@ei&ht Determina o tamanho vertical de um componente ou o(,eto
@elpConte3t Determina um nQmero Qnico para cada tela a ser chamada no Aelp sensvel ao conte#to
@ideSelection Determina se o te#to selecionado mant.m9se selecionado quando o o(,eto perder o foco
(ropriedade Descri01o
@int Determina a string de te#to que aparecera quando o evento %nAint ocorrer quando o
cursor passar so(re um componente ou item de menu+ seu significado sera e#i(ido"
Left Determina a locali)a*o hori)ontal em pi#els do lado esquerdo de 3
Bm componente em rela*o ao form ou painel ou outros o(,etos container
Bm form em rela*o a tela
9a3Len&th Determina o nQmero m-#imo de caracteres que um usu-rio pode digitar em um
componente !dit ou &emo' Vero>" significa sem limite'
'ame Determina um nome Qnico para um componente ou o(,eto
O/9Convert Determina se o te#to . convertido para caracteres %!&
(arentColor Determina onde o componente procurara pela informa*o so(re sua cor+ como segue3
Se o valor form Hrue+ o componente utili)a a propriedade Color do componente pai'
Se o valor form Jalse+ o componente utili)a sua pr/pria propriedade Color'
(arentCtlCD Determina onde o componente procurara pela informa*o so(re seu visual
tridimensional+ como segue3
Se o valor form Hrue+ o componente utili)a a propriedade tridimensional do
componente pai'
Se o valor form Jalse+ o componente utili)a sua pr/pria propriedade tridimensional'
(arent5ont Determina onde um componente procurara para pela pela informa*o so(re seu fonte+
como segue3
Se o valor form Hrue+ o componente utili)ar- a propriedade Jont do componente pai'
Se o valor form Jalse+ o componente utili)ar- sua pr/pria propriedade Jont'
(arentShow@int Determina onde um controle procurara se o Aelp hint deve ser e#i(ido+ como segue3
Se o valor form Hrue+ o controle utili)a a propriedade ShowAint do componente pai'
Se o valor form Jalse+ o controle utili)a sua pr/pria propriedade ShowAint'
(assWordChar Determina se um componente !dit ou &emo e#i(e caracteres especiais ao inv.s do
te#to real" quando uma senha form digitada
(opp9en Identifica o nome o menu pop9up que aparecera quando um dos seguintes acontecer3
% usu-rio seleciona um componente e pressiona o (ot*o direito do mouse'
% m.todo 5opBp de um menu pop9up . e#ecutado'
ReadOnl* Horna um componente read9onl; durante a e#ecu*o+ para que o usu-rio possa alterar o
valor do campo ou do dataset
Show@int Determina se o Aelp est- ha(ilitado ou n*o+ para a aplica*o+ como segue3
Se o valor form Hrue+ Aelp Aints est- ha(ilitado'
Se o valor form Jalse+ Aelp Aints est- desa(ilitado'
)a+Order Indica a posi*o do componente na ordem ta( do container+ a ordem na qual um
componente rece(e o foco quando a tecla ta( . pressionada'
<N
InforBRs - Informtica Brasileira Ltda.
)a+Stop Determina se um usu-rio pode pressionar ta( at. o componente
)a& Cria um local disponvel para arma)enar valor integer como parte de um componente
2 propriedade Hag+ em(ora n*o utili)ada pelo Delphi+ est- disponvel para necessidades
especiais do usu-rio'
)e3t !specifica a string de te#to e#i(ida em um componente ou outro o(,eto
)op Determina o posicionamento vertical em pi#els do canto superior esquerdo de3
Bm componente em rela*o ao form+ painel ou outro controle container
Bm form em rela*o a tela
!isi+le Determina se um componente aparece na tela
Width Determina o tamanho hori)ontal do componente e outros o(,etos
&tili2ando Editores de *ropriedades para Definir ou (lterar ua *ropriedade
% %(,ect Inspector oferece diversas maneiras de e#i(ir propriedades e suas variaes para que voc1 possa
defini9las ou alter-9las' !stes mecanismos s*o chamados de editores de propriedades'
Se voc1 criar seu pr/prio componente+ voc1 pode utili)ar os mesmos editores de propriedades
para definir as propriedades de seu componente' %s editores s*o o(,etos do Delphi' %s editores
s*o3
!ditor simples
!ditor drop9down list
!ditor com quadro de dialogo
!ditor com propriedades aninhadas
Editor Siples
% editor simples permite digitar um novo valor no lugar de um valor default para tipos num.rico e
strings alfanum.ricas' Eo e#emplo a seguir+ o valor default da propriedade Caption . Jorm1'
0oc1 pode digitar um novo nome em seu lugar' % Delphi checa pela validade do valor para
certificar9se de que uma string num.rica n*o foi digitada no lugar de uma string alfanum.rica ou
vice9versa'
<F
InforBRs - Informtica Brasileira Ltda.
/ditor Drop-Down List
Bma seta para (ai#o" ap/s algum valor na coluna 0alues indica que um valor . limitado a uma lista de
escolhas' Color e Cursor s*o e#emplos de propriedades que possuem uma drop9down list'
/ditor com 4adro de Dilo&o
8etic1ncias '''" indicam que e#iste um quadro de opes' % e#emplo a seguir mostra um quadro de
dialogo utili)ado para definir diversos atri(utos para o tipo de o(,eto HJont' Jont e Color s*o
e#emplos de propriedades que possuem um quadro de di-logo'
2 propriedade Color n*o possui reticencias para indicar e#ist1ncia de um quadro de dialogo'
0oc1 deve dar um duplo9 clique para e#i(i9lo'
G>
InforBRs - Informtica Brasileira Ltda.
/ditor com (ropriedades #ninhadas
2lgumas propriedades possuem menus aninhados Su(menus ocultos" de propriedades'Bm sinal de mais
I" na frente do nome de tal propriedade indica que um ou mais menus aninhados de propriedades e#istem
para aquela propriedade' Dando um clique so(re o sinal para e#i(ir o su(menu+ um sinal de menos su(stitui
o sinal de mais' Bm sinal de menos 9" indica que n*o e#iste nenhum su(menu adicional' Jont . um
e#emplo de propriedade que possui um menu aninhado' % sinal de mais no su(menu ISt;le indica que a
propriedade St;le possui um menu aninhado'
"tili2ando a )ecla 5> para "ma Descri01o Completa de ma (ropriedade
2 importPncia de Aelp sensvel ao conte#to como caracterstica do Delphi . aparente quando voc1 precisa
de uma descri*o completa de uma propriedade' 5ressionando a tecla J1 so(re a propriedade e seus"
valores"+ como na propriedade 2utoSelect+ como segue3
)%picos Relacionados #travMs da )ecla 5>
Dando um clique so(re a op*o See 2lso em verde no te#to" liga propriedade com t/picos relacionados'
Bma lista de t/picos . e#i(ida+ como no e#emplo a seguir+ da propriedade 2utoSelect3
G1
InforBRs - Informtica Brasileira Ltda.
/3emplos de C%di&os #travMs da )ecla 5l
Dando um clique so(re a op*o !#ample em verde+ no te#to" liga a propriedade a um e#emplo de c/digo
relacionado para propriedade 2utoSelect'
% Aelp on9line inclui o comando Cop; que permite copiar o te#to do Aelp e cola9lo na aplica*o' Isto pode
ser especialmente Qtil se voc1 encontrar e#emplo de c/digo que queira utili)ar em sua aplica*o' 5ara
utili)ar o comando Cop;+ e#i(a o t/pico de Aelp que queira copiar+ e no menu !dit+ selecione Cop;'
(assos para Definir (ropriedades Drante o Desi&n
!#ecute os passos para definir propriedades durante o design3
(asso #01o
> D1 um clique so(re uma p-gina da Component 5alette+ e de um clique so(re o componente que
voc1 queira+ como por e#emplo o componente !dit'
A De um clique so(re a -rea do form onde voc1 queira inserir o componente' % componente aparece
no form com o componente !dit' % nome do componente e o tipo do o(,eto !dit13 H!dit .
colocado no %(,ect Selector' 2 coluna 0alues e#i(e o nome !dit1 como o te#to default da
propriedade He#t'
C Btili)e um editor de propriedade para alterar o valor da propriedade' 2s alteraes feitas para a
maioria das propriedades aparecem imediatamente no form'
Eventos
Introd01o
!vento . outra caracterstica de um componente' !ventos s*o aes de usu-rios ou ocorr1ncias do sistema
que um componente possa reconhecer+ tal como um clique de mouse'
/vent @andler
Duando voc1 seleciona um evento para um componente+ o Delphi gera um heading de procedure e (loco de
c/digo' % c/digo que voc1 escreve especifica como um componente deve responder a um evento+ e .
chamado de event handler' !vent handler s*o procedures especiali)adas' % %(,ect Inspector permite
especificar quais procedures est*o associadas a determinados eventos'
/3emplo< /ventos para o Componente /dit
%s eventos est*o listados na p-gina !vents do %(,ect Inspector' % e#emplo a seguir mostra uma lista de
eventos para o componente !dit3
G:
InforBRs - Informtica Brasileira Ltda.
/3emplo < Descri01o dos /ventos para o Componente /dit
&uito em(ora os eventos no %(,ect Inspector variem para cada tipo de componente+ uma ve) que voc1
entenda os eventos para um componente+ voc1 pode aplicar este conhecimento para outros componentes'
2 ta(ela a seguir lista os eventos e suas descries para o componente !dit3
/vento Descri01o
OnChan&e %corre quando um determinado valor de um o(,eto ou componente . alterado
OnClicF %corre quando o usu-rio da um clique so(re o componente
OnD+lClicF %corre quando o usu-rio da um duplo9clique so(re um componente
OnDra&Drop %corre quando o usu-rio solta um o(,eto sendo arrastado
OnDra&Over %corre quando o usu-rio arrasta um o(,eto so(re um componente
On/ndDra& %corre quando termina o arrasto de um o(,eto
On/nter %corre quando um componente torna9se ativo
On/3it %corre quando o foco de input passa de um componente para outro
OnBe*Down %corre quando o usu-rio pressiona qualquer tecla quando um componente possuir o
foco
OnBe*(ress %corre quando o usu-rio pressiona uma Qnica tecla de caractere
OnBe*"p %corre quando o usu-rio solta uma tecla que estava pressionada
On9oseDown %corre quando o usu-rio pressiona o (ot*o mouse enquanto o ponteiro do mouse
G7
InforBRs - Informtica Brasileira Ltda.
estiver so(re um componente
On9ose9ove %corre quando o usu-rio move o ponteiro do mouse quando o ponteiro do mouse
estiver so(re o componente
On9ose"p %corre quando o usu-rio solta o (ot*o do mouse quando o ponteiro do mouse estiver
so(re um componente
@eadin& de de (rocedre .erado #travMs de m Dplo-Cli$e em m /vento
Eo %(,ect Inspector+ um duplo9clique na coluna 0alues pr/#imo ao evento gera um heading de procedure
para o c/digo do evento e o associa ao evento+ como mostrado no e#emplo a seguir+ no evento %nChange do
componente !dit' % cursor . posicionado entre o par (egin'''end para que voc1 possa digitar o c/digo para o
comportamento dese,ado'
Chamando (rocedres com (arNmetros
Bm event handler pode ter parPmetros' 2s instrues dentro da procedure podem utili)ar os valores passados
como parPmetros quando o programa . e#ecutado' %s valores s*o tratados como vari-veis declaradas dentro
da procedure para passagem de dados' %s parPmetros aparecem entre par1ntesis ap/s o nome da procedure+
como mostrado na figura anterior'
(assos para #dicionar m /nevt @andler
!#ecute os passos a seguir para adicionar um event handler ao componente !dit3
G<
InforBRs - Informtica Brasileira Ltda.
(asso #01o
> 2p/s modificar uma ou mais propriedades de um componente+ de um clique so(re a a(a da p-gina
!vents para e#i(i9la'
2 p-gina !vents e#i(e todos os eventos reconhecidos pelo componente selecionado+ como no
e#emplo anterior'
A Selecione um evento e de um duplo9clique na coluna 0alues pr/#imo ao evento'
% Delphi gera um event handler heading da procedure e o (loco de c/digo" na ,anela do code
editor' % cursor . posicionado dentro do par +e&in...end'
C Dentro do par +e&in...end+ digite as instrues que voc1 quer que o Delphi e#ecute quando o
componente rece(er o evento'
% Delphi adiciona uma instru*o de procedure na por*o interface do arquivo unit' Se voc1
alterar o nome de event handler+ o Delphi altera o nome onde quer que aparea dentro no c/digo9
fonte'
#$todos
Introd01o
2lem de propriedades e eventos+ um componente possui m.todos' Como os componentes s*o o(,etos+ eles
herdam n*o somente propriedades e eventos+ mas tam(.m m.todos' !m geral+ um m.todo . uma procedure
ou fun*o associada a um componente' Eos termos de programa*o+ um m.todo . uma procedure ou fun*o
declarada como parte de um o(,eto'
/3emplo< Descri01o dos 9Mtodos de m Componente /dit
2 ta(ela a seguir lista os m.todos e suas descries de um componente !dit3
9Mtodo Descri01o
Be&inDra&
Bma procedure que inicia com o arrasto de um controle
Se o valor do parPmetro Immediate for Hrue+ o ponteiro do mouse altera para o
valor da propriedade DragCursor e o arrasto inicia imediatamente'
Se o valor do parPmetro Immediate for Jalse+ o ponteiro do mouse n*o muda de
valor e o arrasto inicia somente ap/s o usu-rio mover o ponteiro do mouse
cinco pi#els'
Brin&)o5ront
Bma procedure que pe um componente ou form na frente de outros componentes
a,anelados ou n*o+ ou forms dentro de seu componente pai ou form'
Class'ame Bma fun*o que retorna o nome da classe de um o(,eto
Class(arent Bma fun*o que retorna a classe que se,a pai de um o(,eto
Class)*pe Bma fun*o que retorna o tipo de classe de um o(,eto
Create Bm construtor que iniciali)a um o(,eto ou componente de acordo com certas
procedures padr*o' Bm construtor . declarado com a palavra reservada
constructor'
Clear Bma procedure que deleta itens ou te#to de um controle
CleanSelection Bma procedure que deleta o te#to selecionado de um componente !dit ou &emo
Cop*)oClip+oard Bma procedure que copia uma sele*o ao Clip(oard
Ct)oClip+oard Bma procedure que deleta a sele*o de um controle e a copia para o Clip(oard
Destro* Bm destrutor que destr/i um o(,eto+ controle ou componente+ e li(era a mem/ria
que estava alocada a ele' Bm destrutor . declarado com a palavra destructor
Dra&&in& Bma fun*o que especifica se um o(,eto est- sendo arrastado
/ndDra& Bma procedure que termina o arrasto de um o(,eto
5ree Bma procedure que destr/i um o(,eto e li(era a mem/ria alocada para ele
.etSel)e3tB& Bma fun*o que copia para um (uffer o te#to selecionado de um componente !dit
ou &emo+ e retorna o nQmero de caracteres copiados
.et)e3tLen Bma fun*o que retorna o tamanho do te#to de um controle
@ide Bma 5rocedure que opera somente durante a e#ecu*o e torna um form ou
controle invisvel atrav.s da defini*o da propriedade 0isi(le para Jalse+ do form
GG
InforBRs - Informtica Brasileira Ltda.
ou controle
(aste5romClip+oard Bma procedure que copia te#to do Clip(oard para um controle
Refresh Bma procedure que limpa qualquer imagem que este,a na tela e depois redesenha o
controle inteiro
ScaleB* Bma procedure que rea,usta um controle a um percentual de seu tamanho anterior
ScrollB* Bma procedure que rola o conteQdo de um form ou controle a,anelado
Select#ll Bma procedure que seleciona o (loco de te#to inteiro em um controle
Send)oBacF Bma procedure que coloca um componente+ a,anelado ou n*o+ por tras de todos os
outros componentes dentro de um componente pai ou form
SetBonds Bma procedure que define as propriedades 6eft+ 8ight+ Aeight e Width de um
componente aos valores passados com os parPmetros 26eft+ 28ight+ 2Aeight e
2Width
Set5ocs Bma procedure que pe o foco de input no controle
SetSel)e3tBf Bma procedure que define te#to selecionado em um componente !dit ou &emo ao
te#to na string null9terminated para o qual o (uffer aponta
Set)e3tBf Define o te#to em um componente para o te#to do (uffer
Show Bma procedure que torna um form ou controle visual definindo sua propriedade
0isi(le para Hrue
"pdate Bma procedure que redesenha um componente
Chaando 0todos
0oc1 pode chamar m.todosfunes ou procedures" utili)ando a nota*o de ponto '"+ conhecida como dot
notation' 5or e#emplo para chamar um m.todo show3
Eit.Sho8
&.todos+ diferente de propriedades+ nunca s*o ativados durante o design' !les s*o procedures ou funes
que operam no componente'
&tili2ando a 'ecla "9 para ua Descrio Copleta dos 0todos
5ressionando 5> so(re o nome de um determinado componente ser- mostrado uma lista dos m.todos+ (em
como as propriedades e eventos associados Oquele componente' Cada componente . listado pelo seu tipo de
o(,eto' 0oc1 tam(.m pode selecionar )opic Search no menu @elp para pesquisar qualquer componente'
0oc1 pode querer pesquisar um compnente com o qual queira tra(alhar para tornar9se familiar com todos os
seus m.todos disponveis'
#anipulando e %ersonali&ando Componentes
Introd01o
2dicionar componente ao form . somente uma parte da tarefa em utili)a9los' !les precisam ser manipulados
e personali)ados para melhor utili)a*o e apresenta*o no form' 2s operaes a seguir est*o envolvidas 3
Definir propriedades comuns a mQltiplos componentes
8ea,ustar um componente
2dicionar mQltiplas c/pias de um componente
2grupar componentes
2linhar componentes
Operaes (dicionais
2s operaes so(re componentes a seguir n*o s*o co(ertas no curso pois s*o id1nticas no &S Windows3
GL
InforBRs - Informtica Brasileira Ltda.
Deletar
&over
8ecortar e colar
Copiar
&tili2ando o 0enu Edit
2 maioria das opes para manipula*o dos componentes est*o no menu !dit'
Selecionando & Coponente e 1-rios Coponentes
Duando um componente . selecionado+ ele . realado com pequenos quadrados negros ao redor de suas
(ordas' 2 sele*o de componentes varia+ se voc1 quer selecionar um ou v-rios componentes' 0oc1 pode
selecionar um componente das seguintes maneiras3
Dando um clique so(re o componente no form
Dando um clique so(re o nome do componente no %(,ect Selector+ na parte superior do %(,ect Inspector
5ressionando ta( ate o componente no form
0oc1 pode selecionar v-rios componentes das seguintes maneiras3
&antendo pressionada a tecla Shift conforme for dando cliques so(re os componentes
Dando um clique em uma -rea em (ranco do form e arrastando o ponteiro do mouse pelo componente
para inclui9los' Bm retPngulo aparecera conforme for arrastando o ponteiro do mouse'
Definindo *ropriedades para 1-rios Coponentes
Eo inicio do curso voc1 aprendeu como definir uma propriedade para um componente' 2 maioria dos
componentes possuem propriedades em comum+ tais como as propriedades Aeigth e 0isi(le' 0oc1 pode
definir propriedades em comum em um form sem ter que selecionar e alterar cada componente
individualmente'
(assos para Definir (ropriedades Compartilhadas
Siga os passos a seguir para definir propriedades em comum para v-rios componentes3
(asso #01o
> Selecione todos os componentes para os quais voc1 queira definir propriedades em comum+ dando
um clique so(re o primeiro componente e+ mantendo a tecla Shift pressionada+ dando cliques em
cada componente adicional' 2 p-gina 5roperties do %(,ect Inspector e#i(e somente as
propriedades que todos os componentes possuem em comum'
A Defina as propriedades que voc1 queira compartilhar'
%(serve que todos os componentes adquirem a mesma defini*o da propriedade' 2lteraes
visveis no design s*o refletidas em cada componente'
$ea.ustando u Coponente
0oc1 pode rea,ustar componentes tanto quando os insere como ap/s inseri9los' Duando voc1 seleciona um
componente+ pequenos quadrados chamados manipuladores de rea,uste aparecem em torno da (orda do
componente' Duando passar com o ponteiro do mouse so(re um manipulador+ o ponteiro do mouse alterna
para uma seta de duas pontas "' Duando o ponteiro do mouse estiver neste formato+ voc1 pode mover os
manipuladores para tornar o componente maior ou menor' Se voc1 rea,ustar o tamanho do componente
conforme for adicionando+ voc1 n*o precisa utili)ar os manipuladores'
(assos para Rea,star m Componente na Insers1o
!#ecute os passos a seguir para rea,ustar um componente conforme for inserindo9o3
GM
InforBRs - Informtica Brasileira Ltda.
(asso #01o
> Selecione o componente na Component 5alette'
A 5osicione o ponteiro do mouse no form onde queira que o componente aparea e arraste o mouse
na dire*o dese,ada' Conforme for arrastado+ um retPngulo aparece para indicar o tamanho e
posi*o do componente'
C Duando o retPngulo tiver o tamanho dese,ado+ solte o (ot*o do mouse' % componente aparece no
mesmo tamanho que o retPngulo'
*assos para (dicionar u Coponente e $ea.ust-5lo
!#ecute os passos a seguir para adicionar um componente e rea,ust-9lo'
5ara um rea,uste em pi#eis+ voc1 pode utili)ar Si2e no menu /dit'
(asso #01o
> Selecione um componente na Component 5alette'
A 2ponte para a -rea do form onde queira que o componente aparea e de um clique com o (ot*o
esquerdo do mouse'
% componente aparece no form'
C 5asse com o ponteiro do mouse por so(re os manipuladores' Duando o ponteiro do mouse alternar
para uma seta de duas pontas+ arraste os manipuladores para rea,ustar o tamanho'
*assos para $ea.ustar 1-rios Coponentes
!#ecute os passos a seguir para rea,ustar v-rios componentes ao mesmo tempo'
(asso #01o
> Selecione o primeiro componente'
A &antenha pressionada a tecla Shift e de um clique so(re o resto dos componentes que queira
rea,ustar'
Hodos os componentes selecionados aparecem realados'
C Eo menu !dit+ selecione Si)e'
% quadro de dialogo aparece+ como segue3
D Selecione as opes de rea,uste dese,adas'
5ara um rea,uste preciso+ voc1 pode digitar um nQmero em pi#els nos campos Width e @ei&ht'
E D1 um clique em OF'
GN
InforBRs - Informtica Brasileira Ltda.
(dicionando 1-rias CDpias de & Coponente
0oc1 pode adicionar v-rias c/pias do mesmo tipo de componente pressionando a tecla Shift quando
selecionar o componente na Component 5alette' Duando voc1 pressiona a tecla Shift e da um clique so(re o
componente para a primeira c/pia+ um retPngulo aparece ao redor do componente+ como mostrado no
e#emplo com o componente !dit3
Duando der um clique em uma -rea do form+ a primeira c/pia do componente aparecera' Cada clique no
form+ ap/s isto+ adiciona uma c/pia ao form' Dando um clique so(re a ferramenta de sele*o cursor o
primeiro (ot*o da Component 5alette" termina o modo de mQltiplas c/pias'
#linhando Componentes
0oc1 pode alinhar componentes atrav.s da (arra de menus de tr1s maneiras3
Eo menu !iews+ selecione #li&nment (alette
Eo menu /dit+ selecione #li&n
Eo menu Options+ selecione /nvironment
/nvironment no menu Options permite alterar opes default no am(iente do Delphi'

GF
InforBRs - Informtica Brasileira Ltda.
0oc1 tam(.m pode alinhar componentes utili)ando a grade do form' 2 grade . uma caracterstica default e
aparece como linhas de pontos do form'
*assos para (linhar Coponentes &tili2ando a 1iew/(li+nent *alette
!#ecute os passos a seguir para alinhar componentes atrav.s do menu 0iew selecionando 2lignment 5alette'
(asso #01o
> Selecione os componentes que queira alinhar'
A Eo menu 0iew+ selecione 2lignment 5alette' 2 #li&n (alette aparece+ como segue3
C 5asse com o ponteiro do mouse so(re cada (ot*o para e#i(ir seu significado'
D D1 um clique em um (ot*o de alinhamento'
*assos para (linhar Coponentes &tili2ando Edit/(li+n
!#ecute os passos a seguir para alinhar componentes utili)ando o menu !dit e selecionando 2lign'
(asso #01o
> Selecione os componentes que queira alinhar'
A Eo menu !dit+ selecione 2lign' % quadro de dialogo 2lignment aparece como segue3
C D1 um clique so(re uma op*o de alinhamento e de um clique em %W'
*assos para (linhar Coponentes &tili2ando Options/Environent
!#ecute os passos a seguir para alinhar componente utili)ando o menu %ptions e selecionando
!nvironment'
L>
InforBRs - Informtica Brasileira Ltda.
(asso #01o
> Eo menu Options+ selecione /nvironment'
% quadro de dialogo !nvironment %ptions aparece+ como segue+ com a p-gina 5references na
frente3
A Eo =roup$o# Jorm designer+ certifique9se de que os seguintes est*o ha(ilitados3
Displa* &rid
Horna as linhas de pontos visveis no form+ para alinhamento dos componentes
Snap to &rid
Ja) com que o canto superior esquerdo dos componentes se,am alinhados com a marca de
grade mais pr/#ima
C 5ara alterar a granularidade a distancia dos pontos da grade"+ digite novos valores no lugar dos
e#i(idos'
% valor default . N pi#els para o espaamento ? hori)ontal" e X vertical"' Bm nQmero maior que
N aumenta a distancia dos pontos+ . um nQmero menor que N apro#ima os pontos'
D De um clique em OB
E 5osicione os componentes no form alinhando9os com a grade'
Resumo do captulo
(ontos Chave
2p/s completar este captulo+ voc1 aprendeu que3
Componentes visuais geralmente aparecem durante a e#ecu*o da mesma forma que aparece durante o
design'
Componentes n*o visuais aparecem como pequenas figuras no form+ mas n*o aparecem durante a
e#ecu*o a menos que e#i(am um quadro de dialogo'
Bm componente possui tr1s aspectos3 propriedades+ eventos e m.todos'
Bma propriedade . um atri(uto de um componente' 2s propriedades controlam a forma como um
componente . e#i(ido e se comporta em uma aplica*o'
Bm evento . uma a*o do usu-rio ou uma ocorr1ncia do sistema que sua aplica*o pode reconhecer+ tal
como um clique de mouse'
Bm m.todo . uma procedure ou fun*o declarada como parte de um o(,eto'
L1
InforBRs - Informtica Brasileira Ltda.
&anipula*o e personali)a*o de componentes envolvem v-rias operaes+ tais como definir suas
propriedades ou rea,ustar os componentes'
Termos e Definies
2 ta(ela a seguir . uma refer1ncia r-pida aos termos mostrados neste captulo3
)ermo Defini01o
/vent handler Bma procedure associada a um evento do componente que indica como manipular o
evento
/vento
Bma a*o do usu-rio ou ocorr1ncia do sistema que um componente pode reconhecer
5n01o
Bma su(rotina que retorna um valor
.rade 2s linhas e colunas de pontos que servem como guias no alinhamento de componentes
em um form
Instr01o 2 unit mais simples em um programa' Instrues s*o separadas por um ponto9e9virgula
Y"'
9Mtodo Bma procedure ou fun*o declarada dentro do o(,eto+ componente ou controle'
(rocedre
Bm su(programa
(ropriedades
Compartilhadas
5ropriedades comuns a todos os componentes selecionados
Rotina Bma procedure ou fun*o
Capitulo ;
$tili/ando !orms
2o final deste captulo+ voc1 estar- apto a 3
2dicionar um form do template ao pro,eto
=ravar um form como um template
Definir a ordem de ta(
2dicionar um menu ao form
"tili2ando 5orms
Overview
Eo Delphi forms s*o pontos focais da aplica*o que voc1 est- desenvolvendo'Bm form em (ranco . (em
parecido com uma tela de pintura onde voc1 pode adicionar componente+ desenvolvendo a interface de
usu-rio' !ste captulo co(re t/picos como a utili)a*o de templates de forms+ quadros de dialogo e menus'
L:
InforBRs - Informtica Brasileira Ltda.
"tili&ando um 'emplate de (orm
Introdu*o
Duando estiver construindo a interface de usu-rio de sua aplica*o+ voc1 pode acelerar o desenvolvimento
atrav.s da sele*o de diversos templates de forms fornecidos com o Delphi' Bm template . um form
predefinido' %s templates includos com o Delphi fornecem um modelo para forms utili)ados com maior
freqR1ncia+ por e#emplo+ um quadro de dialogo padr*o o um quadro So(re que fornece informaes so(re
uma aplica*o' %s templates de form disponveis s*o e#i(idos na Jorms =aller;'
#dicionando m )emplate de 5orm a m (ro,eto
5ara utili)ar os templates na Jorms =aller;+ ha(ilite a op*o =aller; no quadro de dialogo !nvironment
%ptions' 5ara acessar este quadro+ no menu Options+ selecione /nvironment e depois a p-gina 5refer1ncia'
Duando a op*o "se on 'ew (ro,ect estiver ha(ilitada+ o quadro de dialogo Jorms =aller; aparece quando
voc1 selecionar 'ew 5orm no menu 5ile' % quadro de dialogo Jorms =aller; aparece+ como segue3
(assos para #dicionar m )emplate a m (ro,eto
5ara adicionar um template de form ao pro,eto+ primeiro voc1 deve ter um pro,eto a(erto' Bma ve) a(erto o
pro,eto+ e#ecute os passos a seguir para adicionar um template ao pro,eto3
(asso #01o
> Eo menu Jile+ selecione Eew Jorm' % quadro de dialogo $rowse =aller; aparece'
A Ea p-gina Hemplate+ selecione o template apropriado'
C De um clique em %W'
Bma c/pia do form e arquivos unit associados s*o adicionados ao seu pro,ect'
'utorial> (dicionando u Quadro So)reEEE
Introd01o
Eeste Hutoria+ voc1 utili)ar- a Jorms =aller; para adicionar um template de form ao seu pro,eto' 2
Jorms =aller; cont.m diversos templates de form para os tipos mais comuns' Bm template utili)ado
na maioria das aplicaes . o quadro So(re''' % quadro So(re''' . uma caracterstica padr*o que os
desenvolvedores adicionam a maioria dos programas Windows'
/st&ios do )torial
!ste tutorial envolve os seguintes est-gios3
L7
InforBRs - Informtica Brasileira Ltda.
/st&io (rocesso
> 2dicione um form So(re'''utili)ando o template 2(out'
A &odificar o design do form'
C !#i(ir o form So(re'''
%s templates de form efetuam o primeiro est-gio e parte do segundo por voc1'
(assos para o /st&io >
!#ecute os passos a seguir para adicionar um quadro So(re utili)ando o template de form 2(out$o#'
(asso #01o
> 2(ra um novo pro,eto e grave o arquivo de unit como B2$%BH'52S . o arquivo de pro,eto como
52$%BH'D58'
A Eo menu 5ile+ selecione 'ew 5orm'
% quadro de dialogo $rowse =aller; aparece'
Se a $rowse =aller; n*o aparecer+ voc1 seleciona no menu Options+ /nvironment' 6ocali)e a
p-gina 5reference+ e no grupo =aller;+ ha(ilite "se on 'ew 5orm'
C Selecione o template #+ot Bo3 na =aller;+ e de clique em OB'
Bma nova unit . um novo form s*o adicionados ao pro,eto'
*assos para o Est-+io %
!#ecute os passos a seguir para modificar o design do form 2(out$o#3
(asso
> Btili)e os valores a seguir para a propriedade Caption dos componentes 6a(el no %(,ect Inspector'
Componente (ropriedade !alor
5roductEame Caption !#emplo de Duadro So(re a 2plica*o
0ersion Caption 0ers*o 1'>
Cop;8ight Caption Cop;right 1FFL
Comments Caption Hutorial de Duadro So(re 2plica*o
*assos para o Est-+io 8
5ara e#i(ir o form+ o primeiro passo . adicionar o identificador da unit do quadro So(re''' O cl-usula
uses da unit que ir- e#i(ir o quadro' Depois+ utili)e o m.todo Show&odal ou Show em um event
handler para e#i(ir o form'
(asso #01o
> 2dicione o identificador da Bnit+ Bnit:+ a cl-usula uses da unit a(out+ como mostrado na figura a
seguir3
L<
InforBRs - Informtica Brasileira Ltda.
(asso #01o
A 2dicione um (ot*o ao form principal Jorm1"' 8otule este (ot*o+ como So(re como na figura a
seguir'
(asso #01o
C Crie um event handler para o evento %nClic4 do (ot*o So(re'
D Eo event handler+ digite a seguinte instru*o3 2(out$o#'Show&odalY % event handler parecera
com o seguinte3
LG
InforBRs - Informtica Brasileira Ltda.
(asso #01o
C Compile e grave sua aplica*o
D !#ecute e teste a aplica*o
?ravando u "or coo 'eplate
Introd01o
0oc1 pode gravar um form feito por voc1 como um template' !stes templates est*o disponveis para
serem utili)ados em outros pro,etos' =ravar um form como um template insere o form no quadro de dialogo
$rowse =aller;' 5ara gravar um form como template+ utili)e o Speed&enu do form e selecione Save 2s
template' De um nome+ descri*o e icone ao novo template' Se voc1 quiser especificar um icone para o
template+ voc1 pode selecionar um (itmap e#istente ou criar um pr/prio'
(assos para .ravar m 5orm como m )emplate
!#ecute os passos a seguir para gravar um form como um template3
(asso #01o
> D1 um clique com o (ot*o direito do mouse so(re o form para acessar o Speed&enu'
A Selecione Save #s )emplate'
% quadro de dialogo Save Jorm Hemplate aparece+ como segue3
C Eo campo )itle+ digite um nome para o novo template'
D Eo campo Description+ digite uma descri*o significativa do template'
E 5ara associar um icone ao template+ de um clique no (ot*o Browse'
G 6ocali)e e selecione o (itmap para associa9lo ao template+ e de um clique no OB'
I Eo quadro de dialogo Save 2s Jorm Hemplate+ de um clique em OB para gravar a informa*o e
saia'
LL
InforBRs - Informtica Brasileira Ltda.
Criando Quadros de Dialo+o
Introd01o
% Delphi permite criar um nQmero ilimitado de quadros de dialogo+ do mais simples ao mais comple#o' !ste
t/pico co(re a cria*o de quadros de dialogo simples+ tais como quadros de mensagem e de entrada de dados+
(em como criar um quadro de dialogo com um form em (ranco'
4adro de 9ensa&em
Bm quadro de mensagem . uma ,anela que e#i(e te#t' 0oc1 pode utili)-9la para3
!#i(ir informa*o
!#i(ir uma mensagem de erro ou aviso
Solicitar a confirma*o de uma a*o
5or e#emplo+ se o usu-rio tentar a aplica*o antes de grav-9la+ um quadro de mensagem deveria aparecer
solicitando informando o usu-rio que os dados devem ser gravados antes de fechar' 5ara que a aplica*o
continue+ o usu-rio deve remover o quadro de mensagem da tela manualmente+ geralmente com o clique de
um (ot*o'
5ara e#i(ir um quadro de mensagem simples+ utili)e a fun*o &essageDlg' % e#emplo a seguir mostra a
sinta#e da fun*o3
5unction Messa,eDl, /const Ms,2 Strin,1 A"ype2 "Ms,Dl,"ype1
A-uttons2 "Ms,Dl,-uttons1 9elp4t#2 Lon,.nt 02 :or1
/3plica01o dos (arNmetros de 9esa&eDl&
2 ta(ela a seguir e#plica os parPmetros utili)ados na sinta#e da fun*o &essageDlg3
(arNmetro /3plica01o
LM
InforBRs - Informtica Brasileira Ltda.
9s& 2 mensagem que voc1 quer e#i(ir uma constante string"
#)*pe Determina o tipo de quadro de mensagem que ira aparecer' %s valores possveis s*o3
mt:arnin,
!#i(e um quadro de mensagem com um ponto de e#clama*o em amareloZ"
mtError
!#i(e um quadro de mensagem com uma n*o vermelha
mt.nformation
!#i(e um quadro de mensagem com um sm(olo de informa*o em a)ul i"
mt4onfirmation
!#i(e um quadro de dialogo com um ponto de interroga*o em verde ["
#Bttons Determina quais (otes aparecer*o no quadro de mensagem' 2$uttons . do tipo
H&sgDlg$tns que . um tipo set' 0oc1 pode incluir diversos (otes dentro do set' % set pode
incluir os seguintes valores3
m(Xes
!#i(e um (ot*o com um chec4 mar4 em verde e o caption Xes
m(Eo
!#i(e um (ot*o com um circulo e uma (arra por dentro+ em vermelho e o caption Eo
m(%W
!#i(e um (ot*o com um chec4 mar4 em verde e o caption %W
m(Cancel
!#i(e um (ot*o com um ? em vermelho e o caption Cancel
m(Aelp
!#i(e um (ot*o com um ponto de interroga*o e o caption Aelp
m(XesEoCancel
!#i(e um con,unto que inclui os (otes Xes+Eo+ Cancel
m(%WCancel
!#i(e um con,unto que inclui os (otes %W e Cancel
@elpCt3 Determina qual tela de Aelp est- disponvel para o quadro de mensagem' Bm nQmero de
conte#to para um Aelp sensvel ao conte#to'
!alores de Retorno de 9essa&eDl&
%s valores de retorno para a fun*o &essageDlg indicam o tipo de (otes clicados pelo usu-rio' % valor de
retorno pode ser um dos seguintes3
mrEone
mr%W
mrCancel
mr2(ort
mr8etr;
mrIgnore
mrXes
mrEo
mr2ll
E!eplos de CDdi+o &tili2ando 0essa+eDl+
% c/digo de e#emplo a seguir ilustra o uso da fun*o &essageDlg3
Res 23 Messa,eDl,/ ; Sair a Aplica<(o ==> ? mt4onfirmation? @ mbO7? mb4ancel A? B 01
If Res 3 mbO7 'hen
Close)
Quadros Siples de Entrada de Dados
Bm quadro simples de entrada de dados requer uma linha de informa*o do usu-rio' Bm e#emplo de um
destes quadros . um que solicite uma senha' 5ara e#i(ir um quadro de entrada de dados+ utili)e as funes
Input$o# ou InputDuer;' 2 sinta#e para cada fun*o aparece+ como segue3
LN
InforBRs - Informtica Brasileira Ltda.
function .nput-o#/const A4aption? APrompt?ADfault2 strin,02 strin,1
function .nputCuery/const Acaption? Aprompt2 strin,1 var Dalue2 strin,02 -oolean1
E!plicao dos *arFetros de Input#o! e InputQuerA
2 ta(ela a seguir e#plica os parPmetros das funes Input$o# e InputDuer;3
(arNmetros /3plica01o
#Caption Determina o caption do quadro de di-logo
#(rompt Deternima o te#to de solicita*o ao usu-rio
#Defalt Determina a string e#i(ida quando o quadro aparecer
!ale Determina a string e#i(ida quando o quadro aparecer+ cont.m a string digitada pelo usu-rio
quando OB for clicado' Btili)ado por InputDuer;'
!alores de Retorno de InptBo3
2 fun*o Input$o# e#i(e um quadro de entrada e aguarda que o usu-rio digite um valor' % valor de retorno
de Input$o# . uma string' Btili)e a fun*o Input$o# quando n*o importa se o usu-rio escolher entre o (ot*o
%W ou Cancelar para dei#ar o quadro de dialogo' 2 fun*o InputDuer; e#i(e um quadro de entrada e
aguarda que o usu-rio digite um valor' InputDuer; retorna Hrue se o usu-rio escolher %W e Jalse se escolher
Cancelar'
5orms 9DI e SDI
Bma aplica*o &ultiple Document Interface &DI" . uma aplica*o com uma interface de ,anela principal+
ou ,anela pai+ que permite a a(ertura de diversos documentos+ ou ,anelas filhas'
Bma aplica*o Single Document Interface SDI" pode processar mais de um documento dentro de uma
,anela pai'
0oc1 pode implementar qualquer um de seus forms como &DI ou SDI' !m(ora voc1 possa criar um form
&DI ou SDI alterando a propriedade JormSt;le de um form e#istente+ . mais prov-vel que voc1 crie um
form &DI ou SDI utili)ando a =aller;'
*ropriedades dos Quadros de Di-lo+o
Duando voc1 cria um form no Delphi+ ele possui as seguintes caractersticas3
$otes de &a#imi)ar e &inimi)ar
&enu de Controle
$orda de 8ea,uste
!stas caractersticas s*o Qteis para quadros de dialogo n*o9modais+ mas desnecess-rias para quadros
modais' Bm quadro de dialogo n*o9modal . um quadro de onde o usu-rio pode remover o foco sem fecha9lo'
Bm quadro de dialogo modal requer que o usu-rio feche o quadro antes de continuar o tra(alho na
aplica*o' 0oc1 pode definir a propriedade $orderSt;le para (sDialog' !sta defini*o possui as seguintes
caractersticas3
8emover os (otes de &a#imi)ar e &inimi)ar
Jornecer um menu Controle com as opes 9over e 5echar
Hornar a (orda do form n*o9rea,ustavel com apar1ncia tridimensiaonal
(dicionando #otes de Coando
Se seu quadro de di-logo ser- utili)ado em estado modal+ voc1 deve oferecer (otes de comando dentro do
quadro' 5or e#emplo+ voc1 deve oferecer um (ot*o Sair que permite que o usu-rio saia do quadro de dialogo'
%s (otes de comando mais comuns incluem os seguintes3
Bm (ot*o Cancelar ou E*o que saia do quadro de dialogo sem gravar as alteraes
Bm (ot*o %W ou Sim que grave as alteraes e depois saia do quadro de dialogo
LF
InforBRs - Informtica Brasileira Ltda.
Bm (ot*o que tenha o foco por default para que o usu-rio possa pressionar a tecla !nter para aceitar o
(ot*o default
0oc1 pode utili)ar o componente $it$tn da p-gina 2dditional para criar v-rios destes (otes de comando' %
componente $it$tn permite que voc1 utili)e os (itmaps padres da $orland+ tais como um chec4 mar4 em
verde " para um (ot*o %W' 0oc1 pode selecionar o (itmap e caption padr*o que aparecem no (ot*o
definindo a propriedade Wind'
Definindo a Ordem de )a+
!m uma aplica*o sendo e#ecutada+ a ordem de Ha( . a seqRencia no qual o usu-rio pode mover9se entre os
componentes pressionando a tecla Ha(' 5ara permitir que os usu-rios utili)em a tecla Ha( para mover9se
pelos componentes+ voc1 deve definir a propriedade Ha(Stop de cada componente para Hrue' 5or default+ a
ordem de Ha( . definida de acordo com a ordem na qual voc1 inseriu os componentes no form' 0oc1 pode
alterar a ordem de Ha( default alterando a propriedade Ha(%rder do componente no %(,ect Inspector ou
utili)ar o quadro de dialogo !dit Ha( %rder'
(assos para Definir a Ordem de )a+
!#ecute os passos a seguir para definir a ordem de Ha( utili)ando o quadro de dialogo Ha( %rder3
(asso #01o
> Selecione o form contendo os componentes cu,a ordem de ta( voc1 queira definir'
A Eo menu /dit+ selecione Ha( %rder'
% quadro de dialogo !dit Ha( %rder aparece+ listando os componentes na ordem atual+ como no
e#emplo a seguir3
C Eo campo Controls listed in ta+ order+ selecione o controle componente"'
D Btili)e os (otes com as setas para cima e para (ai#o para reordenar a ordem dos componentes'
0oc1 tam(.m pode arrastar os componentes'
E Duando tiver terminado+ de um clique em OB'
M>
InforBRs - Informtica Brasileira Ltda.
Definindo o 5oco em 4adro de Dilo&o Drante o Desi&n
!m um quadro de dialogo+ somente um componente por ve) pode ter o foco' % foco pode ser definido
durante o design ou durante a e#ecu*o' Durante o design+ voc1 pode definir a propriedade 2ctiveControl do
quadro de dialogo a(rir' Se voc1 n*o especificar a propriedade 2ctiveControl+ o primeiro componente da
ordem de Ha( rece(er- o foco' !ntretanto+ isto n*o se aplica nas seguintes situaes3
% componente est- desa(ilitado
% componente n*o . visvel durante a e#ecu*o
2 propriedade Ha(Stop do componente est- definida para 5alse'
Definindo o "oco e u Quadro de Di-lo+o Durante a E!ecuo
Durante a e#ecu*o+ o usu-rio pode alterar o foco dos componentes automaticamente+ utili)ando a tecla Ha('
!ntretanto+ voc1 pode querer especificar que o foco se,a alterado de campo para campo utili)ando as teclas
de seta' 0oc1 pode utili)ar o m.todo SetJocus para especificar quais componentes rece(em o foco' 5ara
alterar o componente ativo durante a e#ecu*o+ digite o seguinte c/digo no event handler apropriado3
$componente%.Set5ocusY
5or e#emplo+ a instru*o a seguir especifica que $utton: . o componente ativo durante a e#ecu*o3
-utton6.Set5ocusY
Criando #enus
Introd01o
!m uma aplica*o+ os menus oferecem uma maneira dos usu-rios e#ecutarem comandos' % Delphi fornece
dois tipos de componentes menu3 &ain&enu e 5opup&enu' Durante o processo de especifica*o de um
menu+ voc1 utili)a um recurso dos componentes H&ain&enu e H5opup&enu chamado &enu Designer' %
&enu Designer permite criar um menu ou adicionar um menu ,- pronto ao seu form' 0oc1 tam(.m pode
utili)ar o &enu Designer para deletar+ editar ou reordenar itens do menu'
Duando utili)ar o &enu Designer para criar um menu+ voc1 pode visuali)ar seu menu como ele aparecera na
e#ecu*o sem ter que realmente e#ecut-9la'
#dicionando m 9en
5ara adicionar um menu a um form+ utili)e o &enu Designer' % &enu Designer permite definir um menu ou
adicionar um menu personali)ado ao seu form'
(assos para #dicionar m 9en
!#ecute os passos a seguir para adicionar um menu ao seu form durante o design3
(asso #01o
> Ea p-gina Standard da Component 5alette+ de um duplo9Clique no componente &ain&enu ou
5opup&enu' % componente . adicionado ao seu form'
A D1 um duplo9clique no componente menu para a(rir o &enu Designer' % &enu Designer e o
%(,ect Inspector aparecem+ como segue' 2 propriedade Eame no %(,ect Inspector e selecionada'
M1
InforBRs - Informtica Brasileira Ltda.
(asso #01o
C Digite o te#to para o primeiro item da (arra de menus na propriedade Caption do %(,ect Inspector'
D 5ressione /nter'
% primeiro item da (arra de menu aparece na (arra do form'
E 5ara adicionar itens ao menu+ digite o primeiro item na propriedade Caption'
G 5ressione /nter '
% nome do item de menu aparece endentado a(ai#o do item da (arra de menus'
I 8epita os passos G e L ate que voc1 tenha adicionado todos os itens de menu que voc1 queira para
seu primeiro menu'
J 5ara inserir o pr/#imo item da (arra de menus+ de um clique na (arra de menus e repita os passos
7 e <'
O 2dicione qualquer item ao segundo menu repetindo os passos G e L'
M:
InforBRs - Informtica Brasileira Ltda.
#dicionando Barras Separadoras
2dicionar uma (arra separadora insere uma linha entre itens de menu ou grupos de itens' 0oc1 pode utili)ar
arras separadoras para agrupar os itens logicamente ou criar uma que(ra visual na lista de itens' 5ara criar
uma (arra separadora+ digite um hifen 9" como propriedade Caption para este item' $arras separadoras
aparecem como segue3
@a+ilitando #cesso aos 9ens pelo )eclado
0oc1 pode permitir que os usu-rios acessem menus e comandos de menu atrav.s do teclado+ como segue3
Heclas de atalho
Heclas aceleradora
2 figura anterior tam(.m mostra um e#emplo de um menu com teclas aceleradoras e teclas de
atalho'
(dicionando 'eclas (celeradoras
Heclas aceleradoras permitem que o usu-rio acesse menus e comandos do menu utili)ando a tecla #lt
,untamente com a letra apropriada' 5or e#emplo+ para acessar o menu Jile+ o usu-rio pressionaria #lt=5'
0oc1 pode adicionar teclas aceleradoras ao seu menu precedendo a letra selecionada com o sm(olo P+
quando estiver digitando o caption do item' 5or e#emplo+ para adicionar um menu 2rquivo com a letra 2
como tecla aceleradora+ digite EArFui)o como caption do item de menu'
#dicionando )eclas de #talho
Heclas de atalho permitem que o usu-rio acesse comandos do menu utili)ando o teclado para ignorar os
menus' 5or e#emplo+ voc1 pode designar J1 como tecla para o comando Aelp' 0oc1 pode especificar atalhos
digitando um valor na propriedade ShortCut ou selecionando na lista da propriedade ShortCut'
% Delphi n*o fa) a checagem para assegurar que teclas aceleradoras ou atalhos n*o est*o
duplicados em sua aplica*o' Isto . responsa(ilidade do desenvolvedor'
M7
InforBRs - Informtica Brasileira Ltda.
(ropriedades #dicionais de 9en
0oc1 pode definir as seguintes propriedades de menu para alterar a apar1ncia dos menus em sua aplica*o'
Chec4ed
Definindo esta propriedade para )re+ um chec4 aparece pr/#imo ao item'
!na(led
Definindo esta propriedade para 5alse+ o item torna9se desa(ilitado+ ou acin)entado+ e o usu-rio
n*o poder- acessa9lo ou a qualquer um de seus su(menus'
Criando 9ens #ninhados
&uitos menus cont.m menus aninhados+ ou su(menus+ que fornecem ao usu-rio comandos adicionais para
serem selecionados' &enus aninhados s*o indicados por uma seta pr/#ima ao item na lista de itens' 0oc1
pode querer utili)ar menus aninhados para economi)ar espao vertical em sua aplica*o' Eo Delphi+ voc1
pode criar tantos menus aninhados quantos forem necess-rios'
"tili2ando o Spee9en do 9en Desi&ner
% Speed&enu do &enu Designer oferece acesso r-pido aos comandos mais utili)ados e opes de template
de menu' 0oc1 pode e#i(ir o Speed&enu dando um clique com o (ot*o direito do mouse na ,anela do &enu
Designer ou pressionando #lt=5>? enquanto o cursor estiver na ,anela do &enu Designer' % Speed&enu
aparece+ como segue3
Descri01o das Op08es do Speed9en
2 ta(ela a seguir descreve as opes no Speed&enu do &enu Designer3
Op01o Descri01o
Insert 2diciona uma locali)a*o de item de menu antes do cursor
Delete 8emove o item de menu selecionado
Create 9en Insere um item de menu a direita do item selecionado+ adiciona uma ponta de seta
para indicar um nvel de alinhamento de menu
Select 9en 5ermite selecionar um menu e#istente
Save #s )emplate 5ermite gravar um menu para utili)a*o posterior
Insert 5rom )emplate 5ermite adicionar um template de menu previamente criado ao menu atual
Delete )emplate 5ermite remover menus criados previamente
M<
InforBRs - Informtica Brasileira Ltda.
Insert 5rom Resorce 5ermite importar um menu de um arquivo de resource '8C" do Windows
(ssociando Eventos de 0enu co CDdi+o
Introd01o
Bma ve) criado um menu+ voc1 precisa associar ao evento %nClic4 de cada item'
0anipulando Eventos de itens de 0enu
% evento %nClic4 . o Qnico evento para itens de menu' % c/digo associado com o evento %nClic4 dos itens
dos menus ser*o e#ecutados quando o usu-rio selecionar o item'
0oc1 pode criar um event handler para qualquer item de menu dando um duplo9clique no item+ na ,anela do
&enu Designer e adicionando o c/digo dentro da instru*o (egin'''end'
#ssociando m Item de 9en a m 9aniplador de 9an /3istente
Se voc1 quiser reutili)ar c/digo+ voc1 pode associar um item de menu com um event handler ,- e#istente'
5ara isto+ v- para a p-gina !vents do %(,ect Inspector e a(ra a lista dos event handlers para o evento
%nClic4' 0oc1 pode selecionar qualquer um dos event handlers que aparecem na lista+ e o c/digo para aquele
event handler estar associado com o item de menu selecionado'
La*+ ,dicionando um 'emplate de (orm a sua ,plica!o
O+,etivo<
!ste la( refora sua ha(ilidade em3
Btili)ar um Hemplate de Jorm para adicionar um form
Digitar c/digo para e#i(ir um form
atri(uir teclas de atalho aos menus
Cen-rio
Eeste la( voc1 utili)ar- a aplica*o desenvolvida no la( 2dicionando Componentes Standard a uma
2plica*o para adicionar um quadro de dialogo So(re''' utili)ando um template de form'
Processo
Btili)e o processo a seguir para aplicar o que voc1 aprendeu3
/st&io (rocesso
> 2(ra o pro,eto chamado 562$G'D58' =rave o arquivo unit como B62$N'52S e o pro,eto como
562$N'D58'
Importante< Certifique9se de utili)ar o comando Save 5ile #s+ (em como Save (ro,ect #s no
menu 5ile'
A 2(ra o &enu Designer para &ain&enu1' 2dicione um separador e a palavra So(re no final do
menu 5ile'
C Btili)e um template de form para adicionar um quadro So(re a aplica*o' Certifique9se de gravar
este form com o nome BEIH:'52S'
D 2dicione uma tecla de atalho ao menu para que o usu-rio possa pressionar 5A para e#i(ir o
quadro So(re'
E 2dicione aceleradores para os itens #+rir e .ravar'
G 2dicione um event handler que e#i(a o from 2(out$o#'
I 2p/s compilar sua aplica*o+ grave9a' !#ecute e teste sua aplica*o'
MG
InforBRs - Informtica Brasileira Ltda.
$esuo do captulo
(ontos Chave
2p/s completar este captulo+voc1 aprendeu que3
Hemplates fornecem uma \planta] para os forms mais utili)ados+ e eles compem a Jorm =aller;'
0oc1 pode gravar uma c/pia de um form por voc1 como um template para ser utili)ado posteriomente em
outro pro,eto' =ravar um form como um template insere o form na lista de templates que voc1 pode
selecionar quando cria um novo form'
Duando voc1 cria um form+ ele possui as seguintes caractersticas3
$otes de &a#imi)ar e &inimi)ar
&enu Controle
$orda 8ea,ust-vel
%rdem de Ha( . a seqRencia na qual o usu-rio pode se mover de componente a componente
pressionando a tecla )a+'
&enus fornecem uma maneira de agrupar comandos' 0oc1 pode utili)ar o &enu Designer para criar ou
adicionar um menu predeterminado ao form'
)ermos e Defini08es
2 ta(ela a seguir . uma refer1ncia r-pida aos termos e#plicados neste captulo3
)ermo Defini01o
9DI &ultiple Document Interface+ uma aplica*o feita de uma ,anela
principal+ ou ,anela pai+ que permite a(rir diversos documentos ou
,anelas
Ordem de )a+ 2 seqRencia na qual um usu-rio pode se mover de componente a
componente pressionando a tecla Ha(
4adro de Dilo&o9odal Bm quadro de dialogo onde o usu-rio deve fechar antes de continuar a
utili)ar a aplica*o
4adro de Dilo&o '1o-9odal Bm quadro de dialogo que o usu-rio pode manter a(erto enquanto
continua a tra(alhar na aplica*o
SDI Single Document Interface+ uma aplica*o que pode processar mais que
um documento' &as os documentos est*o contidos de uma ,anela pai'
ML
InforBRs - Informtica Brasileira Ltda.
Captulo <
(dicionando Coponentes Standard G ua (plicao
Overview
!ste captulo co(re os componentes nas p-ginas Standard e 2dditional da Component 5alette' Cada um
destes componentes . descrito com propriedades+ eventos e m.todos significantes' 2o final do captulo+ voc1
aplicar- o que aprendeu para criar uma aplica*o utili)ando diversos componentes Standard'
Descrio dos Coponentes Standard
Introdu(o
Como mencionado anteriormente+ componentes Standard 5adr*o" s*o componentes tipicamente utili)ados
no desenvolvimento de aplicaes &S Windows' !les est*o nas p-ginas Standard e 2dditional da
Component 5alette a p-gina 2dditional cont.m componentes padr*o adicionais"'
Descri(o dos Componentes Standard
2 ta(ela a seguir descreve os componentes Standard na Component 5alette3
Qcone !isal (rop%sito (ropriedadesR/ventosRo 9Mtodos
Si&nificantes
9ain9en E*o 5ermite criar menus para um
form
53Items
532uto&erge
&3&erge
&3Bn&erge
(opp
9en
E*o 5ermite criar menus pop9up tipo
Speed&enu
53Items
535opBp&enu
MM
InforBRs - Informtica Brasileira Ltda.
532uto5opup
!3%n5opup
&35opup
La+el Sim !#i(e te#to+ tais como ttulos+ que
o usu-rio n*o pode acessar
53Caption
532lignment
532utoSi)e
53Hransparent
53JormControl
53WordWrap
/dit Sim !#i(e uma -rea onde o usu-rio
pode inserir ou alterar uma Qnica
linha de te#to
53He#t
53&odified
53&a#6ength
&3Select2ll
&3ClearSelection
9emo Sim !#i(e uma -rea onde o usu-rio
pode inserir ou alterar diversas
linhas de te#to
53He#t
53&odified
53&a#6ength
536ines
&32dd
&3Delete
Btton Sim Bm controle tipo (ot*o' %s
usu-rios d*o um clique no (ot*o
para iniciar
53Default
53Cancel
53&odal8esult
!3%nClic4
ChecFBo3 Sim 2presenta opes que o usu-rio
pode ha(ilitar ou desa(ilitar
53Chec4ed
53Caption
532llow=ra;ed
53State
!3%nClic4
Radio
Btton
Sim 2presenta opes e#clusivas
mutuamente
53Chec4ed
53Caption
!3%nClic4
ListBo3 Sim !#i(e uma lista de escolhas 53ItemInde#
53Columns
53&ultiSelect
53Selected
53Items
&32ddK
&3DeleteK
&3InsertK
K Items propert;
HStrings o(,ect"
Com+o
Bo3
Sim Com(ina um edit (o# e uma list
(o# para e#i(ir uma lista de
escolhas
53He#t
53ItemInde#
53Sorted
53Items
&3addK
&3DeleteK
&3InsertK
K Items propert;
HStrings o(,ect"
ScrollBar Sim &ove atrav.s de uma fai#a de
incrementos
53Wind
536argeChange
53SmallChange
53&in
53&a#
535osition
!3%nScroll
MN
InforBRs - Informtica Brasileira Ltda.
&3Set5arms
.ropBo3 Sim 2grupa componentes+ geralmente
utili)ado para representar um
grupo de opes relacionadas
53Caption
535arent
Radio
.rop
Sim 2grupa radio (uttons para que
tra(alhem em con,unto como um
grupo
53Columns
53Items
53ItemInde#
(anel Sim !#i(e um painel onde outros
componentes podem ser inseridos
532lign
532lignment
53Caption
Descri(o da P)#ina de Componentes dditional
2 ta(ela a seguir descreve os componentes na p-gina 2dditional da Component 5alette3
Qcone !isal (rop%sito (ropriedadesR /ventosR o 9Mtodos
Si&nificantes
BitBtn Sim Jornece um (ot*o que e#i(e um (itmap
no (ot*o
53Wind
53=l;ph
53Default
53Cancel
53&odal8esult
!3%nClic4
Speed
Btton
Sim Jornece um (ot*o para representar um
processo
53=l;ph
53Eum=l;phs
536a;out
53&argin
)a+Set Sim Cria a(as de um Eote(oo4 para dar
apar1ncia de p-ginas
53Ha(s
53Ha(Inde#
53JirstInde#
532lign
'ote+ooF Sim Jornece uma pilha de diversas p-ginas
Btili)adas em com(ina*o com o
componente Ha(Set"
535ages
535ageInde#
532ctive5age
&3%nClic4
)a++ed
'ote+ooF
E*o Cria um quadro de di-logo com diversas
p-ginas com a(as para agrupar
informaes
532ctive5age
535ages
535ageInde#
53Ha(Jont
53Ha(s5er8ow
&3=etInde#Jor5age
&3SetHa(Jocus
9asF/dit Sim !#i(e uma -rea onde o usu-rio pode
inserir ou alterar te#to utili)ando
somente caracteres v-lidos especificados
pela propriedade !dit&as4
53He#t
53!dit&as4
53!ditHe#t
53&a#6ength
Otline Sim !#i(e informa*o em formas variadas de
t/picos
53CurItem
53Items
&32ddK
&3DeleteK
&3InsertK
K Itens%(,eto HStrings"
Strin&.rid Sim Jornece uma maneira de e#i(ir strings
em colunas e linhas
53Cells
53%(,ects
53Cols
MF
InforBRs - Informtica Brasileira Ltda.
538ows
Draw.rid Sim Jornece uma maneira de e#i(ir
informa*o gr-fica em linhas e colunas
53DefaultDrawing
53Selection
!3%nDrawCell
&3Cell8ect
&3&ouseHoCell
Ima&e Sim !#i(e um (itmap+ cone+ ou metafile 535icture
532utoSi)e
53Stretch
Shape Sim !#i(e forrnas geom.tricas+ tais como
elipses+ retPngulo ou retPngulo com
cantos arredondados
53Shape
532lign
53ColorK
53St;leK
K%(,ect H$rush"
Bevel Sim Jornece um retPngulo com linhas ou
(ordas em alto ou (ai#o rel1vo
53Shape
53St;le
532lign
@eader Sim Jornece um controle seccionado que
e#i(e te#to e permite que cada se*o se,a
rea,ustada utili)ando9se o mouse' 5ode
ser utili)ado com o componente grid para
e#i(ir ca(ealhos de colunas
53Componentes
53Sections
ScrollBo3 Sim !#i(e uma -rea que pode ser rolada 53Aor)Scroll$ar
530ertScroll$ar
&3ScrollIn0iew
6a)> Criando ua (plicao &sando Coponentes
Standard
Objetivos
!ste la( refora sua ha(ilidade em3
2dicionar diversos componentes Standard ao form
2dicionar componentes em um painel
Digitar e e#i(ir Aelp Aints
2ssociar event handlers com components
Btili)ar um m.todo de um componente
Cen)rio
0oc1 desenvolver- um programa de (loco de notas' !ste programa permitir- digitar te#to+ recortar e colar
te#to+ gravar e a(rir um arquivo te#to' Eo processo de constru*o desta aplica*o voc1 utili)ar- os seguintes
componentes das p-ginas Standard e 2dditional da Component 5alette3
&emo
&ain&enu
!dit
6a(el
5anel
Speed$utton
Processo
Btili)e a seguir para aplicar o que voc1 aprendeu3
N>
InforBRs - Informtica Brasileira Ltda.
/st&io (rocesso
> 2(ra um novo pro,eto' =rave o pro,eto nomeando o arquivo unit como B62$G'52S+ e o arquivo
de pro,eto como 562$G'D58'
A Crie um menu principal com itens drop9down utili)ando os seguintes modelos3
#r$ivo
Eovo
2(rir
=ravar
Sair
/ditar
8ecortar
Copiar
Colar
/st&io (rocesso
C 2dicione os seguintes componentes3
5anel
&emo
6a(el
!dit
8ea,uste o tamanho dos componentes para que seu form este,a similar ao da figura a seguir3
/st&io (rocesso
D Defina as seguintes propriedades para os componentes do form3
'ome do Componente (ropriedade !alor
(anel> Caption
2lign
0a)io "
alHop
La+el> Caption Eome do 2rquivo3
/dit> He#t
Eame
0a)io "
!dit$o#
9emo> 6ines 0a)io "
N1
InforBRs - Informtica Brasileira Ltda.
5orm> Caption $loco de Eotas
/st&io (rocesso
E 2dicionar event handlers para os itens RecortarR Copiar e Colar no menus que ir*o recortar+
copiar+ e colar te#tos no componente memo'
Btili)e os m.todos CutHoClip(oard+ Cop;HoClip(oard+ e 5asterJromClip(oard do componente
H&emo'
Btili)e o Aelp para ver como estes m.todos s*o utili)ados e quais parPmetros se houver"
necess-rios'
G 2dicione um event handler %nClic4 para o item Sair
do menu que fehar- a aplica*o inteira'
I Compile e grave sua aplica*o e e#ecute9a para testar
J % componente &emo cont.m um o(,eto HString chamado 6ines que cont.m o te#to do o(,eto
memo' Hr1s m.todos disponveis para o(,etos HStrings s*o3
96oadJromJile
9SaveHoJile
9Clear
5rocure por e#emplos no Aelp e utili)e9os para adicionar event handlers para os itens 'ovoR
#+rirR e .ravar do menu #r$ivo'
Dica3 Bse o m.todo Clear para o item 'ovo do menu'
Btili)e o valor digitado na propriedade He#t do !dit$o# como nome de arquivo' 5or e#emplo+ o
event handler de SaveClic4 deve ser similar ao c/digo a seguir3
(rocedre HJrom1'=ravar1Clic4Sender3 %(,ect"Y
+e&in
if !dit$o#'He#t ^ _ Sthen
&emo1'6ines'SaveHoJile!dit$o#'He#t"Y
endY
/st&io (rocesso
O Compile+ grave e e#ecute sua aplica*o para test-9la'
>? 2dicione tr1s Speed$uttons no 5anel de seu from'
Eomeie9os como segue3
'ome do Componente (ropriedade !alor
SpeedBtton> Eome s(2rquivoEovo
SpeedBttonA Eome s(2rquivo2(rir
SpeedBttonC Eome s(2rquivo=ravar
/st&io (rocesso
>> Btili)e %(,ect Inspector para associar cada um dos Speed$uttons com (itmap' 2ssocie os (itmaps
como segue3
'ome do Componente (ropriedade 'ome do #r$ivo
s+#r$ivo'ovo =l;ph JI6!E!W'$&5
s+#r$ivo#+rir =l;ph JI6!%5!E'$&5
s+#r$ivo.ravar =l;ph JI6!S20!'$&5
/st&io (rocesso
>A Btili)e a p-gina !vents do %(,ect Inspector para associar cada um dos Speed$uttons como event
handler apropriado' 2ssocie as procedures como segue3
'ome do Componente /vento /vent @andler
s+#r$ivo'ovo %nClic4 Eovo1Clic4
s+#r$ivo#+rir %nClic4 2(rir1Clic4
N:
InforBRs - Informtica Brasileira Ltda.
s+#r$ivo.ravar %nClic4 =ravar1Clic4
/st&io (rocesso
>C Btili)e o %(,ect Inspector para digitar um Aint para cada um dos Speed$uttons' Btili)e a ta(ela a
seguir3
'ome do Componente @int
s+#r$ivo'ovo Eovo
s+#r$ivo#+rir 2(rir
s+#r$ivo.ravar =ravar
/st&io (rocesso
>D Defina a propriedade ShowAints do componente 5anel para Hrue'
>E Compile+ grave e e#ecute sua aplica*o para test-9la'
Sua aplica*o deve estar similar O figura a seguir' =rave seu pro,eto' !le ser- utili)ado
novamente em la( posterior'
(rocesso Opcional
Siga os processos para pr-tica adicional+ se o tempo permitir3
/st&io (rocesso
> 2dicione um componente 5opup&enu contendo os seguintes itens de menu3
8ecortar
Copiar
Colar
=ravar
Sair
A 2tri(ua este menu pop9up O propriedade 5opup&enu do componente H&emo &emo1"'
C 2ssocie os event handler apropriados aos itens do menu pop9up'
D Compile+ grave e e#ecute sua aplica*o para test-9la' Duando chamar o menu pop9up+ sua
aplica*o deve estar similar O figura a seguir3
N7
InforBRs - Informtica Brasileira Ltda.
$esuo do Captulo
Pontos Chave
2p/s completar este captulo+ voc1 aprendeu que3
Componentes Standard s*o componentes utili)ados em aplicaes tpicas do &S Windows'
%s componentes da p-gina 2dditional s*o componentes Standard adicionais'
Termos e Definies
2 ta(ela a seguir . uma refer1ncia r-pida aos termos apresentados neste Captulo
)ermo Defini01o
@elp @int % significado de um (ot*o que aparece quando voc1 passa com o ponteiro do mouse so(re um
(ot*o
N<
InforBRs - Informtica Brasileira Ltda.
Captulo H
(r/uitetura de (cesso a Dados do Delphi
Overview
Btili)ando o Delphi+ voc1 pode criar aplicaes de (ancos de dados que tra(alhem diretamente com (ancos
de dados des4top ou servidores de (ancos de dados remotos+ tais como %racle+ S;(ase+ e (ancos de dados
padr*o %D$C' !ste captulo o introdu) O arquitetura das aplicaes Client/Server+ (em como as ferramentas
utili)adas para constru9las'
Caractersticas e Capacidades de #ancos de
Dados
Introdu(o
0oc1 pode construir uma aplica*o de (ancos de dados utili)ando as ferramentas de desenvolvimento de
(anco de dados do Delphi+ componentes Data 2ccess e Data Control' !m uma aplica*o de (ancos de dados
Delphi+ os componentes se comunicam com o $orland Data(ase !ngine $D!"+ que por sua ve)+ comunica9
se com suas outras fontes3
Dados locais+ tais como d$2S!+ 5arado#+ e Inter$ase for Windows
Dados remotos+ tais como %racle+ S;(ase+ e Inter$ase
0elacionamento entre o Delphi e a Conectividade de Banco de Dados
% diagrama a seguir mostra o relacionamento entre as ferramentas do Delphi+ aplicaes de (anco de dados
do Delphi+ o $D!+ e os dados3
%s t/picos restantes deste captulo fornecem maiores detalhes so(re o relacionamento mostrado neste
diagrama'
NG
InforBRs - Informtica Brasileira Ltda.
"erraentas de #ancos de Dados
Introdu(o
0oc1 pode utili)ar diversas ferramentas de (ancos de dados na constru*o deste tipo de aplica*o'
!erramentas de Bancos de Dados
2s ferramentas a seguir permitem construir aplicaes de (anco de dados que podem tra(alhar com arquivos
de dados locais ou em um servidor de rede local3
$orland Data(ase !ngine $D!"
SD6 6in4s
Data(ase Des4top
Componentes Data 2ccess
Componentes Data Control
#orland Data)ase En+ine I#DEJ
Introdu(o
% $orland Data(ase !ngine $D!" . construdo no Delphi para oferecer uma cone#*o entre controles Data
2ccess e dados de v-rias fontes como 5arado#+ d$2S!+ %racle+ e Inter$ase' $ancos de dados+ linguagens e
ferramentas da $orland compartilham o mesmo $orland Data(ase !ngine' !ste design em comum permite
que os componentes se,am intercam(iados para construir um am(iente de aplica*o Client/Server que atenda
Os suas necessidades'
0elacionamento entre o BD% e Outros Produtos Borland
% $orland Data(ase !ngine . um componente integral do d$2S! for Windows+ 5arado# for Windows+
Delphi+ e 8eportSmith' Ham(.m est- disponvel como (i(lioteca 25I de engine de (anco de dados para
programadores C e CII'
% diagrama a seguir mostra o relacionamento entre o $orland Data(ase !ngine e os diversos produtos
$orland3
NL
InforBRs - Informtica Brasileira Ltda.
% $orland Data(ase !ngine permite que ferramentas e aplicaes $orland conectem transparentemente O
dados residindo no d$2S!+ 5arado# + %racle+ S;(ase+ Inter(ase+ Informi#+ D$:+ e qualquer (anco de dados
que utili)em o %pen Data(ase Connectivit; %D$C"'
SQ6 6inBs
Introdu(o
% SD6 6in4s d- Os suas aplicaes Delphi acesso a dados locali)ados em servidores Wor4group (aseados em
SD6+ incluindo S;(ase+ voc1 pode construir comandos SD6 e pass-9los atrav.s de um diver SD6 6in4 ao
servidor para e#ecu*o'
Criando liases
Bm 2lias consiste de um nome e con,unto de parPmetros que descrevem recursos de rede e especificam a
locali)a*o das ta(elas do (anco de dados' Bm alias . necess-rio para acessar (anco de dados SD6'
!m(ora voc1 possa personali)ar um alias ap/s cri-9lo+ . mais f-cil escolher parPmetros do diver que
com(inem com sua instala*o servidora antes de criar os aliases para (ancos de dados SD6' Desta forma+
qualquer alias que voc1 crie herdam estes parPmetros'
Confi#urando o mbiente S12
% diver SD6 6in4 utili)a os parPmetros default quando instalado pela primeira ve)' Como os parPmetros do
SD6 6in4 para seu diver serve como modelo para cada alias que voc1 crie+ voc1 deve determinar se estes
parPmetros est*o corretos para sua instala*o servidora antes de criar aliases para seu (anco de dados SD6'
5ara modificar seu am(iente SD6+ utili)e o $D! Configuration Btilit; $D!CJ='!?!" instalado com o
Delphi' %s aliases s*o arma)enados no arquivo de configura*o ID25I ID25I'CJ="'
Data)ase DesBtop
Introdu(o
% Data(ase Des4top D$D" . uma ferramenta de defini*o e manuten*o de (anco de dados que lhe
permitem consultar+ criar+ reestruturar+ modificar e copiar ta(elas de (anco de dados' % Data(ase Des4top
tam(.m pode copiar dados e informaes do dicion-rio de dados de um formato para outro'
Iniciali/ando o Database Des3top
0oc1 pode iniciali)ar o Data(ase Des4top no =erenciador de 5rogramas+ d1 um duplo9clique so(re o cone
do Data(ase Des4top no grupo de programa Delphi' Duando selecionar uma ta(ela+ a ta(ela aparece na
,anela do Data(ase Des4top+ como mostrado no e#emplo a seguir3
NM
InforBRs - Informtica Brasileira Ltda.
4ovos 0ecursos do Database Des3top
% Data(ase Des4top cont.m as seguintes melhorias3
Recrso Descri01o
9en "tilities % Data(ase Des4top agora inclui um menu Btilities com os seguintes comandos3
2dd
2diciona registros de uma ta(ela em outra ta(ela
Cop;
Cria uma c/pia de uma ta(ela+ quer; D$!+ ou comando SD6
Delete
Deleta uma ta(ela+ quer; D$!+ ou comando SD6
!mpt;
8emove todos os registros de uma ta(ela
5asswords
5ermite adicionar e remover senhas da lista de senhas utili)adas na sess*o atual
8ename
2ltera o nome de uma ta(ela+ quer; D$!+ ou comando SD6
Sort
%rdena os dados em uma registros que e#istam em outra ta(ela
Su(stract
8emove de uma ta(ela de registro que e#istam em outra ta(ela
SD6 0oc1 pode utili)ar os seguintes comandos com ta(elas SD63
2dd
Cop;
Delete
!mpt;
NN
InforBRs - Informtica Brasileira Ltda.
2cesso SD6 est- disponvel para operaes de queries e ta(elas+ incluindo cria*o e
reestrutura*o' 0oc1 pode e#ecutar comandos SD6 utili)ando o SD6 !ditor'

Documenta(o do Database Des3top
% Delphi fornece a seguinte documenta*o do Data(ase Des4top3
Docmenta01o Descri01o
Online @elp Documenta*o completa do Data(ase Des4top com os
recursos usuais de help atrav.s da tecla J1+ procura de
t/picos e help sensvel ao conte#to' 2l.m disso muitos
t/picos possuem help orientado O tarefa
Delphi Data+ase #pplication DeveloperTs .ide Documenta*o completa so(re o desenvolvimento de
aplicaes com um ap1ndice que resume os recursos do
Data(ase Des4top
Data+ase DesFtop "serTs .ide Documenta*o completa so(re a utili)a*o do Data(ase
Des4top+ disponvel no CD98%& do Delphi

Descrio dos Coponentes Data (ccess
Introdu(o
%s componentes Data 2ccess est*o na p-gina Data 2ccess da Component 5alette' !stes componentes
permitem construir aplicaes de (ancos de dados' !les+ ,untamente com os componentes Data Control+ s*o
componentes data9aware' Componentes data9aware s*o componentes que tem ci1ncia de dados e sua
estrutura em um (anco de dados'
Duando voc1 constr/i uma aplica*o de (anco de dados+ voc1 insere componentes Data 2ccess em form e
atri(ui propriedades que especificam o (anco de dados+ ta(elas e registros a serem utili)ados com este form'
&uito em(ora componentes Data 2ccess n*o se,am visveis durante a e#ecu*o+ eles tra(alham em segundo
plano para regular o acesso aos dados'%s componentes Data 2ccess aparecem na Component 5alette'
Descri(o dos Componentes Data ccess
2 ta(ela a seguir descreve os componentes Data 2ccess na Component 5alette3
Qcone !isal (rop%sito (ropriedadesR /ventosR o
9Mtodos Si&nificantes
)DataSorce E*o 2tua como um canal entre um o(,eto Hta(le ou
Hquer; e componentes de edi*o de dados como
HD$=rid
532uto!dit
53State
53!na(le
53Dataset
53%nDataChange
!3%nBpdateData
&3!dit
))a+le E*o 8ecupera dados de ta(elas de (ancos de dados
atrav.s do $D! e os passa para um ou mais
componentes data9aware
53Data(aseEame
53Ha(leEame
538ead%nl;
53!#clusive
53Inde#Eame
53Hag
53&asterJields
53&asterSource
&3=otoCurrent
)4er* E*o Btili)a comandos SD6 para recuperar dados de uma 53SD6
NF
InforBRs - Informtica Brasileira Ltda.
ta(ela atrav.s do $D!+ ou utili)a comandos SD6
para enviar dados de um componente a um (anco de
dados atrav.s do $D!
53DataSource
536ocal
535aramCount
535aram
53Bnidirectional
53!#ecSD6
Stored(roc E*o 5ermite que aplicaes e#ecutem stored procedures
do servidor
53Data(aseEame
&35repare
&3!#ec5roc
&3%pen
)Data+ase E*o Define uma cone#*o contnua O um (anco de dados 532ctive
53Data(aseEame
53Aandle
535assWord
&3Close
&3Create
&3Destro;
&3%pen
)Bacth9ove E*o Copia a estrutura de uma ta(ela e seus dados ' 5ode
ser utili)ado para mover ta(elas inteiras de um
(anco de dados a outro
53&ode
53Source
53Destination
53ChangedHa(le Eame
53We;0iolHa(le Eame
535ro(lemHa(le Eame
&3!#ecute
)Report Sim 5ermite a cria*o e impress*o de relat/rios de
(ancos de dados atrav.s do 8eportSmith
538eportEame
538eportDir
535review
538un
532utoBnload
53Bnitial0alues
&38un&acro
&3Connect
&3Set0aria(le
&38eCalc8eport
Descrio dos Coponentes Data Control
Introdu(o
%s componentes Data Control d*o Os suas aplicaes Delphi de (anco de dados uma interface visual
consistente+ quer sua aplica*o acesse um arquivo de (anco de dados local ou um servidor remoto'
$aseado na instala*o padr*o+ os componentes Data Control est*o locali)ados na p-gina Data Controls da
Component 5alette' !stes componentes fornecem um con,unto de componentes data9aware de interface de
usu-rio+ que voc1 pode utili)ar para criar aplicaes (aseadas em forms' Como mencionado anteriormente+
os componentes Data Control e Data 2ccess s*o data9aware'
2l.m da fun*o de um componente Standard+ componentes Data Control tam(.m podem e#i(ir dados de um
campo de uma ta(ela de um (anco de dados ou enviar dados O uma ta(ela de um form' %s componentes Data
Control aparecem na Component 5alette'
Descrio dos Coponentes Data Control
2 ta(ela a seguir descreve os componentes Data Control na Component 5alette3
F>
InforBRs - Informtica Brasileira Ltda.
Qcone !isal (rop%sito (ropriedadesR /ventosR o
9Mtodos Si&nificantes
)DB.rid Sim 5ermite visuali)ar e editar dados em
formato ta(ular tipo planilha"' Ja) uso
e#tensivo das propriedades do Hfield para
determinar a visi(ilidade de uma coluna+
modo de e#i(i*o+ e assim por diante'
53%ptions
538ead%nl;
53Jields
53SelectedJield
53JieldCount
)DB'avi&ator Sim 5ermite fa)er o seguinte3
9&over o ponteiro de registro da ta(ela
atual para frente ou tr-s
9Iniciar o modo Insert ou !dit
9!fetuar a inser*o de registros novos ou
modificados 5ost"
53Data Source
530isi(le$uttons
)DBLa+le Sim 5ermite e#i(ir um campo de um registro
atualmente ativo' T a vers*o data9aware do
componente H6a(el
53DataSource
53DataJield
53Caption
53JocusControl
532lignment
532utoSi)e
53WordWrap
53Hransparent
)DB/dit Sim 5ermite e#i(ir ou editar um campo de um
registro ativo' T a vers*o data9aware do
componente H!dit
53DataSource
53DataJield
53!dit&as4
53&odified
53&a#6ength
538ead%nl;
532utoSelect
53SelHe#t
53SelStart
53Sel6entgh
535assWordChar
532utoSi)e
&3Select2ll
&3ClearSelection
&3CutHoClip(oard
&3Cop;toClip(oard
&35asterJrom Clip(oard
)DB9emo Sim 5ermite e#i(ir ou editar $6%$s de um
registro ativo' T a vers*o data9aware do
componente H&emo
53DataSource
53DataJield
53He#t
538ead%nl;
53&odified
53&a#6ength
536ines
53SelHe#t
53SelStart
53Sel6ength
535assWordChar
532utoSi)e
53Scroll$ars
53WordWrap
53WantHa(s
53&32dd
&3Delete
&3Insert
&3CutHoClip(oard
&3Cop;HoClip(oard
F1
InforBRs - Informtica Brasileira Ltda.
&35asterJromClip(oard
&3Select2ll
)DBIma&e Sim 5ermite e#i(ir+ recortar+ ou colar imagens
(itmap $6%$ para e de um registro ativo'
T a vers*o data9aware do componente
HImage
53DataSource
53DataJield
535icture
532utoDispla;
)DBListBo3 Sim 5ermite e#i(ir valores de uma coluna de
uma ta(ela' T a vers*o data9aware do
componente H6ist$o#
538ead%nl;
53DataJield
53Items
53ItemInde#
&32dd
&3Delete
&3Insert
)DBCom+o
Bo3
Sim 5ermite e#i(ir ou editar valores de uma
coluna de uma ta(ela' T a vers*o data9
aware do componente HCom(o$o#
538ead%nl;
53DataSource
53DataJield
53Items
53ItemInde#
53Sorted
53SelHe#t
53SelStart
53Sel6ength
&32dd
&3Delete
&3Insert
&3Select2ll
)DBChecF
Bo3
Sim 5ermite e#i(ir ou editar um campo de dado
$ooleano de um registro ativo' T a vers*o
data9aware do componente HChec4$o#
53DataSource
53DataJield
530alueChec4ed
530alueBnchec4ed
538ead%nl;
)DBRadio.rop Sim 5ermite e#i(ir ou definir valores de
colunas' T a vers*o data9aware do
componente H=roup$o# populado com
radio (uttons
53DataSource
53DataJield
53Items
530alue
538ead%nl;
)DBLooFpList Sim 5ermite e#i(ir dados de uma ta(ela de
(usca durante a e#ecu*o' T a vers*o data9
aware do componente H6ist$o#
53DataJield
53DataSource
536oo4upDispla;
536oo4upJield
)DBLooFpCom+o Sim 5ermite e#i(ir dados de uma ta(ela de
(usca durante a e#i(i*o' T a vers*o data9
aware do componente HCom(o$o#
536oo4upSource
536oo4upJield
536oo4upDispla;
53DataSource
53DataJield
$esuo do Captulo
Pontos Chave
2p/s completar este captulo+ voc1 aprendeu que3
Eo Delphi+ voc1 pode desenvolver uma aplica*o de (anco de dados que tra(alhe diretamente com um
(anco de dados local (aseado em 5C" e (ancos de dados remotos SD6"'
%s componentes Data 2ccess e Data Control s*o componentes data9aware'
0-rias ferramentas permitem construir aplicaes de (ancos de dados' !st*o includas3
F:
InforBRs - Informtica Brasileira Ltda.
5erramenta Descri01o
Borland Data+ase /n&ine
KBD/L
Jornece uma cone#*o entre os controles Data 2ccess e dados de um servidor
de (anco de dados remoto+ no
servidor de rede local ou local
Data #ccess Components Componentes na p-gina Data 2ccess da Component
5alette que permitem construir uma aplica*o de (anco de dados
Data Control Components Componentes na p-gina Data Controls da Component 5alette que permitem
construir uma aplica*o de (anco do dados
Data+ase DesFtop KDBDL Bma ferramenta de defini*o e manuten*o de dados que permite pesquisar+
criar+ reestruturar+ modificar e copiar ta(elas de (anco de dados
S4L LinFs Jornece acesso SD6 aos dados locali)ados em servidores remotos Os suas
aplicaes Delphi
Termos e Definies
2 ta(ela a seguir . uma refer1ncia r-pida aos termos e#plicados neste captulo 3
)ermo Defini01o
#lias Bm nome e um con,unto de parPmetros que descrevem um recurso de rede local e especifica a
locali)a*o das ta(elas de (anco de dados 'T necess-rio um alias para acessar um (anco de
dados SD6
BLOB $inar; 6arge %(,ect
Data
aware
Her ci1ncia dos dados e sua estrutura em um (anco de dados
DBD Data(ase Des4top+ uma ferramenta e defini*o e manuten*o de dados que permite pesquisar+
criar+ reestruturar+ modificar e copiar ta(elas de (ancos de dados
ODBC %pen Data(ase Connectivit;
Captulo K
(dicionando Coponentes de #anco de Dados G ua (plicao
Overview
%s componentes de (anco de dados e suas capacidades descritas neste captulo fornecem as ferramentas
necess-rias para a cria*o de aplicaes que utili)em (ancos de dados local+ (aseado em 5C e remotos+
(aseados em servidores SD6'
F7
InforBRs - Informtica Brasileira Ltda.
!ste captulo aplica os componentes de (anco de dados descritos no captulo anterior" no desenvolvimento
de uma aplica*o' !stes componentes est*o nas p-ginas Data 2ccess e Data Controls da Component 5alette'
Conceito de u DataSet no Delphi
Introdu(o
5ara manipular e consultar (ancos de dados+ voc1 precisa entender o conceito de dataset' Bm dataset no
Delphi . um o(,eto que consiste de uma s.rie de registros+ cada um contendo qualquer quantidade de campos
e um ponteiro para o registro atual' % dataset pode ter uma correspond1ncia direta+ um9para9um+ com uma
ta(ela fsica+ ou+ como um resultado de uma quer;+ pode ser um su(con,unto de uma ta(ela ou uma ,un*o de
diversas ta(elas'
Tipo de Objeto TDataSet
Bm dataset no Delphi . o tipo de o(,eto HDataSet e . uma classe a(strata' Bma classe a(strata . uma classe
de onde voc1 pode derivar outras classes+ mas n*o pode criar uma vari-vel desta classe' 5or e#emplo+ am(os
os componentes Duer; e Ha(le classificam9se como componentes HDataSet porque cada um foi derivado do
o(,eto HDataSet' Eote que voc1 n*o encontrar- nenhum componente chamado HDataSet na Component
5alette' % HDataSet cont.m as a(straes necess-rias para manipular diretamente uma ta(ela' T a
ferramenta utili)ada para a(rir uma ta(ela e navegar por suas colunas e linhas'
%s componentes neste captulo s*o referenciados pelo seu tipo de o(,eto identificado no Delphi pelo seu
nome com o prefi#o H"' % termo componente DataSet . utili)ado para referenciar um componente Ha(le+
Duer;+ ou Stored5roc' HHa(le+ HDuer;+ e HStored5roc s*o descendentes de HDataSet+ ou se,a+ eles herdam as
propriedades de HDataSet'
% conceito de herana . discutido em detalhes no captulo %(,ect9%riented 5rogramming in
Delphi de seu manual'
Dia#rama dos componentes DataSet
% diagrama a seguir mostra o conceito dos componentes DataSet+ que s*o componentes derivados do tipo de
o(,eto HDataSet3
F<
InforBRs - Informtica Brasileira Ltda.
&tili2ando o Coponente e DataSource
Introdu(o
% componente DataSource atua como intermedi-rio entre o componente DataSet HHa(le+ HDuer;+ ou
HStored5roc" e os componentes Data Control' Dentre os componentes Data Control incluem D$=rid+ e
D$He#t entre outros' !sta se*o e#plica3
Dual o papel do componente DataSource em uma aplica*o de (anco de dados
Como utili)ar propriedades e eventos do DataSource
Como adicionar componentes DataSource O sua aplica*o
Papel de um Componente DataSource
Bm Componente DataSource gerencia o relacionamento entre uma ta(ela de (anco de dados e a
representa*o deste dado em seu form' T um intermedi-rio entre os componentes DataSet e DataControl'
Componentes DataSet gerenciam a comunica*o com o $orland Data(ase !ngine $D!"+ e o componente
DataSource gerencia a comunica*o com componentes data9aware Data Control'
!m uma tpica aplica*o de (anco de dados+ um componente DataSource . associado com um componente
DataSet Ha(le ou Duer;" e um ou mais componentes Data Control tais como D$=rid"'
% diagrama a seguir mostra este relacionamento3
$tili/ando Propriedades e %ventos DataSource
2s propriedades e eventos chave do componente DataSource s*o3
5ropriedade DataSet
FG
InforBRs - Informtica Brasileira Ltda.
5ropriedade !na(led
5ropriedade 2uto!dit
!vento %nDataChange
!vento %nBpdateData
!vento %nStateChange
Cada uma destas propriedades e eventos s*o discutidas nas sees a seguir3
$tili/ando a propriedade DataSet do Componente DataSource
2 propriedade DataSet identifica o nome de um componente DataSet'
0oc1 pode atri(uir O propriedade DataSet atrav.s de programa*o ou utili)ando o %(,ect Inspector'
% valor atri(uido O propriedade DataSet . o nome de um o(,eto HDataSet'
5or e#emplo+ a linha de c/digo a seguir atri(ui um nome ou o(,eto HDuer; O propriedade DataSet de um
componente ou o(,eto DataSource'
DataSource!.DataSet 2 3 Cuery!
0oc1 pode inserir diversos componentes Duer;+ Ha(le+ e Stored5roc em um form a atri(uir a propriedade
DataSet (aseado em uma condi*o no programa' 0oc1 tam(.m pode atri(uir a propriedade DataSet a um
nome ou o(,eto HDuer;+ HHa(le+ ou HStored5roc encontrado em outro form utili)ando o identificador da unit
do form' 5or e#emplo+ ap/s incluir a Bnit1 na cl-usula uses+ voc1 pode digitar o seguinte3
DataSource!.DataSet 2 3 Unit!.5orm!."able!1
$tili/ando a Propriedade %nable do TDataSource
2 propriedade !na(le inicia ou termina a comunica*o entre os componentes HDataSource e DataControl'
%s valores da propriedade !na(le s*o3
Hrue
%s componentes Data Control conectados ao HDataSource @en#ergam]as alteraes do dataset'
Jalse
0oc1 pode manipular o HDataSet atrav.s de programa*o sem que os componentes Data Control
@en#erguem] as alteraes'
5or e#emplo+ o c/digo a seguir desa(ilita o HDataSource+ procura por um valor coincidente de nQmero do
cliente+ e depois ha(ilita o HDataSource para que ou a linha do cliente ou a Qltima linha se,a e#i(ida'
DataSource!.Enable 2 3 5alse1
"able.5irst1
-hile not "able!.EO5 do
*e.in
if "able!.5iel-yGame/;Go4liente>0.AsStrin, 3 Loo7up4ust then
-rea71
"able!.Ge#t1
end)
DataSource!.Enable 2 3 "rue1

Btili)ando a propriedade !na(le permite que voc1 desconecte temporariamente o componente visual Data
Control do HDataSource'
Eo e#emplo anterior+ se a ta(ela contiver :>>> linhas e o HDataSource estiver ha(ilitado+ o usu-rio de sua
aplica*o veria :>>> linhas rolando na tela durante esta opera*o' Desa(ilitando HDataSource . uma
maneira mais eficiente de se pesquisar em um grande nQmero de linhas+ pois o componente Data Control
n*o atrasar- a procura e#i(indo cada linha conforme esta for sendo alterada'
FL
InforBRs - Informtica Brasileira Ltda.
$tili/ando a Propriedade uto%dit de TDataSource
2 propriedade 2uto!dit controla como a edi*o . iniciada nos componentes Data Control'
%s valores das propriedades 2uto!dit s*o3
Hrue
% modo de edi*o . iniciado sempre que o usu-rio comece a digitar dentro de um componente Data Control'
Jalse
% modo de edi*o . iniciado quando o m.todo !dit . invocado+ por e#emplo+ ap/s o usu-rio dar um clique
so(re o (ot*o /dit do Eavigator' !ste parPmetro controla a edi*o'
Dentro do seu c/digo+ voc1 pode utili)ar os seguintes m.todos para controlar as alteraes nos dados da
ta(ela quando 2uto!dit estiver como 5alse3
!dit
5ost
Cancel
% c/digo a seguir . um e#emplo utili)ando o m.todo 5ost3
DataSource!.DataSet.Eit1 'Start eit moe+
DataSource!.DataSet.5iels @HA .AsStrin, 2 3 I9elloJ1
DataSource!.DataSet.Post1
$tili/ando o %vento OnDataChan#e de TDataSource
% evento %nDataChange ocorre sempre que3
2 propriedade State do HDataSource mudar do estado dsInactive
%correr uma altera*o de campo+ registro+ ta(ela+ quer; ou la;out
!ste evento . associado com alteraes na e#i(i*o de dados+ tais como rolar para um novo registro ou
ativando HDataSource' !ste evento . Qtil para monitorar alteraes nos componentes Data Control'
$tili/ando o %vento On$pdateData de TDataSource
% evento %nBpdateData ocorre quando3
% registro atual no HDataSet estiver para ser atuali)ado
Bma altera*o estiver para ser confirmada
!ste evento . Qtil na monitora*o de alteraes nos dados de uma ta(ela' 5or e#emplo+ voc1 pode utili)ar
este evento para criar auditor de alteraes nos dados em sua aplica*o'
$tili/ando o %vento OnStateChan#e de TDataSource
% evento %nStateChange ocorre sempre que a propriedade State de DataSource for alterada' !ste evento .
Qtil para monitora*o de alteraes na propriedade State' 2 propriedade State pode ter os seguintes valores3
dsInactive
ds$rowse
ds!dit
dsInsert
dsSetWe;
dsCalcJields
Passos para dicionar um Componente DataSource
!#ecute os passos a seguir para adicionar um componente DataSource ao form3
(asso #01o
FM
InforBRs - Informtica Brasileira Ltda.
> Btili)ando a p-gina Data 2ccess da Component 5alette+ adicione o componente DataSource ao
form'
A Btili)e o %(,ect Inspector para definir a propriedade DataSet ou escreva o c/digo apropriado'
C Defina as propriedades 2uto!dit e !na(led+ ou am(as+ apropriadamente'
D !screva event handlers para um ou todos os seguintes eventos3
%nDataChange event
%nBpdateData event
%nStateChange event
&tili2ando o O).eto 'DataSet
Introdu(o
=eralmente+ quando voc1 manipula um componente Ha(le ou chama um m.todo HHa(le+ voc1 est- utili)ando
um m.todo derivado do o(,eto HDataSet' HDataSet oferece um grande nQmero de propriedade+ m.todos e
eventos'
0oc1 pode aprender mais so(re HDataSet utili)ando o Aelp %nline'
!sta se*o discute um pouco so(re propriedades+ m.todos e eventos do o(,eto HDataSet'
Propriedades do Objeto TDataSet
2 ta(ela a seguir descreve as propriedades mais importantes do o(,eto HDataSet3
(ropriedade Descri01o
#ctive 2(re ou fecha um componente DataSet' 2(rir um componente DataSet esta(elece a cone#*o
entre o componente e o (anco de dados' 0oc1 pode definir a propriedade 2ctive no %(,ect
Inspector durante o design ou diretamente em seu c/digo+ como segue3
if DeActi)ate 3 true then
"able!.Acti)e 2 3 "rue
Else
"able!.Acti)e 2 3 5alse1
%s m.todos %pen e Close tam(.m definem a propriedade 2ctive de HDataSet'
/O5
K/nd of 5ileL
BO5
KBe&innin& of
5ileL
5ropriedades somente de leitura read9onl;" com os seguintes valores3
!%J . definido para Hrue quando voc1 tenta mover para al.m da Qltima linha do dataset
$%J . definido para Hrue quando o componente DataSet . a(erto ou quando o ponteiro
do DataSet para a linha atual estiver posicionado na primeira linha'
5ields Bm arra; do o(,eto HJield' 0oc1 pode definir e ler dados dos campos da linha atual
utili)ando esta propriedade' 5or e#emplo3
"able!.5iels@BA. AsStrin, 2 3
;9ello>1
"able!.5iels@!A .AsStrin, 2 3
;:orl>1
M5todos do Objeto TDataSet
% o(,eto HDataSet fornece ao componente Ha(le diversos m.todos'
2lguns dos m.todos mais importantes s*o mostrados na ta(ela a seguir3
9Mtodo Descri01o
FN
InforBRs - Informtica Brasileira Ltda.
Open
Close
Refresh
%peram nos datasets+ como segue3
% m.todo %pen . equivalente a definir a propriedade 2ctive para Hrue'
% m.todo Close define a propriedade 2ctive para Jalse
% m.todo 8efresh permite ler novamente o dataset do (anco de dados ' Se voc1 precisa
se assegurar que os dados s*o os mais atuais+ contendo quaisquer alteraes feitas por
outros usu-rios+ utili)e o m.todo refresh' Bm componente Ha(le+ Duer;+ ou Stored5roc
deve estar a(erto com open quando 8efresh for chamado'
Bm e#emplo destes m.todos . 3
"able!.Open1
"able!.4lose1
"able!.RefreshY
5irst
Last
'e3t
(rior
9oveB*
5ermite navegar ou alterar a linha atual do dataset' 2 seguir+ um e#emplo utili)ando
v-rios destes m.todos3
"able!.5irst
:hile not "able!.EO5 o
be,in
'Seu cKi,o aFui+
"able!.Ge#t1
en1
% m.todo &ove$; move um nQmero especificado de linhas' 5or e#emplo3
"able!.Mo)e-y/H0 move 7 linhas para cima'
"able!.Mo)e-y/-60 move : linhas para tr-s'
Insert
/dit
Delete
#ppend
(ost
Cancel
5ermite modificar os dados em uma ta(ela de (anco de dados+ como segue3
% m.todo Insert permite adicionar uma linha O ta(ela' 5or e#emplo3
"able6..nsert1
"able6.5iels@BA .As.nte,er 2 3 6B1
"able6.5iels@!A .AsStrin, 2 3 ;Ge8s>1
"able6.5iels@ 6A .AsStrin, 2 3 ;L 9oras>1
"able6.Post1
% m.todo 5ost fa) com que a opera*o Insert Bpdate ou Delete ocorra'
% m.todo Cancel fa) com que uma opera*o Insert Delete+ !dit ou 2ppend n*o
ocorrida se,a cancelada'
5ieldB*'ame Jornece uma maneira de acessar dados de uma coluna especificando no nome da coluna
do (anco de dados' Como no e#emplo a seguir3
s 2 3 "able6.5iel-yGame /;area>0 .AsStrin,1
SetBe*
.otoBe*
5rocura atrav.s dos datasets+ como segue3
SetWe; alterna a ta(ela para o modo de pesquisa search"' !nquanto neste modo+ a
propriedade Jields tem uma utili)a*o especial'
=otoWe; inicia a pesquisa por um valor coincidente com o valor encontrado em
Jields`na' Jields`na cont.m o valor a ser pesquisado por valores em outras colunas
definindo a coluna Jields correspondente'
% e#emplo a seguir mostra um e#emplo da utili)a*o de SetWe; e =otoWe;3
"able!.SetMey1
"able!.5iels@BA .AsStrin,
Eit!."e#t1
"able!.NotoMey1
SetRan&eStart
SetRan&e/nd
5ermite ser mais seletivo nos dados que sua aplica*o seleciona ou utili)a na ta(ela'
=eralmente uma ta(ela . grande e voc1 quer selecionar somente uma s.rie de valores da
FF
InforBRs - Informtica Brasileira Ltda.
#ppl*Ran&e ta(ela' % m.todo 8ange permite fa)er tal sele*o' !#emplo3
"able!.SetRan,eStart
"able!.5iels@BA .AsStrin, 2 3
Eit!."e#t1
"able!.SetRan,eEn
"able.5iels@BA .AsStrin, 2 3
Eit6."e#t1
"able!.ApplyRan,e1
2 primeira chamada O Set8angeStart o coloca no modo range e a propriedade Jields toma
um significado especial' Btili)e a propriedade Jields para especificar o valor de incio para
a s.rie' 2 chamada para Set8ange!nd inicia um modo onde os valores digitados na
propriedade Jields s*o utili)adas como o valor final da s.rie' 2ppl;8ange fa) com que o
comando se,a processado' Bm dataset . criado contendo os valores entre os valores de
incio e final'
5reeBooFmarF
.e)BooF9arF
.otoBooFmarF
5ermite criar um marcador de linha em uma ta(ela ou quer; e depois retornar O esta linha
posteriormente' %s m.todos $oo4mar4 utili)am um tipo de o(,eto chamado H$oo4&ar4'
5or e#emplo3
Dar
Mar7er 2 "-oo7Mar71
be,in
Mar7er 2 3 "able6.Ne"-oo7Mar71
"able6.Noto-oo7mar7/Mar7er01
"able6.5ree-oo7mar7/Mar7er01
% m.todo =eH$oo4&ar4 aloca um marcador para linha da ta(ela' % m.todo
=oto$oo4mar4 altera a locali)a*o na ta(ela para a linha indicada pelo $oo4mar4 alocado
anteriormente' Btili)e o m.todo Jree$oo4mar4 para li(erar o espao alocado para o
marcador'
%ventos do Objeto TDataSet
% o(,eto HDataSet permite responder a um grande nQmero de eventos' 2 ta(ela a seguir descreve diversos
deles3
/ventos Descri01o
OnOpen
OnClose
On'ewRecord
BeforeInsert
#fterInsert
Before/dit
#fter/dit
Before(ost
#fter(ost
OnCancel
OnDelete
5ermite construir e controlar o comportamento de aplicaes de (ancos de dados'
!#emplos de utili)a*o seguem3
!vento $efore5ost para validar os campos de um registro antes de inser9lo ou atuali)-9
los
!vento 2fter5ost para gravar um registro de auditoria quando necess-rio
!vento %nDelete para gravar c/digo que efetue a dele*o em cascata quando
apropriado
1>>
InforBRs - Informtica Brasileira Ltda.
&tili2ando o O).eto '"ields
Introdu(o
% o(,eto HJield+ como o o(,eto HDataSet+ n*o . encontrado na Component 5alette' T uma propriedade do
o(,eto HDataSet e Componente Ha(le"' 2lgumas propriedades no %(,ect Inspector s*o o(,etos com seu
pr/prio con,unto de propriedades' HJields . um deles'
!sta se*o descreve a propriedade Jields+ que . o(,eto HJields com seu pr/prio con,unto de propriedades'
Propriedades !ields do Objeto TDataSet
Bma das propriedades do %(,eto HDataSet portanto+ os componentes Ha(le+ Duer;+ e Stored5roc" . a
propriedade Jields'
Como discutido anteriormente neste captulo+ a propriedade Jields permite acessar os campos individuais do
dataset' 2 propriedade Jields . um arra; dos o(,etos HJields' !ste arra; ou lista . gerada dinamicamente
durante a e#ecu*o e portanto+ n*o aparece na lista de propriedades do %(,ect Inspector"' % arra;
representa cada uma das colunas no componente Ha(le'
%(,etos est-ticos HJields s*o visveis no %(,ect Inspector' Sees posteriores deste captulo e#plicam como
criar uma lista est-tica de o(,etos HJield+ mas primeiro+ voc1 deve entender algumas das propriedades destes
o(,etos'
Propriedades do Objeto T!ield
0oc1 deve entender em diversos e#emplos o uso do m.todo 2sString' % o(,eto HJield n*o fa) nenhuma
suposi*o so(re o tipo de dado que ele cont.m' !le possui diversos m.todos que permitem definir ou
recuperar os valores de um campo' 2lguns destes m.todos s*o3
2s$oolean
2sJlot
2sInteger
2sString
% c/digo a seguir mostra alguns e#emplos para a utili)a*o de cada um deles3
5iels@BA .AsStrin, 2 3 Osto P uma strin,>1
5iel-yGame /Q4asao>0 .As-oolean 2 3 5alse1
SomaDespesas 2 3 5iels@LA As.5loat1
GoPeio 1 3 5iels@HA .As.nte,er1
Outras Propriedades do Objeto T!ield
2 ta(ela a seguir descreve diversas outras propriedades importantes do o(,eto HJield3
(ropriedade Descri01o
/dit9asF 5ermite definir uma m-scara de input para o campo
Is'll Determina se um campo n*o possui valor' T uma propriedade read9onl;'
Si2e Determina o tamanho de um campo' T uma propriedade read9onl;'
)e3t 5ermite definir ou recuperar um valor de string de um campo
5ield'ame Jornece o nome do campo do (anco de dados' T uma propriedade read9onl;'
1>1
InforBRs - Informtica Brasileira Ltda.
&tili2ando o Coponente 'a)le
Introdu(o
% componente Ha(le . um componente HDataSet que comunica com uma ta(ela de (anco de dados atrav.s
do $D!' 2 ta(ela do (anco de dados pode ser tanto local ou em um servidor remoto' !sta se*o discute3
% papel do componente Ha(le
5ropriedades+ eventos e m.todos do componente Ha(le
5assos para adicionar um componente Ha(le O sua aplica*o
O Papel do Componente Table
% diagrama a seguir mostra que HHa(le . derivado de HD$DataSet por herana e+ por sua ve)+ HD$DataSet
. derivado de HDataSet'
&uito da funcionalidade do componente Ha(le . (aseado neste relacionamento'
HHa(le herda de HDataSet a capacidade de manipular datasets' !le fornece m.todos+ tais como Ee#t+ Jirst+
6ast+ !dit+ Set8ange e Insert'
HD(DataSet permite que HHa(le suporte tra(alhar com senhas e outras tarefas associadas com a liga*o de
sua aplica*o com um (anco de dados' HHa(le adiciona m.todos e atri(utos para manipula*o de ndices+ e
para arma)enar o relacionamento entre esta ta(ela e outra em sua aplica*o '
Propriedades do Componente Table
Como vimos+ muito da funcionalidade do componente Ha(le v1m do o(,eto HDataSet' % componente Ha(le
permite utili)ar as propriedades+ m.todos e eventos HDataSet+ mas possui diversas propriedades pr/prias
relativas a ta(elas de (anco de dados' 5or e#emplo+ o componente Ha(le permite que voc13
!specifique ndices a serem utili)ados
Crie um cursor \6in4ado]
Cursores \6in4ados] coordenam dois ou mais componentes DataSet para criar forms master9detail'
2 ta(ela a seguir descreve as propriedades mais importantes do componente Ha(le3
(ropriedade Descri01o
Data+ase'ame !specifica o seguinte3
% diret/rio local de um (anco de dados que contenha a ta(ela a ser visuali)ada
1>:
InforBRs - Informtica Brasileira Ltda.
% alias de um (anco de dados remoto
)a+le'ame !specifica o nome do (anco de dados a ser visuali)ado
/3clsive Controla o acesso de usu-rio ao (anco de dados' %s valores s*o3
Hrue
2ssegura que nenhum outro usu-rio acesse ou modifique a ta(ela enquanto voc1 a
mantiver a(erta
Jalse
5ermite que outros usu-rios acessem ou modifiquem a ta(ela enquanto voc1 a mantiver
a(erta' !ste . o default'
Inde3'ame Identifica um ndice secund-rio para Ha(le'
0oc1 n*o pode alterar Inde#Eame enquanto a ta(ela estiver ativa
9aster5ields !specifica o nome dos campos ligados ou campos na
propriedade &asterJields para criar um cursor \lin4ado]a uma ta(ela secund-ria
5ara especificar diversos campos+ voc1 deve separar os nomes de campos com uma (arra
vertical b" '
9asterSorce !specifica o HDataSource de onde HHa(le o(ter- os dados para a ta(ela master
ReadOnl* 5e a ta(ela em modo somente9leitura' %s valores s*o3
Hrue
5revine o sistema de gravar alteraes ao (anco de dados onde a ta(ela resida
Jalse
5ermite que o sistema grave alteraes ao (anco de dados onde a ta(ela resida
0oc1 n*o pode alterar a propriedade 8ead%nl; enquanto a ta(ela estiver ativa'
Passos para dicionar um Componente Table
!#ecute os passos a seguir para adicionar um componente ta(le ao form3
(asso #01o
> Btili)ando a p-gina Data 2ccess da Component 5alette+ adicione um componente Ha(le ao form'
A Eo %(,ect Inspector + locali)e a propriedade Data(aseEame e digite o diret/rio onde o (anco de
dados reside+ ou digite um nome de alias do (anco de dados'
C 6ocali)e a propriedade Ha(leEame e digite o nome da ta(ela ou selecione uma ta(ela da lista drop9
down'
D 2dicione um componente DataSource e defina o valor da propriedade de DataSet igual ao do
componente Ha(le'
E 2dicione componentes Data Control e conecte9os ao componente DataSource para e#i(ir dados da
ta(ela do (anco de dados'
'utorial> Criando ua (plicao &tili2ando
0todos 'DataSet do Coponente 'a)le
Introdu(o
!ste processo . um tutorial de e#emplo' 0oc1 construir- uma aplica*o de e#emplo utili)ando uma ta(ela
chamada C%BEH8X'
!sta ta(ela e#i(e informa*o so(re pases do mundo inteiro' 2o inv.s de utili)ar o D$Eavigator+ voc1
utili)ar- (otes padr*o e m.todos DataSet para fornecer a funcionalidade do D$Eavigator'
1>7
InforBRs - Informtica Brasileira Ltda.
!ste tutorial mostra como utili)ar3
%s m.todos Jirst+ Ee#t+ 5rior e 6ast
%s m.todos $%J e !%J
%s m.todos !dit+ Insert e Cancel
%st)#ios do Tutorial
% processo deste tutorial envolve os seguintes est-gios3
/st&io (rocessos
> 2dicionar e definir propriedades para os componentes HDataSet
A 2dicionar e definir propriedades para componentes D$=rid e $utton
C Criar event handlers %nClic4 para componentes $utton
D !#ecutar e testar a aplica*o
Passos para o %st)#io *
!#ecute os passos a seguir para adicionar e definir propriedades para os componentes HDataSet3
(asso #01o
> 2(ra um novo pro,eto e grave9o'
Duando solicitado+ grave a unit como BDS!0!EH'52S e o pro,eto como 5DS!0!EH'D58'
A Btili)ando a p-gina Data 2ccess da Component 5alette+ adicione o seguinte ao seu form3
Bm componente Ha(le
Bm componente DataSource
C Defina as propriedades para os componentes Ha(le e DataSource como segue3
'ome do Componente (ropriedade !alor
)a+le> Data(aseEame
Ha(leEame
2ctive
D$D!&%S
C%BEH8X'D$
Hrue
DataSorce> DataSet
2uto!dit
Ha(le1
Jalse
Passos para o %st)#io +
!#ecute os passos a seguir para adicionar e definir propriedades para os componentes D$=rid e $utton3
(asso #01o
> Btili)ando a p-gina Data Control da Component 5alette+ adicione um componente D$=rid'
2rran,e os componentes para que seu form este,a similar O figura a seguir3
1><
InforBRs - Informtica Brasileira Ltda.
(asso #01o
A Btili)e a ta(ela a seguir para definir propriedades do D$=rid para que utili)em o componente
DataSource do form3
'ome do Componente (ropriedade !alor
DB.rid> DataSource DataSource1
(asso #01o
C 2dicione oito (otes ao form+ e arran,e9os para que seu form este,a similar O pr/#ima fgura3
(asso #01o
< Btili)e o %(,ect Inspector para definir as seguintes propriedades aos componentes $utton3
'ome do Componente (ropriedade !alor
1>G
InforBRs - Informtica Brasileira Ltda.
Btton> Caption 5rimeiro
BttonA Caption cltimo
BttonC Caption 5r/#imo
BttonD Caption 2nterior
BttonE Caption !ditar
BttonG Caption 5ost
BttonI Caption Cancelarr
BttonJ Caption Inserir
Passos para o %st)#io ,
!#ecute os passos a seguir para criar event handlers %nClic4 para os componentes $utton3
(asso #01o
> Digite o c/digo a seguir para os event handlers %nClic4 nos (otes apropriados'

'ome do Componente /vento C%di&o
Btton> %nClic4 Ha(le1'JirstY
BttonA %nClic4 Ha(le1'6astY
BttonC %nClic4 if not Ha(le1'!%J then
Ha(le1'Ee#tY
BttonD %nClic4 if not Ha(le1'$%J then
Ha(le1'5revY
BttonE %nClic4 Ha(le1'!ditY
BttonG %nClic4 if Ha(le1'State in
`ds!dit+ dsInserta then
Ha(le1'5ostY
BttonI %nClic4 Ha(le1'CancelY
BttonJ %nClic4 Ha(le1'InsertY
Passos para o %st)#io -
!#ecute os passos a seguir para e#ecutar e testar a aplica*o3
(asso #01o
> Compile e grave a aplica*o'
1>L
InforBRs - Informtica Brasileira Ltda.
!#ecute e teste cada (ot*o para verificar se o m.todo funciona'
A Duando tiver completado o teste+ grave e feche o pro,eto'
&tili2ando o "ields Editor
Introdu(o
% Jields !ditor permite criar uma lista de campo de (anco de dados'
Duando um componente DataSet como os componentes Ha(le ou Duer; . ativado pela primeira ve)+ uma
lista de campo . gerada dinamicamente para dataset (aseado nas colunas da ta(ela ou c/digo SD6' % Jields
!ditor permite especificar e posteriormente modificar uma lista est-tica de componentes Jield'
Possibilidades do !ields %ditor
% Jields !ditor permite que voc13
Crie um modelo est-tico das colunas de uma ta(ela
!specificar a ordem das colunas no DataSet
!specificar o tipo das colunas
2dicionar a lista est-tica de campos
8emover campos da lista
&odificar propriedades Displa; de HJields est-ticos
Definir campos calculados
Definir novos componentes Jield (aseados nas colunas e#istentes na ta(ela
Criando um Modelo %st)tico de uma Tabela de Banco de Dados
Btili)e o Jields !ditor quando quiser criar um modelo est-tico das ta(elas do (anco de dados' Bm modelo
est-tico n*o . alterado quando modificaes s*o feitas na ta(ela fsica no (anco de dados'
Duando voc1 adiciona colunas utili)ando o Jields !ditor+ o(,etos HJields s*o criados para cada campo
adicionado ao DataSet' 2p/s adicionar campos utili)ando o Jields !ditor voc1 pode visuali)ar estes campos
no %(,ect Inspector' Cada o(,eto HJield possui um con,unto de propriedades+ eventos e m.todos que voc1
pode utili)ar em sua aplica*o'
Passos para iniciar o !ields %ditor
!#ecute os passos a seguir par iniciar o Jields !ditor3
(asso #01o
> 2dicione um componente Ha(le ou Duer; ao seu form'
A Defina a propriedade Data(aseEame do componente Ha(le ou Duer;'
C !#ecute um dos seguintes3
9Defina a propriedade Ha(leEame do componente Ha(le
9Defina a propriedade SD6 do componente Duer;'
D Selecione o componente DataSet no form+ e pressione o (ot*o direito do mouse para e#i(ir o
Speed&enu'
E Eo Speed&enu+ selecione Jields editor'
2 primeira ,anela do Jields !ditor aparecer-+ como segue3
1>M
InforBRs - Informtica Brasileira Ltda.

Passos para Criar uma 2ista %st)tica de Campos
!#ecute os passos a seguir para criar uma lista est-tica de campos ap/s a(rir o Jields !ditor3
(asso #01o
> Eo quadro de di-logo Jields !ditor+ d1 um clique em 2dd'
Cada uma das colunas na ta(ela ou quer; aparecem selecionadas no quadro de di-logo 2dd Jields+
como segue3
1>N
InforBRs - Informtica Brasileira Ltda.
(asso #01o
: Selecione os campos que voc1 queira adicionar e d1 uma clique em %W'
% quadro de di-logo a seguir . e#i(ido3
1>F
InforBRs - Informtica Brasileira Ltda.
(asso #01o
C D1 um clique em 2dd para adicionar campos est-ticos+ adicionar O lista de campos no dataset'
D D1 um clique em Define para criar um novo campo (aseado em um campo e#istente+ ou criar um
campo calculado'
E D1 um clique em 8emove para deletar um campo est-tico da lista de campos no dataset'
Propriedades do Componente !ield
2p/s utili)ar o Jields !ditor+ quaisquer campos adicionados ao dataset s*o refletidos no %(,ect Inspector' 2
figura a seguir mostra o tipo de o(,eto HStringJield componente Jield" e suas propriedades associadas'
Descendentes de T!ield
Duando voc1 utili)a o Jields !ditor+ o Delphi cria o(,etos est-ticos que correspondem aos campos visveis no
%(,ect Inspector' !stes o(,etos s*o descendentes do tipo de o(,eto HJield' 2 ta(ela a seguir descreve os
o(,etos descendentes HJield3
Descendente Descri01o
)Strin&5ield Dado te#to de tamanho fi#o+ at. :GG caracteres
)Inte&er5ield EQmeros inteiros de 9:+1<M+<N7+L<N a :+1<M+<N7+L<M
11>
InforBRs - Informtica Brasileira Ltda.
)Small5ield EQmeros inteiros de 97:LMN a 7:MLM
)Word5ield EQmeros inteiros de > a LGG7G
)5loa)5ield EQmeros reais com grande)as a(solutas de 1+:#1>e97:< a 1'M#1>e7>N com precis*o de
1G a 1L dgitos
)Crrenc*5ield 0alores monet-rios' EQmeros reais com grande)as a(solutas de 1':#1>e97:< a
1'M#1>e7>N com precis*o de 1G a 1L dgitos
)BCD5ield EQmeros reais com nQmero fi#o de casas decimais' Com precis*o de 1N dgitos' %
intervalo dos valores depende do nQmero de casas decimais'
)Boolean5ield 0alor Hrue verdadeiro" ou Jalse falso"
)Date)ime5ield 0alor de data e hora
)Date5ield 0alor de data
))ime5ield 0alor de tempo
)Blo+5ield Campo de dado ar(itr-rio+ sem limite de tamanho
)B*tes5ield Campo de dado ar(itr-rio+ sem limite de tamanho
)!arB*tes5ield Campo de dado ar(itr-rio de at. LGG7G caracteres+ com tamanho real arma)enado nos
primeiros dois (;tes
)9emo5ield He#to de tamanho ar(itr-rio
).raphic5ield =r-fico de tamanho ar(itr-rio+ tal como (itmap
%ventos do Objeto Tipo TStrin#!ield
2 figura a seguir mostra eventos que um o(,eto tipo HStringJield pode reconhecer3
111
InforBRs - Informtica Brasileira Ltda.
Campos %st)ticos
Duando voc1 utili)a o Jields !ditor+ s*o adicionados campos est-ticos ao tipo de o(,eto HJorm1 do form ' Ea
figura a seguir+ o Jields !ditor adicionou os seguintes campos ao HJorm 13
Ha(le1Eame+ Ha(le1Si)e+ Ha(le1WI=AH+ Ha(le128!2+ e Ha(le1$&53
&tili2ando o Coponente Data)ase ?rid
Introdu(o
Como voc1 ,- pode ter o(servado+ o componente D$=rid data(asegrid" fornece uma maneira conveniente
de se e#i(ir diversas linhas de dados de um componente Ha(le ou Duer;' Sua aplica*o pode utili)ar o
D$=rid para inserir+ deletar+ editar ou e#i(ir dados de um (anco de dados' Com(inado com o D$Eavigator+
o D$=rid permite protipar e e#i(ir rapidamente dados do (anco de dados'
2t. agora+ voc1 tem visto e#emplos utili)ando o componente D$=rid'
!ste t/pico oferece sugestes para3
Definir a propriedade %ptions do Componente D$=rid
Definir caracteristicas de e#i(i*o de campo para o componente D$=rid
Bma lista completa das propriedades+ m.todos e eventos do D$=rid encontram9se no Aelp
%nline'
11:
InforBRs - Informtica Brasileira Ltda.
Propriedades de Options do DB6rid
2 figura a seguir mostra um con,unto de propriedades que compem a propriedade %ptions do componente
D$=rid' % con,unto aparece quando voc1 clica o sinal I" na frente da propriedade %ptions'
Descri(o da Propriedade Options
0oc1 pode alterar a apar1ncia e comportamento de uma grade alterando valores da propriedade %ptions+
utili)ando o %(,ect ou escrevendo c/digo' 2 ta(ela a seguir descreve as definies de %ptions do componente
D$=rid3
(ropriedade Options Descri01o 4ando Definido para )re...
d&/ditin& % usu-rio pode editar dados na grade'
117
InforBRs - Informtica Brasileira Ltda.
Duando a propriedade 8ead%nl; do DataSet for Hrue e dg!diting tam(.m for Hrue+
os usu-rios podem utili)ar a tecla Insert para inserir uma linha em (ranco+ ou
pressionar a tecla de seta para (ai#o quando posicionado no final da grade para
adicionar uma linha em (ranco+ em(ora n*o possam digitar te#to na nova linha'
d&)itles %s ttulos das colunas s*o visveis'
d&Indicator Bm pequeno ponteiro fica visvel para indicar a coluna atual'
d&ColmnResi2e 2s colunas podem ser rea,ustadas'
d&ColLines 2s linhas entre as colunas ficam visveis
d&RowLines 2s linhas entre as linhas ficam visveis'
d&)a+s %s usu-rios podem pressionar a tecla Ha( e ShiftI Ha( para se moverem entre as
colunas da grade'
Propriedade Options como Tipo Set
2 propriedade %ptions do componente D$=rid . um tipo set' 0oc1 pode modificar a propriedade %ptions
utili)ando operadores set' 2s linhas a seguir s*o comandos %(,ect 5ascal v-lidos3
D-Nri!.Options 2 3 D-Nri!.Options R @,"itlesA1
D-Nri!.Options 2 3 D-Nri!.Options - @,"itles? ,Ro8LinesA1
Definindo Caracter7sticas de %'ibi(o de Campo para o Componente DB6rid
=eralmente no desenvolvimento de uma aplica*o+ voc1 precisa controlar o comportamento de campos no
componente D$=rid' % comportamento default do D$=rid . determinar dinamicamente o tamanho do
campo e permitir ao usu-rio o uso do mouse para rea,ustar o tamanho do campo' 2 chave para o(ter o
controle das caractersticas de e#i(i*o do D$=rid ou outro componente data9aware . criar uma lista est-tica
de componentes Jield' Bma ve) criados componentes para cada um dos campos no dataset+ voc1 pode
definir o seguinte3
Hamanho de e#i(i*o
Jormato de e#i(i*o
&-scara de !di*o
8/tulos de e#i(i*o
Passos para Definir Tamanho de %'ibi(o
!#ecute os passos a seguir para criar campos de e#i(i*o de tamanho fi#o no componente D$=rid3
(asso #01o
> 2(ra o Jields !ditor para o componente HDataSet que ser- e#i(ido no componente D$=rid'
A 2dicione cada um dos campos de (anco de dados que voc1 queira no dataset'
!ste passo cria componentes HJields est-ticos para os campos a serem e#i(idos no D$=rid'
C 6ocali)e o componente D$=rid no %(,ect Inspector+ e defina a op*o dgColumn8eSi)e para Jalse'
Como alternativa+ voc1 pode escrever comandos %(,ect 5ascal em sua aplica*o para alterar esta
propriedade'
D 2ltere o tamanho da coluna e#i(ida de uma destas maneiras3
9Btili)e o mouse para arrastar e rea,ustar o tamanho das colunas no D$=rid
9Defina a propriedade Displa;Width para cada um dos componentes Jield que o Jields !ditor
adicionou'
Definindo a Propriedade Displa82abel
Bma ve) que voc1 utili)ou o Jields !ditor para gerar um con,unto de o(,etos HJield para o dataset+ voc1
pode utili)ar o %(,ect Inspector para definir a propriedade Displa;6a(el do componente Jield' %
componente Displa;6a(el do componente Jield'
Definindo Propriedade Displa8Mas3
Campos+ Jloat+ Integer e Date possuem uma propriedade Displa;&as4' 0oc1 pode utili)ar esta propriedade
para formatar a e#i(i*o em um D$=rid ou outro componente Data Control' 5or e#emplo+ o formato de
e#i(i*o mm9dd9;; pode ser utili)ado para e#i(ir um campo data'
11<
InforBRs - Informtica Brasileira Ltda.
Definindo a Propriedade %ditMas3
%s componentes Jield possuem uma propriedade !dit&as4 que voc1 pode definir sempre que digitar dados
em um D$=rid ou outro componente Data Control' 5ara definir uma propriedade !dit&as4+ locali)e o
componente Jield no %(,ect Inspector+ e clique a propriedade !dit&as4' % quadro de di-logo Input &as4
!ditor . e#i(ido+ como segue3
5ara testar
sua m-scara
de edi*o+
digite um
valor no
campo )est
Inpt'
&tili2ando o Coponente QuerA
Introdu(o
2t. agora+ este captulo co(riu as seguintes informaes3
2s capacidades do o(,eto DataSet e suas propriedades+ m.todos e eventos
% Jields !ditor+ que permite definir o(,etos correspondentes aos campos no dataset
% componente Duer;+ como Ha(le+ . derivado do o(,eto HDataSet'Desta forma+ tudo so(re HDataSet aplica9se
ao componente Duer;'
!sta se*o e#plica o seguinte3
% componente Duer;
5ropriedades+ m.todos e eventos importantes do componente
Bma aplica*o de e#emplo utili)ando o componente Duer;
Componente 1uer8
% componente Duer; permite utili)ar comandos SD6 para e#ecutar o seguinte3
!specificar ou criar datasets que possam ser e#i(idos
Inserir linhas
!ditar a atuali)ar colunas
Deletar linhas
% componente Duer; gerencia a comunica*o com o $D! e serve como interface entre o $D! e os
componentes DataSource HDataSource" em seus forms
O Componente 1uer8 0elacionado com o Componente DataSource
Como com o componente Ha(le+ um componente DataSource . ane#ado ao componente Duer; para gerenciar
a comunica*o entre o componente Data Control e o componente Duer;' !ntre os componentes Data Control
incluem D$=rid+ D$!dit+ e D$6ooup'
Bma aplica*o tpica possui um componente DataSource para cada componente Duer;'
Propriedade do Componente 1uer8
2 ta(ela a seguir descreve diversas propriedades importantes do componente Duer;3
11G
InforBRs - Informtica Brasileira Ltda.
(ropriedade Descri01o
#ctive 2(re ou fecha uma quer;' %s valores s*o3
Hrue
2(re uma quer;+ o que fa) com que o comando SD6 se,a e#ecutado+ como no e#emplo3
'Abre a Fuery+
Cuery!.Acti)e 2 3 "rue1
Jalse
Jecha uma quer;+ como segue3
'5echa a Fuery+
Cuery!.Acti)e 2 3 5alse1
Data+ase'ame Identifica o alias do (anco de dados ou o drive e diret/rio de um (anco de dados local' 2
propriedade Data(aseEame pode ser definida somente quando a quer; n*o estiver ativa+
como no e#emplo a seguir3
'5echa o D-DataSet+
Cuery!.Acti)e 2 3 5alse1
Cuery!.DatabaseGame 2 3 ;Demos>Y
Cuery!.Acti)e 2 3 "rue1
5ields Suportam os campos no componente Duer;' T uma propriedade somente durante e#ecu*o
e . utili)ada para e#aminar ou modificar um determinado campo+ como no e#emplo a
seguir3
Cuery!.5iels@HA .AsStrin, 2 3 SM>1
DataSorce Jornece valores para queries parametri)adas' Bma quer; parametri)ada . uma onde um
ou mais valores na condi*o de sele*o n*o . conhecida
(arams =uardam os parPmetros para uma quer; parametri)ada' Bma quer; parametri)ada envolve
um ou mais valores na condi*o de sele*o que n*o s*o conhecidas at. a e#ecu*o+ como
no e#emplo a seguir3
Select T from Orers
:here 4ustGo 3 2 SomeGo
!sta . uma propriedade de somente9leitura+ durante a e#ecu*o'
Consulte o Aelp %nline para maiores informaes so(re queries parametri)adas'
S4L =uarda o te#to do comando de quer; SD6
/O5 K/nd of
5ileL
BO5
KBe&innin& of
5ileL
5ropriedade somente9leitura com valores a seguir3
!%J . Hrue quando voc1 tenta mover para al.m da Qltima linha do dataset'
$%J . Hrue quando o componente DataSet . a(erto+ ou quando o ponteiro do HDataSet
da linha atual estiver na primeira linha'
M5todos do Componente 1uer8
2 ta(ela a seguir descreve alguns m.todos do componente Duer;3
9Mtodo Descri01o
/3ecS4L !#ecuta comando SD6 atri(uido O propriedade SD6 se o comando n*o retornar dados' Duando
estiver inserindo+ atuali)ando ou deletando dados+ voc1 deve utili)ar este m.todo' Se estiver
e#ecutando um comando de sele*o+ utili)e o m.todo %pen' 2 seguir um e#emplo da utili)a*o
do m.todo !#ecSD63
Cuery!.4lose1
Cuery!.4lear1
Cuery!.SCL.A / ;Delete emp 8here empno 3 !B!B>01
Cuery!.E#ecSCL1
Open 2(re o componente Duer;' T equivalente a definir a propriedade 2ctive para Hrue' 2 seguir um
e#emplo utili)ando o m.todo %pen3
Cuery!.Open1
Close Jecha o componente Duer; fa)endo com que quaisquer atuali)aes pendentes se,am efetuadas
no (anco de dados' Chamar Close . equivalente a definir a propriedade 2ctive para Jalse' 2
seguir mostramos um e#emplo utili)ando o m.todo Close3
11L
InforBRs - Informtica Brasileira Ltda.
Cuery!.4lose1
(repare Hradu) a propriedade SD6 para criar a propriedade He#t para Su(meter ao servidor' % m.todo
5repare tam(.m envia a requisi*o ao servidor para prop/sito de otimi)a*o+ em(ora nenhum
valor parametri)ado este,a incluido' 2 requisi*o inteira com parPmetros n*o . su(metida at.
que o m.todo %pen ou !#ecSD6 se,am chamados' Se voc1 n*o chamar 5repare e#plicitamente+
o Delphi chama 5repare implicitamente quando utili)ar o comando em !#ecSD6' 2 seguir um
e#emplo utili)ando o m.todo 5repare3
Cuery!.4lose1
Cuery!.SCL 2 3
;Delete emp 8here empno 3 2 empno>1
Cuery!.Prepare1
M5todos T1uer8 &erdados de TDataSet
% o(,eto HDataSet fornece ao componente Duer; uma grande variedade de m.todos' 2lguns dos mais
importantes s*o mostrados na ta(ela a seguir3
9Mtodo Descri01o
5irst
Last
'e3t
(rior
9oveB*
5ermite navegar ou alterar a linha atual do dataset' 2 seguir um e#emplo utili)ando
diversos destes m.todos3
Cuery!.5irst
:hile not Cuery!.EO5 o
be,in
'Seu cKi,o aFui+
"able!.Ge#t1
En1
% m.todo &ove$; move um nQmero determinado de linhas' 5or e#emplo3
Duer;1'&ove(;7" move 7 linhas para cima'
Duer;1'&ove(; 9:"move : linhas para tr-s
Insert
/dit
Delete
#ppend
(ost
Cancel
5ermite modificar o con,unto resultante de uma quer;' % m.todo Insert permite adicionar
linhas O ta(ela+ como no e#emplo a seguir3
Cuery6..nsert1
Cuery6.5iels @BA .As.nte,er 2 3 6B1
Cuery6.5iels @!A .AsStrin, 2 3 ;Ge8s>1
Cuery6.5iels @6A .AsStrin, 2 3 ;L horas>1
Cuery6.Post1
% m.todo 5ost fa) com que as operaes Insert+ Bpdate+ ou Delete ocorram'
% m.todo Cancel fa) com que um Insert+ Delete+ !dit ou 2ppend n*o completado se,a
cancelado'
SetBe*
.otoBe*
5esquisa atrav.s dos datasets+ como segue3
% m.todo SetWe; alterna o dataset para o modo de procura' Eeste modo+ a propriedade
Jields tem uso especial'
% m.todo =otoWe; inicia uma procura por um valor que coincida com o valor
encontrado em Jields`na' Jields`na cont.m o valor que voc1 est- procurando e que
ocorre na primeira coluna da ta(ela ou dataset' 0oc1 pode procurar por valores em
outras colunas definindo a coluna correspondente'
% e#emplo a seguir mostra a utili)a*o dos m.todos SetWe; e =otoWe;3
Cuery!.SetMey1
Cuery!.5iels @BA .AsStrin, 2 d !dit1'He#tY
Cuery!.NotoMey1
5reeBooFmarF
.e)BooF9arF
.otoBooFmarF
5ermite criar um marcador em uma linha na ta(ela ou quer; e retornar posteriormente
para esta linha+ como segue3
% m.todo Jree$oo4mar4 li(era espao alocado para o marcador
11M
InforBRs - Informtica Brasileira Ltda.
% m.todo =eH$oo4&ar4 aloca um marcador para a linha atual da ta(ela'
% m.todo =oto$oo4mar4 altera a locali)a*o na ta(ela para a linha indicada por um
marcador alocado pr.viamente '
%s m.todos $oo4mar4 utili)am o o(,eto tipo H$oo4&ar4+ como no e#emplo a seguir3
Dar
Mar7er 2 "-oo7Mar71
be,in
Mar7er 2 3 Cuery6.Ne"-oo7Mar71
Cuery6.Noto-oo7mar7 /Mar7er01
Cuery6.5ree-oo7mar7 /Mar7er01

%ventos do Componente 1uer8 Derivados de TDataSet
% componente Duer; responde aos eventos herdados do o(,eto HDataSet' 2 ta(ela a seguir descreve estes
eventos3
/ventos Descri01o
OnOpen
OnClose
On'ewRecord
BeforeInsert
#fterInsert
BeforeInsert
#fter/dit
Before(ost
#fter(ost
OnCancel
OnDelete
5ermite construir e controlar o comportamento da aplica*o de (anco de dados' 5or
e#emplo3
% event handler $efore5ost valida os campos de um registro antes de inserir ou
atuali)ar os dados
% evento 2fter5ost . Qtil para gravar um registro de auditoria quando necess-rio'
% evento %nDelete . Qtil para escrever c/digo que efetue a dele*o em cascata quando
apropriado'
'utorial> Criando ua aplicao &tili2ando o
Coponente QuerA
Introdu(o
!sta se*o fornece um aprendi)ado na utili)a*o do componente Duer;' % componente Duer; possui muitas
caractersticas avanadas' !ntretanto+ este e#emplo focali)a as caractersticas (-sicas deste componente'
!ste tutorial demonstra como utili)ar um componente Duer; para criar um dataset+ e m.todos HDataSet para
e#ecutar operaes no dataset'
%st)#ios do Tutorial
!ste tutorial envolve os seguintes est-gios3
/st&io (rocesso
> Construir uma aplica*o e e#i(ir os dados utili)ando um comando SD6
A &odificar uma aplica*o para consultar um (anco de dados+ (aseado no campo CustID
Passos para o %st)#io *
!#ecute os passos a seguir para construir uma aplica*o de clientes e e#i(ir dados do cliente utili)ando um
comando SD63
(asso #01o
> 2(ra um novo pro,eto e grave9o'
Duando solicitado+ grave a unit como !?MSD6'52S e o pro,eto como !?M5'D58'
11N
InforBRs - Informtica Brasileira Ltda.
A Btili)ando a p-gina Data 2ccess page da Component 5alette+ adicione os seguintes ao seu form3
Bm componente Duer;
Bm componente DataSource
C Defina as propriedades dos componentes Duer; e DataSource+ como segue3

'ome do Componente (ropriedade !alor
4er*> Data(aseEame
8equest6ive
D$D!&%S
Hrue
DataSorce> DataSet Duer;1
(asso #01o
D Btili)ando a p-gina Data Controls da Component 5alette+ adicione os seguintes ao seu form3
Bm componente D$=rid
Bm componente D$Eavigator
E Btili)e a ta(ela a seguir para definir propriedades dos componentes D$Eavigator e D$=rid para
que utili)em o componente DataSource do form3
'ome do Componente (ropriedades !alor
DB.rid> DataSource DataSource1
DB'avi&ator DataSource DataSource1
L Crie um event handler %n2ctivate para o form utili)ando o %(,ect Inspector' Digite o c/digo
a(ai#o no handler %n2ctivate3
Cuery!.SCL.A /;Select T from customer>01
Cuery!.Open1
!ste c/digo adiciona uma instru*o SD6 O propriedade SD6 do componente Duer;' 0oc1 pode
definir esta instru*o SD6 como uma propriedade utili)ando o %(,ect Inspector'
2p/s adicionar a instru*o SD6+ seu event handler deve ser3
Cuery!.SCL.A/ ;Select T 5rom 4ustomer> 01
Cuery!.Open1
I Duando sua aplica*o for compilada satisfatoriamente' grave9a' Depois+ e#ecute sua aplica*o e
teste9a utili)ando o Eavigator para atuali)ar e inserir linhas no dataset'
J Duando tiver terminado+ feche a aplica*o'
Passos para o %st)#io +
!#ecute os passos a seguir para modificar uma aplica*o para consultar uma (ase de dados+ (aseado em uma
identifica*o do cliente3
(asso #01o
> Btili)ando a p-gina Standard do Component 5alette+ adicione os seguintes ao form3
Dois componentes (ot*o
Bm componente !dit
Bm componente 6a(el
A Btili)e a informa*o da ta(ela a seguir para definir propriedades destes componentes3
'ome do Componente (ropriedade !alor
Btton> Caption Duer;
BttonA Caption !#ec Duer;
/dit> He#t
0isi(le
!mpt;"
Jalse
La+el Caption
0isi(le
IdCliente
Jalse
11F
InforBRs - Informtica Brasileira Ltda.
(asso #01o
C 2dicione o seguinte event para o evento %nClic4 do $utton13
Eit!.Disible 2 3 "rue1
Label!.Disible 2 3 "rue1
D 2dicione o seguinte event handler para o evento %nClic4 do $utton:
Cuery!.4lose1
Cuery!.SCL.4lear1
Cuery.SCL.A
/;Select T from customer 8here ;R>4ustGo 3 ;R Eit!."e#t01
Cuery.Open1
Eit!.Disible 2 3 5alse1
Label!.Disible 2 3 5alse1
(asso #01o
E Compile e grave sua aplica*o'
!#ecute e teste9a atrav.s do seguinte3
Selecione um nQmero de cliente da lista de clientes e d1 um clique em Duer;'
Digite o nQmero e d1 um clique em !#ec Duer; para e#i(ir um Qnico cliente no grid'
&tili2ando o 1isual QuerA #uilder
Introdu(o
% 0isual $uilder 0D$" . uma ferramenta para constru*o de queries (aseadas em SD6' Com esta
ferramenta+ voc1 pode construir queries comple#as com pouco ou nenhum conhecimento de SD6' % 0D$
permite construir estas queries comple#as iniciando com um quer; simples+ permitindo e#ecutar a quer; e
fornecer ferramentas para refin-9la ' 0oc1 constr/i queries incrementalmente adicionando e#presses+
ta(elas+ campos e relacionamentos at. o(ter os resultados dese,ados'
tivando o 9isual 1uer8 Builder
5ara ativar o 0isual Duer; $uilder + voc1 deve utili)ar um componente Duer;' Bma ve) inserido um
componente Duer; em seu form+ voc1 pode ativar o 0isual Duer; $uilder selecionando o componente Duer;
e dando um clique com o (ot*o direito do mouse' % Speed&enu do Componente aparecer-' !nt*o+ selecione
4er* Bilder'
Selecionando um lias de banco de dados
% item de menu 4er* Bilder e#i(e o quadro de di-logo Data(ases+ e#i(ido na figura a seguir' !ste
quadro de di-logo permite selecionar um (anco de dados e logar9se nele' % logon pode ser em um servidor
de (anco de dados local ou remoto durante o design'
1:>
InforBRs - Informtica Brasileira Ltda.
:anela do 9isual 1uer8 Builder
2p/s logar9se ao (anco de dados+ a ,anela do 0isual Duer; $uilder . apresentada' % quadro de di-logo 2dd
so(repe9se'
Toolbar do 9isual 1uer8 Builder
2 Hool(ar do 0isual Duer; $uilder aparece para selecionar as operaes a serem e#ecutadas' 2 Hool(ar
aparece+ como segue3
Descri(o da Toolbar do 9isual 1uer8 Builder
2 ta(ela a seguir descreve os (otes da Hool(ar do 0isual Duer; $uilder respectivamente3
Bot1o Descri01o
'ew Inicia uma nova quer;
Open 2(re um arquivo de quer;
Save #s =rava uma quer; em um arquivo
Options !#i(e o quadro de di-logo %ptions+ que permite definir diversas opes de quer;' 5or
e#emplo+ voc1 pode definir uma op*o para remover linhas duplicadas'
)a+le !#i(e o quadro de di-logo 2dd Ha(le+ que permite adicionar ta(elas O instru*o SD6
/3pression !#i(e o quadro de di-logo !#pression+ que permite criar e#presses SD6+ por e#emplo+ upper
Eome" ou Sum CustoeItem"
S4L !#i(e a ,anela SD6 Statement+ que cont.m+ a instru*o SD6 atual'
Rn !#ecuta a instru*o SD6 atual e e#i(e os resultados
OB Define a propriedade SD6 do componente Duer; para a instru*o SD6 atual no 0isual Duer;
$uilder
Cancel Sai do 0isual Duer; $uilder sem definir a propriedade SD6 do componente Duer;
@elp !#i(e o Aelp online do 0isual Duer; $uilder
1uadro de Di)lo#o dd Table
Duando voc1 a(re o 0isual Duer; $uilder+ o quadro de di-logo 2dd Ha(le aparece' !ste quadro permite
adicionar ta(elas O quer;' 0oc1 adiciona ta(ela O quer; quando inicia o processo de constru*o da quer; ou
quando quer modificar uma quer; e#istente'
% quadro de di-logo 2dd Ha(le lista os nomes de todas as ta(elas no (anco de dados atual' Se voc1 quiser
incluir ta(elas de sistema+ d1 um clique no chec4 (o# Inclde S*stem )a+les.
Passos para dicionar Tabelas ; 1uer8
!#ecute os passos a seguir para adicionar uma ou mais ta(elas ao espao de tra(alho de 0isual Duer;
$uilder a serem includas na quer;3
1:1
InforBRs - Informtica Brasileira Ltda.
(asso #01o
> Insira um componente Duer; ao form+ e d1 um clique com o (ot*o direito do mouse so(re o
componente para e#i(ir o Speed&enu'
A Selecione Duer; $uilder para e#i(ir a ,anela do 0isual Duer; $uilder'
C Se o quadro de di-logo 2dd Ha(le n*o aparecer na frente da ,anela do 0isual Duer; $uilder+ d1 um
clique so(re o (ot*o Ha(le na Hool(ar para e#i(i9lo'
D Selecione o nome da ta(ela da lista de ta(elas e#i(ida no quadro de di-logo 2dd Ha(le+ e d1 um
clique em 2dd'
2 ta(ela aparece no espao de tra(alho da ,anela do 0isual Duer; $uilder'
E 8epita o passo < at. que todas as ta(elas se,am adicionadas O quer;+ e d1 um clique em Close'
dicionando Colunas ; 1uer8
5ara adicionar uma coluna de uma das ta(elas O quer;+ voc1 pode efetuar um dos seguintes3
Selecionar o nome da coluna e arrastar a coluna e solt-9la na grade da quer;+ na parte inferior da ,anela'
D1 um duplo9clique no nome da coluna para inser9la na grade da quer;'
%specificando uma Condi(o de :oin
=eralmente voc1 precisar- com(inar informaes de diversas ta(elas' 5or e#emplo+ voc1 pode querer
consultar o (anco de dados para encontrar todos os pedidos + o nome dos clientes+ a data de pedido e o
fornecedor de um dos itens' !sta quer; envolver- colunas das ta(elas CBSH%&!8+ 0!ED%8S+ IH!&S e
%8D!8S' 5ara construir uma quer; deste tipo e comple#idade+ voc1 precisar- especificar como as diversas
ta(elas dever*o ser com(inadas' Com o 0isual Duer; $uilder voc1 especifica as colunas a serem com(inadas
arrastando o nome de uma coluna e soltando9a so(re o nome da coluna onde a com(ina*o ser- feita'
Duando completar esta opera*o+ uma linha ser- desenhada no espao de tra(alho da quer;+ ligando as
colunas das duas ta(elas'
0evisando e %ditando o Crit5rio de Combina(o
0oc1 pode revisar e editar o crit.rio de com(ina*o dando um duplo9clique so(re a linha indicando a
com(ina*o no espao de tra(alho da quer;' % quadro de di-logo Soin aparecer-'
%specificando Crit5rio de Sele(o de uma 1uer8
5ara especificar um crit.rio de sele*o de uma quer;+ utili)e a linha Criteria da grade da quer;'
Se a linha Criteria n*o estiver visvel+ utili)e a (arra de rolagem'
2 linha Criteria permite qualquer e#press*o v-lida de quer; dentro da cl-usula WA!8! de uma instru*o
SD6' !#presses v-lidas incluem os seguintes operadores3
Operador Si&nificado
U Igual
V &aior que
W &enor que
XU E*o igual
liFe Compara*o de
string de
caracteres com
separa*o de
padr*o
+etween E*o menor que o
valor inicial e
n*o maior que o
valor final
in !ncontrado em
1::
InforBRs - Informtica Brasileira Ltda.
uma lista
!#presses digitadas na linha Criteria s*o condies 2ED' 5or e#emplo+ se voc1 tiver uma ta(ela com um
nome de coluna e quiser encontrar todas as entradas na coluna nome que iniciem com C+ voc1 digitaria
nome li4e fC' /' fna linha Criteria' % efeito seria equivalente a adicionar 2ED nome 6IW! fC ' /'gO cl-usula
WA!8! da instru*o SD6' Condies %8 S*o digitadas como e#presses na linha %8 a(ai#o da linha
Criteria" da grade da quer;'
Ordenando 0esultados da 1uer8
0oc1 pode ordenar resultados da quer; na ordem ascendente ou descendente em uma determinada coluna'
5ara especificar a ordem de ordena*o+ posicione o ponteiro do mouse so(re a coluna+ na linha Sort da grade
da quer;' D1 um clique com o (ot*o direito do mouse e selecione' 2scending ou Descending no menu pop9
up' 0oc1 pode especificar at. oito colunas para ordena*o'
#rupando 0esultados de 1uer8
0oc1 pode agrupar resultados de quer; utili)ando a linha %ption da grade da quer;' 5ara especificar uma
op*o para uma coluna+ posicione o ponteiro do mouse so(re a coluna na linha %ption' D1 um clique com o
(ot*o direito do mouse para e#i(ir o Speed&enu %ption' 2s opes s*o funes de agrupamento3 Show+
2verage+ Count+ &a#imum+ &inimum+ Sum+ =roup 1"+ e =roup :"'
%specificando Condies de #rupamento
0oc1 pode especificar condies de agrupamento utili)ando a linha =roup Condition da grade da quer;'
Condies de agrupamento especificam operaes para agrega*o de colunas' 5or e#emplo+ 0oc1 pode
querer linhas de dados onde a coluna 2verage Cost+ se,a maior que )ero'' 2 linha =roup Condition .
equivalente a adicionar uma e#press*o com a cl-usula A20IE= em uma instru*o S!6!CH do SD6
agrupado cl-usula =8%B5 $X"'
Definindo %'presses de 1uer8
% 0isual Duer; $uilder permite definir e#presses como parte de uma quer;' !#presses podem ser c-lculos
so(re valores de dados num.ricos ou e#presses de strings+ tais como concatena*o ou uma su(string'
5ara definir uma e#press*o+ d1 um clique no (ot*o !#pression na Hool(ar' % quadro de di-logo !#pression
aparecer-
% quadro de di-logo !#pression permite desenvolver e#presses SD6' 0oc1 pode especificar operadores
aritm.ticos+ tais como3
I sinal \mais] +de adi*o"
9 sinal]menos] + de su(tra*o"
K asterisco+ para multiplica*o"
/ (arra+ para divis*o"
0oc1 pode incluir nomes de colunas e agregar e#presses+ tais como avg+ count+ min+ma#+e sum' %u voc1
pode editar e#presses manualmente ou construir uma+ utili)ando o quadro de edi*o !#pression'
Definindo Opes para 1ueries
% quadro de di-logo %ptions . utili)ado para especificar opes para instrues SD6' 0oc1 pode especificar
que registros duplicados se,am removidos ' !sta op*o tem o efeito de utili)ar a instru*o SD6 DISHIECH'
5ara especificar uma op*o+ d1 um clique no (ot*o %ptions na Hool(ar' % quadro de di-logo %ptions
aparece'
%'ibindo 0esultados de 1uer8
0oc1 pode e#ecutar a quer; que o 0isual Duer; $uilder gera' % resultado da quer; . e#i(ido na ,anela 8esult
Window' !sta ,anela permite verificar se as colunas da quer;+ crit.rio de sele*o+ agrupam ento e ordena*o
foram especificados corretamente pela quer;'
5ara e#ecutar a quer;+ d1 um clique no (ot*o 8un da Hool(ar' Bma 8esult Window aparecer-'
1:7
InforBRs - Informtica Brasileira Ltda.
%'ibindo a Intru(o S12 para 1uer8
0oc1 pode checar instrues SD6 para uma quer; visuali)ando a ,anela SD6 Statement' 2 ,anela e#i(e a
instru*o SD6 S!6!CH associada com a quer; atual' Conforme adicionar ou alterar colunas de quer;+
crit.rio ou ordena*o+ a SD6 Window . atuali)ada automaticamente' 0isuali)ar as intrues SD6 fornece um
feed(ac4 imediato so(re a contru*o da quer; e o au#ilia no aprendi)ado da sinta#e SD6'
5ara checar as instrues+ d1 um clique no (ot*o SD6 na Holl$ar' 2 ,anela SD6 statement aparecer-'
Definindo e &tili2ando Capos Calculados
Introdu(o
Bm campo calculado . um campo que e#i(e valores gerados pelo programa' 5or e#emplo+ voc1 pode ter uma
ta(ela de (anco de dados contendo informaes so(re o(,etos retangulares' Cada linha possui uma coluna de
altura e largura+ mas voc1 precisa e#i(ir a -rea dos o(,etos retangulares' 2 solu*o . calcular a -rea atrav.s
das alturas e larguras'
% Delphi permite utili)ar campos calculados em suas aplicaes'
Implementar um campo calculado envolve o seguinte processo3
/st&io (rocesso
> Definir o campo calculado
A !screver c/digo para o campo calculado
Passos para o %st)#io *
Campos calculados s*o definidos com a assist1ncia do Jields !ditor'
% Jields !ditor tra(alha com os componentes Ha(le e Duer; do HDataSet' Duando voc1 define um campo
calculado para um dataset+ o Jields !ditor adiciona um novo o(,eto campo ao dataset'
!#ecute os passos a(ai#o para definir um campo calculado
(asso #01o
> Selecione o componente Duer; ou Ha(le derivado HDataSet"+ e iniciali)e o Jields !ditor'
5ara HHa(le+ este passo assume que as propriedades Data(aseEame e Ha(leEame est*o definidas'
5ara HDuer;+ este passo assume que as propriedades Data(aseEame e SD6 est*o definidas'
A 2dicione campos para e#i(i*o ou c-lculo no quadro de di-logo Jields !ditor'
C D1 um clique no (ot*o Define no Jields !ditor'
% quadro de di-logo Define aparecer-'
D Digite um nome para o campo calculado na cai#a de te#to Jield Eame'
Conforme digitar o nome+ ele . e#i(ido concatenado ao nome do componente no campo
Component name' 0oc1 pode alterar este nome se dese,ar'
E Selecione uma entrada da cai#a de lista Jield t;pe'
G Aa(ilite Calculated'
I D1 um clique em %W para completar a defini*o do campo calculado'
Passos para o %st)#io +
Bma ve) definido o campo+ voc1 fornece valores para o campo escrevendo c/digo para ele'
!#ecute os passos a(ai#o para implementar um campo calculado3
(asso #01o
> Selecione o componente DataSet HDuer; ou HHa(le" no %(,ect Selector do %(,ect Inspector'
A !#i(a a p-gina !vents do %(,ect Inspector
C D1 um duplo9clique so(re a coluna do event handler do evento %nCalcJields para criar e e#i(ir a
procedure %nCalcJields no Code !ditor'
D Digite o c/digo que define o valor e propriedades do campo calculado'
E Compile e grave sua aplica*o'
1:<
InforBRs - Informtica Brasileira Ltda.
!#ecute e teste9a para certificar9se que o campo est- sendo calculado corretamente'
'utorial> Criando ua (plicao &tili2ando u
Capo
Introdu(o<
2 melhor maneira de se aprender a tra(alhar com campos calculados . utili)ando um e#emplo' Eesta se*o
voc1 e#i(ir- informa*o so(re pases do mundo' 2s ta(elas deste e#emplo+ Countr;+ cont.m dois campos
chamados 2rea e 5opulation+ entre outros'
Passos para %'ibir a Popula(o por =ilometro 1uadrado
2ssumindo que o campo 2rea este,a em Wilometros quadrados e#ecute os passos a seguir para e#i(ir a
popula*o por 4ilometro quadrado em um form3
(asso #01o
> 2(ra um novo pro,eto e grave9o'
Duando solicitado+ grave a unit como !?M$&2IE'52S e o pro,eto como !?2&5M$'D58'
A Btili)ando a p-gina Data 2ccess da Component 5alette+ adicione um componente Ha(le e
DataSource ao seu form'
C Defina as propriedades para os componentes Ha(le e DataSource como segue3
'ome do Componente (ropriedade !alor
)a+le> Data(aseEame
Ha(leEame
2ctive
D$D!&%S
C%BEH8X'D$
Hrue
DataSorce> DataSet Ha(le1
(asso #01o
D Btili)ando a p-gina Data Controls da Component 5alette+ adicione um componente D$=rid e
D$Eavigator ao seu form'
G Btili)e a ta(ela a seguir para definir as propriedades do D$Eavigator e D$=rid para que utili)em o
componente DataSource'
'ome do Componente (ropriedade !alor
DB.rid> DataSource DataSource1
DB'avi&ator DataSource DataSource1
(asso #01o
G Inicie o Jields !ditor para o Componente Ha(le1'
I 2dicione todos os campos da ta(ela ao dataset'
J Defina um campo chamado 5op2rea e selecione JloaHJield na list (o# Jield t;pe'
O Certifique9se que o chec4 (o# Calculated est- selecionado+ e clique em %W'
>? Saia do Jields !ditor'
>> Btili)e o %(,ect Inspector para criar um event handler para o evento %nCalcJields do componente
Ha(le' Digite c/digo no event handler para que fique similar ao seguinte3
(asso #01o
>A Btili)e o %(,ect Inspector para definir as seguintes propriedades do componente Jield3
'ome do Componente (ropriedade !alor
)a+le>(op#rea Displa;Jormat ' h
(asso #01o
1:G
InforBRs - Informtica Brasileira Ltda.
>C !#ecute e teste a aplica*o
>D Duando tiver terminado o teste+ grave e feche seu pro,eto'
&tili2ando os Coponentes Data)ase 6ooBup
Introdu(o
Bm data(ase loo4up+ ou ta(ela de (usca . o processo de encontrar te#to descritivo de um valor codificado'
Bma situa*o comum onde ta(elas de (usca seriam utili)adas+ seria quando voc1 est- editando o input de
usu-rio e quiser e#i(ir uma informa*o mais significativa+ e n*o valores codificados'
% Delphi fornece dois componentes para (uscar valores em uma ta(ela de (anco de dados+ ou editar o input
contra um valor em uma ta(ela' !les s*o os seguintes3
Componente D$6oo4up6ist
Componente D$6oo4upCom(o
% termo loo4up em cada nome de componente refere9se Os ta(elas de (usca' % termo loo4up ta(les refere9se
Os ta(elas que cont.m informa*o descritiva so(re um valor codificado' !sta se*o discute a utili)a*o
destes componentes' !les se encontram na p-gina Data Controls da Component 5alette'
Componente DB2oo3up2ist
% componente D$6oo4up6ist . um componente 6ist$o# data9aware pro,etado para (uscar valores em uma
ta(ela (aseado no valor de uma segunda ta(ela' % D$6oo4up6ist cont.m um con,unto finito de dados+ o
usu-rio deve selecionar uma das opes da lista' Bm D$6oo4up6ist permite e#i(ir um con,unto de opes
(aseado no valor em outra ta(ela' % componente D$6oo4up6ist difere do componente D$6ist$o# porque
permite coordenar o valor selecionado do D$6oo4up6ist com a linha corrente de outra ta(ela do (anco de
dados'
Componentes DB2oo3upCombo
% componente D$6oo4upCom(o . um componente Com(o$o# datawarw similar ao $D6oo4up6ist+ e#ceto
que um usu-rio pode selecionar um valor na lista ou digitar um novo valor' Bm Com(o$o# de onde o
D$6oo4upCom(o . derivado com(ina as capacidades de um 6ist$o# com as capacidades de um componente
!dit'
dicionando um Componente Database 2oo3up a um !orm
Duando voc1 adiciona um componente D$6oo4up6ist ou D$6oo4upCom(o ao seu form+ assumimos que3
0oc1 possui uma aplica*o de (anco de dados
% form na aplica*o possui pelo menos um DataSource e um componente derivado de HDataSet sendo
utili)ado para e#i(ir informaes do (anco de dados
2dicionar um componente data(ase loo4up envolve o seguinte processo3
/st&io (rocesso
> 2dicionar o componente data(ase loo4up e lig-9lo a um componente DataSource e#istente e
propriedade DataJield
A 2dicionar um novo componente Duer; ou Ha(le HDataSet" e DataSource+ e utili)ar este
DataSource para (uscar valores codificados no primeiro DataSource
Passos para o %st)#io *
!#ecute os passos a seguir para adicionar um componente D$6oo4up6ist ou D$6oo4upCom(o a um data
source e#istente3
(asso #01o
> 2dicione um componente data(ase loo4up em seu form'
A Defina a propriedade DataSource a um componente DataSource que e#ista no form e que contenha
1:L
InforBRs - Informtica Brasileira Ltda.
o valor que voc1 este,a procurando'
C Defina a propriedade DataJield ao campo que necessite de (usca'
Passos para o %st)#io +
!#ecute os passos a seguir para ane#ar o componente D$6oo4up6ist ou D$6oo4upCom(o O ta(ela de (usca3
(asso #01o
> 2dicione um componente HDataSet utili)ando um componente Ha(le ou Duer; que corresponda O
ta(ela de (usca'
A Defina a propriedade Data(aseEame do novo componente HDataSet'
C !#ecute um dos seguintes3
Defina a propriedade Ha(leEame do novo componente Ha(le'
!ntre com um quer; para a propriedade SD6 do componente quer;'
D 2dicione um novo componente DataSource+ e defina a propriedade DataSet ao novo componente
HDataSet'
E Defina a propriedade 6oo4upSource de componente D$6oo4up ao novo componente DataSource'
G Defina a propriedade 6oo4upJield ao valor chave da ta(ela de (usca'
I Defina a propriedade 6oo4upDispla; ao campo que voc1 queira e#i(ir no componente
D$6oo4up6ist'
'utorial> Criando ua (plicao &tili2ando u
Coponente Data)ase 6ooBup
Introdu(o
2 melhor maneira de se aprender a utili)ar um componente D$6oo4up . atrav.s de um e#emplo' Eesta
se*o+ voc1 utili)ar- um componente D$6oo4up6ist para e#i(ir um nome de empresa (aseado no campo
CustlD encontrado na ta(ela %rders'
Passos do Tutorial
% processo do tutorial envolve os seguintes est-gios3
/st&io (rocesso
> Criar um form que e#i(a uma lista est-tica dos campos de uma ta(ela de (anco de dados utili)ando
um componente Ha(le+ DataSource+ D$=rid e D$Eavigator
A 2dicionar e conectar um componente HD$6oo4up6ist O aplica*o
C 2dicionar c/digo para coordenar aes do componente HD$6oo4up6ist quando o sistema insere ou
atuali)a uma linha
Passos para o %st)#io *
!#ecute os passos a seguir para criar um form que e#i(a campos selecionados da ta(ela %rders3
(asso #01o
> 2(ra um novo pro,eto e grave9o
Duando solicitado+ grave a unit como !?MC&2IE'52S e o pro,eto como !?2&5M'D58'
A Btili)ando a p-gina Data 2ccess da Component 5alette+ adicione um componente Ha(le e
DataSource ao seu form'
C Btili)ando a p-gina Data Controls+ adicione os seguintes ao seu form3
Bm componente D$=rid
Bm componente D$Eavigator
D Defina as seguintes propriedades para cada componente+ como mostrado na ta(ela3
1:M
InforBRs - Informtica Brasileira Ltda.
'ome do Componente (ropriedade !alor
)a+le> Data(ase Eame
Ha(leEame
2ctive
D$!&%S
%8D!8S'D$
Hrue
DataSorce> DataSet
2uto!dit
Ha(le1
Jalse
DB.rid> DataSource DataSource1
DB'avi&ator DataSource DataSource1
(asso #01o
E Btili)e o Jields !ditor para adicionar os seguintes campos ao dataset Ha(le13
%rderEo
CustEo
SaleDate
ItemsHotal
2mount5aid
G 2rran,e os campos no Jields !ditor para que %rderEo se,a o primeiro campo e CustEo se,a o
segundo'
I Compile e grave a aplica*o'!#ecute e teste9a'
Passos para o %st)#io +
!#ecute os passos a seguir para adicionar um componente D$6oo4up6ist O aplica*o3
(asso #01o
> Btili)ando a p-gina Data Controls da Component 5alette+ adicione um componente D$6oo4up6ist
ao seu form3
A Btili)e o %(,ect Inspector para definir as seguintes propriedade do componente D$6oo4up6ist3
'ome do Componente (ropriedade !alor
DBLooFpList> DataSource
DataJield
DataSource1
CustEo
(asso #01o
C 2dicione um novo componente Ha(le e DataSource ao seu form' Defina as propriedades para cada
componente+ como mostrado na ta(ela a seguir3
'ome do Componente (ropriedade !alor
)a+leA Data(aseEame
Ha(leEame
2ctive
D$D!&%S
CBSH%&!8'D$
Hrue
DataSorceA DataSet Ha(le:
(asso #01o
D Btili)e o Jields !ditor para adicionar os seguintes campos ao dataset Ha(le:3
CustEo
Compan;
E Conecte o componente D$6oo4up6ist ao segundo DataSource utili)ando a ta(ela a seguir3
'ome do Componente (ropriedade !alor
DBLooFpList> 6oo4upSource
6oo4upJield
DataSource:
CustEo
1:N
InforBRs - Informtica Brasileira Ltda.
6oo4upDispla; Compan;
(asso #01o
G Compile e grave a aplica*o'
!#ecute e teste9a'
% componente D$6oo4up6ist destaca a empresa que corresponde ao valor de CustEo na linha do
D$=rid'
Passos para o %st)#io ,
!ste c/digo de event handler permitir- definir o valor de CustEo durante o modo de edi*o ou inser*o
atrav.s de um duplo9clique no componente D$6oo4up6ist'
!#ecute os passos a seguir para adicionar um event handler para os eventos de D$6oo4up6ist+ %nD(lClic4+
ou %nClic43
(asso #01o
> 2dicione as instrues a seguir no evento %nD(lClic4 do componente D$6oo4up6ist3
if "able.State in @sEit? s.nsertA then
"able!4ustGo.Dalue 23 "able64ustGo.Dalue1
: Compile e grave sua aplica*o'
!#ecute e teste9a alternando a aplica*o entre o modo de edi*o e inser*o e utili)ando o
D$6oo4up6ist para definir o valor de CustEo na ta(ela %rders'
6a)> &tili2ando Coponentes de #anco de Dados
Objetivos
!ste la( refora a sua ha(ilidade em3
2dicionar um componente Ha(le
2dicionar um componente Data(ase =rid
2dicionar um componente Data(ase Duer;
2dicionar componentes Data 2ccess
Btili)ar o 0isual Duer; $uilder
&anipular e coordenar as aes dos componentes Data 2ccess e Data Control
Cen)rio
0oc1 construir- o incio de um sistema de acompanhamento de vendas' !ste sistema utili)ar- uma Qnica
grade de (anco de dados para e#ecutar duas tarefas3
!#i(ir informaes de clientes e faturas
6igar clientes a faturas
Eo processo de constru*o desta aplica*o+ voc1 utili)ar- e coordenar- as aes dos componentes Data
2ccess+ Data Control e Standard'
Processo
Btili)e o seguinte processo para aplicar o que voc1 aprendeu3
/st&io (rocesso
> 2(ra um novo pro,eto e grave9o'
Duando solicitado+ grave a unit como 62$M&2IE'52S e o pro,eto como 62$M'D58'
2ltere o Caption do form para que e#i(a 2plica*o de 2companhamento de 0endas'
A 2dicione os seguintes componentes ao form3
DataSource
1:F
InforBRs - Informtica Brasileira Ltda.
Ha(le
D$=rid
$utton
Defina as propriedades a seguir aos componentes+ como mostrado na ta(ela3

'ome do Componente (ropriedade !alor
)a+le> Data(aseEame
Ha(leEame
2ctive
D$D!&%S
CBSH%&!8'D$
Jalse
DataSorce> DataSet Ha(le1
DB.rid> DataSource DataSource1
Btton> Caption 2(rir Ha(ela iCustomer
/st&io (rocesso
C 2dicione event handler %nClic4 para $utton1 para que funcione como um (ot*o de 6iga[Desliga
da Ha(ela Customer'
Compile e grave sua aplica*o' !#ecute e teste9a'
Proceure "5orm!.-utton!4lic7/Sener2 "object01
be,in
if "able!.Acti)e 3 "rue then
be,in
"able!.4lose1
-utton!.4aption 2R Ubrir "abela E4ustomer ;1
en
else
be,in
"able!.4lose1
-utton!.4aption 2 3 ;5echar "abela E4ustomer>1
en
en1
/st&io (rocesso
D 2dicione os seguintes componentes ao form3
Duer;
Data Source
$utton
Defina as seguintes propriedades aos componentes3
'ome do Componente (ropriedade !alor
4er*> Data(ase Eame
SD6
2ctive
D$D!&%S
selectKfrom orders
Jalse
DataSorceA DataSet Duer;1
BttonA Caption 2(rir Ha(ela i%rder
/st&io (rocesso
E 2dicione e event handler %nClic4 a seguir para $utton:'
Compile e grave sua aplica*o' !#ecute e teste9a' 0oc1 consegue a(rir a ta(ela %rder[
proceure "5orm!.-utton64lic7 /Sener 2 "object01
be,in
if Cuery!.Acti)e 3 "rue then
be,in
Cuery!.Acti)e 23 5alse1
-utton6.4aption 2R Ubrir "abela EOrer>1
17>
InforBRs - Informtica Brasileira Ltda.
en
else
be,in
Cuery!.Acti)e 2R "rue1
-utton 6.4aption 2R ;5echar "abela EOrer>1
en
en1
/st&io (rocesso
G 2dicione dois componentes 8adio$utton ao form'
Defina as seguintes propriedades aos componentes3
'ome do Componente (ropriedade !alor
RadioBtton> Caption
Chec4ed
0er Clientes
Hrue
RadioBttonA Caption 0er 5edidos
(asso Yc1o
I 2dicione o event handler %nClic4 a seguir para 8adio$utton1 e 8adio$utton: respectivamente3
D-Nri!.DataSource 2R DataSource!1
D-Nri!.DataSource 2R DataSource61
J Compile e teste sua aplica*o como segue3
D1 um clique nos (otes para a(rir am(as as ta(elas'
Btili)e os (otes de r-dio para alternar entre os con,untos de dados'
Hudo est- funcionando[
O 2dicione os seguintes componentes complementares3
=roup
$utton
Dois componentes !dit
Dois componentes 6a(el
Defina as propriedades a seguir para cada um dos componentes e utili)e o c/digo a seguir para
event handler %nClic4 de $utton73
'ome do Componente (ropriedade !alor
.ropBo3> Caption 0a)io"
BttonC Caption iDefinir Clientes
/dit> He#t 0a)io"
/ditA He#t 0a)io"
La+el> Caption Incio3
La+elA Caption Jinal3
proceure "5orm!.-uttonH4lic7/Sener 2 "object01
be,in
"able!.SetRan,eStart1
"able!.5iels@BA .AsStrin, 2R Eit!."e#t1
"able!.SetRan,eEn1
"able!.5iels@BA .AsStrin, 2R Eit6."e#t1
"able!.ApplyRan,e1
en1
/st&io (rocesso
>? Compile e grave sua aplica*o'
!#ecute e teste9a+ como segue3
D1 um clique em 2(rir Ha(ela %rders e depois em 0er 5edidos'
Digite valores nos campos Incio e Jinal por e#emplo+ 1>>G e 1>>F"+ e d1 um clique em Definir
171
InforBRs - Informtica Brasileira Ltda.
Clientes'
Dual o maior nQmero de pedido e#i(ido[99999
Dual o menor[9999
>> 2dicione os seguintes componentes complementares ao seu form3
Duer;
DataSource
8adio$utton
Defina as propriedades a seguir para cada componente+ como mostrado na ta(ela'
'ome do Componente (ropriedade !alor
4er*A Data(aseEame D$D!&%S
DataSorceC DataSet Duer;:
RadioBttonC Caption 0er 5edidos de Clientes
/st&io (rocesso
>A !#ecute as tarefas a seguir para dar O sua aplica*o a ha(ilidade de utili)ar o componente D$=rid
para e#i(ir todos os seus pedidos agrupados por cliente'
Iniciali)e o Duer; $uilder utili)ando o Speed&enu do Componente Duer;:' Selecione
D$D!&%S na lista'
2dicione as ta(elas Customer e %rders'
Crie uma liga*o do campo CustEo na ta(ela Customer com o campo CustEo na ta(ela %rders'
2dicione os seguintes campos ao resultado da quer;3
Customer'CustEo
Customer'Compan;
%rders'%rderEo
%rders'2mound5aid
>C Defina o crit.rio de ordena*o' %rdene o resultado da quer; na ordem ascendente por Customer
Eum(er'
=rave seu tra(alho e saia do 0isual Duer; $uilder'
>D Btili)ando o %(,ect Inspector+ locali)e o componente Duer;:' 0isuali)e a propriedade SD6 e defina
a propriedade 2ctive para Hrue'
>E 2dicione o seguinte event handler %nClic4 para 8adio$utton73
procedure HJorm1'8adio$utton7Clic4Sender 3 Ho(,ect"Y
(egin
D$=rid1'DataSource 3I DataSource7Y
endY
>G Compile e grave sua aplica*o'
!#ecute e teste9a+ como segue3
D1 um clique em 0er 5edidos de Clientes'
D1 um clique em 0er 5edidos de Clientes'
Sua quer; foi e#ecutada corretamente[
$esuo do Captulo
Pontos Chave
2p/s completar este captulo+ voc1 aprendeu que3
5ara manipular e consultar (ancos de dados no Delphi+ voc1 deve entender o conceito de um dataset'
Bm dataset no Delphi . o o(,eto tipo HDataSet e . uma classe a(strata' %s componentes Duer;+ Ha(le+ e
Stored5roc s*o chamados de componentes HDataSet porque s*o derivados do o(,eto HDataSet'
% componente DataSource atua como um intermedi-rio entre o componente DataSet HHa(le ou
HDuer;" e o componente Data Control'
17:
InforBRs - Informtica Brasileira Ltda.
% componente Ha(le . um componente DataSet que se comunica com uma ta(ela de (anco de dados
atrav.s do $D!'
% Jields !ditor permite criar uma lista de campos de um dataset'
% componente D$=rid fornece uma maneira conveniente de e#i(ir diversas linhas de dados de um
componente Ha(le ou Duer;' Sua aplica*o pode utili)ar o D$=rid para inserir+ deletar+ editar ou e#i(ir
dados de um (anco de dados'
% componente Duer; permite utili)ar SD6+ gerenciar a comunica*o com o $D!+ e serve como interface
entre o $D! e os componentes DataSource em seus forms'
% visual Duer; $uilder . uma ferramenta visual para construir queries (aseadas em SD6+ e permite
construir queries comple#as com pouco ou nenhum conhecimento de SD6'
% Jields !ditor tra(alha com os componentes Ha(le e Duer; do HDataSet para definir campos calculados'
% Jields !ditor adiciona um novo o(,eto campo ao dataset'
% Delphi fornece os componentes D$6oo4up6ist e D$6oo4upCom(o para valores de (usca em uma
ta(ela'
Termos e Definies>
2 ta(ela a seguir . uma refer1ncia r-pida aos termos e#plicados neste captulo'
)ermo Defini01o
Campo calclado Bm campo que e#i(e valores gerados pelo programa
Classe a+strata Bma classe de onde voc1 pode derivar outras classes' !ntretanto+ voc1 n*o pode criar
uma vari-vel desta classe'
Componente
DataSet
Bm componente Ha(le+ Duer;+ ou Stored5roc+ que . derivado de um o(,eto the
HDataSet
Data+ase looFp % processo de encontrar o te#to descritivo para um valor codificado
Dataset Bm o(,eto no Delphi que consiste de uma s.rie de registros+ cada um contendo
qualquer nQmero de campos e um ponteiro para o registro atual
4er*
parametri2ada
Bma quer; onde um ou mais valores na condi*o de sele*o s*o desconhecidos at. o
momento da e#ecu*o
)a+elas de +sca Ha(elas que cont.m informa*o descritiva so(re um valor codificado
177

Potrebbero piacerti anche