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