Escolar Documentos
Profissional Documentos
Cultura Documentos
DELPHI 5
Del phi 5
I NDI CE
O Ambiente de Desenvolvimento do Delphi 5.0 _____________________________________7
A Janela Principal __________________________________________________________________________ 7 A Paleta de Componentes ___________________________________________________________________ 7 A Barra de Ferramentas _____________________________________________________________________ 8 A Barra de Menus e os Menus de atalho ________________________________________________________ 9 Os Formulrios ____________________________________________________________________________ 9 O Editor de Cdigo _________________________________________________________________________ 9 O Code Explorer ___________________________________________________________________________ 9 O Object Inspector ________________________________________________________________________ 10 Navegando pelo ambiente __________________________________________________________________ 10 Formulrios e Units________________________________________________________________________ 11 O que o arquivo de projeto ________________________________________________________________ 11 Visualizando e entendendo o arquivo de projeto _________________________________________________ 11 Alterando o arquivo de projeto _______________________________________________________________ 12 Usando o Project Manager __________________________________________________________________ 13 Usando Project Groups ____________________________________________________________________ 13 Salvando um Project Group _________________________________________________________________ 14 Adicionando e removendo projetos em um Project Group__________________________________________ 14 Ativando um projeto _______________________________________________________________________ 14 Compilando e executando projetos ___________________________________________________________ 14 Compilando projetos_______________________________________________________________________ 14 Compilando Project Groups _________________________________________________________________ 14 Executando o aplicativo gerado ______________________________________________________________ 15 Arquivos .DFM ___________________________________________________________________________ 15 Arquivos .DCU ___________________________________________________________________________ 15 Arquivos .RES, .DOF e .CFG ________________________________________________________________ 16 Tipos de componentes _____________________________________________________________________ 16 Componentes visuais. _____________________________________________________________________ 16 Propriedades_____________________________________________________________________________ 16 Alterando propriedades em tempo de desenvolvimento _________________________________________ 16 Alterando propriedades em tempo de execuo _______________________________________________ 18 Eventos _________________________________________________________________________________ 18 Associando cdigo a um evento ___________________________________________________________ 18 Apagando eventos ______________________________________________________________________ 19 Mtodos ________________________________________________________________________________ 19 Adicionando componentes a um formulrio _____________________________________________________ 19 Manipulando componentes__________________________________________________________________ 20 Selecionando e redimensionando componentes _______________________________________________ 20 Duplicando e transferindo componentes _______________________________________________________ 21 Alinhando, travando e sobrepondo os componentes ______________________________________________ 21 Alinhando pela grade ____________________________________________________________________ 22 Travando componentes __________________________________________________________________ 23 Controlando a sobreposio de componentes_________________________________________________ 23 Adicionando formulrios ____________________________________________________________________ 23 Especificando o formulrio principal___________________________________________________________ 23 Ligando formulrios _______________________________________________________________________ 24 Propriedades dos formulrios________________________________________________________________ 25 Eventos dos formulrios ____________________________________________________________________ 25 Mtodos dos formulrios ___________________________________________________________________ 26 Mostrando formulrios _____________________________________________________________________ 26 A propriedade ModalResult _______________________________________________________________ 26 Usando o teclado com formulrios ____________________________________________________________ 27 Alterando a ordem de tabulao______________________________________________________________ 27 Evitando que um componente receba o foco ____________________________________________________ 27
Del phi 5
Controlando a criao dos formulrios_________________________________________________________ 28 Imprimindo formulrios _____________________________________________________________________ 28 Utilizando o objeto TFrame__________________________________________________________________ 29 Caixas de dilogo predefinidas_______________________________________________________________ 30
Adicionando menus e abrindo o Menu Designer _________________________________________________ 32 Os componentes de menus _________________________________________________________________ 32 Construindo menus principais _______________________________________________________________ 32 Definindo "teclas de acelerao" e teclas de atalho_______________________________________________ 33 Criando submenus ________________________________________________________________________ 33 Construindo menus popup __________________________________________________________________ 34 Associando cdigo aos comandos de um menu _________________________________________________ 34 Trabalhando com vrios menus ______________________________________________________________ 35 Propriedades comuns______________________________________________________________________ 35 Eventos comuns __________________________________________________________________________ 37 Componente Button _______________________________________________________________________ 37 Propriedades __________________________________________________________________________ 37 Eventos_______________________________________________________________________________ 37 Componente Edit _________________________________________________________________________ 38 Propriedades __________________________________________________________________________ 38 Eventos_______________________________________________________________________________ 38 Componente Label ________________________________________________________________________ 38 Propriedades __________________________________________________________________________ 38 Eventos_______________________________________________________________________________ 39 Componente Memo _______________________________________________________________________ 39 Propriedades __________________________________________________________________________ 39 A propriedade Lines _____________________________________________________________________ 40 Eventos_______________________________________________________________________________ 41 Componente ListBox ______________________________________________________________________ 41 Propriedades __________________________________________________________________________ 41 Eventos_______________________________________________________________________________ 42 Componente ComboBox ___________________________________________________________________ 42 Propriedades __________________________________________________________________________ 42 Eventos_______________________________________________________________________________ 43 Componente CheckBox ____________________________________________________________________ 43 Propriedades __________________________________________________________________________ 43 Eventos_______________________________________________________________________________ 44 Componente RadioButton __________________________________________________________________ 44 Componente RadioGroup___________________________________________________________________ 44 Componente GroupBox ____________________________________________________________________ 44 Componente Panel ________________________________________________________________________ 45 Componente BitBtn________________________________________________________________________ 45 Usando o comando de atribuio _____________________________________________________________ 46 Entendendo identificadores _________________________________________________________________ 46 Declarando variveis ______________________________________________________________________ 47 Tipos de variveis ______________________________________________________________________ 47 Declarando constantes _____________________________________________________________________ 47 Tipos estruturados ________________________________________________________________________ 48 Tipos enumerados ________________________________________________________________________ 48 Arrays unidimensionais - Vetores _____________________________________________________________ 49 Arrays multidimensionais - Matrizes ___________________________________________________________ 49 Strings__________________________________________________________________________________ 50 Registros (Records) _______________________________________________________________________ 50 Controle de fluxo__________________________________________________________________________ 51 Usando blocos _________________________________________________________________________ 51 If-then-else ____________________________________________________________________________ 51 Usando else ___________________________________________________________________________ 51 Usando blocos com o comando if __________________________________________________________ 52 Aninhando comandos if __________________________________________________________________ 52 A estrutura case ________________________________________________________________________ 53 Usando loops __________________________________________________________________________ 53
Del phi 5
O loop for ________________________________________________________________________________________________ 53 O loop while ______________________________________________________________________________________________ 54 O loop repeat _____________________________________________________________________________________________ 54 O comando break__________________________________________________________________________________________ 55 O comando continue _______________________________________________________________________________________ 56
Procedures e Functions ____________________________________________________________________ 56 Definindo o valor de retorno de uma function _________________________________________________ 57 Chamando procedures e functions _________________________________________________________ 57 Onde criar procedures e functions __________________________________________________________ 57 Trabalhando com Excees _________________________________________________________________ 58
Entendendo o cdigo das Units ________________________________________________59 Rotinas teis _______________________________________________________________60 O Editor de Cdigo __________________________________________________________61
A estrutura bsica de uma Unit ______________________________________________________________ 59 Rotinas para manipulao de strings __________________________________________________________ 60 Funes de converso de tipo _______________________________________________________________ 60 Tcnicas de navegao ____________________________________________________________________ 62 Usando Bookmarks _____________________________________________________________________ 62 Usando o recurso Code Browser ___________________________________________________________ 63 Os controles de navegao do Editor de Cdigo _________________________________________________ 64 Localizando textos no arquivo atual_________________________________________________________ 64 Localizando textos em vrios arquivos ______________________________________________________ 65 Outras tcnicas para localizao ___________________________________________________________ 65 Substituindo textos ______________________________________________________________________ 66 Configurando o Editor de Cdigo ___________________________________________________________ 66
Code Parameters _______________________________________________________________________ 69 Code Templates ________________________________________________________________________ 70 Configurando os recursos do Code Insight ___________________________________________________ 71
Opes importantes da pgina Display _________________________________________________________________________ 67 Opes importantes da pgina Colors__________________________________________________________________________ 67 Usando os recursos Code Insight _____________________________________________________________________________ 68 Code Completion __________________________________________________________________________________________ 69
Erros e tipos de erros ______________________________________________________________________ 72 Utilidades do Depurador ____________________________________________________________________ 73 Executando um programa at a posio do cursor _____________________________________________ 73 Executando um programa linha por linha ____________________________________________________ 73 O comando Trace Into ___________________________________________________________________ 74 O comando Step Over ___________________________________________________________________ 74 Usando os dois comandos ________________________________________________________________ 74 Interrompendo a execuo________________________________________________________________ 74 Usando Breakpoints _______________________________________________________________________ 74 Definindo breakpoints____________________________________________________________________ 74 Mostrando os breakpoints definidos ________________________________________________________ 75 Verificando variveis e expresses ___________________________________________________________ 76 Trabalhando com Watches _______________________________________________________________ 76 Avaliando e modificando expresses________________________________________________________ 76 A arquitetura de acesso a bancos de dados ____________________________________________________ 77 A arquitetura de acesso a bancos de dados no Delphi - Componentes bsicos_________________________ 78 A Pgina Data Acess ____________________________________________________________________ 78 A pgina Data Controls __________________________________________________________________ 79 Um exemplo tpico ________________________________________________________________________ 80 Usando o DataBase Desktop ________________________________________________________________ 80 Definindo um Alias ______________________________________________________________________ 80 Alterando o diretrio de trabalho ___________________________________________________________ 82 Criando tabelas ________________________________________________________________________ 82 Adicionando dados a uma tabela ___________________________________________________________ 83 Alterando a estrutura de uma tabela ________________________________________________________ 84 Trabalhando com DataSets _________________________________________________________________ 85 Abrindo e fechando DataSets _____________________________________________________________ 85 Estados de um DataSet __________________________________________________________________ 85
Del phi 5
Navegando em um DataSet _______________________________________________________________ 86 Modificando Datasets____________________________________________________________________ 87 Modificando campos ____________________________________________________________________ 88 Adicionando registros____________________________________________________________________ 88 Apagando registros _____________________________________________________________________ 89 Confirmando e cancelando mudanas_______________________________________________________ 89 Inserindo e Modificando registros inteiros ____________________________________________________ 89 Localizando registros com Locate __________________________________________________________ 90 Filtrando DataSets ______________________________________________________________________ 91 Usando Filter e Filtered __________________________________________________________________ 91 Usando o evento OnFilterRecord___________________________________________________________ 92 Eventos dos DataSets ___________________________________________________________________ 92 Controlando a atualizao de componentes ____________________________________________________ 92 Componentes DataControls e Table Usando o componente DataSource______________________________ 93 Propriedades do componente DataSource ___________________________________________________ 93 Eventos do componente DataSource _______________________________________________________ 93 Usando o componente Table ________________________________________________________________ 94 Conectando-se a uma tabela de banco de dados ______________________________________________ 94 Controlando o acesso a uma tabela ________________________________________________________ 94 Trabalhando com Ranges ________________________________________________________________ 94 Componentes TField ______________________________________________________________________ 95 Criando campos persistentes______________________________________________________________ 95 Tipos de campos persistentes _____________________________________________________________ 96 Campos calculados _______________________________________________________________________ 97 Campos lookup___________________________________________________________________________ 98 Propriedades dos componentes TField ______________________________________________________ 99 O componente Batchmove _________________________________________________________________ 100 Configurao bsica____________________________________________________________________ 100 Modos de operao ____________________________________________________________________ 100 Executando a operao de transferncia ___________________________________________________ 100 Lidando com erros na transferncia________________________________________________________ 101 Componentes DataControls ________________________________________________________________ 102 Propriedades DataSource e DataField _____________________________________________________ 102 Componente DBEdit ______________________________________________________________________ 102 Componente DBText _____________________________________________________________________ 102 Componente DBMemo ____________________________________________________________________ 102 Componente DBCheckBox_________________________________________________________________ 103 Componente DBRadioGroup _______________________________________________________________ 103 Componente DBImage ____________________________________________________________________ 103 Componentes DBListBox e DcomboBox ______________________________________________________ 104 Componentes DBLookupList e DBLookupCombo _______________________________________________ 104 Componente DBNavigator _________________________________________________________________ 105 Componente DBGrid _____________________________________________________________________ 106 O componente Query _____________________________________________________________________ 106 Configurando um componente Query ______________________________________________________ 106 Especificando a consulta SQL a ser executada_______________________________________________ 107 Trabalhando com parmetros ____________________________________________________________ 108 Executando consultas __________________________________________________________________ 109 A linguagem Local SQL ___________________________________________________________________ 109 As duas partes de SQL _________________________________________________________________ 109 O comando SELECT ___________________________________________________________________ 110 Usando IN e BETWEEN_________________________________________________________________ 110 Usando LIKE e caracteres "curinga" _______________________________________________________ 111 Usando funes de agregao ___________________________________________________________ 111 O comando INSERT____________________________________________________________________ 111 O comando UPDATE ___________________________________________________________________ 111 O comando DELETE ___________________________________________________________________ 112 A linguagem de definio de dados O comando CREATE TABLE ________________________________ 112 O comando ALTER TABLE ______________________________________________________________ 112 O comando DROP TABLE _______________________________________________________________ 113 O comando CREATE INDEX _____________________________________________________________ 113 O comando DROP INDEX _______________________________________________________________ 113 Conexes ADO __________________________________________________________________________ 113 O componente TADOConnection__________________________________________________________ 115
Del phi 5
TADOTable___________________________________________________________________________ 116
Principais mtodos________________________________________________________________________________________ 116 Principais Propriedades ____________________________________________________________________________________ 116 Principais Eventos ________________________________________________________________________________________ 116 Principais Mtodos________________________________________________________________________________________ 117 Principais Propriedades ____________________________________________________________________________________ 117 Principais Eventos ________________________________________________________________________________________ 118 Principais Metodos________________________________________________________________________________________ 118
TADODataSet_________________________________________________________________________ 118 TADOCommand _______________________________________________________________________ 118 TADOStoredProc ______________________________________________________________________ 119 TRDSConnection ______________________________________________________________________ 119 Componentes da palheta Interbase __________________________________________________________ 120 TIBDatabase__________________________________________________________________________ 120 TIBTransaction ________________________________________________________________________ 120
Principais Propriedades ____________________________________________________________________________________ 118 Principais Mtodos________________________________________________________________________________________ 119 Principais Propriedades ____________________________________________________________________________________ 119 Palheta Interbase _________________________________________________________________________________________ 119
Principais Propriedades ____________________________________________________________________________________ 120 Principais Eventos ________________________________________________________________________________________ 120 Principais Propriedades: ___________________________________________________________________________________ 120 Principais Eventos ________________________________________________________________________________________ 120 Principais Mtodos________________________________________________________________________________________ 120 Principais Propriedades ____________________________________________________________________________________ 121 Principais Propriedades ____________________________________________________________________________________ 121 Principais Propriedades ____________________________________________________________________________________ 121 Principais Propriedades ____________________________________________________________________________________ 121 Principais Propriedades ____________________________________________________________________________________ 122 Principais Eventos ________________________________________________________________________________________ 122 Principais Propriedades ____________________________________________________________________________________ 122 Principais Eventos ________________________________________________________________________________________ 122 Principais Metodos________________________________________________________________________________________ 122 Principais Propriedades: ___________________________________________________________________________________ 123
TIBTable _____________________________________________________________________________ 121 TIBQuery ____________________________________________________________________________ 121 TIBStoredProc ________________________________________________________________________ 121 TIBUpdateSQL ________________________________________________________________________ 121 TIBDataSet ___________________________________________________________________________ 122 TIBSQL______________________________________________________________________________ 122
Componentes QuickReport ______________________________________________________________ 124 Os componentes do QuickReport ___________________________________________________________ 125 Criando um relatrio simples _____________________________________________________________ 125 O Componente QuickRep _______________________________________________________________ 127
Principais Propriedades ____________________________________________________________________________________ 124 Principais Eventos ________________________________________________________________________________________ 124 Principais Metodos________________________________________________________________________________________ 124
Outros componentes importantes ___________________________________________________________ 128 O Componente QRLabel ________________________________________________________________ 129 O Componente QRDBText_______________________________________________________________ 129 O Componente QRSysData ______________________________________________________________ 129 O Componente QRExpr _________________________________________________________________ 129 Criando relatrios com agrupamento _________________________________________________________ 129 Palheta Servers _______________________________________________________________________ 132 Control Panel Applet ___________________________________________________________________ 134 Objeto TAppletModule __________________________________________________________________ 135 Internet Express _______________________________________________________________________ 135 Utilizando o DBNavigator com XML ________________________________________________________ 139
Bandas e tipos de bandas __________________________________________________________________________________ 127 Alterando a formatao geral do relatrio ______________________________________________________________________ 127 Propriedades comuns a todas as bandas ______________________________________________________________________ 128
Del phi 5
Nes te captulo, apr es entar emos as par tes pr incipais do ambiente de des envolvimento do Delphi.
AJanelaPrincipal
Na Janela Pr incipal, localizada na par te de cima da tela, es to a B ar r a de Menus , a Paleta de Componentes e a B ar r a de Fer r amentas (todas des cr itas a s eguir ). A j anela pr incipal uma j anela comum, apes ar de ter uma apar ncia difer ente do nor mal. Por tanto pos s vel minimiz- la, max imiz- la e mov- la nor malmente. Minimizar a j anela pr incipal, minimiza todas as outr as j anelas do Delphi no neces s r io minimizar ou fechar cada uma das outr as j anelas pr imeir o. Quando a j anela pr incipal do Delphi fechada, natur almente, todo o ambiente (o Delphi inteir o) fechado.
A Janela P r i ncipal
APaletade C omponentes
A paleta de componentes uma das par tes mais utilizadas do Delphi. a par tir des s a paleta que s e pode es colher componentes e adicion- los a for mulr ios . A paleta de componentes dividida em vr ias pginas . Cada pgina contm um conj unto de componentes r elacionados . As pginas mais us adas s o a S tandar d (com componentes bs icos , como botes e caix as de tex to), Additional (com alguns componentes es peciais ), e as pginas Data Acces s e Data Contr ols (par a aces s o e manipulao de bancos de dados ). Es s as pginas s o ilus tr adas a s eguir . Par a pas s ar de uma pgina par a outr a, clique na " aba" cor r es pondente, na par te de cima da paleta de componentes .
Del phi 5
ABarrade Ferramentas
A B ar r a de Fer r amentas ofer ece aces s o r pido aos comandos mais comuns do Delphi, como cr iar for mulr ios , abr ir e s alvar ar quivos , ou compilar e ex ecutar aplicativos . A bar r a de fer r amentas pode s er configur ada de vr ias for mas . Pode- s e, por ex emplo, adicionar botes par a comandos chamados fr eqentemente, r etir ar botes da bar r a ou r eor den- los . A bar r a de fer r amentas for mada por vr ias par tes que podem s er r eor ganizadas livr emente. Par a es conder /mos tr ar uma des s as par tes , clique com o boto dir eito em qualquer local dentr o da bar r a e des ative/ative a opo cor r es pondente (vej a a figur a abaix o).
Par a adicionar um boto, clique na bar r a com o boto dir eito e es colha o comando Cus tomize. Na caix a de dilogo que apar ece, clique na aba " Commands " . Aqui s o mos tr ados todos os comandos do Delphi. Par a cr iar um boto par a um comando, ar r as te o comando par a a bar r a.
Ainda com a caix a de dilogo " Cus tomize" aber ta, voc pode alter ar a or dem dos botes ar r as tando- os par a outr as pos ies da bar r a. Par a r emover um boto, s imples mente ar r as te- o par a for a da bar r a de fer r amentas . Finalmente, par a fazer com que par tes da bar r a de fer r amentas voltem s ua configur ao or iginal (a mes ma logo depois da ins talao do Delphi), chame o comando Cus tomize, clique na aba " T oolbar " , s elecione a par te que des ej a alter ar e clique no boto " Res et" .
Del phi 5
O s Formulrios
Os for mulr ios (e o cdigo as s ociado a eles , as Units ) cons tituem o cor ao de um aplicativo no Delphi. Quando voc entr a no Delphi, ou cr ia um novo pr oj eto, um for mulr io vazio cr iado automaticamente. Os for mulr ios s o as par tes vis veis de um aplicativo no Delphi. Neles s o ins er idos componentes como botes , lis tas , etc. For mulr ios podem s er us ados com muitas funes difer entes em um aplicativo. Um for mulr io pode, por ex emplo, s er des de a j anela pr incipal at uma pequena caix a de mens agem.
OEditor de C digo
A todo for mulr io, as s ociado um pr ogr ama chamado de Unit, no Delphi que contr ola como os componentes dos for mulr ios r eagem s aes do us ur io (os eventos ). As Units s o ex ibidas no Editor de Cdigo (Code Editor ). O Editor de Cdigo pode mos tr ar vr ias Units ao mes mo tempo. Pode- s e mudar de uma Unit par a outr a, us ando- s e as abas na par te de cima da j anela (vej a a figur a). Ver emos detalhes s obr e o Editor de Cdigo mais adiante.
O E di t or de Cdigo e o Code E x pl or er
OC ode Explorer
O Code Ex plor er , intr oduzido no Delphi 5.0, per mite a navegao r pida entr e par tes de uma Unit aber ta no Editor de Cdigo. O Code Ex plor er ger almente pos icionado es quer da do Editor de Cdigo (vej a a figur a anter ior ). Nele ex ibido um diagr ama hier r quico, com todas as var iveis , mtodos , tipos , clas s es e pr opr iedades definidas na Unit. Par a navegar par a um item es pecfico do cdigo da Unit (a definio de um
Del phi 5
mtodo ou var ivel, por ex emplo), s imples mente clique duas vezes no nome do item. O Code Ex plor er pode s er us ado tambm par a r enomear itens , ou par a adicionar novos itens . Par a r enomear um item, clique no nome do item com o boto dir eito e es colha o comando " Rename" . Par a adicionar um novo item clique com o boto dir eito em um item de mes mo tipo e es colha o comando " New" . Par a es conder o Code Ex plor er , clique no pequeno " x " no s eu canto dir eito. Par a voltar a ex ibi- lo, us e o comando View | Code ex plor er ou pr es s ione CT RL+ S HI FT + E . A combinao CT RL+ S HI FT + E tambm pode s er us ada par a alter nar entr e o Code Ex plor er e o Editor de Cdigo. D I CA: Como padr o, o Code Ex plor er ex ibido s empr e que o Delphi inicializado, ou quando um pr oj eto aber to. Par a que o Delphi no ex iba o Code Ex plor er automaticamente, Edit| Envir onment options , mude par a a pgina " Ex plor er " e des ative a opo " Automatically s how Ex plor er " .
OO bject Inspector
O Obj ect I ns pector (tr aduo liter al: " I ns petor de obj etos " ) us ado par a definir pr opr iedades e eventos par a os componentes . As lis tas de pr opr iedades e eventos ex ibidas no Obj ect I ns pector mudam de acor do com o componente s elecionado. Outr a funo impor tante do Obj ect I ns pector s elecionar componentes por nome. Uma lis ta com o nome e o tipo de todos os componentes do for mulr io ativo s o ex ibidos na par te de cima do Obj ect I ns pector . Par a s elecionar um componente, bas ta es colher s eu nome nes s a lis ta. Par a ex ibir /es conder o Obj ect I ns pector , us e o comando View| Obj ect I ns pector , ou pr es s ione F11. Ver emos como us ar o Obj ect ins pector em detalhe, mais adiante no cur s o.
Par a mos tr ar o Obj ect I ns pector ou tr az- lo par a a fr ente das outr as j anelas : pr es s ione F11, ou es colha o comando View | Obj ect I ns pector . Par a tr azer uma j anela que no es t vis vel par a a fr ente, es colha o comando View | Window Lis t e clique duas vezes no nome da j anela. Par a ex ibir uma lis ta das Units no pr oj eto e ex ibir uma delas no Editor de Cdigo, es colha o comando View | Units (ou pr es s ione CT RL+ F12) e clique duas vezes no nome da Unit par a ex ibi- la.
Del phi 5
Par a ex ibir uma lis ta dos for mulr ios no pr oj eto e ex ibir um deles , es colha o comando View | For ms (ou pr es s ione S HI FT + F12) e clique duas vezes no nome do for mulr io.
N OT A: Apes ar de s er comum cr iar aplicativos que s tenham Units as s ociadas a for mulr ios , podes e cr iar Units independentes , com cdigo que compar tilhado por vr ios for mulr ios , ou at vr ios aplicativos . B oa par te do cdigo das Units ger ado e mantido automaticamente pelo Delphi. Quando um componente adicionado, por ex emplo, o Delphi acr es centa a s ua declar ao ao cdigo da Unit. Quando um componente r emovido, s ua declar ao r emovida tambm. Na maior ia das vezes no s e deve alter ar dir etamente o cdigo ger ado pelo Delphi. O cdigo ger ado pode s er alter ado indir etamente, us ando o Obj ect I ns pector e comandos de menu, ou manipulando os componentes dir etamente no for mulr io.
Trabalhando comProjetos
Pr oj eto o nome dado pelo Delphi ao conj unto de todos os for mulr ios , Units e outr os obj etos , us ados na cr iao de um aplicativo. Em outr as palavr as , um pr oj eto o cdigo fonte us ado par a ger ar um aplicativo no Delphi.
Del phi 5
A ilus tr ao mos tr a o ar quivo de pr oj eto mnimo, aquele que cr iado j unto com um novo pr oj eto " vazio" . Na bar r a de ttulo, na ex tr emidade de cima da j anela do Editor de Cdigo, mos tr ado o nome do ar quivo de pr oj eto. O nome mos tr ado na ilus tr ao (" Pr oj ect1.dpr " ) ger ado automaticamente pelo Delphi. A ex tens o .DPR vem de Delphi Pr oj ect. (os pr x imos nomes ger ados , cas o s ej am cr iados outr os pr oj etos , s o " Pr oj ect2.dpr " , " Pr oj ect3.dpr " , e as s im por diante). Lembr e- s e de alter ar o nome do ar quivo de pr oj eto par a um nome mais s uges tivo na hor a de s alvar . A pr imeir a linha do ar quivo de pr oj eto contm o nome do pr oj eto. Es te o nome que identifica o pr oj eto par a o Delphi, e ger almente o nome do ar quivo, r etir ada a ex tens o. A palavr a " pr ogr am" us ada par a manter compatibilidade com ver s es anter ior es do T ur bo Pas cal (o pr ecur s or do Delphi). Clar amente, o us o da palavr a " pr oj ect" s er ia mais adequado no Delphi. A s egunda linha: " Us es ..." (chamada de clus ula us es ) indica quais Units s o us adas pelo pr oj eto. Aqui es to r efer enciados todos os for mulr ios us ados no pr oj eto e s uas Units cor r es pondentes , alm de Units que no es to as s ociadas a nenhum for mulr io. Na figur a indicado o us o de uma nica Unit, com o nome Unit1. A palavr a- chave in us ada par a indicar o ar quivo que contm o cdigo da Unit (" Unit1.pas " ). Logo em s eguida, entr e chaves , indicado o nome do for mulr io as s ociado Unit (no cas o, For m1). N OT A: Os nomes dados s Units e for mulr ios s o os mes mos nomes dos ar quivos cor r es pondentes . Por ex emplo, s e uma Unit for s alva com o nome " Cadas tr oPr oduto.pas " , es ta Unit s er identificada pelo nome " Cadas tr oPr oduto" no Delphi. No entanto, s e for em us ados es paos no nome do ar quivo, ou s e houver letr as acentuadas , os nomes no s er o iguais . Es paos e letr as acentuadas s o s imples mente r etir ados (s em avis os ) do nome do ar quivo. S e, por ex emplo, voc chamou um for mulr io de " Relatr io de pr eos .pas " , o nome ger ado pelo Delphi s er " Relatr iodepr eos " . Evite, por tanto, us ar acentos ou es paos nos nomes dos s eus ar quivos . Voltando ao ar quivo de pr oj eto, a linha { $R ...} indica o ar quivo de r ecur s os (Res our ce file) que es t as s ociado ao pr oj eto. Es ta linha nunca deve s er r emovida s em ela s eu aplicativo no s er compilado cor r etamente. O ar quivo de r ecur s os contm o cone do aplicativo, alm de outr as infor maes impor tantes . Es te ar quivo ger ado automaticamente pelo Delphi e r ar amente pr ecis a s er alter ado manualmente. N OT A: as chaves indicam comentr ios no Delphi. A nica ex ceo o cas o des cr ito acima. Uma chave s eguida por um cifr o ( { $ ) indica o incio de uma dir etiva de compilao - um comando es pecial par a o compilador . Dir etivas de compilao s o um r ecur s o avanado do Delphi que r ar amente us ado dir etamente pelo pr ogr amador . A ltima par te do ar quivo de pr oj eto o bloco pr incipal, delimitado pelas palavr as - chave begin e end. A pr imeir a linha dentr o do bloco pr incipal, Application.I nitialize r ealiza as tar efas de inicializao do aplicativo, como car r egar ou ler ar quivos de inicializao. O comando Application.Cr eateFor m cr ia um for mulr io na memr ia, deix ando- o pr onto par a a ex ibio na tela. Finalmente, o ltimo comando do bloco pr incipal, Application.Run ex ecuta o aplicativo.
Del phi 5
Na par te es quer da da j anela do Pr oj ect Manager , s o ex ibidas as Units que fazem par te do pr oj eto. As Units s o agr upadas com os for mulr ios a elas as s ociados . Par a ex ibir o nome do for mulr io as s ociado a uma Unit, s imples mente clique no " + " ao lado do nome da Unit. Na par te dir eita do Pr oj ect Manager , mos tr ado o path das Units (ar quivos .PAS ) e dos ar quivos de des cr io dos for mulr ios (ar quivos .DFM). No ex emplo ilus tr ado, a pr imeir a Unit (" UnAux iliar es " ) no es t as s ociada a um for mulr io e por tanto apar ece de for ma difer ente na lis tagem. O pr imeir o item da lis tagem (" S uper mar kt" ) o nome do Pr oj ect Gr oup ao qual per tence o pr oj eto (ver emos como tr abalhar com Pr oj ect Gr oups mais adiante). Uma das funes mais impor tantes do Pr oj ect Manager a navegao entr e os ar quivos de um pr oj eto. Par a mos tr ar o cdigo de uma Unit no Editor de Cdigo, ou par a ex ibir um for mulr io, clique no s eu nome duas vezes .
Del phi 5
A tivando umprojeto
Um Pr oj ect Gr oup pode conter vr ios pr oj etos , mas apenas um deles pode es tar ativo. O pr oj eto ativo aquele que compilado ou ex ecutado com os comandos do menu Pr oj ect, ou com as teclas de atalho (vej a a s eguir ). O pr oj eto ativo apar ece em negr ito no Pr oj ect Manager . Par a ativar um pr oj eto, clique no s eu nome duas vezes , ou us e o boto Activate da bar r a de fer r amentas do Pr oj ect Manager .
C ompilando projetos
A compilao, alm de ver ificar a s intax e dos pr ogr amas , ger a o cdigo ex ecutvel do aplicativo. H dois comandos par a r ealizar a compilao no Delphi: Compile e B uild, ambos no menu Pr oj ect. O comando Pr oj ect | Compile [ nome do pr oj eto] compila s omente os ar quivos do pr oj eto que for am alter ados des de a ltima compilao. O comando Pr oj ect | B uild [ nome do pr oj eto] compila todos os ar quivos do pr oj eto, alter ados ou no.
Del phi 5
apenas o pr oj eto ativo. Mos tr ando infor maes s obr e a compilao Como o compilador do Delphi muito r pido, por padr o no s o ex ibidas infor maes s obr e o andamento da compilao. Es s as infor maes es to dis ponveis , no entanto, e podem s er mos tr adas dur ante a compilao. Par a is s o, es colha o comando T ools | Envir onment Options , mude par a a pgina " Pr efer ences " , e ative a opo " S how Compiler Pr ogr es s " . Pode- s e tambm, ex ibir as infor maes s obr e a compilao, a qualquer momento (depois da pr imeir a compilao). Par a is s o, us e o comando Pr oj ect | I nfor mation for [ nome do pr oj eto] .
A rquivos .DFM
Os ar quivos .DFM (ar quivos de des cr io de for mulr io) s o cr iados par a cada for mulr io. O Delphi us a o mes mo nome da Unit as s ociada, acr es centando apenas a ex tens o .DFM. Os ar quivos .DFM contm infor maes detalhadas s obr e o for mulr io e s eus componentes . S o ar mazenados em um for mato binr io, legvel apenas a par tir do Delphi, mas podem s er facilmente conver tidos par a ar quivos tex to e ex ibidos no Editor de Cdigo. Par a mos tr ar o ar quivo DFM as s ociado a um for mulr io, clique no for mulr io com o boto dir eito e es colha o comando View as T ex t, o ar quivo ex ibido dentr o do Editor de Cdigo. Par a voltar vis o nor mal do for mulr io, clique com o boto dir eito dentr o do Editor de Cdigo (em cima do tex to do ar quivo DFM) e es colha o comando View as For m.
A rquivos .DC U
Quando um pr oj eto compilado no Delphi, os ar quivos .DFM dos for mulr ios e as units (ar quivos .PAS ) s o pr oces s ados e tr ans for mados em ar quivos compilados inter medir ios , com a ex tens o .DCU (de " Delphi Compiled Unit" ). Es tes ar quivos s o gr avados em for mato binr io e no podem (nem devem) s er aber tos dir etamente. Os ar quivos DCU tor nam mais r pidas a compilao e a linkagem de aplicativos no Delphi.
Del phi 5
Tipos de componentes
Componentes podem s er divididos em dois tipos bs icos : componentes no- vis uais e componentes vis uais (contr oles ).
C omponentes visuais.
Os componentes vis uais , ou contr oles , s o componentes com os quais o us ur io pode inter agir dir etamente. Ex emplos de contr oles s o botes , caix as de tex to, bar r as de r olagem, etc. Os componentes vis uais tm a mes ma apar ncia em tempo de des envolvimento e em tempo de ex ecuo (s alvo r ar as ex cees ).
Propriedades
Cada componente no Delphi apr es enta um conj unto de pr opr iedades que deter minam o compor tamento e a apar ncia do componente. Pr opr iedades podem s er definidas dur ante o des envolvimento, ou alter adas dur ante o tempo de ex ecuo.
Algumas pr opr iedades s o r es tr itas a uma lis ta de valor es . As mais s imples des tas s o as pr opr iedade booleanas , com apenas os valor es " T r ue" ou " Fals e" per mitidos . Algumas pr opr iedades per mitem a es colha a par tir de lis tas ex tens as . Par a es colher um valor par a uma pr opr iedade des s e tipo, s imples mente clique ao lado do nome da pr opr iedade no Obj ect I ns pector , e es colha uma das opes da lis ta ex ibida (vej a a figur a a s eguir ).
Del phi 5
DI CA: par a pr opr iedades com lis tas de valor es , pode- s e clicar duas vezes ao lado da pr opr iedade, par a ex ibir o pr x imo valor da lis ta. Es s e r ecur s o es pecialmente til par a pr opr iedades com poucos valor es pos s veis , como as pr opr iedades booleanas . Outr o tipo de pr opr iedade a pr opr iedade compos ta. Pr opr iedades compos tas , contm vr ias s ubpr opr iedades . Os valor es das s ubpr opr iedades deter minam o valor final da pr opr iedade compos ta. As pr opr iedades compos tas apar ecem no Obj ect I ns pector pr ecedidas de um s inal " + " (quando no ex pandidas ). Par a definir es tes valor es par a uma pr opr iedade compos ta, pr imeir o clique duas vezes no nome da pr opr iedade par a abr ir s ua lis ta de s ubpr opr iedades . Em s eguida alter e os valor es das s ubpr opr iedades des ej adas . As s ubpr opr iedades podem s er de qualquer tipo (inclus ive compos tas ).
Par a algumas pr opr iedades complex as , com muitas combinaes de valor es pos s veis , o Delphi ofer ece editor es de pr opr iedades (pr oper ty editor s ). Os editor es de pr opr iedades s o comuns par a pr opr iedades compos tas (como a pr opr iedade Font, ilus tr ada acima). Nes s e cas o, o editor de pr opr iedades s imples mente outr a for ma de alter ar a pr opr iedade, aumentando a convenincia par a o pr ogr amador . Par a outr as pr opr iedades mais complex as , no entanto, os editor es de pr opr iedades s o a nica opo. Pr opr iedades que podem s er alter adas com um editor de pr opr iedades apar ecem com r eticncias , quando s o s elecionados no Obj ect I ns pector . Par a abr ir o editor de pr opr iedades , bas ta clicar nas r eticncias , ou clicar duas vezes ao lado da pr opr iedade. O editor de pr opr iedades var ia muito dependendo do tipo de pr opr iedade. Vej a um ex emplo comum (par a um componente Memo) na figur a a s eguir .
Del phi 5
Cli qu e nas r et i cn ci as
par a exi bi r o edit or de pr opr iedades par a a pr opr iedade s el eci on ada
D I CA: pode- s e alter ar pr opr iedades de vr ios componentes ao mes mo tempo. Quando vr ios componentes s o s elecionados em um for mulr io, o Obj ect I ns pector mos tr a as pr opr iedades comuns a todos eles . S e uma pr opr iedade for alter ada com vr ios componentes s elecionados , todos es s es componentes pas s ar o a ter o mes mo valor par a a pr opr iedade alter ada.
Eventos
Os eventos deter minam a par te dinmica de um aplicativo. Eles definem como o aplicativo r eage s aes do us ur io (ou de outr os componentes ). Cada componente ofer ece um conj unto de eventos es pecficos . Par a cada evento, pode- s e as s ociar um tr echo de cdigo que ex ecutado quando o evento acontece. O cdigo par a os eventos de todos os componentes em um for mulr io ar mazenado na Unit as s ociada ao for mulr io.
Del phi 5
Entr e o begin e o end digitado o cdigo a s er ex ecutado quando o us ur io clica no boto (o Delphi j pos iciona o cur s or nes s e local automaticamente). No ex emplo a s eguir , dois comandos for am adicionados par a o evento. Es s es s er o os comandos ex ecutados quando o componente chamado " B utton1" for clicado uma vez. pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); begin For m1.Caption : = Pr incipal; B utton1.Enabled : = Fals e; end; A maneir a des cr ita aqui funciona s omente par a os eventos padr o dos componentes . Par a adicionar cdigo par a qualquer outr o evento, deve- s e r ealizar uma das aes des cr itas a s eguir . Clicar duas vezes ao lado do evento des ej ado (no Obj ect I ns pector ): mos tr a o cdigo par a o evento no Editor de Cdigo. A par tir da, pode- s e pr oceder como antes par a digitar o cdigo as s ociado ao evento. Es colher um pr ocedimento j definido par a um evento: clique do lado dir eito do nome do evento, no Obj ect I ns pector e es colha o nome do pr ocedimento da lis ta que apar ece. Faa is s o quando for neces s r io as s ociar o mes mo cdigo a eventos de componentes difer entes . (S e ainda no houver nenhum cdigo definido par a eventos no for mulr io, a lis ta apar ece vazia).
Apagando event os
Pode- s e apagar eventos definidos par a um componente, par a cor r igir um er r o no des envolvimento por ex emplo. Um evento pode s er apagado em " dois nveis " . O evento pode s er s imples mente des ligado de um componente, per manecendo ligado a outr os componentes , ou pode s er r emovido inteir amente do cdigo. Par a des ligar um evento de um componente, s elecione o componente e clique no lado do evento a s er r emovido, no Obj ect I ns pector . I s s o s eleciona o nome do evento. Em s eguida, apague (pr es s ione DELET E e depois ENT ER). Par a r emover um evento inteir amente do cdigo, apague todo o cdigo dentr o do evento, deix ando apenas o cdigo ger ado automaticamente pelo Delphi (a pr imeir a linha, o begin e o end). Em s eguida, s alve o ar quivo, ou compile o pr oj eto. O Delphi r emove o evento e todas as ligaes a es s e evento.
Mtodos
Mtodos (bas icamente) s o oper aes ofer ecidas por componentes do Delphi. Os mtodos de um componente, aces s veis s omente atr avs de pr ogr amao, s o us ados par a ler ou alter ar pr opr iedades de um componente, ou par a r ealizar tar efas es peciais . Par a ver a lis ta de mtodos ofer ecidos por um componente, voc pr ecis a us ar o r ecur s o de aj uda do Delphi (os mtodos no s o lis tados no Obj ect I ns pector ). Par a is s o, s elecione o componente no for mulr io e pr es s ione F1. Em s eguida clique na opo Methods , na par te de cima da j anela de aj uda. (Note que alguns componentes no ofer ecem nenhum mtodo).
Del phi 5
Clique duas vezes no nome do componente, ou s elecione o componente e clique no boto " Add to for m" . Repita a oper ao par a cada componente que des ej a adicionar . Ao final, feche a caix a.
Manipulando componentes
O Delphi ofer ece vr ias tcnicas par a a or ganizao pr ecis a de componentes em um for mulr io. Vej as as mais impor tantes des s as tcnicas a s eguir .
Par a s elecionar vr ios componentes , um de cada vez: S egur e a tecla S HI FT e clique em cada um dos componentes . Par a s elecionar vr ios componentes em uma mes ma r ea: Clique em uma r ea vazia do for mulr io pr x ima aos componentes e ar r as te. Um r etngulo pontilhado ex ibido enquanto voc ar r as ta (vej a a figur a abaix o). T odos os componentes que es tiver em dentr o des te r etngulo, ou par cialmente dentr o dele, s er o s elecionados .
Del phi 5
S e os componentes es tiver em dentr o de um Gr oupB ox ou de um Panel mantenha a tecla CT RL enquanto ar r as ta, cas o contr r io, o Gr oupB ox ou Panel s er movido. Par a s elecionar todos os componentes em um for mulr io, us e o comando Edit | S elect All. Par a r edimens ionar (alter ar o tamanho de) um nico componente: S elecione o componente e ar r as te uma das alas (pequenos quadr ados ) que apar ecem em volta dele. Par a r edimens ionar vr ios componentes ao mes mo tempo, s elecione os componentes e es colha o comando Edit | S ize (ou clique em um dos componentes com o boto dir eito e es colha o comando S ize).
Na caix a de dilogo ex ibida (figur a acima), defina as novas dimens es par a os componentes . As opes dis ponveis s o ex plicadas a s eguir . (Note que as opes s o as mes mas par a as duas dimens es ). N o ch an ge S hr ink t o s m al l es t Gr ow do l ar ges t W i dt h H ei gh t " Nenhuma mudana" : es colha es s a opo par a alter ar s omente a outr a dimens o. " Reduzir par a o menor " : r eduz o tamanho de todos os componentes s elecionados par a o tamanho do menor componente s elecionado. " Aumentar par a o maior " : aumenta o tamanho de todos os componentes , par a o tamanho do maior componente s elecionado. " Lar gur a" : Es pecifique aqui a lar gur a em pix els de todos os componentes s elecionados . " Altur a" : A altur a de todos os componentes s elecionados .
Del phi 5
Es s a paleta uma " bar r a de fer r amentas flutuante" . Voc pode mov- la par a qualquer local na tela. Clique no boto apr opr iado na paleta. Os botes da paleta s o des cr itos na tabela abaixo: Alinhar pelo lado es quer do dos componentes Alinhar pelo topo dos componentes Alinhar pelos centr os dos componentes , hor izontalmente Alinhar pelos centr os dos componentes , ver ticalmente Alinhar pelo centr o do for mulr io, hor izontalmente Alinhar pelo centr o do for mulr io, ver ticalmente. Es paar igualmente, na hor izontal Es paar igualmente, na ver tical Alinhar pelo lado dir eito dos componentes Alinhar pela bas e dos componentes
Par a alinhar componentes com a caix a de dilogo Alignment: S elecione os componentes . Clique com o boto dir eito em cima de um dos componentes s elecionados e es colha o comando Align. Ou es colha o comando Edit | Align. Na caix a Alignment (figur a abaix o), defina as opes de alinhamento des ej adas e clique em OK . As opes s o equivalentes s apr es entadas na Alignment palette.
Par a alter ar o es paamento da gr ade ou des ativ- la: Es colha o comando T ools | Evir onment options . Par a alter ar o es paamento da gr ade, na pgina Pr efer ences , alter e os valor es das opes Gr id s ize X (es paamento hor izontal) e Gr id s ize Y (es paamento ver tical). Par a des ativar a gr ade, des ligue a opo S nap to gr id. Voc pode tambm es conder a gr ade, s em des ativ- la. Par a is s o, des ligue a opo Dis play gr id.
Del phi 5
T r avando component es
Depois de or ganizar e alinhar os componentes , voc pode tr av- los , par a evitar que s ej am des alinhados acidentalmente. Par a tr avar a pos io dos componentes : Es colha a comando Edit | Lock contr ols . I s s o tr ava a pos io dos componentes em todos os for mulr ios do pr oj eto. Alm dis s o, novos componentes adicionados ficam tr avados tambm (o que no muito pr tico! ). Par a des tr avar a pos io dos componentes , es colha o comando Edit | Lock contr ols novamente.
A dicionando formulrios
H vr ias maneir as de adicionar um for mulr io vazio a um pr oj eto no Delphi. Es colha o comando File | New for m, na bar r a de fer r amentas , clique no boto chamado New for m (vej a abaix o):
Es colha o comando File | New e, na pgina " New" , clique duas vezes no cone " For m"
Del phi 5
vr ios for mulr ios s ecundr ios . Como padr o, o Delphi define o pr imeir o for mulr io adicionado como o for mulr io pr incipal, mas is s o pode s er alter ado facilmente. Par a definir um for mulr io como o for mulr io pr incipal, Es colha o comando Pr oj ect | Options . Na pgina " For ms " , es colha o for mulr io da lis ta ao lado de " Main for m" (vej a figur a).
D I CA: dur ante o des envolvimento, voc pode tor nar o for mulr io com que es t tr abalhando no for mulr io pr incipal. I s s o gar ante que o for mulr io s ej a o pr imeir o a s er ex ibido, facilitando na hor a dos tes tes .
Ligando formulrios
No tr abalho com vr ios for mulr ios , muitas vezes s er neces s r io ligar for mulr ios par a que o cdigo de um for mulr io pos s a ter aces s o aos componentes do outr o. Quando s e us a uma caix a de dilogo par a a entr ada de infor maes , por ex emplo, deve s er pos s vel ver ificar os valor es entr ados na caix a a par tir do for mulr io pr incipal. Par a is s o, neces s r io ligar o for mulr io pr incipal caix a de dilogo. Voc cr ia uma ligao entr e for mulr ios adicionando r efer ncias aos for mulr ios nas clus ulas us es das Units . Es s as r efer ncias podem s er adicionadas manualmente, ou atr avs de um comando de menu (o que ger almente mais fcil). Par a ligar um for mulr io a outr o for mulr io: S elecione o for mulr io que pr ecis a s e r efer ir ao outr o for mulr io. Es colha o comando File | Us e unit e es colha o for mulr io a s er r efer enciado (vej a a figur a a s eguir ).
Quando voc liga um for mulr io a outr o, o Delphi acr es centa o nome da Unit do outr o for mulr io clus ula us es do for mulr io ativo. Na figur a, por ex emplo, a Unit chamada " UnCadas tr oGames " foi es colhida. O Delphi alter a o cdigo par a o s eguinte: unit UnContr oleEs toque; inter face us es Windows , Mes s ages , S ys Utils , Clas s es , Gr aphics , Contr ols , For ms , Dialogs ; type T Contr oleEs toque = clas s (T For m) end; var Contr oleEs toque: T Contr oleEs toque;
Del phi 5
implementation us es UnCadas tr oGames ; { $R * .DFM} end.
B or der S t yl e
P os i t i on
W i n dow S t at e
Del phi 5
E ven t o On Cr eat e D es cr i o Chamado quando o for mulr io cr iado (automaticamente ou manualmente). Es te evento muito us ado par a r ealizar a inicializao de var iveis ou outr as oper aes que devem s er r ealizadas logo no incio da ex ecuo (como a conex o a bancos de dados , por ex emplo). Chamado quando o for mulr io mos tr ado na tela (ger almente us ando S how ou S howModal). Ocor r e quando o for mulr io fechado pelo us ur io, ou us ando o comando Clos e. Es te evento pode s er us ado par a liber ar var iveis , ou fechar tabelas de bancos de dados , por ex emplo. Nota: o evento OnClos eQuer y (s e ex is tir ) chamado antes do evento OnClos e, par a ver ificar s e o for mulr io r ealmente pode s er fechado. On Cl os eQu er y Es te evento chamado, logo depois do comando Cl os e, ou quando o us ur io tenta fechar o for mulr io (clicando no X por ex emplo). Es s e evento pode s er us ado, por ex emplo, par a s olicitar uma confir mao antes de fechar o for mulr io. O par metr o Can Cl os e do evento deter mina s e o for mulr io s er fechado ou no. Alter e es te par metr o par a F al s e, dentr o do cdigo do evento, par a evitar o fechamento do for mulr io. S e Can Cl os e no for alter ado, ou tiver o valor T r ue no final do cdigo do evento, o for mulr io fechado e o evento On Cl os e chamado.
On S h ow On Cl os e
F ocu s Con t r ol Us e Focus Contr ol (Nome_ do_ Componente) par a mover o foco par a o componente es pecificado no for mulr io. (O componente com foco aquele que pode s er es colhido dir etamente com o teclado). S h ow S h ow Modal Mos tr a o for mulr io na tela. A ex ecuo do aplicativo continua (no bloqueada). Mos tr a o for mulr io na tela, mas bloqueia a ex ecuo do aplicativo at que o for mulr io s ej a fechado.
Mostrando formulrios
For mulr ios podem s er mos tr ados de for ma modal (us ando o mtodo S howModal) ou de for ma no- modal (us ando S how). Quando um for mulr io mos tr ado us ando S howModal, a ex ecuo do aplicativo inter r ompida e s continua quando o us ur io fecha o for mulr io (cancelando ou confir mando as opes es colhidas , por ex emplo). S howModal o mtodo mais us ado par a as caix as de dilogo, for mulr ios us ados par a s olicitar infor maes do us ur io, mos tr ar r es ultados , ou par a pedir confir maes par a aes r ealizadas . Quando um for mulr io mos tr ado us ando o mtodo S how, a ex ecuo do aplicativo no inter r ompida. I s s o per mite que o us ur io r ealize outr as oper aes no aplicativo, mes mo enquanto o for mulr io es t s endo ex ibido. O tr echo de cdigo a s eguir ilus tr a o us o dos mtodo S how e S howModal, par a um for mulr io chamado " Caix a" . pr ocedur e T For m1.B tModalClick(S ender : T Obj ect); begin Caix a.S howModal; { aqui, o cdigo pr a de s er ex ecutado, at que o us ur io feche o for mulr io} ... end; pr ocedur e T For m1.B tNaoModalClick(S ender : T Obj ect); begin Caix a.S how; { aqui, o cdigo continua a s er ex ecutado, mes mo antes do for mulr io s er fechado} ... end;
Del phi 5
valor definido na pr opr iedade ModalRes ult. Es s e r ecur s o pode s er us ado par a fazer decis es de acor do com o que foi es colhido no for mulr io, como mos tr a o tr echo de cdigo abaix o: ... Res ultado : = Caix aConfir macao.S howModal; if Res ultado = mr OK then { fazer alguma cois a} if Res ultado = mr Cancel then { fazer outr a cois a} ...
Par a alter ar a or dem de tabulao de um componente, s elecione o componente da lis ta e us e as s etas par a cima ou par a baix o. N OT A: a or dem de tabulao s tem efeito em tempo de ex ecuo. Em tempo de des envolvimento, a or dem de tabulao depende s omente da or dem em que os componentes for am adicionados . Par a tes tar a or dem de tabulao, voc pr ecis a ex ecutar o aplicativo.
Del phi 5
Na lis ta da es quer da s elecione os for mulr ios que voc no des ej a que s ej am cr iados dur ante a ex ecuo. Em s eguida, clique no boto > . Voc pode tambm clicar no boto > > par a mover todos os for mulr ios par a a s egunda lis ta. Par a alter ar a or dem em que os for mulr ios s o cr iados (s omente par a a lis ta da es quer da), ar r as te o nome do for mulr io par a outr a pos io da lis ta. N OT A: as mudanas des cr itas alter am tambm o ar quivo de pr oj eto. As linhas com os comandos Application.Cr eateFor m() dos for mulr ios colocados na s egunda lis ta (" Available For ms " ) s o r emovidas do ar quivo de pr oj eto. A or dem dos comandos tambm alter ada de acor do com a or dem definida na caix a Pr oj ect Options (ilus tr ao anter ior ). Quando um for mulr io movido par a a lis ta " Available For ms " , ele no mais cr iado automaticamente quando o aplicativo inicializado. Par a ex ibir o for mulr io, voc deve antes cr i- lo na memr ia. Uma maneir a s imples de fazer is s o atr avs do mes mo comando ger ado automaticamente pelo Delphi, Application.Cr eateFor m. O ex emplo a s eguir us a es s e comando par a cr iar um for mulr io (chamado " Fr mPr odutos " ) antes de mos tr - lo. pr ocedur e T Fr mPr incipal.Pr odutos Click(S ender : T Obj ect); begin Application.Cr eateFor m(T Fr mPr odutos , Fr mPr odutos ); Fr mPr odutos .S howModal; end;
Imprimindo formulrios
Algumas vezes til impr imir os for mulr ios de um aplicativo, par a manter um contr ole or ganizado dos for mulr ios que j es to pr ontos , por ex emplo. Par a impr imir um for mulr io, s elecione o for mulr io e es colha o comando File | Pr int. A s eguinte caix a ex ibida.
Del phi 5
Es colha uma das opes da caix a e clique em OK . As opes s o des cr itas a s eguir : P r opor t i on al (" Pr opor cional" ) Aj us ta o for mulr io pr opor cionalmente ao valor da pr opr iedade Pix els Per I nch do for mulr io. O valor inicial des s a pr opr iedade depende da r es oluo atual e calculada quando o Delphi car r egado. (" I mpr imir par a caber na pgina" ) Aj us ta o tamanho do for mulr io par a que ocupe o maior es pao pos s vel da pgina. (" S em aj us te de tamanho" ) I mpr ime o for mulr io com o mes mo tamanho que mos tr ado na tela.
Um novo Fr ame s er cr iado em for ma de um for mulr io. I nclua os obj etos que des ej a utilizar , e adicione ao For m pr incipal um obj eto T Fr ame da palheta de componentes .
S elecione o Fr ame cr iado na j anela ex ibida, e clique em Ok. S er adicionado um obj eto par ecido com o T Panel no For m contendo os obj etos includos no Fr ame.
Del phi 5
Como padr o, ex ibido o nome do pr oj eto na bar r a de ttulo da caix a de mens agem. O comando Mes s ageDlg mos tr a uma caix a de mens agem que pode conter s mbolos es peciais , botes adicionais e outr os elementos . O comando tem vr ios par metr os que devem s er es pecificados . Vej a a s intax e do comando Mes s ageDlg: Mes s ageDlg(< Mens agem> ,< T ipo da Caix a> ,< B otes > ,< Nmer o de aj uda> ); Os cinco tipos dis ponveis s o ilus tr ados a s eguir , alm do comando us ado par a ex ibir cada tipo de caix a.
Mt I n f or m at i on Mes s ageD l g( ' Men s agem de i nf or m ao, m t I n f or m at i on, m bOK Can cel , 0 ) ;
Del phi 5
m bOK Cancel , 0 ) ; con f i r m ao' , m t Con f i r m at i on, m bOK Can cel , 0 ) ;
Note que os ttulos das caix as de mens agem s o s empr e o nome do tipo da caix a, com ex ceo da opo mtCus tom que ex ibe o nome do pr oj eto como ttulo (e no mos tr a s mbolo es pecial). I nfelizmente, os ttulos s o s empr e em ingls . No h como es pecificar outr os ttulos par a as caix as us ando o comando Mes s ageDlg. O ter ceir o par metr o < B otes > us ado par a definir o conj unto de botes que s er ex ibido na par te de baixo da caix a de mens agem. H alguns conj untos de botes pr edefinidos . Um deles foi us ado nos ex emplos anter ior es : mbOK Cancel, que mos tr a os botes OK e Cancel. Os conj untos pr edefinidos s o r es umidos a s eguir : MbYes NoCancel MbAbor tRetr yI gnor e MbOK Cancel Mos tr a os botes Yes , No e Cancel. Mos tr a os botes Abor t, Retr y e Cancel Mos tr a os botes OK e Cancel.
Pode- s e tambm adicionar botes es pecficos , lis tando o nome dos botes entr e colchetes . Os botes dis ponveis s o: mbYes , mbNo, mbOK , mbCancel, mbHelp, mbAbor t, mbRetr y, mbI gnor e, mbAll Por ex emplo, par a mos tr ar uma caix a de mens agem de avis o com os botes , Yes , No, I gnor e e Help, us e um comando como o s eguinte (a caix a mos tr ada logo depois ): Mes s ageDlg(Houve um er r o de leitur a no dis co. Des ej a inter r omper a ex ecuo do aplicativo?, mtWar ning, [ mbYes , mbNo, mbI gnor e, mbHelp] , 0);
Par a a entr ada de infor maes s imples , voc pode us ar a funo I nputB ox . Es s a funo mos tr a um caix a s imples com um campo par a a entr ada (um componente Edit) de dados e os botes OK e Cancelar . I nputB ox r etor na um S tr ing com o tex to digitado pelo us ur io. A funo I nputB ox r ecebe tr s par metr os : I nputB ox (< T tulo da Caix a> , < T ex to do pr ompt> , < T ex to padr o> ); Vej a um ex emplo a s eguir : I nputB ox ('Es colha de pas ', 'Digite o nome do pas : ', 'B r as il');
Par a r ecuper ar o que foi digitado na I nputB ox , us e uma var ivel par a ar mazenar o valor . No ex emplo a s eguir , us ada uma var ivel NomeDoPais , do tipo S tr ing: pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var NomeDoPais : S tr ing; begin NomeDoPais : = I nputB ox ('Es colha de pas ', 'Digite o nome do pas : ', 'B r as il'); S howMes s age('Nome do pas es colhido: ' + NomeDoPais ); end;
Del phi 5
O ex emplo l um nome de pas , us ando a funo I nputB ox , e ex ibe es s e nome em uma caix a de mens agem.
Trabalhando commenus
Os Menus s o par te impor tante da maior ia dos aplicativos par a Windows . Com os r ecur s os do Menu Des igner do Delphi, pos s vel cr iar menus completos r apidamente, com comandos , teclas de atalho, s epar ador es e outr as opes . Dois tipos bs icos de menus podem s er cr iados : menus pr incipais e menus popup.
O s componentes de menus
Os dois componentes de menus s o ex ibidos como cones no for mulr io. a par tir des s es cones que s o cons tr udos os menus pr incipais e popup, us ando o Menu Des igner , uma fer r amenta es pecfica par a a cr iao de menus . Par a mos tr ar o Menu Des igner par a um componente de MainMenu ou PopupMenu, faa o s eguinte: clique duas vezes no componente de menu, ou clique com o boto dir eito no componente de menu e es colher o comando Menu Des igner . O Delphi abr e o Menu Des igner dentr o de uma j anela s epar ada.
O Menu D es igner aber t o com o pr im ei r o m enu s el eci on ado. D i gi t e u m t t ul o par a o m en u . O t ex t o di gi t ado apar ece n a pr opr i edade Capt ion, n o Obj ect I n s pect or .
D epoi s de di gi t ar um t t ul o, pr es s i on e E NT E R . O pos i o do pr im ei r o com an do do m en u s elecion ada. Agor a di git e o t ext o par a o com an do.
P r es s i on e E NT E R out r a vez par a pas s ar par a o pr xi m o com an do. Cont i n ue di git an do os com an dos da m es m a m an ei r a.
P ar a pas s ar par a o pr xim o t t u l o de m en u, pr es s i one a s et a par a di r eit a n o t ecl ado. Voc pode t am bm cli car n o pr x im o t t ul o.
Depois de fechar o Menu Des igner , voc j pode vis ualizar o menu no for mulr io, mes mo em tempo de des envolvimento. Depois de cr iar um menu, voc pode alter - lo facilmente com o Menu Des igner . Voc pode ins er ir , apagar , ou r emover comandos , por ex emplo. Clique duas vezes no componente MainMenu par a abr ir o Menu Des igner e s iga os pas s os a s eguir par a cada oper ao.
Del phi 5
Par a ins er ir um novo comando: mova o cur s or (a bar r a az ul) par a o comando antes da pos io que des ej a par a o novo comando. Pr es s ione a tecla I NS ERT (ou I ns ). Um novo comando vazio cr iado logo depois do cur s or . B as ta digitar o tex to par a o comando. Par a apagar um comando: mova o cur s or par a o comando e pr es s ione DELET E (ou Del). S e houver um s ubmenu as s ociado ao comando, es te s ubmenu tambm apagado. Par a apagar um menu inteir o: mova o cur s or par a o ttulo do menu e pr es s ione DELET E. T odos os comandos (e s ubmenus ) do menu s o apagados . Par a mover um comando par a outr a pos io: Ar r as te o comando par a outr a pos io. Voc pode mover o comando par a outr a pos io do mes mo menu, ou par a dentr o de outr o menu (ou s ubmenu). S e o comando movido contiver um s ubmenu, o s ubmenu movido j unto com o comando. Os s epar ador es s o us ados par a or ganizar menus ex tens os , agr upando comandos r elacionados . Um s epar ador apar ece como uma linha hor izontal entr e os comandos do menu. Par a adicionar um s epar ador a um menu: no Menu Des igner , digite um hfen( - ) em vez de um nome par a o comando e pr es s ione ENT ER. O Delphi acr es centa um linha hor izontal (o s epar ador ) ao menu. O es pao ocupado pelo s epar ador menor quando o aplicativo ex ecutado, como mos tr a a figur a abaix o.
e em t em po de execuo.
As teclas de atalho s o us adas par a es colher comandos de menu r apidamente, s em a neces s idade de abr ir os menus . As teclas de atalho s o, na ver dade, combinaes de teclas , como CT RL+ C, CT RL+ S HI FT + 1, etc. Par a definir teclas de atalho par a um comando de menu, s elecione o menu e alter e a pr opr iedade S hor tcut. Pode- s e es colher um item da lis ta ou digitar uma combinao dir etamente. As teclas de atalho apar ecem ao lado dos comandos , nos menus .
C riando submenus
Os s ubmenus s o s imples mente " menus dentr o de menus " . O pr ocedimento par a cr iar um s ubmenu ex plicado na ilus tr ao abaix o: (Pag.29)
Del phi 5
D i gi t e o pr im ei r o com an do do s u bm enu e pr es s i on e E NT E R .
Cont i n ue di git an do os n ovos com ando s egui dos por E N T E R . P ar a volt ar ao m en u pr i n ci pal, u s e E S C.
U m m en u popu p n o Men u D es i gn er
Del phi 5
Capt i on Ch ecked D ef au l t Capt i on deter mina o tex to que apar ece no ttulo ou comando de um menu. Ch ecked us ado par a comandos que podem es tar ligados ou des ligados (opes ). Quando Ch ecked = T r u e, ex ibido uma pequeno v do lado es quer do do comando. Alter e Default par a T r u e par a tor nar o comando s elecionado no comando padr o do menu. O comando padr o apar ece em negr ito no menu e o comando es colhido quando s e clica duas vezes no ttulo do menu. (Es te um r ecur s o dis ponvel, mas pouco us ado no Windows ). Alter e E n abl ed par a ativa ou des ativar o comando. Um menu des ativado ( E n abl ed = F al s e) apar ece acinzentado em tempo de ex ecuo e no pode s er es colhido. Es ta pr opr iedade us ada ger almente alter ada s omente em tempo de ex ecuo, par a des ativar ou ativar um comando, dependendo do que es t s endo feito pelo us ur io. R adi oI t em s emelhante Ch ecked , mas mos tr a um pequeno cr culo no lado es quer do do comando. Comandos do mes mo gr upo com R adi oI t em = T r u e s o mutuamente ex clus ivos : quando um comando do gr upo ligado, todos os outr os s o des ligados . As teclas de atalho us adas par a ex ecutar o comando dir etamente pelo teclado. Alter e Vi s i bl e par a ex ibir ou es conder um comando ou menu. Par a es conder , faa Vi s i bl e = F al s e.
E n abl ed
R adi oI t em
S h or t cu t Vi s i bl e
Propriedades comuns
Os componentes vis uais pos s uem vr ias pr opr iedades comuns entr e s i. Des cr evemos a s eguir as mais impor tantes des s as pr opr iedades . (Algumas pr opr iedades des cr itas no es to dis ponveis par a todos os componentes ). N OT A: de agor a em diante chamar emos os componentes vis uais de apenas " componentes " . P r opr i edade Al i gn D es cr i o Al i gn deter mina o alinhamento do componente em r elao ao for mulr io (ou a outr o componente em que es tej a contido). Opes : alN on e: s em alinhamento es pecfico. al T op/ al B ot t om : alinhamento pelo t opo/ bas e do componente pai. A lar gur a do componente s e tor na a mes ma do componente pai. al L ef t / al R i gh t : alinhamento pela es quer da/dir eita do componente pai. A altur a do componente s e tor na a mes ma do componente pai. al Cl i en t : alinhamento pela r ea cliente do componente pai. A r ea cliente par a um for mulr io, por ex emplo, toda a r ea do for mulr io menos a bar r a de ttulo, as bor das e as bar r as de r olagem. Color deter mina a cor da par te inter na do componente. As cor es dis ponveis dividem- s e em cor es pr edefinidas , que no dependem do s is tema, e cor es do s is tema, que dependem da configur ao definida no Painel de Contr ole do Windows . As cor es pr edefinidas apar ecem no incio da lis ta. Elas s o apr es entadas na tabela a s eguir .
Col or
cl F u ch s i a cl L i m e cl N avy
cl Gr ay cl L t Gr ay cl Ol i ve
Del phi 5
cl P u r pl e cl T eal cl B l ack Con s t r ai n t s Rox o es cur o Azul- cinza Pr eto cl R ed cl W h i t e cl B l u e Ver melho B r anco Azul pur o cl S i l ver cl Y el l ow Cinza mdio Amar elo
Es ta pr opr iedade deter mina as dimens es mnimas e mx imas per mitidas par a o componente. Cons tr aints compos ta pelas s eguintes s ubpr opr iedades : Mi n H ei gh t , Max H ei gh t : as altur as mnima e mx ima, em pix els . Mi n W i dt h , Max W i dt h : as lar gur as mnima e mx ima em pix els . Us e es ta opo par a definir o tipo de cur s or ex ibido, quando o mous e colocado s obr e o contr ole. A opo cr D ef au l t us a o cur s or padr o do Windows (ger almente cr Ar r ow). A opo cr N on e faz com que no s ej a mos tr ado um cur s or . Os outr os tipos de cur s or es s o mos tr ados a s eguir .
Cu r s or
T i pos de cu r s or es
cr Ar r ow
cr Cr os s
cr lI B eam
cr S QLWait
cr S ize
cr NES W
cr NS
cr Help
cr NWS E
cr WE
cr UpAr r ow
cr No
cr Hour Glas s
cr Dr ag
cr NoDr op
cr HandPoint
cr HS plit
cr VS plit
cr MultiDr ag
cr AppS tar t
D es cr i o Alter e E n abl ed par a Fals e par a des ativar o componente. Um componente des ativado no per mite inter ao com o us ur io (ele pr a de funcionar ). Par a um componente E di t , por ex emplo, o tex to apar ece mais clar o e no pode s er editado. Par a um componente B u t t on , o tex to s e tor na acizentado e o componente no aceita mais cliques . N OT A: alguns componentes (como B uttons ) s apar ecem des ativados em tempo de ex ecuo.
Enabled = T r ue F on t
Enabled = Fals e
A fonte utilizada no contr ole. Es s a pr opr iedade uma pr opr iedade compos ta pode s er alter ada no Obj ect I ns pector , ou us ando a caix a de fonte padr o do Windows (clicando nas r eticncias ). Deter minam a altur a e a lar gur a do componente, em pix els . Defina aqui um tex to par a a " Dica" que s er ex ibida quando o cur s or do mous e pr a s obr e o contr ole por um momento. Par a que a dica r ealmente apar ea, voc deve alter ar a pr opr iedade S h ow H i n t par a T r u e. L ef t deter mina a dis tncia, em pix els , do lado es quer do do for mulr io bor da es quer da do componente. T op s emelhante, mas par a a dis tncia ver tical. O nome que identifica o componente, tanto no Obj ect I n s pect or como em todos os pr ogr amas . Defina aqui um menu popup par a o componente. Habilita a ex ibio de " dicas " par a o componente. S e es ta for T r u e, o tex to definido na
H ei gh t , W i dt h H int
L ef t , T op N am e P opu pMen u S h ow H i n t
Del phi 5
pr opr iedade H i n t ex ibido em um pequena caix a amar ela (a " dica" ), quando o ponteir o do mous e deix ado por alguns momentos s obr e o contr ole. T abOr der , T abS t op T ag T abOr der define a or dem de tabulao do componente. O valor de T abOr der s faz s entido s e a pr opr iedade T abS top es tiver definida como T r ue. (Vej a mais s obr e a or dem de tabulao no captulo " For mulr ios e Caix as de Dilogo" ). Um nmer o inteir o, s em s ignificado es pecfico, que pode s er us ado como identificador do componente. Pode- s e us ar a pr opr iedade T ag (tr aduo: " etiqueta" , " identificao" ) em es tr utur as cas e, por ex emplo (vej a o captulo s obr e Obj ect P as cal par a mais s obr e a es tr utur a cas e). Deter mina s e o componente es t vis vel ou no. Par a es conder um componente, defina es ta pr opr iedade como F al s e. O valor padr o (vis vel) T r u e. Es ta pr opr iedade nor malmente s alter ada (e s tem efeito) em tempo de ex ecuo.
Vi s i bl e
Eventos comuns
Alguns eventos s o comuns maior ia dos componentes vis uais . Vej a detalhes s obr es os mais impor tantes des s es eventos a s eguir . E ven t o On Cl i ck On D bl Cl i ck On E n t er D es cr i o Es te o evento mais us ado par a quas e todos os componentes . O evento On Cl i ck , ocor r e quando o componente r ecebe um clique, com o boto es quer do (boto padr o) do mous e. O evento On D bl Cl i ck ocor r e quando o componente r ecebe um clique duplo, tambm com o boto es quer do (boto padr o) do mous e. On E n t er chamado quando o componente r ecebe o foco. Um componente r ecebe o foco quando ativado de alguma maneir a us ando o mous e (com um ou mais cliques ), ou us ando o teclado (com a tecla T AB e as teclas de dir eo). On E x i t chamado quando um componente per de o foco. Um componente per de o foco, quando outr o componente r ecebe o foco (s omente um componente pode es tar com o foco em um for mulr io). On K eyP r es s ocor r e quando uma tecla pr es s ionada e s oltada. O componente que " r ecebe" o evento o que es t com o foco. A tecla es pecificada no par metr o K ey (do tipo Char ) do evento.
On E x i t On K eyP r es s
C omponente Button
O componente B utton , um dos componentes mais comuns em aplicativos par a Windows .
E x em pl os de com ponent es B ut t on
P r opr i edades
Vej a a s eguir as pr opr iedades impor tantes do componente B utton. P r opr i edade Capt i on Can cel D ef au l t D es cr i o Capt i on deter mina o tex to ex ibido no boto. Alter e Can cel par a T r u e par a que o boto s ej a ativado com a tecla E S C. Alter e D ef au l t par a T r u e, par a que o boto s ej a ativado com a tecla E NT E R .
E vent os
O evento mais impor tante, e de longe o mais us ado, par a o componente B utton o evento OnClick, que ocor r e quando o boto clicado uma vez. OnClick o evento padr o par a es s e componente.
Del phi 5
C omponente Edit
O componente Edit per mite a entr ada (e a ex ibio) de tex tos e valor es . Es s e componente s upor ta apenas uma linha de tex to. Par a tex tos com mais de uma linha, us e o componente Memo, des cr ito em s eguida.
E x em pl os de com ponent es E di t
P r opr i edades
S eguem des cr ies das pr opr iedades mais impor tantes do componente Edit. P r opr i edade Au t oS el ect Au t oS i z e Ch ar Cas e D es cr i o S eleciona automaticamente todo o tex to no E di t quando o componente r ecebe o foco no for mulr io. Aj us ta a altur a do E di t automaticamente (no cas o de mudanas de fonte ou tamanho, por ex emplo). S omente a altur a, mas no a lar gur a, aj us tada. Contr ola a " caix a" (mais culas e mins culas ) do tex to digitado no E di t . S o tr s as opes dis ponveis : ecN or m al : (padr o) per mite digitar tex tos de qualquer maneir a (mais culas e mins culas em qualquer or dem). ecL ow er Cas e: r es tr inge todo o tex to a mins culas . T odo o tex to tr ans for mado par a mins culas , mes mo s e o us ur io us ar as teclas S H I F T e CAP S L OCK . ecU pper Cas e: tem efeito s emelhante ao de ecL ow er Cas e, mas r es tr ingindo o tex to par a mais culas Defina aqui a Quantidade mx ima de car acter es que podem s er digitados dentr o do E di t . Max Length ideal par a limitar o tamanho da entr ada par a valor es ou tex tos com tamanhos fix os , como telefones e cdigos . O valor zer o (o padr o) no impe limites . Define o car acter e ex ibido no componente quando o tex to digitado (nor malmente as ter is cos s o utilizados ). T udo o que digitado s ubs titudo pelo car acter e es pecificado em P as s w or dCh ar . O padr o '# 0' que faz com que o tex to digitado apar ea nor malmente. Alter e R eadOn l y par a T r u e par a no per mitir que o us ur io alter e o contedo do E di t . A opo F al s e a opo padr o, que per mite a alter ao nor mal do tex to. S el S t ar t a pos io do pr imeir o car acter e s elecionado no E di t , ou a pos io do cur s or , s e no houver tex to s elecionado. S el L en gt h o nmer o de car acter es s elecionados . S el T ex t o tex to s elecionado no Edit. Voc pode ler os valor es de S el S t ar t ou S el L en gt h par a deter minar o tr echo s elecionado no E di t , ou alter - los par a s elecionar um tr echo difer ente. S el T ex t pode s er us ado par a s ubs tituir o tr echo s elecionado por outr o tr echo de tex to.
Max L en gt h
P as s w or dCh ar
R eadOn l y S el S t ar t , S el L en gt h , S el T ex t
E vent os
Alm dos eventos comuns , como OnClick e OnDblClick, o componente Edit ofer ece o evento OnChange. O evento OnChange ocor r e quando o tex to no Edit alter ado. OnChange o evento padr o par a o componente Edit.
C omponente Label
O componente Label us ado, ger almente, par a identificar componentes em um for mulr io. O tex to de um Label alter ado atr avs da s ua pr opr iedade Caption.
P r opr i edades
A s eguir , s o des cr itas as pr opr iedades mais impor tantes do componente Label. P r opr i edade D es cr i o
Del phi 5
Al i gn m en t Au t oS i z e F ocu s Con t r ol O alinhamento do tex to do L abel em r elao r ea que lhe foi r es er vada Deter mina s e o L abel deve ter s eu tamanho aj us tado automaticamente ou no, quando o compr imento do s eu tex to (valor da pr opr iedade Caption) alter ado. O componente ao qual o L abel es t as s ociado. Quando o us ur io pr es s iona a tecla de atalho definida par a o L abel , o componente r ecebe o foco. (Labels no podem r eceber o foco). Par a definir uma tecla de atalho par a um L abel , acr es cente um car acter e " &" dentr o da pr opr iedade Caption, como em " Pr o&duto" , ou " &Abr ir " . Layout deter mina o alinhamento ver tical do tex to do Label em r elao r ea r es er vada par a ele. Opes : t l T op/ t l Cen t er / t l B ot t om : alinham o tex to do Label pelo t opo/ cen t r o/ bas e da r ea r es er vada. Deter mina s e o tex to do L abel quebr ado em vr ias linhas quando no h es pao s uficiente par a ex ibi- lo em uma linha s . Us e T r u e, par a per mitir as quebr as de linhas e F al s e par a evit- las .
L ayou t
W or dW r ap
E vent os
Os eventos de um Label s o r ar amente utilizados . Algumas vezes , os eventos OnClick e OnDblClick s o utilizados par a r ealizar alguma oper ao es pecial no componente as s ociado ao Label.
C omponente Memo
O componente Memo uma ex tens o do componente Edit que per mite a edio de vr ias linhas de tex to. Ele apr es enta todas as pr opr iedades do componente Edit e mais algumas es pecficas par a per mitir o tr abalho com tr echos ex tens os de tex to.
P r opr i edades
Vej a a s eguir detalhes s obr e as mais impor tantes pr opr iedades (ex clus ivas ) do componente Memo. Par a as pr opr iedades comuns ao componente Edit vej a a s eo s obr e es s e componente. P r opr i edade L i n es D es cr i o A pr opr iedade L i n es deter mina o tex to ex ibido no Mem o . Clique duas vezes ao lado des s a pr opr iedade no Obj ect I n s pect or (ou clique nas r eticncias ) par a ex ibir a j anela " S tr ing lis t editor " (ilus tr ao a s eguir ). Digite o tex to nor malmente na j anela. Pode- s e us ar E N T E R , T AB e vr ias outr as teclas comuns de edio. (Vej a mais s obr e a pr opr iedade Lines a s eguir ).
Del phi 5
O S t r in g li s t edit or
Al i gn m en t
Define como alinhado o texto dentr o do componente Memo. S o tr s as opes dis ponveis : t aL ef t Ju s t i f y (alinhar es quer da), t aCen t er (alinhar pelo centr o), e t aR i gh t Ju s t i f y (alinhar pela dir eita). Deter mina quais bar r as de r olagem s o ex ibidas par a o Mem o . A opo padr o s s N on e , que no ex ibe nenhuma das duas bar r as de r olagem. As opes r es tantes s o: s s Ver t i cal : mos tr a s omente a bar r a de r olagem ver tical, do lado dir eito. s s H or i z on t al : mos tr a s omente a bar r a de r olagem hor izontal, na par te de baix o. s s B ot h : mos tr a as duas bar r as de r olagem, dir eita e abaix o do Memo. Alter e W an t R et u r n s par a T r u e par a per mitir que os us ur ios cr iem novas linhas dentr o do Mem o , us ando a tecla E N T E R (ou R E T U R N ). Defina W an t R et u r n s como F al s e, par a pas s ar a digitao da tecla E N T E R par a o for mulr io. Por ex emplo, s e um for mulr io tem um boto padr o que ativado com a tecla E N T E R ( D ef au l t = T r u e), e a pr opr iedade W an t R et u r n s es t definida como F al s e, o boto padr o es colhido no ins er ida um nova linha no tex to. N OT A: mes mo com W an t R et u r n s em F al s e, pode- s e digitar novas linhas no Mem o , us ando CT R L + E N T E R . Es ta pr opr iedade s emelhante a W an t R et u r n s (acima), s que par a a tecla T AB . S e W an t T abs es tiver em F al s e, os T AB s digitados vo par a o for mulr io, pas s ando o foco par a outr os componentes (da for ma us ual). J s e W an t T abs es tiver em T r u e, os T AB s vo par a dentr o do Memo. Car acter es de tabulao s o ins er idos na pos io do cur s or . N OT A: mes mo com W an t T abs em F al s e, pode- s e digitar T AB s em um Mem o us ando CT R L + T AB . Deter mina s e as linhas de tex to dentr o do Mem o s o quebr adas automaticamente ou no. O valor T r u e ativa a quebr a automtica de linhas .
S cr ol l B ar s
W an t R et u r n s
W an t T abs
W or dW r ap
Del phi 5
begin for I : = 0 to 4 do Memo1.Lines .Delete(I ); end; Par a r emover todas as linhas , us e o mtodo Clear , como em Memo1.Lines .Clear . Outr a maneir a mais s imples us ar o mtodo Clear do Memo, como em Memo1.Clear . As duas maneir as s o completamente equivalentes . Par a ler /alter ar uma linha es pecfica, us e a pr opr iedade Lines s eguida pelo ndice da linha, entr e colchetes . Memo1.Lines [ 9] r etor na a dcima linha, por ex emplo. No ex emplo a s eguir , as linhas de um Memos o copiadas , na or dem inver s a, par a outr o (a pr opr iedade Count r etor na o nmer o de linhas ). pr ocedur e T For mT es teMemo.B tI nvLinhas Click(S ender : T Obj ect); var I : I nteger ; begin for I : = Memo1.Lines .Count- 1 downto 0 do Memo2.Lines .Add(Memo1.Lines [ I ] ); end;
E vent os
Os eventos mais impor tantes do componente Memo s o os mes mos do componente Edit e tm o mes mo s ignificado. O evento OnChange acontece quando o tex to do Memo alter ado. O evento OnClick ocor r e quando o us ur io clica em qualquer local do inter ior do Memo.
C omponente ListBox
O componente Lis tB ox ex ibe uma lis ta de itens que podem s er es colhidos com um clique do mous e. Os itens ex ibidos s o definidos alter ando a pr opr iedade I tems .
E x em pl os de com ponent es L i s t B ox
P r opr i edades
As pr opr iedades mais impor tantes do componente Lis tB ox s o des cr itas a s eguir . P r opr i edade I t em s Col u m n s D es cr i o A pr opr iedade I t em s deter mina os itens ex ibidos no L i s t B ox . I t em s ex atamente equivalente pr opr iedade L i n es do componente Mem o . Deter mina o numer o de colunas do L i s t B ox . S e o nmer o de colunas for maior que um, os itens do L i s t B ox s o dis pos tos em colunas e ex ibida uma bar r a de r olagem hor izontal. A pr opr iedade E x t en dedS el ect us ada em as s ociao com a pr opr iedade Mu l t i S el ect par a per mitir a s eleo de vr ios itens no L i s t B ox . Quando ambas Mu l t i S el ect e E x t en dedS el ect es to em T r u e, vr ios itens podem s er s elecionados na lis ta us ando as teclas CT R L (par a s elecionar itens no- contguos ) e S H I F T (par a s elecionar uma s equncia de itens ). S e E x t en dedS el ect ed es tiver em F al s e (com Mu l t i S el ect em T r u e) pos s vel s elecionar vr ios itens (bas ta clicar ), mas as teclas CT R L e S H I F T no funcionam. Finalmente, s e Mu l t i S el ect es tiver em Fals e, o valor de E x t en dedS el ect no impor ta, pois s omente um item pode s er s elecionado na lis ta. S e I n t egr al H ei gh t for definida como T r u e, o ltimo item da lis ta s s er ex ibido s e couber inteir amente na par te de baix o da lis ta (no apar ecendo cor tado). Com I n t egr al H ei gh t em F al s e, o ltimo item mos tr ado mes mo que apar ea cor tado no final da lis ta. Defina S or t ed como T r u e par a que os i t en s do L i s t B ox s ej am or denados alfabeticamente (ou numer icamente). Fals e lis ta as opes na or dem em que for am
I n t egr al H ei gh t
S or t ed
Del phi 5
adicionadas . I t em I n dex , T opI n dex Leia I t em I n dex (em tempo de ex ecuo) par a deter minar o ndice do item s elecionado no L i s t B ox . O pr imeir o item do L i s t B ox tem ndice zer o. S e mais de um item es tiver s elecionado, o ndice do pr imeir o item s elecionado r etor nado. S e nenhum item es tiver s elecionado I t em I n dex r etor na - 1. Leia T opI n dex (tambm em tempo de ex ecuo) par a deter minar o ndice do pr imeir o item vis vel no L i s t B ox . Alter e o valor de T opI n dex , par a definir o pr imeir o item ex ibido no L i s t B ox . S el Cou n t S el ect ed S el Cou n t r etor na o nmer o de itens s elecionados no L i s t B ox . A pr opr iedade S el ect ed um ar r ay de valor es bool ean os , com elementos par a todos os itens do L i s t B ox . O s eguinte cdigo l os valor es em S el ect ed par a copiar todos os itens s elecionados em um L i s t B ox par a um componente Mem o : pr ocedur e T For m1.B tMover Click(S ender : T Obj ect); var I : I nteger ; begin for I : = 0 to Lis tB ox 1.I tems .Count- 1 do if Lis tB ox 1.S elected[ I ] then Memo1.Lines .Add(Lis tB ox 1.I tems [ I ] ); end;
E vent os
O evento OnClick par a um Lis tB ox chamado quando um item da lis ta s elecionado com o mous e. O evento OnDblClick chamado quando um item do Lis tB ox clicado duas vezes . Es s e evento ger almente us ado par a r ealizar aes imediatas , como adicionar o item s elecionado a outr o componente, por ex emplo.
C omponente C omboBox
O componente ComboBox uma combinao de um componente Edit com um componente Lis tBox . O ComboB ox mos tr a uma lis ta de opes (o Lis tB ox ) e uma r ea onde s e pode digitar livr emente (o Edit).
P r opr i edades
O componente ComboBox apr es enta quas e todas as pr opr iedades dos componentes Lis tB ox e Edit. Vej as as mais impor tantes pr opr iedades a s eguir . P r opr i edade D r opD ow n Cou n t I t em I n dex , T opI n dex D es cr i o Deter mina o nmer o de itens lis tados (o padr o 8) Leia I temI ndex par a deter minar o ndice do item s elecionado no ComboB ox . Leia/alter e T opI ndex par a deter minar /alter ar o pr imeir o item ex ibido na lis ta de opes (par te de baix o do ComboB ox ). I t em s Os itens lis tados na par te de baix o no ComboB ox . Es ta pr opr iedade do tipo T S tr ings e idntica pr opr iedade Lines do Memo e pr opr iedade I tems do Lis tB ox . Max L en gt h O nmer o mx imo de car acter es que pode s er digitado na par te de cima do ComboB ox (a r ea de digitao). S e Max Length for zer o (o valor padr o), o nmer o ilimitado. Mu l t i S el ect , E x t en dedS el ect , S el Cou n t , Es tas pr opr iedades , us adas par a a s eleo de mltiplos itens , s o idnticas s de mes mo nome par a o componente Lis tB ox (vej a a s eo s obr e es te componente).
Del phi 5
S el ect ed S or t ed S t yl e Alter e S or ted par a T r ue alfabeticamente. par a que os itens do ComboB ox s ej am or denados
Es ta uma das pr opr iedades mais impor tantes . Ela deter mina a apar ncia e o compor tamento (o es tilo) do Com boB ox . As opes s eguintes s o as mais us adas : cs D r opD ow n : com es ta opo, o Com boB ox per mite que s ej a es colhido um valor da lis ta ou que s ej a digitado um valor na par te de cima. cs D r opD ow n L i s t : com es ta opo, a par te de cima da caix a no pode s er alter ada. O us ur io fica r es tr ito s omente s opes da lis ta. cs S i m pl e: uma opo us ada nas caix as " Abr ir " e " S alvar " da maior ia dos aplicativos par a Windows . Aqui a lis ta de opes s empr e ex ibida (o nmer o de itens ex ibidos depende do tamanho do Com boB ox ). Par a es s a opo, enquanto voc digita na par te de cima, a lis ta s e aj us ta automaticamente, fazendo o item mais pr x imo do que es t s endo digitado pas s ar a s er a pr imeir a da lis ta.
cs Dr opDown
cs Dr opDownLis t
cs S imple
T ex t
E vent os
O evento OnChange chamado quando o tex to na par te de cima da lis ta alter ado. O evento OnClick chamado quando o us ur io clica em algum item da lis ta.
C omponente C heckBox
O componente CheckB ox us ado par a per mitir a es colha de opes no mutuamente ex clus ivas (vr ias opes podem s er es colhidas ao mes mo tempo). Par a cada CheckB ox h um ttulo as s ociado. Um CheckB ox pode es tar em tr s es tados : mar cado (checked), des mar cado (unchecked), ou acizentado (gr ayed).
P r opr i edades
As pr opr iedades mais impor tantes do componente CheckB ox s o des cr itas a s eguir . P r opr i edade Al i gn m en t Capt i on Al l ow Gr ayed D es cr i o O alinhamento do ttulo do Ch eckB ox . O ttulo que identifica o Ch eckB ox . Alter e Al l ow Gr ayed par a T r u e par a per mitir mais um es tado par a o Ch eckB ox : o es tado acinzentado. O s ignificado des s e es tado depende do aplicativo. Ele pode, por ex emplo, indicar que uma opo es t em um es tado inter medir io: nem ligada nem des ligada. O es tado inicial do Ch eckB ox . T r u e mar ca o Ch eckB ox ; F als e des mar ca. Us e S t at e par a alter ar ou ler o es tado do Ch eckB ox . Os tr s es tados pos s veis s o cbU n ch ecked (des mar cado), cbCh ecked (mar cado) e cbGr ayed (acinzentado). A opo cbGr ayed s tem efeito s e a pr opr iedade Al l ow Gr ayed for T r u e. Vej a abaix o a apar ncia de um Ch eckB ox par a cada um dos tr s es tados :
Ch ecked S t at e
Del phi 5
E vent os
O evento OnClick o evento mais us ado par a o componente CheckB ox . O evento OnClick ocor r e quando o CheckB ox r ecebe um clique. Um clique tambm automaticamente mar ca (ou des mar ca) o CheckB ox . N OT A: voc no pr ecis a us ar o evento OnClick par a ver ificar s e um CheckB ox es t mar cado ou no. Par a is s o, ver ifique a pr opr iedade Checked.
C omponente RadioButton
O componente RadioB utton us ado ger almente par a a es colha entr e opes mutuamente ex clus ivas (uma opo cancela a outr a). Um RadioB utton s pode es tar em dois es tados : ligado ou des ligado. Alter e a pr opr iedade Checked do boto par a T r ue par a lig- lo e par a Fals e par a des lig- lo.
E x em pl os de R adi oB ut t on s
As pr opr iedades do componente RadioB utton s o pr aticamente as mes mas que par a o componente CheckB ox . Os eventos do componente RadioB utton s o ex atamente os mes mos que os do componente CheckB ox . Como par a o componente CheckB ox , o evento mais us ado o evento OnClick. O componente RadioGr oup (des cr ito a s eguir ) ger almente us ado em vez do componente RadioB utton.
E x em pl os de R adi oGr ou ps
Os RadioB uttons dentr o de um RadioGr oup no podem s er alter ados dir etamente. Par a alter ar os ttulos dos RadioB uttons , ou apagar ou acr es centar RadioB uttons , alter e a pr opr iedade I tems . Par a alter ar o es paamento entr e cada RadioB utton, aumente ou diminua o tamanho do RadioGr oup. O es paamento aj us tado automaticamente. OnClick o evento mais us ado par a RadioGr oups . Dentr o do cdigo par a o evento OnClick, ver ifique a pr opr iedade I temI ndex par a deter minar qual RadioB utton foi s elecionado.
C omponente G roupBox
O componente Gr oupB ox muito til par a a or ganizao de for mulr ios complex os . Componentes adicionados a um Gr oupB ox pas s am a fazer par te do Gr oupB ox . S e o Gr oupB ox for movido ou apagado, os componentes contidos nele s o movidos ou apagados tambm.
Del phi 5
E x em pl o de Gr ou pB ox
Par a adicionar um componente a um Gr oupB ox , s imples mente clique dentr o do Gr oupB ox ao adicionar o componente. Depois de adicionado a um Gr oupB ox , um componente s pode s er movido par a for a dele us ando os comandos Cut e Pas te. Par a alter ar o ttulo de um Gr oupB ox , alter e s ua pr opr iedade Caption. S e voc apagar todo o tex to des s a pr opr iedade, a caix a de gr upo s e tr ans for ma apenas em um contor no r etangular (is s o us ado com fr equncia). O Delphi ofer ece vr ios eventos par a os componentes Gr oupB ox , mas es tes s o r ar amente us ados . Par a lidar com eventos dos componentes dentr o de um Gr oupB ox , us e os eventos des s es componentes .
C omponente Panel
O componente Panel us ado, como o Gr oupB ox , par a agr upar componentes r elacionados . Uma vantagem do Panel em r elao ao Gr oupB ox a s ua ver s atilidade, pr incipalmente nos s eus r ecur s os vis uais . A maior ia das pr opr iedades do componente Panel afetam apar ncia do componente no for mulr io. Vej a a s eguir as pr opr iedades us adas com mais fr eqncia. P r opr i edade Al i gn m en t B evel I n n er D es cr i o Deter mina o alinhamento do tex to do P an el (s e houver ). O tex to deter minado pela pr opr iedade Capt i on . Es pecifica a maneir a como a par te inter na do P an el ex ibida. A opo bvL ow er ed faz com que a par te inter na par ea " abaix ada" . bvR ai s ed tem o efeito contr r io (apar ncia levantada). A opo bvN on e (a opo padr o) r etir a o efeito tr idimens ional da par te inter na do P an el .
I dntico pr opr iedade B evel I n n er , s que par a a par te ex ter na do P an el . A intens idade do efeito tr idimens ional (vej a as figur as ).
B evelWidth = 5
B evelWidth = 10
Deter mina s e ex ibida ou no uma moldur a em volta do P an el . A dis tncia entr e os efeitos tr idimens ionais inter no e ex ter no. S tem efeito quando a pr opr iedade B evel I n n er tem o valor bvL ow er ed ou bvR ai s ed . O tex to ex ibido dentr o do P an el .
C omponente BitBtn
O componente B itB tn uma ver s o es pecializada do componente B utton, com a capacidade de ex ibir imagens e r ealizar algumas aes comuns . E s te componente muito us ado par a a cr iao de caix as de dilogo. H vr ios tipos pr edefinidos de componentes B itB tn. Par a es colher o tipo do B itB tn, alter e a pr opr iedade K ind. A
Del phi 5
apar ncia do boto (a imagem e o tex to que apar ecem nele), bem como a ao r ealizada, dependem do valor es colhido par a a pr opr iedade K ind. Os tipos mais comuns de B itB tns s o ilus tr ados a s eguir . Val or de K i n d bkAbor t bkCan cel bkCl os e B kI gn or e Apar n ci a do B it B t n Val or de K i n d bkN o bkOK bkR et r y bkY es Apar n ci a do B it B t n
Entendendo identificadores
I dentificador es (I dentifier s ) s o os nomes que identificam os elementos de um pr ogr ama em Obj ect Pas cal. Ex emplos de identificador es s o nomes de var iveis , cons tantes , pr ocedur es , functions e componentes . Em Obj ect Pas cal todos os identificador es us ados devem s er declar ados . Quando voc declar a um identificador , voc es t definindo um tipo par a ele (como inteir o, S tr ing, etc.). Um identificador deve s eguir as s eguintes r egr as bs icas : 1. 2. 3. 4. 5. Pode ter at 63 car acter es . Qualquer car acter e que pas s e des s e limite ignor ado pelo compilador do Delphi. I dentificador es devem comear s empr e com letr as , ou com o car acter e de s ublinhado (_ ). Um identificador no pode comear com um nmer o. Os outr os car acter es de um identificador (do s egundo em diante) podem s er letr as , nmer os ou s ublinhados . Um identificador no pode s er uma palavr a r es er vada da linguagem Obj ect Pas cal (como begin, if ou end, por ex emplo).
Del phi 5
Declarando variveis
A declar ao de uma var ivel define o nome e o tipo da var ivel. Declar aes de var iveis devem s er pr ecedidas pela palavr a- chave var . As declar aes , j unto com a palavr a- chave var cons tituem o chamado bloco de declar ao de var iveis . Declar aes devem s er agr upadas no incio do pr ogr ama, ou no incio de uma pr ocedur e ou function (antes da palavr a- chave begin). O pr ogr ama (tr ivial) abaix o mos tr a um ex emplo de declar ao de var iveis . S o declar adas tr s var iveis inteir as (X, Y e S oma). As s ume- s e que h dois componentes Edit no for mulr io, onde s o digitados os dois valor es a s er em s omados . As funes S tr T oI nt e I ntT oS tr conver tem o tipo de S tr ing par a o I nteger (I nteir o) e de I nteger par a S tr ing, r es pectivamente. Um caix a de mens agem ex ibida no final, com o r es ultado da s oma. pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var X, Y: I nteger ; S oma: I nteger ; begin X: = S tr T oI nt(Edit1.T ex t); Y: = S tr T oI nt(Edit2.T ex t); S oma: = X + Y; S howMes s age('S oma = ' + I ntT oS tr (S oma)); end; S e as var iveis des s e pr ogr ama no fos s em declar adas , os s eguintes er r os s er iam mos tr ados na compilao (na par te de baix o do Editor de Cdigo):
Por tanto, lembr e- s e s empr e de declar ar todas as var iveis us adas nos s eus pr ogr amas !
Declarando constantes
Cons tantes s o us adas em pr ogr amas par a ar mazenar valor es que no podem (ou no devem) s er alter ados em um pr ogr ama. Declar aes de cons tantes devem s er pr ecedidas pela palavr a- chave con s t . As declar aes das cons tantes , j unto com a palavr a- chave cons t cons tituem o chamado bloco de cons tantes . Ao contr r io das
Del phi 5
var iveis , as cons tantes devem ter s eus valor es definidos logo na declar ao. Alm dis s o, os tipos das cons tantes no s o definidos ex plicitamente. Eles s o deduzidos pelo Delphi, de acor do com o valor definido par a cada cons tante. Vej a alguns ex emplos : cons t Altur a = 100; Lar gur a = 200; VelocidadeMax ima = 225.17; T itulo = Ecos s is temas ; Aqui, as cons tantes " Altur a" e " Lar gur a" s o ar mazenadas com tipo I nteger , " VelocidadeMax ima" com tipo Real (ou Double) e " T itulo" com tipo S tr ing. Note como us ado o s mbolo " = " par a definir os valor es par a as cons tantes e no o s mbolo de atr ibuio: " : = " .
Tipos estruturados
Pode- s e cr iar novos tipos em Obj ect Pas cal, bas eando- s e nos tipos pr edefinidos . T ipos cr iados a par tir dos tipos bs icos s o chamados T ipos Es tr utur ados . O ex emplo mais comum de tipo es tr utur ado o Ar r ay, uma s eqncia de valor es de mes mo tipo. A linguagem Obj ect Pas cal per mite tambm cr iar T ipos enumer ados , Regis tr os e vr ios outr os .
Tipos enumerados
A declar ao de um tipo enumer ado lis ta dir etamente todos os valor es que uma var ivel pode conter . Voc define novos tipos us ando a palavr a- chave type, que deve s er colocada antes das definies dos tipos (tal como var e cons t). O bloco type deve s er pos icionado antes dos blocos var e cons t. Vej a alguns ex emplos : type T DiaUtil = (S egunda, T er ca, Quar ta, Quinta, S ex ta); T Fabr icante = (Chevr olet, For d, Volks wagen); T S ex o = (Mas culino, Feminino); Depois de definir os novos tipos , voc pode us - los nor malmente nas declar aes das var iveis , como s e fos s em tipos pr edefinidos . Vej a ex emplos de declar aes que us am os tipos definidos acima: var DiaUtil: T diaUtil; Fabr icante: T fabr icante; S ex o: T s ex o; Os tipos de inter valo s o s eqncias de valor es dos tipos B oolean, Char , I nteger , ou de tipos enumer ados . T ipos de inter valo s o teis quando neces s r io limitar uma var ivel a um inter valo contnuo de valor es , como de 1 a 100, ou de " A" a " Z " . Vej a a s eguir ex emplos de definies de tipos de inter valo: type T Gr aus = 0..360; T Hor aValida = 0..23; T Maius cula = A..Z ; var Hor a: T Hor aValida; Angulo: T Gr aus ; No ex emplo, a var ivel " Hor a" s pode es tar entr e 0 e 23 e a var ivel " angulo" deve es tar entr e 0 e 360. Quando uma var ivel e definida com um tipo de inter valo, o Delphi, dur ante a compilao, ver ifica as alter aes nes ta var ivel e ger a er r os de compilao quando os limites do inter valo s o violados . O s eguinte ex emplo ger a um er r o de compilao, na linha des tacada. pr ocedur e T For mT es teRange.B utton1Click(S ender : T Obj ect); type T Gr au = 0..360; var
Del phi 5
T emp: T Gr au; begin for T emp: = 0 to 720 do { Er r o de compilao!} begin ... { cdigo omitido} end; end; A mens agem de er r o ger ada " Cons tant ex pr es s ion violates s ubr ange bounds " , indicando que os limites do inter valo for am violados (a var ivel T emp pas s ar ia do limite, 360, no loop for ). No cas o anter ior , o Delphi pde detectar o er r o, por que for am us ados valor es cons tantes par a a var ivel. Quando s o us adas ex pr es s es mais complex as (clculos por ex emplo), o Delphi s pode detectar o er r o em tempo de ex ecuo. O ex emplo a s eguir pas s ar ia na compilao, mas a linha des tacada ger ar ia uma ex ceo do tipo ERangeEr r or (T emp r eceber ia o valor 400, maior que o mx imo per mitido pelo tipo T gr au: 360). pr ocedur e T For mT es teRange.B utton2Click(S ender : T Obj ect); type T Gr au = 0..360; var T emp: T Gr au; begin T emp: = 200; T emp: = (T emp * 2); { Er r o de ex ecuo! } S howMes s age(I ntT oS tr (T emp)); end; N OT A: O compor tamento padr o do Delphi no ver ificar er r os de inter valo em tempo de ex ecuo (como o er r o do ex emplo anter ior ). Par a que o Delphi r ealmente ver ifique s e as var iveis es to dentr o dos limites , es colha o comando Pr oj ect | Options , mude par a a pgina Compiler e ative a opo Range Checking.
Del phi 5
s e tambm definir ar r ays de 3 ou mais dimens es , mas es tes s o pouco us ados e ocupam muita memr ia. Vej a ex emplos de definies de ar r ays multidimens ionais : var T abelaGr afico: ar r ay [ 1..100, 1..100] of Double ModeloEdificio: ar r ay [ 1..500, 1..500, 1..500] of I nteger ; O nmer o de elementos de um ar r ay multidimens ional o r es ultado da multiplicao de todas as s uas dimens es . O ar r ay " T abelaGr afico" , no ex emplo, tem 100x 100 = 10.000 elementos , e o ar r ay " ModeloEdificio" tem 500x 500x 500 = 125 milhes de elementos . Par a aces s ar um elemento de um ar r ay multidimens ional, s o us ados vr ios ndices (um par a cada dimens o), s epar ados por vr gulas . Por ex emplo: T abelaGr afico[ 56,78] ModeloEdificio[ 150,115,82]
Strings
S tr ings em Obj ect Pas cal s o ar mazenados inter namente como ar r ays de car acter es (ar r ays do tipo Char ). H dois tipos de S tr ings em Obj ect Pas cal: S tr ings longos e S tr ings cur tos . S tr ings longos tm o compr imento pr aticamente ilimitado (2 GigaB ytes ). Eles s o declar ados us ando s omente a palavr a- chave s tr ing. S tr ing cur tos tm o compr imento limitado em 255 car acter es . Par a declar ar um S tr ing cur to, us e a palavr a- chave s tr ing s eguida pelo tamanho des ej ado, entr e colchetes . Vej a a s eguir ex emplos de declar aes dos dois tipos de S tr ings : var Nome: S tr ing[ 30] ; { um S tr ing cur to com no mx imo 30 car acter es } T ex to: S tr ing; { um S tr ing longo} Como um S tr ing um ar r ay de car acter es , pode- s e aces s ar cada car acter e do S tr ing individualmente, us ando ndices . Por ex emplo, Nome[5] r etor na o quinto car acter e do S tr ing " Nome" (os car acter es s o index ados a par tir de 1).
Registros (Records)
Os r egis tr os s o conj untos de var iveis de tipos difer entes . Um r egis tr o pode s er manipulado como um nico elemento e definido us ando a palavr a- chave r ecor d (r egis tr o em ingls ). Vej a um ex emplo que define um r egis tr o par a ar mazenar dados s obr e pr odutos . type T Pr oduto = r ecor d Codigo: s tr ing[ 12] ; Des cr icao: s tr ing[ 50] ; Pr eco: Cur r ency; For necedor : s tr ing[ 50] ; Quantidade: I nteger ; end; Depois de definir um r egis tr o, voc pode declar ar uma var ivel com o novo tipo de r egis tr o ou at definir um ar r ay com o novo tipo, como no ex emplo abaix o: var Pr oduto: T Pr oduto; Es toque: ar r ay [ 1..500] of T Pr oduto; Os elementos de um r egis tr o s o chamados de campos . Os campos do r egis tr o " T Pr oduto" definido acima, por ex emplo, s o Codigo, Des cr icao, Pr eco, For necedor e Quantidade. Par a aces s ar um campo de uma var ivel do tipo r egis tr o, us e o nome da var ivel s eguido por um ponto e o nome do campo. O tr echo de cdigo abaix o, por ex emplo, define valor es par a cada um dos campos da var ivel pr oduto: Pr oduto.Pr eco: = 259,95; Pr oduto.Codigo: = 005- 002x ; Pr oduto.For necedor : = Eletr os ul; Pr oduto.Des cr icao: = Liquidificado indus tr ial Walita 2001;
Del phi 5
Pr oduto.Quantidade: = 8; Par a evitar a r epetio do nome do r egis tr o em cas os como es te, pode- s e us ar o comando with: with pr oduto do begin Pr eco: = 259,95; Codigo: = 005- 002x ; For necedor : = Eletr os ul; Des cr icao: = Liquidificado indus tr ial Walita 2001; Quantidade: = 8; end;
C ontrole de fluxo
Os pr ogr amas mos tr ados at aqui no fazem nada alm de definir novos tipos , declar ar var iveis e alter - las . Par a que pr ogr amas r ealmente " faam alguma cois a" , eles devem s er capazes de tomar decis es de acor do com as entr adas do us ur io, ou r epetir comandos , at que uma cer ta condio s ej a s atis feita. S o es s as oper aes que cons tituem o contr ole de flux o de um pr ogr ama.
U s ando bl ocos
Um bloco um conj unto de comandos delimitado pelas palavr as chave begi n e en d . J us amos blocos vr ias vezes nos ex emplos mos tr ados at aqui. No ar quivo de pr oj eto, por ex emplo, um bloco contm o cdigo pr incipal do pr oj eto (onde, entr e outr as cois as , s o cr iados os for mulr ios do aplicativo). T odo pr ogr ama em Obj ect Pas cal deve ter pelo menos um bloco: o bloco pr incipal. Quando voc pr ecis a ex ecutar ou no um conj unto de comandos dependendo de uma condio, voc deve us ar blocos par a delimitar es s es conj untos . Outr o us o impor tante de blocos par a a r epetio de um conj unto de comandos vr ias vezes , como nos loops for , while e r epeat, que ver emos a s eguir . B locos podem s er aninhados , is to pode haver blocos dentr o de blocos . I s s o til em es tr utur as complex as , como ifs dentr o de ifs , ou loops dentr o de loops . A es tr utur ao em blocos da linguagem Obj ect Pas cal uma de s uas car acter s ticas mais elegantes e poder os as .
I f-t hen-el s e
O comando mais us ado par a fazer decis es s imples o comando if. O comando if ver ifica uma condio e ex ecuta um comando ou bloco de comandos s omente s e a condio for ver dadeir a. O comando if s empr e us ado com a palavr a- chave then. H vr ias maneir as de us ar o comando if. Vej a a mais s imples a s eguir : if condio then comando; Aqui a condio qualquer ex pr es s o que tenha valor booleano (T r ue ou Fals e). Condies s o ger almente compar aes , como a > b, x = 1, total < = 1000, etc. Pode- s e tambm us ar o valor de uma pr opr iedade como condio. O ex emplo abaix o, ativa um boto (chamado " B utton2" ) s omente s e ele es tiver des ativado (com Enabled = Fals e). Cas o contr r io, nada acontece. if (B utton2.Enabled = Fals e) then B utton2.Enabled = T r ue; H tambm vr ias funes pr edefinidas que r etor nam valor es booleanos e que tambm podem s er us adas como condies .
U s ando el s e
Um comando if pode tambm apr es entar uma s egunda par te, delimitada pela palavr a- chave els e. O comando da s egunda par te (depois de els e) ex ecutado quando a condio fals a. O ex emplo a s eguir mos tr a uma mens agem difer ente dependendo do valor da var ivel " x " : if x > limite then S howMes s age(Limite ultr apas s ado! ); els e S howMes s age(S em pr oblemas .);
Del phi 5
U s ando bl ocos com o comando i f
A ver s o s imples do comando if us ada nos ex emplos acima tem us o muito limitado. Na maior ia das vezes , neces s r io ex ecutar mais de um comando s e uma cer ta condio for ver dadeir a. Par a is s o voc deve us ar blocos de comandos . Vej a um ex emplo completo: pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var Dividendo, Divis or , Res ultado: Real; begin Dividendo: = S tr T oFloat(Edit1.T ex t); Divis or : = S tr T oFloat(Edit2.T ex t); if Divis or = 0 then begin Color : = clRed; S howMes s age('Divis or invlido'); end els e begin Color : = clS ilver ; Res ultado : = Dividendo/Divis or ; S howMes s age('Res ultado = ' + FloatT oS tr (Res ultado)); end; end; Note os dois blocos de comandos : um par a o if- then e outr o par a o els e. O pr ogr ama calcula a divis o de dois valor es do tipo Real (lidos a par tir de dois componente Edit). S e o divis or for zer o, o pr imeir o bloco do if ex ecutado: o for mulr io muda par a ver melho e uma mens agem ex ibida. S e o divis or no for zer o, o s egundo bloco (depois do els e) ex ecutado, mudando a cor do for mulr io par a cinza. As funes S t r T oF l oat e F l oat T oS t r conver tem de S tr ings par a nmer os r eais e de nmer os r eais par a S tr ings , r es pectivamente. Note como o end depois do pr imeir o bloco no s eguido de ponto- e- vr gula (; ). Es s a uma r egr a obr igatr ia da linguagem Obj ect Pas cal: um end antes de um els e nunca deve s er s eguido por " ; " . S omente o ltimo end do comando if deve ter minar com ponto- e- vr gula.
Del phi 5
and e or par a cr iar novas condies . Lembr e- s e, entr etanto de us ar par ntes es par a agr upar as condies . Os par ntes es us ados no pr ogr ama anter ior , por ex emplo, s o todos obr igatr ios .
A es t r ut ur a cas e
Quando neces s r io decidir entr e muitas opes em um pr ogr ama, a es tr utur a cas e da linguagem Obj ect Pas cal em ger al mais clar a e mais r pida que uma s eqncia de ifs aninhados . Uma es tr utur a cas e s pode s er us ada com valor es or dinais (inteir os , car acter es , tipos de inter valo e tipos enumer ados ). Na es tr utur a cas e uma var ivel compar ada com vr ios valor es (ou gr upos de valor es ) e o comando (ou bloco de comandos ) cor r es pondente ex ecutado. Vej a a s eguir um ex emplo s imples , que mos tr a mens agens difer entes , de acor do com o nmer o entr ado em um Edit. pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var Numer o: I nteger ; begin Numer o : = S tr T oI nt(Edit1.T ex t); cas e Numer o of 1, 2, 3, 5, 7 : begin S howMes s age('Nmer o pr imo menor que 10'); Color : = clB lue; end; 4, 6, 8: S howMes s age('Nmer o par menor que dez'); 9: S howMes s age('Nmer o mpar menor que dez'); 10..1000: S howMes s age('Nmer o entr e 10 e 1000'); els e S howMes s age('Outr o nmer o'); end; // final do cas e end; // final da pr ocedur e Uma es tr utur a cas e deve s er ter minada com end e pode ter uma par te opcional els e. Os comandos depois do els e s s o ex ecutados s e a var ivel no for igual a nenhum dos valor es es pecificados (s e no houver a par te els e, a es tr utur a cas e pulada inteir amente). No ex emplo acima, a mens agem " Outr o nmer o" s mos tr ada s e o valor da var ivel " numer o" for maior que 1000 ou menor que 1.
U s ando l oops
Os loops (" laos " ) s o es tr utur as us adas par a r epetir vr ias vezes s equncias de comandos . H tr s tipos de loops em Obj ect Pas cal. O loop for us ado par a r ealizar um nmer o fix o de r epeties . Os loops while e r epeat r epetem um bloco de comandos at que uma condio s e tor ne fals a ou ver dadeir a, r es pectivamente.
O loop for
O loop for o mais r pido e mais compacto dos tr s tipos de loops . Es s e loop us a um contador , uma var ivel inteir a que aumentada (incr ementada) automaticamente cada vez que o loop ex ecutado. O nmer o de r epeties do loop for fix o. Ele depende s omente do valor inicial e do valor final do contador , que s o definidos no incio do loop. Vej a um ex emplo: pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var I : I nteger ; Numer o: I nteger ; begin Numer o : = S tr T oI nt(Edit1.T ex t); for I : = 1 to 50 do Lis tB ox 1.I tems .Add(I ntT oS tr (Numer o* I )); end; Es te pr ogr ama mos tr a os pr imeir os 50 mltiplos do nmer o digitado em um Edit. Os mltiplos s o adicionados a um Lis tB ox . O loop for us ado aqui contm um nico comando. Por is s o no neces s r io us ar begin e end. O ex emplo a s eguir mais complex o. Nele s o us ados loops for aninhados par a multiplicar 100 valor es por 20 tax as difer entes , ger ando uma tabela um ar r ay bidimens ional com o " cr uzamento" de todos os valor es e tax as . calculado tambm o total dos valor es da tabela ger ada. Vr ios outr os loops for s imples s o us ados . Note que uma mes ma var ivel pode s er us ada vr ias vezes em loops for difer entes . pr ocedur e T For m1.B utton1Click(S ender : T Obj ect);
Del phi 5
var I , J: I nteger ; Valor I nicial, T otal: Cur r ency; T ax as : ar r ay [ 1..20] of Double; Valor es : ar r ay [ 1..100] of Cur r ency; T abela: ar r ay [ 1..20, 1..100] of Cur r ency; begin Valor I nicial : = S tr T oFloat(Edit1.T ex t); //Calcular tax as for I : = 1 to 20 do T ax as [ I ] : = I / 100; //Calcular valor es } for i: = 1 to 100 do Valor es [ I ] : = (Valor I nicial + (i * 100)); //Multiplicar valor es por tax as e s omar r es ultados } T otal: = 0; for I : = 1 to 100 do for J: = 1 to 20 do begin T abela[ I , J] : = Valor es [ I ] * T ax as [ J] ; T otal: = T otal + T abela[ I , J] ; end; end;
O loop while
O loop while um loop mais ver s til que o for , embor a um pouco mais complex o. O loop while r epete um comando, ou um bloco de comandos , at que a condio es pecificada s e tor ne fals a. O nmer o de r epeties no pr ees tabelecido como no loop for . No ex emplo a s eguir , o valor digitado em um Edit lido, conver tido e colocado em uma var ivel " x " . Em s eguida, s ubtr ado 10 do valor de " x " e adicionado o r es ultado (conver tido em um s tr ing) a um Lis tB ox , r epetindo o pr oces s o at que " x " s ej a menor ou igual a 0. pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var x : I nteger ; begin x : = S tr T oI nt(Edit1.T ex t); { Ler valor inicial par a x } Lis tB ox 1.I tems .Clear ; { Limpar a lis ta de valor es } while x > 0 do begin x : = x - 10; Lis tB ox 1.I tems .Add(I ntT oS tr (x )); end; end; No loop while, a condio tes tada no incio de cada r epetio. Quando a condio fals a, o pr ogr ama s ai do loop e ex ecuta o comando imediatamente depois . S e a condio tes tada for ver dadeir a, o loop ex ecutado novamente. Note que pos s vel que os comandos de um loop while no s ej am ex ecutados nenhuma vez. I s s o acontece quando a condio fals a j na entr ada do loop. No pr ogr ama acima, por ex emplo, um valor inicial negativo par a a var ivel " x " far ia com que o while fos s e pulado inteir amente na pr imeir a vez. Outr a car acter s tica impor tante do loop while, que a condio us ada no loop deve s e tor nar fals a em algum momento. Cas o contr r io, o loop ex ecutado par a s empr e. O pr ogr ama entr a em um " loop infinito" . Vej a uma ex emplo de um loop infinito com while: x : = 1; while x > 0 do x : = x + 1; Aqui, a condio x > 0 nunca s e tor nar fals a (x s er s empr e maior que zer o), e o pr ogr ama ficar pr es o par a s empr e dentr o do while. Es s e um er r o cometido com fr eqncia, pr incipalmente em loops while com condies mais complex as . T enha cuidado, por tanto, de alter ar pelo menos uma das var iveis envolvidas na condio, dentr o do while.
O loop repeat
O loop r epeat uma ver s o " inver tida" do loop while. Nele, a condio ver ificada s omente no final do loop. I s s o faz com que o loop s ej a s empr e ex ecutado, pelo menos uma vez. A condio do loop r epeat apar ece no final, ao lado da palavr a- chave until (" at" ). Alm dis s o, devido es tr utur a s imples do loop r epeat, os comandos do loop no pr ecis am s er delimitados por begi n e en d . Vej a um ex emplo:
Del phi 5
pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var Entr ada: s tr ing; Valor : I nteger ; begin r epeat Entr ada: = (I nputB ox ('', 'E ntr e com um nmer o de 1 a 100','')); Valor : = S tr T oI nt(entr ada); until (Valor > = 1) and (Valor < = 100); S howMes s age('Entr ada aceita.'); end; O cdigo mos tr a uma I nputB ox vr ias vezes , at que a entr ada s ej a vlida (entr e 1 e 100). Note que a I nputB ox ex ibida pelo menos uma vez, pois us ado um loop r epeat. S e while tives s e s ido us ado em vez de r epeat, o cdigo s er ia mais longo e menos elegante: pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var Valor : I nteger ; Entr ada: s tr ing; begin Entr ada: = I nputB ox ('','Entr e com um nmer o de 1 a 100',''); Valor : = S tr T oI nt(entr ada); while (Valor < 1) or (Valor > 100) do begin Entr ada : = I nputB ox ('','Entr e com um nmer o de 1 a 100',''); Valor : = S tr T oI nt(E ntr ada); end; S howMes s age('Entr ada aceita.'); end; Es te cdigo tem ex atamente o mes mo efeito que o anter ior . Mas note que a condio us ada no loop while o opos to da condio do loop r epeat. Alm dis s o, h uma r epetio das linhas de cdigo que lem a entr ada. I s s o neces s r io por que a var ivel " valor " tes tada no incio do loop e pr ecis a s er inicializada pr imeir o. Na ver dade, qualquer pr ogr ama que us e r epeat pode s er conver tido em um pr ogr ama us ando while, fazendo- s e mudanas s emelhantes s mos tr adas aqui. O loop r epeat apenas uma convenincia, que pode algumas vezes tor nar o cdigo mais s imples .
O comando break
O comando br eak us ado par a s air imediatamente de um loop (while, for ou r epeat). Vej a um ex emplo s imples : var A,B : ar r ay[ 1..1000] of I nteger ; I : I nteger ; ... for I : = 1 to 1000 do if A[ I ] < > B [ I ] then br eak; if i = 1000 then S howMes s age('T odos os elementos s o iguais ') els e S howMes s age('O elemento com ndice ' + I ntT oS tr (I ) + ' difer ente'); ... O ex emplo compar a os elementos de dois ar r ays A e B , de 1000 elementos cada um (o clculo par a os valor es dos ar r ays no mos tr ado). Quando encontr ada a pr imeir a difer ena nos ar r ays , o comando br eak inter r ompe o loop for imediatamente e os outr os elementos dos ar r ays no s o checados . S e todos os elementos for em iguais , o valor da var ivel i no final do loop s er 1000 e a pr imeir a mens agem mos tr ada. S e o loop for quebr ado antes de ter minar , com o comando br eak, o valor de i s er menor que 1000 e a s egunda mens agem s er mos tr ada.
Del phi 5
O comando continue
O comando continue us ado dentr o de loops par a for ar a pr x ima ex ecuo do loop. Quando o comando continue encontr ado, o pr ogr ama volta imediatamente par a ou incio do loop e os comandos depois de continue no s o ex ecutados . Vej a um ex emplo que adiciona todos os valor es difer entes de zer o de um ar r ay a um Lis tB ox . var A: ar r ay[ 1..100] of I nteger ; I : I nteger ; ... for I : = 1 to 100 do begin if A[ I ] = 0 then continue; Lis tB ox 1.I tems .Add(I ntT oS tr (i)); end; Quando o elemento A[ I ] do ar r ay for zer o, o comando continue faz com que o loop s ej a r epetido imediatamente (voltando par a o comeo do loop). Com is s o, o s egundo comando dentr o do loop s ex ecutado quando A[ I ] difer ente de zer o.
Procedures e Functions
As pr ocedur es (pr ocedimentos ) e functions (funes ) s o os blocos bs icos dos pr ogr amas cr iados em Obj ect Pas cal. Pr ocedur es e functions s o blocos independentes de cdigo, que podem s er chamados vr ias vezes , em vr ios pontos de um pr ogr ama. Pr ocedur es e functions s o s vezes chamadas de r otinas . A difer ena entr e pr ocedur es e functions s imples : functions r etor nam um valor ; pr ocedur es no. O ex emplo mais comum de pr ocedur e no Delphi o cdigo ger ado par a os eventos de um componente. T odos os eventos s o pr ocedur es . Vej a mais um ex emplo de um evento: pr ocedur e T For mCadas tr o.B tCadas tr ar Click(S ender : T Obj ect); begin if (EditNome.T ex t= '') or (EditS obr enome.T ex t= '') then S howMes s age('Campos no podem s er vazios ') els e begin ... S howMes s age('S uces s o no cadas tr o.'); end; end; Uma pr ocedur e ou function pode ter zer o ou mais par metr os . No cas o dos eventos , o par metr o mais comum o par metr o " S ender " , que indica o componente que ger ou o evento. A s intax e par a uma pr ocedur e a s eguinte: pr ocedur e nome da pr ocedur e (par am1, par am2, ...: tipo1; par am1,...: tipo2; ...); type { definies de tipos } var { declar aes de var iveis } cons t { definies de cons tantes } begin { cor po } end; Par a functions , a s intax e pr aticamente idntica. A nica difer ena que o tipo do valor r etor nado deve s er es pecificado no final da pr imeir a linha. function nome da function (par am1, par am2, ...: tipo1; par am1,...: tipo2; ...): tipo de r etor no; type { definies de tipos } var { declar aes de var iveis }
Del phi 5
cons t { definies de cons tantes } begin { cor po} end; A pr imeir a linha, chamada de cabealho, deve s empr e ter minar com " ; " . Os par metr os , s e ex is tir em, devem ter s eus tipos es pecificados e devem s er s epar ados por vr gulas . Par metr os do mes mo tipo podem s er agr upados ; es s es gr upos devem s er s epar ados por " ; " . Depois do cabealho, vm os blocos de declar ao type, var e cons t (no neces s ar iamente nes s a or dem). T odos es tes s o opcionais , pois a pr ocedur e ou functions pode no pr ecis ar de nenhuma var ivel alm das es pecificadas nos s eus par metr os . Em s eguida, vem o bloco pr incipal (ou cor po) da pr ocedur e, delimitado por begin e end. nes te bloco que fica o cdigo ex ecutvel da pr ocedur e. Entendendo par metr os . Os par metr os s o var iveis pas s adas par a as pr ocedur es e functions (r otinas ). Os par metr os de uma r otina s o opcionais . S o comuns r otinas (pr incipalmente pr ocedur es ) s em nenhum par metr o. Quando s o us ados par metr os , es tes podem s er pas s ados por valor ou por r efer ncia. A for ma como os par metr os s o pas s ados definida no cabealho da r otina. Quando uma var ivel pas s ada por valor , a r otina r ecebe apenas um cpia da var ivel. A var ivel pas s ada s e compor ta como uma var ivel local. Alter aes r ealizadas na var ivel no tm efeito depois da r otina ter minar (ou r etor nar ). A pas s agem por valor o tipo padr o de pas s agem de par metr os na linguagem Obj ect Pas cal. Quando uma var ivel pas s ada por r efer ncia, a r otina r ecebe uma r efer ncia var ivel pas s ada ou, em outr as palavr as , a pr pr ia var ivel. Com es s e tipo de pas s agem de par metr os , a r otina pode alter ar dir etamente a var ivel pas s ada. Par a es pecificar a pas s agem por r efer ncia, us e a palavr a- chave var antes do nome do par metr o, no cabealho da r otina. Vej a um ex emplo que us a os dois tipos de pas s agem de par metr os : pr ocedur e Des contar (T ax a: Real; var Pr eco: Cur r ency); begin Pr eco: = ((Pr eco Pr eco) * (T ax a / 100)); end; Es ta pr ocedur e r ecebe dois par metr os : T ax a e Pr eco. O par metr o T ax a pas s ado por valor . O valor de T ax a pode s er alter ado dentr o da pr ocedur e, mas as alter aes no ter o efeito depois de a pr ocedur e r etor nar . O par metr o Pr eco pas s ado por r efer ncia (us ando- s e a palavr a var antes do par metr o). Pr eco alter ado dentr o da pr ocedur e e es s a alter ao per manente.
Del phi 5
{ Cdigo inicial da Unit} ... implementation var Pr ecos : ar r ay[ 1..100] of Cur r ency; pr ocedur e Des contar (T ax a: Double; var Pr eco: Cur r ency); begin Valor : = Pr eco - Pr eco* (tax a/100); end; function Dobr ar (Pr eco: Cur r ency): Cur r ency begin Res ult : = Pr eco* 2; end; pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var I : I nteger ; begin // Des contar em 25% os pr imeir os 20 pr odutos ... for i: = 1 to 20 do Des contar (25, Pr ecos [ I ] ); //...des contar em 50% os pr x imos 30... for i: = 21 to 50 do Des contar (50, Pr ecos [ I ] ); //...e dobr ar o pr eo dos 50 pr odutos r es tantes for i : = 51 to 100 do Pr ecos [ I ] : = Dobr ar (Pr ecos [ I ] ); end; end.
Trabalhando comExcees
As ex cees s o um mecanis mo poder os o par a lidar com er r os nos s eus pr ogr amas . O us o de ex cees per mite uma s epar ao entr e o cdigo nor mal de um pr ogr ama e o cdigo us ado par a lidar com er r os que podem s ur gir . Quando ocor r e um er r o em um pr ogr ama, o Delphi levanta uma ex ceo. S e uma ex ceo que foi levantada no for tr atada, o pr ogr ama inter r ompido e mos tr ada uma caix a de dilogo com uma des cr io da ex ceo. Uma ex ceo no- tr atada pode caus ar danos aos s eus dados , deix ar o pr ogr ama em uma s ituao ins tvel, ou at levar o pr ogr ama a " tr avar " . Par a evitar que is s o acontea, voc deve tr atar as ex cees , pr otegendo blocos de cdigo que contenham comandos que pos s am caus ar er r os . Par a pr oteger um bloco de cdigo cer que- o com as palavr as - chave tr y e end. Dentr o de um bloco pr otegido, pode- s e us ar as comandos ex cept ou finally, par a tr atar as ex cees . H dois de tipos blocos pr otegidos : tr y { comandos que podem levantar ex cees } ex cept { comandos ex ecutados quando uma ex ceo levantada} end; tr y { comandos que podem levantar ex cees } finally { comandos s empr e ex ecutados , havendo ex cees ou no} end; O pr imeir o tipo de bloco pr otegido chamado de bloco tr y- ex cept. O s egundo, de bloco tr y- finally. No bloco tr y- ex cept, os " comandos pr otegidos " ficam entr e as palavr as - chave tr y e ex cept. Quando uma ex ceo ocor r e em um des s es comandos , o pr ogr ama pula imediatamente par a o pr imeir o comando depois de ex cept. No cas o do bloco tr y- finally, os comandos depois de finally s o ex ecutados s empr e (mes mo quando ex cees no s o levantadas ). Pode- s e us ar es s es comandos par a r ealizar oper aes de " limpeza" , como des tr uir componentes
Del phi 5
que no s o mais neces s r ios , por ex emplo. H vr ios tipos de ex cees . Vej a a s eguir um ex emplo que tr ata a ex ceo EDivB yZ er o, ger ada quando feita uma divis o por zer o (o divis or aqui o valor contido no componente Edit1). As s ume- s e que os valor es dos ar r ays r es ultado e valor es for am declar ados e inicializados antes . pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var Divis or : Real; begin Divis or : = S tr T oFloat(Edit1.T ex t); for i: = 1 to 50 do tr y Res ultado[ I ] : = Valor es [ I ] / Divis or ; ex cept on EDivB yZ er o do Res ultado[ I ] : = 0; end; end; Note o us o da palavr a- chave on dentr o do bloco ex cept. On us ada par a es pecificar o tipo de ex ceo a s er tr atado. Um bloco ex cept pode lidar com vr ios tipos de ex ceo, definindo- s e um bloco on [ tipo de ex ceo] do [ comandos ] par a cada tipo. Na tabela abaix o, lis tamos alguns tipos comuns de ex cees : T i pos de ex ces E D i vB yZ er o E Z er oD i vi de E Con ver t E r r or E I n Ou t E r r or E D at abas eE r r or E D B E n gi n eE r r or Qu an do ocor r e Quando s e tenta dividir um inteir o por zer o. Quando s e tenta dividir um nmer o r eal (de ponto flutuante) por zer o. Quando feita uma conver s o ilegal de tipos . Quando h um er r o de entr ada ou s ada. Quando ocor r e um er r o ger al de banco de dados . Quando h um er r o no B DE (B or land Databas e Engine).
Aestruturabsicade umaUnit
T odas as Units tm a mes ma es tr utur a bs ica: unit < nome da unit> inter face us es < lis ta de Units > implementation us es < lis ta de Units > { cdigo par a os pr ocedur es e functions } initialization { opcional, abaix o vem o cdigo par a inicializao} finalization { opcional, abaix o vem o cdigo par a finalizao} end. A pr imeir a linha da Unit identifica o nome da Unit (que deve s er um identificador vlido na linguagem Obj ect Pas cal). Vej a a s eguir des cr ies s obr e cada uma das par tes .
Del phi 5
A par te i n t er f ace comea com a palavr a inter face e ter mina imediatamente antes da palavr a- chave implementation. Es ta par te contm a definio de todos os tipos , cons tantes , var iveis , pr ocedur es e funnctions que devem s er " vis veis " (ou aces s veis ) par a outr as Units que s e r efer enciem a es ta. S omente o que es tiver definido na par te inter face pode s er aces s ado por outr as Units . A pr imeir a clus ula us es fica dentr o da par te inter face. As Units lis tadas nes s a clus ula s o ger almente adicionadas pelo pr pr io Delphi, par a fazer r efer ncia a Units do s is tema (pr edefinidas ). r ar a a neces s idade de adicionar manualmente nomes de Units a es s a clus ula us es . Par a s e r efer enciar a outr as Units , alter a- s e a clas ula us es na par te implementation. A par te i m pl em en t at i on contm todo o cdigo das pr ocedur es e functions da Unit. Es ta par te pode conter tambm declar aes de var iveis e cons tantes , mas es tas s s er o " vis veis " pelo cdigo des ta Unit. Nenhuma outr a Unit pode ter aces s o s var iveis e cons tantes declar adas aqui. A par te implementation contm a s egunda clus ula us es . As Units lis tadas nes s a clus ula s o ger almente adicionadas pelo pr ogr amador , manualmente, ou us ando o comando File | Us e unit. A par te i n i t i al i z at i on opcional. Voc pode us ar a par te initialization par a declar ar e inicializar var iveis , por ex emplo. O cdigo nes ta par te ex ecutado antes de qualquer outr o cdigo na Unit. S e um aplicativo tiver vr ias Units , a par te initialization (s e houver ) de cada Unit ex ecutada antes de qualquer outr o cdigo na Unit. A par te f i n al i z at i on tambm opcional. O cdigo nes s a par te ex ecutado logo antes do tr mino do aplicativo. Es s a par te ger almente us ada par a r ealizar " oper aes de limpeza" , como r ecuper ar memr ia e outr os r ecur s os , ao final da ex ecuo do aplicativo.
Rotinas teis
Nas s ees a s eguir , apr es entar emos algumas r otinas (functions e pr ocedur es ) teis na pr ogr amao em Obj ect Pas cal.
An s i Com par eS t r ( S 1 , S 2 : s t r i n g) : I n t eger A funo Ans iCompar eS tr compar a S 1 to S 2, levando em conta An s i Com par eT ex t ( S 1 , S2: s t r i n g) : mais culas e mins culas . A funo r etor na um valor menor que zer o s e S 1< S 2, zer o s e S 1= S 2, ou um valor maior que 0 s e I n t eger S 1> S 2. A funo Ans iCompar eT ex t s emelhante, mas ignor a mas culas e mins culas . An s i L ow er Cas e( S : s t r i n g) : s t r i n g An s i U pper Cas e( S : s t r i n g) : s t r i n g An s i P os ( S u bs t r : I n t eger Copy( S : s t r i n g; s t r ing D el et e( var I n t eger ) S: s t r i n g; S: A funo Ans iLower Cas e r etor na o s tr ing S conver tido par a mins culas (inclus ive par a letr as acentuadas ). A funo Ans iUpper Cas e r etor na o s tr ing S conver tido par a mais culas (inclus ive par a letr as acentuadas ). s t r i n g) : A funo Ans iPos r etor na um inteir o com a pos io do s tr ing S ubs tr no s tr ing S . S e S ubs tr no for encontr ado, a funo r etor na 0. I n t eger ) : A funo Copy r etor na um s tr ing contendo Comp car acter es , comeando com S [ I ndice] . Com p: A pr ocedur e Delete r emove o s ubs tr ing com Comp car acter es do s tr ing S , comeando com S [ I ndex ] . O s tr ing r es ultante r etor nado na var ivel S . A funo Length r etor na o nmer o de car acter es no s tr ing S . A funo T r im r emove es paos es quer da e dir eita do s tr ing S .
I n di ce,Com p: s t r i n g;
I n di ce,
L en gt h ( S : s t r i n g) : I n t eger T r i m ( S : s t r i n g) : s t r i n g
Del phi 5
S tr T oCur r S tr T oDate S tr T oFloat S tr T oI nt S tr T oT ime I ntT oS tr Cur r T oS tr DateT oS tr T imeT oS tr DateT imeT oS tr S tr ing S tr ing S tr ing S tr ing S tr ing I nteger Cur r ency T Date T T ime T DateT ime Cur r ency T date T DateT ime Real I nteger T T ime S tr ing S tr ing S tr ing S tr ing S tr ing
OEditor de C digo
O Editor de Cdigo (Code Editor ) o editor padr o do Delphi. Nes te captulo, ver emos como configur ar e us ar os r ecur s os des s e ver s til editor . Cada ar quivo aber to no Editor de Cdigo tem s eu ttulo ex ibido em uma " aba" no topo da j anela do editor . Pode- s e alter nar de um ar quivo aber to par a outr o facilmente, clicando na aba cor r es pondente. A j anela do Editor de Cdigo mos tr ada abaix o, com vr ios ar quivos aber tos . mos tr ado tambm o menu de atalho do Editor de Cdigo, que contm vr ios comandos teis . Par a abr ir es s e menu de atalho, clique com o boto dir eito na par te inter na (par te do tex to) do Editor de Cdigo.
Pode- s e tambm us ar o teclado par a pas s ar de um ar quivo par a outr o. Us e CT RL+ T AB par a mover par a o pr x imo ar quivo (na or dem das abas ) e CT RL+ S HI FT + T AB par a mover par a o ar quivo anter ior . Alm das Units e outr os ar quivos inter nos do Delphi, o Editor de Cdigo capaz de abr ir qualquer ar quivo tex to, at outr os es cr itos em outr as linguagens . (Mas nes s e cas o, clar o, o ar quivo no s ignificar nada par a o Delphi e no poder s er compilado, ou alter ado automaticamente). H vr ias maneir as par a abr ir ar quivos no Editor de cdigo e j conhecemos algumas . mas todas as maneir as s o des cr itas aqui br evemente, por convenincia. Par a abr ir ou vis ualizar um ar quivo no Editor de Cdigo, r ealize uma das s eguintes oper aes , es colha o comando File | Open par a abr ir um ar quivo ex is tente. Os ar quivos padr o es pecificados s o as Units (.PAS ) e os ar quivos de pr oj eto (.DPR). S e for neces s r io abr ir outr o tipo de ar quivo, es pecifique s eu tipo em " Ar quivos do tipo" .
Del phi 5
Clique com o boto dir eito em cima do nome de um ar quivo (dentr o do Editor de Cdigo) e es colha o comando Open File at Cur s or (" Abr ir ar quivo na pos io do cur s or " ). Es s e comando til par a cdigo que tr abalha dir etamente com ar quivos . Voc pode us - lo par a ver ificar s e o ar quivo r ealmente ex is te com o nome e local indicado no cdigo. O nome do ar quivo deve es tar es pecificado com o caminho (path) completo; cas o contr r io, o Delphi pode no cons eguir encontr - lo. Par a vis ualizar o cdigo as s ociado a um for mulr io (a Unit as s ociada), s elecione o for mulr io e pr es s ione F12, pr es s ione F12 novamente par a voltar ao for mulr io. Par a vis ualizar o ar quivo de pr oj eto es colha o comando View | Pr oj ect S our ce, o Editor de cdigo cr ia mais uma pgina par a mos tr ar o ar quivo de pr oj eto (no aber ta uma nova j anela). A s eguir , lis tamos algumas outr as oper aes bs icas que podem s er r ealizadas no Editor de cdigo. Par a fechar um ar quivo no Editor de Cdigo, mude par a a pgina do ar quivo e clique dentr o dela com o boto dir eito e es colha o comando Clos e Page. H tambm um atalho par a is s o, CT RL + F4. S e o ar quivo no tiver s ido s alvo, o Delphi mos tr a uma caix a de confir mao. Note que no pos s vel fechar uma pgina s imples mente clicando na s ua aba com o boto dir eito. Par a fechar uma pgina no Editor de Cdigo, voc deve mos tr - la pr imeir o. Par a abr ir uma nova j anela par a um mes mo ar quivo, mude par a a pgina do ar quivo, clique com o boto dir eito e es colha o comando New Edit Window. cr iada um nova j anela com uma cpia do ar quivo. As duas j anelas (a or iginal e a cpia) s o s incr onizadas . Alter aes em uma j anela afetam a outr a tambm. Es s e comando til quando neces s r io vis ualizar ou tr abalhar com par tes difer entes de um mes mo ar quivo. Par a pr oteger o tex to de um ar quivo contr a alter aes , mude par a a pgina que contm o ar quivo, clique com o boto dir eito e es colha o comando Read Only. I s s o faz com que o ar quivo s e tor ne " S omente leitur a" , no per mitindo alter aes acidentais . Par a des pr oteger o ar quivo, es colha o mes mo comando novamente. Par a ex ibir uma j anela de mens agens na par te de baix o do Editor de Cdigo, clique com o boto dir eito em qualquer local de dentr o do Editor de Cdigo e es colha o comando Mes s age View. Es s a j anela ex ibida dur ante a compilao par a ex ibir mens agens de er r o ou avis os . Par a es conder a j anela de mens agens , clique no pequeno " x " no canto es quer do s uper ior da j anela de mens agens (vej a figur a).
Tcnicas de navegao
H algumas tcnicas que tor nam mais r pido o tr abalho com vr ias Units r elacionadas , ou com Units ex tens as no Editor de Cdigo. Vej a as mais impor tantes des s as tcnicas a s eguir :
Del phi 5
Vej a como r ealizar as oper aes bs icas com bookmar ks : Par a definir um bookmar k par a uma linha de cdigo coloque o cur s or na linha e pr es s ione CT RL+ S HI FT + nmer o, com nmer o entr e 0 e 9 (como CT RL+ S HI FT + 0 ou CT RL+ S HI FT + 5). (S e j houver um bookmar k com o mes mo nmer o definido, ele movido par a a linha atual) Par a pular par a um linha com um bookmar k definido, pr es s ione CT RL+ nmer o, onde nmer o o nmer o do bookmar k par a onde voc des ej a pular . (S e no houver um bookmar k com es te nmer o, nada acontece). Par a r emover um bookmar k, mova o cur s or par a a linha com o bookmar k e pr es s ione CT RL+ S HI F T + nmer o, onde nmer o deve s er o nmer o do bookmar k a s er r emovido. (S e for us ado um nmer o difer ente, um novo bookmar k definido " por cima" do anter ior ). N OT A: pode- s e definir bookmar ks tambm us ando comandos do menu de atalho do Editor de cdigo. Clique com o boto dir eito dentr o do editor e us e os comandos T oggle B ookmar ks e Goto bookmar ks .
Del phi 5
Clique na par te s ublinhada par a ex ibir o tr echo de cdigo r elacionado. S e o cdigo es tiver em outr o ar quivo (e o Delphi puder encontr - lo), o ar quivo automaticamente aber to no Editor de Cdigo. S e a par te s ublinhada for uma var ivel ou nome de componente, o Delphi move o cur s or par a a declar ao da var ivel ou componente. Quando voc navega par a vr ios ar quivos ou locais difer entes , s o ativados os contr oles no canto s uper ior dir eito da j anela de Editor de Cdigo (vej a figur a).
Par a localizar um tr echo de tex to no ar quivo atual, digite o tr echo em " T ex t to find" , defina as opes neces s r ias e es colha OK . As opes s o ex plicadas a s eguir . At i ve es s a opo... Cas e s en s i t i ve W h ol e w or ds on l y P ar a obt er o s egu i n t e ef ei t o O Delphi difer encia entr e mais culas e mins culas na localizao. A palavr a es pecificada s localizada s e ela apar ecer " inteir a" no tex to (com es paos antes e depois ). A palavr a no pode s er par te de outr a. (H vr ios outr os car acter es es peciais cons ulte o Help) O Delphi per mite que s ej am us ados car acter es es peciais par a es pecificar o tex to a s er localizado. Um as ter is co (* ) vale por qualquer nmer o de car acter es ; um ponto (.) vale por um nico car acter e, por ex emplo. A localizao feita da pos io do cur s or par a a fr ente. A localizao feita da pos io do cur s or par a tr s . A localizao feita em todo o ar quivo, na dir eo es pecificada.
R egu l ar ex pr es s i on s
F or w ar d B ackw ar d Gl obal
Del phi 5
S el ect ed t ex t F r om cu r s or E n t i r e s cope A localizao r es tr ita r ea s elecionada. S e nada es tiver s elecionado, ocor r e um er r o no Delphi! A localizao feita a par tir do cur s or . A localizao feita na r ea s elecionada, ou em todo o documento (s e a opo Global es tiver mar cada)
Aqui, da mes ma for ma que par a o comando S ear ch | Find, voc digita o tex to a s er pr ocur ado e es colhe as opes neces s r ias . As opes na r ea " Options " da caix a s o idnticas s des cr itas anter ior mente. Na r ea " Wher e" , voc es pecifica em quais ar quivos o tex to s er pr ocur ado: Opo S ear ch al l f i les i n pr oj ect S ear ch al l open f i l es S ear ch i n di r ect or i es D es cr i o Pr ocur a em todos os ar quivos do pr oj eto, es tej am eles aber tos ou no. Pr ocur a em todos os ar quivos aber tos no Editor de cdigo. Pr ocur a o tex to no dir etr io es pecificado na par te de baixo da caix a de dilogo. No ex emplo ilus tr ado a s eguir , o tex to s er pr ocur ado nos ar quivos com ex tens o .pas e que es tej am no dir etr io c: \MyPr oj ects , ou em s ubdir etr ios des te.
Del phi 5
S e o tex to que es t s endo digitado for encontr ado, o tex to s elecionado no ar quivo. Continue digitando at localizar ex atamente o tex to des ej ado. Par a par ar a localizao, pr es s ione ENT ER, ou qualquer s eta do teclado.
S ubs t i t ui ndo t ex t os
Muitas vezes neces s r io s ubs tituir palavr as ou tr echos de tex to em um ar quivo (par a cor r igir o nome de uma var ivel que apar ece vr ias vezes , por ex emplo). O Delphi per mite fazer s ubs tituies apenas em um ar quivo de cada vez. Par a s ubs tituir um tr echo de tex to por outr o, us e o comando S ear ch | Replace. Es pecifique o tex to a s er localizado na pr imeir a caix a (" T ex t to find" ) e o tex to que s er us ado par a s ubs titu- lo na s egunda caix a( " Replace with" ).
A opo Pr ompt on r eplace faz com que cada s ubs tituio s ej a confir mada. Des ative- a par a que o Delphi no mos tr e confir maes . Par a s ubs tituir todas as ocor r ncias do tex to es pecificado, clique no boto Replace All.
Del phi 5
Par a configur ar o Editor de Cdigo, clique dentr o da j anela do Editor com o boto dir eito e es colha Pr oper ties . A caix a de dilogo Envir onment Options , com apenas quatr o pginas de opes , ex ibida. A pr imeir a pgina Editor us ada par a configur aes avanadas do editor . S o opes pouco us adas . As pr x imas duas pginas Dis play e Color s apr es entam vr ias opes teis que afetam a apar ncia e os r ecur s os de edio do Editor de Cdigo. A pgina Code I ns ight us ada par a configur ar os r ecur s os " Code I ns ight" , de aux lio pr ogr amao, que ver emos na pr x ima s eo.
Del phi 5
Par a alter ar as opes de S yntax Highlighting par a um elemento, na lis ta " Element" , es colha o elemento par a o qual des ej a alter ar a cor . Por ex emplo, par a alter ar a cor dos comentr ios , es colha o elemento " Comments " na lis ta. Na paleta de cor es , par a alter ar a cor de fr ente, clique com na cor com o boto es quer do (apar ecem as letr as " FG" dentr o do quadr ado de cor cor r es pondente); par a alter ar a cor de fundo, clique com o boto dir eito (apar ecem as letr as " B G" dentr o do quadr ado de cor ). Vej a um ex emplo na s eguinte figur a:
Par a des fazer uma mudana de cor , es colha uma das opes For egr ound ou B ackgr ound, na r ea " Us e defaults for " . I s s o faz com que o elemento s elecionado volte par a a cor nor mal. Cas o neces s r io, defina atr ibutos (Negr ito, I tlico, ou S ublinhado) par a o tex to do elemento, em " T ex t attr ibutes " . As mudanas que voc faz par a cada elemento s o mos tr adas em um ex emplo de pr ogr ama, na par te de baix o da caix a de dilogo.
Del phi 5
Code Completion
Es s e r ecur s o mos tr a, dur ante a digitao do cdigo, uma lis ta de pr opr iedades , pr ecedur es e functions . A lis ta ex ibida depende do que es t s endo digitado no momento. No ex emplo abaix o, a palavr a " Application" acaba de s er digitada, s eguida de um ponto:
As s im que o ponto digitado, o Delphi ver ifica o tipo de obj eto digitado e ex ibe a lis ta automaticamente (depois de alguns momentos ). Pode- s e tambm pr es s ionar CT RL + B ar r a de Es paos par a mos tr ar a lis ta imediatamente. Voc pode es colher um item da lis ta com o teclado ou o mous e, ou continuar digitando nor malmente. (Na figur a acima, a pr ocedur e Cr eateFor m foi es colhida). Com is s o, o Delphi ins er e o item es colhido depois do ponto e fecha a lis ta de opes .
Code P ar amet er s
O r ecur s o de Code Par ameter s (" Par metr os do Cdigo" ) mos tr a a pos io e os tipos de par metr os definidos par a uma pr ocedur e ou function (que tenha par metr os ! ). As infor maes s obr e os par metr os s o ex ibidos em uma pequena caix a amar ela, abaix o da linha que es t s endo digitada (vej a a figur a abaix o).
As infor maes continuam s endo ex ibidas at que os par ntes es da pr ocedur e/function s ej am fechados . Alm dis s o, enquanto os par metr os s o digitados , o Delphi r eala (em negr ito) o par metr o atual. Vej a um ex emplo na figur a a s eguir , com o pr imeir o par metr o j digitado:
Del phi 5
Code T empl at es
Os Code T emplates (" Modelos de Cdigo" ) s o " es queletos " de comandos comuns que podem s er ins er idos no cdigo r apidamente, atr avs da digitao de uma palavr a ou cdigo. O Delphi j define vr ios Code T emplates par a tr echos comuns de pr ogr amas , como es tr utur as if- then- els e, declar aes de ar r ays , etc. Par a ins er ir um code template, digite o s eu nome e pr es s ione CT RL + J. O Delphi ins er e o template e move o cur s or automaticamente par a a pos io onde s e deve comear a digitar (vej a as figur as a s eguir ).
D i gi t e o n om e do t em pl at e e pr es s i one CT R L + J
Vej a a s eguir alguns ex emplos de code templates pr edefinidos do Delphi (as bar r as ver ticais no cdigo indicam a pos io onde colocado o cur s or , quando o code template ins er ido). Es te nome cas es s ubs titudo por cas e | of : ; : ; end; for b for | : = to do begin for s for | : = to do Es te nome whileb s ubs titudo por while | do begin end;
Del phi 5
end; function function | (): ; begin end; pr ocedur e pr ocedur e | (); begin end; tr ye ife if | then begin end els e tr y | ex cept end;
Pode- s e ativar ou des ativar cada r ecur s o Code I ns ight na par te de cima da caix a, alm de alter ar o tempo de es per a par a que os r ecur s os s ej am ativados dur ante a digitao. Par a alter ar o tempo de es per a, mova a pequena bar r a abaix o de " Delay" . Pode- s e tambm definir novos Code T emplates ou alter ar os j ex is tentes . Os pr ocedimentos abaix o devem s er r ealizados a par tir da pgina Code I ns ight ilus tr ada anter ior mente. Par a definir um novo Code T emplate, clique no boto Add. Na caix a que apar ece, digite um nome par a o code template e uma des cr io par a ele:
Del phi 5
Clique em OK par a fechar a caix a de dilogo e digite o cdigo par a o code template na r ea de baix o (ao lado de " Code" ). Digite uma bar r a ver tical ( | ) par a indicar a pos io onde o cur s or deve s er colocado quando o cdigo ins er ido. (Vej a um ex emplo na figur a a s eguir ).
Clique em OK par a s alvar o code template. Agor a voc pode us - lo da mes ma for ma que os code templates pr edefinidos . Par a alter ar um code template, s elecione o nome do code template na lis ta de code templates e alter e o cdigo na par te de baix o da caix a (ao lado de " Code" ). Par a apagar um template, s elecione o nome do code template e clique no boto Delete.
Odepurador integrado
O Depur ador I ntegr ado (I ntegr ated Debugger ) do Delphi uma fer r amenta que facilita a ver ificao e a cor r eo dos er r os em s eus pr ogr amas . Com o depur ador , voc pode, por ex emplo, ex ecutar pr ogr amas pas s oa- pas s o e ver ificar o valor de var iveis e ex pr es s es dur ante a ex ecuo.
A mens agem ilus tr ada foi caus ada por um er r o comum: tentar mos tr ar um for mulr io que ainda no foi cr iado em memr ia. Mas outr as mens agens de er r os de ex ecuo tm ger almente o mes mo for mato. A mens agem comea com o nome do ar quivo ex ecutvel onde ocor r eu o er r o, o nome da ex ceo que foi levantada, e as
Del phi 5
pos ies de memr ia onde os er r os acontecer am. A no s er par a os pr ogr amador es do tipo " es covador de bits " , es s e tipo de mens agem no aj uda muito a identificar o er r o. Mes mo que s e r econhea o tipo de er r o que aconteceu (a par tir do nome da ex ceo), no h como s aber dir etamente onde o er r o ocor r eu no pr ogr ama. nes s e ponto que entr a o Depur ador I ntegr ado do Delphi.
Utilidades do Depurador
Quando voc ex ecuta um aplicativo no Delphi, ele ex ecutado automaticamente dentr o do depur ador . Quando ocor r e um er r o de ex ecuo no aplicativo, o depur ador inter r ompe o pr ogr ama e as s ume o contr ole. O depur ador cons egue " as s umir o contr ole" mes mo s e houver um er r o gr ave (como um er r o de har dwar e). Nes s e cas o ex tr emo, o depur ador no pode aj udar muito, mas ele pelo menos evita que os er r os tr avem o computador ou o coloquem em um es tado ins tvel. O depur ador mais til, entr etanto, quando os er r os s o caus ados pelo pr pr io cdigo do aplicativo e no por r azes ex ter nas . Quando h er r os de lgica em s eus pr ogr amas , por ex emplo, o Depur ador (alm da s ua ex per incia) a s ua nica aj uda par a detect- los . N OT A: Er r os de lgica s o pr oblemas na es tr utur a ou lgica de um pr ogr ama que fazem com que o pr ogr ama no ex ecute como es per ado. Um er r o de lgica comum , por ex emplo, us ar uma condio incor r eta em um loop while o r epeat: o pr ogr ama pode ficar pr es o dentr o do loop par a s empr e. Er r os de lgica, clar amente, no podem s er indicados pelo compilador .
N OT A: voc pode mos tr ar o ponto de ex ecuo no Editor de Cdigo, s e ele no es tiver apar ecendo por alguma r azo, us ando o comando Run | S how ex ecution point.
Del phi 5
O comando T r ace I nt o
O comando T r ace I nto ex ecuta uma linha de um pr ogr ama de cada vez. S e a linha a s er ex ecutada for uma chamada a uma r otina (function ou pr ocedur e), o cdigo da r otina ex ecutado tambm, linha por linha. Em outr as palavr as , o comando T r ace I nto, " entr a" nas pr ocedur es e functions . Par a us ar o comando T r ace I nto, r ealize uma das s eguintes oper aes , es colha o comando Run | T r ace I nto, pr es s ione F7. Clique no boto T r ace I nto na bar r a de fer r amentas (figur a a s eguir ).
O bot o T r ace I n t o
O comando S t ep Over
O comando S tep Over tambm ex ecuta os comandos de um pr ogr ama, uma linha de cada vez. Mas , ao contr r io do comando T r ace I nto, ele no " entr a" no cdigo das pr ocedur es e functions . Es tas s o ex ecutadas dir etamente, em um nico pas s o, e o ponto de ex ecuo movido par a a linha depois da chamada funo. Voc pode us ar o comando S tep Over par a " pular " o cdigo de uma funo que no pr ecis a ter s eu cdigo tes tado linha por linha. I s s o pode tor nar a depur ao muito mais r pida. Par a us ar o comando T r ace I nto, r ealize uma das s eguintes oper aes , es colha o comando Run | S tep Over , pr es s ione F8. Clique no boto S tep over na bar r a de fer r amentas (vej a a figur a).
I nt er r ompendo a ex ecuo
Muitas vezes dur ante a depur ao, neces s r io inter r omper a ex ecuo do aplicativo. I s s o pode s er neces s r io, por ex emplo, quando s e pas s a do er r o que es tava s endo pr ocur ado, ou quando o pr ogr ama fica em uma s ituao ins tvel, por conta de uma alguma ex ceo que ocor r eu. Par a inter r omper o pr ogr ama que es t s endo ex ecutado, es colha o comando Run | Pr ogr am r es et, ou pr es s ione CT RL+ F2 Na ver dade, o comando Pr ogr am r es et faz mais que inter r omper o pr ogr ama. Ele ex tr emamente poder os o e pode s er us ado par a lhe tir ar das s ituaes mais difceis . S e o pr ogr ama tr avar , devido a um er r o de har dwar e, por ex emplo, o comando Pr ogr am r es et cons egue " matar " o pr ogr ama e fazer tudo voltar ao nor mal. S o muito r ar os os cas os em que um er r o em um pr ogr ama faz o pr pr io Delphi tr avar ir r ever s ivelmente. O comando Pr ogr am r es et fecha todos os ar quivos aber tos pelo s eu pr ogr ama, liber a todos os r ecur s os que es tej am s endo us ados e limpa o valor de todas as var iveis .
Usando Breakpoints
Voc us a br eakpoints (" pontos de par ada" ) par a que o depur ador par e em pontos es pecficos de um pr ogr ama. Vr ios br eakpoints podem s er definidos no mes mo pr ogr ama. Com is s o, voc pode fazer a ex ecuo par ar em par tes " delicadas " ou complex as de um pr ogr ama e depois ex ecutar es s as par tes linha por linha.
Del phi 5
Par a definir um br eakpoint em uma linha de cdigo, clique na faix a cinza do Editor de Cdigo, ao lado da linha, ou mova o cur s or par a a linha de cdigo e pr es s ione F5. A linha r ealada em ver melho e apar ece um pequeno cr culo do lado es quer do da linha (vej a a figur a).
Quando encontr a um br eakpoint, o Delphi pr a imediatamente o pr ogr ama e mos tr a a linha onde par ou a linha do br eakpoint no Editor de Cdigo. Pode- s e ento continuar ex ecutando o pr ogr ama pas s o- a- pas s o, com F7 ou F8, ou continuar a ex ecuo at o final do pr ogr ama (ou at o pr x imo br eakpoint), us ando F9.
A j anela ex ibe o nome do ar quivo que contm cada br eakpoint, o nmer o da linha do br eakpoint e outr as infor maes mais avanadas . A par tir des ta j anela, voc pode pular dir etamente par a qualquer br eakpoint definido, clicando duas vezes no nome do br eakpoint. Voc pode tambm des ativar um br eakpoint tempor ar iamente, ou apag- lo de for ma per manente. Voc pode tambm apagar todos os br eakpoints de uma vez. Note, no entanto, que um br eakpoint des ativado pode s er r eativado, mas que no pos s vel voltar atr s depois de apagar um br eakpoint. Par a des ativar /r eativar um br eakpoint, no Editor de Cdigo, clique com o boto dir eito do lado es quer do do br eakpoint e es colha o comando Enabled. Par a apagar um br eakpoint, no Editor de Cdigo, clique no br eakpoint e pr es s ione F5, ou clique do lado es quer do do br eakpoint (na faix a cinza do Editor de Cdigo).
Del phi 5
Par a apagar /des ativar /ativar todos os br eakpoints , abr a a lis ta de br eakpoints (View | Debug Windows > B r eakpoints ) e clique com o boto dir eito dentr o da j anela ex ibida, mas for a da lis ta de br eakpoints (vej a a figur a a s eguir ).
Es colha o comando Delete All par a apagar todos os br eakpoints , ou Dis able All par a des ativar todos os br eakpoints , ou Enable All par a ativar todos os br eakpoints .
Par a vis ualizar a lis ta de watches definidos , es colha o comando View | Watch. O Delphi ex ibe a j anela Watch Lis t (ilus tr ao anter ior ) com os nomes e os valor es de cada watch.
Del phi 5
Par a avaliar uma ex pr es s o, digite a ex pr es s o a s er avaliada em " Ex pr es s ion" . A ex pr es s o deve s er for mada por cons tantes , ou por var iveis aces s veis no momento. Em s eguida clique no boto OK . O valor da ex pr es s o mos tr ado em " Res ult" . Par a modificar o valor de uma var ivel dur ante a ex ecuo, es pecifique o nome da var ivel em " Ex pr es s ion" , es pecifique um valor em " New value" , e clique no boto Modify. No pos s vel modificar uma ex pr es s o com mais de uma var ivel.
Del phi 5
A P gi na Dat a Aces s
A pgina Data Acces s contm os componentes us ados par a r ealizar a conex o aos bancos de dados e aces s ar s uas infor maes . Os componentes mais impor tantes , e de longe os mais us ados , s o os tr s pr imeir os : DataS our ce, T able e Quer y.
A pgi n a D at a Acces s
H tambm vr ios outr os componentes avanados us ados , por ex emplo, par a a cr iao de aplicativos cliente/s er vidor . Vej a a s eguir uma des cr io br eve dos componentes mais impor tantes da pgina Data Acces s (par a os fins des s e cur s o bs ico). Com pon en t e D at aS ou r ce T abl e Us ado par a r ealizar o aces s o a tabelas ger adas por cons ultas S QL (quer ies ). Qu er y D es cr i o Funciona como um inter medir io entr e os componentes os componentes T able e Quer y e os componentes da paleta Data Contr ols . Us ado par a r ealizar o aces s o a tabelas de um banco de dados .
Del phi 5
B at ch Move Us ado par a mover gr andes quantidades de dados de uma tabela par a outr a, par a copiar tabelas inteir as , ou par a conver ter tabelas de um tipo par a outr o.
A pgi n a D at a Cont r ol s
Os componentes DB Edit e DB Memo, por ex emplo s o equivalentes aos componentes Edit e Memo, mas com o r ecur s o adicional de aces s o a bancos de dados . Vej a a s eguir uma des cr io br eve dos componentes mais impor tantes da pgina Data Contr ols . Componente DB Gr id DB Navigator DB T ex t DB Edit DB Memo DB I mage DB Lis tB ox DB ComboB ox DB CheckB ox DB RadioGr oup Ex ibe uma lis ta de itens ex tr ada de outr a tabela r elacionada. S omente elementos da lis ta podem s er es colhidos . T em a mes ma apar ncia e o mes mo funcionamento bs ico do componente Lis tB ox . Ex ibe uma lis ta de itens ex tr ada de outr a tabela r elacionada. Pode- s e digitar um valor dir etamente. T em a mes ma apar ncia e o mes mo funcionamento bs ico do componente ComboB ox . Ex ibe uma lis ta de itens a par tir da qual, pode s er es colhido um valor par a um campo. S emelhante ao componente Lis tB ox . S emelhante ao componente DB Lis tB ox , mas per mite a digitao dir eta de um valor , alm da es colha de um item lis tado. S emelhante ao componente ComboB ox . Ex ibe um CheckB ox que pode s er us ado par a ex ibir ou alter ar o valor de um campo booleano. Ex ibe um conj unto de valor es mutuamente ex clus ivos par a um campo. Ex ibe o tex to de um campo com vr ias linhas de tex to (do tipo " B LOB " ou " Memo" ). S emelhante a um componente Memo. Ex ibe imagens ar mazenadas em um campo do tipo B LOB , ou " I mage" . Des cr io Ex ibe dados em for mato de tabela. Es te componente us ado ger almente par a ex ibir os dados de um componente T able ou Quer y. Us ado par a navegar os r egis tr os de uma tabela, per mitindo que dados s ej am apagados , ins er idos ou alter ados . Ex ibe o tex to de um campo de for ma no- editvel. S emelhante a um componente Label. Ex ibe o tex to de um campo e per mite edit- lo. S emelhante a um componente Edit.
DB LookupLis tB ox
DB LookUpComboB ox
Del phi 5
r es ultado. O componente DataS our ce us ado como um inter medir io obr igatr io entr e os componentes Data Contr ols em um for mulr io, e os dados de um componente T able ou Quer y. A pr opr iedade DataS et de um componente DataS our ce us ada par a r ealizar a ligao entr e os componentes . A maior ia dos componentes da pgina Data Contr ols apr es enta a pr opr iedade DataS our ce, onde es pecificado o componente DataS our ce a s er conectado ao componente. Os dados ex ibidos nos componentes Data Contr ols s o lidos a par tir do componente DataS our ce es pecificado.
Umexemplo tpico
Ver emos agor a como cr iar um for mulr io bs ico com aces s o a bancos de dados . No ex emplo, us ar emos um componente T able par a r ealizar a conex o com uma tabela de um banco de dados . Os dados s er o ex ibidos em um componente DB Gr id. (O componente DB Gr id mos tr a os dados em um DataS et em for mato de tabela). Par a cr iar um for mulr io s imples com aces s o a dados , em um novo for mulr io, adicione um componente T able e um componente DataS our ce, ambos localizados na pgina Data Acces s da paleta de componentes do Delphi. Adicione tambm um componente DB Gr id, da pgina Data Contr ols . Alter e a pr opr iedade Databas eName do componente T able par a o nome do banco de dados a s er aces s ado. Alter e tambm a pr opr iedade T ableName par a a tabela do banco de dados cuj os dados voc des ej a ex ibir . (No nos s o ex emplo, es colhemos o banco de dados DB DEMOS e a tabela Countr y, que contm infor maes s obr e os pas es do continente amer icano.) Alter e a pr opr iedade DataS et do componente DataS our ce par a o nome do componente T able (" T able1" o nome padr o). Alter e a pr opr iedade DataS our ce do componente DB Gr id par a o nome do componente DataS our ce (" DataS our ce1" o nome padr o). Par a vis ualizar os dados imediatamente no componente DB Gr id, alter e a pr opr iedade Active do componente T able par a T r ue. Vej a a apar ncia final do for mulr io, no ex emplo:
Defi ni ndo um Al i as
Antes de definir as tabelas de um banco de dados , voc deve definir o local onde os ar quivos do banco de dados s er o ar mazenados . Es s e local identificado por um nome, chamado Alias . Os Alias es s o us ados dentr o do Delphi como um tipo de " apelido" par a um banco de dados . Definir um Alias ofer ece vr ias vantagens , no neces s r io digitar o caminho completo (dr ive e dir etr io) do banco de dados . B as ta digitar o nome do Alias . Pode- s e alter ar o dir etr io as s ociado a uma Alias s em a neces s idade de alter ar o cdigo do aplicativo. Com a mudana, todos os componentes que s e r efer em ao Alias pas s am a apontar par a o novo dir etr io.
Del phi 5
Por ex emplo, voc pode us ar um dir etr io tempor r io (digamos , C: \DADOS ) par a ar mazenar s uas tabelas dur ante o des envolvimento e us ar outr o dir etr io quando o aplicativo ins talado no computador do cliente (digamos , G: \S I S T E MAS \DADOS ). S e um Alias tiver s ido definido na hor a do des envolvimento, bas ta alter ar o dir etr io do Alias na hor a da ins talao. O cdigo do aplicativo no pr ecis a s er alter ado (nem r ecompilado). Par a cr iar um Alias , es colha o comando T ools | Alias Manager . O DataB as e Des ktop ex ibe a s eguinte caix a:
Clique no boto New e digite um nome par a o Alias , em " Databas e Alias " . Em " Dr iver T ype" , es colha o tipo do Dr iver . O tipo do dr iver ger almente identificado pelo nome do banco de dados (como Or acle, Acces s , I nfor mix , etc). O tipo S tandar d o tipo padr o. Ele us ado par a aces s ar bancos Par adox e dB as e.
Quando voc es colhe um tipo difer ente de S tandar d, novos campos apar ecem na caix a de dilogo. A maior ia des s e campos tm valor es padr o que podem s er us ados como es to. Algumas vezes , entr etanto, neces s r io alter ar os valor es des s es novos campos . Cons ulte a documentao do banco de dados que voc es t us ando (ou o Help do Delphi) par a ver ificar quais mudanas s o neces s r ias . Na r ea " Path" digite o dir etr io par a o Alias . O dir etr io deve s er um dir etr io ex is tente (cr ie um novo dir etr io antes de cr iar o Alias , cas o neces s r io). Clique em OK par a confir mar a cr iao do Alias . (Ou clique no boto K eep New par a continuar cr iando outr os Alias es ). ex ibida a s eguinte caix a de dilogo de confir mao:
Del phi 5
Os novos Alias (pblicos ) cr iados s o ar mazenados no ar quivo I DAPI 32.CFG, no local indicado na caix a. A caix a de dilogo apenas confir ma es s a oper ao. Na maior ia dos cas os , bas ta clicar no boto S im par a confir mar . Depois de cr iar um Alias , ele s e tor na dis ponvel nas pr opr iedades Databas eName de vr ios componentes , tais como T able, Quer y e Databas e. Par a alter ar um Alias , es colha o comando T ools | Alias Manager . Na par te de cima da caix a, es colha o Alias a s er alter ado (figur a abaix o).
Faa as alter aes neces s r ias e clique em OK . Na caix a de dilogo que apar ece, confir me as alter aes clicando novamente em OK .
Al t er ando o di r et r i o de t r abal ho
r ecomendvel definir um dir etr io de tr abalho (wor king dir ector y) dur ante o tr abalho com o DataB as e Des ktop. T odos os ar quivos cr iados no DataB as e Des ktop (como tabelas e ndices ) s o ar mazenados nes s e dir etr io de tr abalho. O dir etr io de tr abalho deve s er , ger almente, o Alias do banco de dados com que s e es t tr abalhando no momento. Par a alter ar o dir etr io de tr abalho, es colha o comando File | Wor king dir ector y.
Na caix a de dilogo ex ibida, digite um caminho completo, ou es colha um Alias na par te de baix o da caix a.
Cr i ando t abel as
O DataB as e Des ktop per mite que s ej am cr iadas tabelas de vr ios tipos de bancos de dados . Voc cr ia uma tabela pr imeir o definindo a s ua es tr utur a. A es tr utur a de uma tabela , bas icamente, o nome, o tamanho e o tipo de cada campo da tabela. Par a cr iar uma tabela, es colha o comando File | New > T able. A s eguinte caix a de dilogo ex ibida:
Del phi 5
Es colha o tipo da tabela e clique em OK par a comear a definir a es tr utur a. Os pr x imos pas s os as s umem que foi es colhido o tipo de tabela Par adox 7 (o tipo mais comum de tabela definido com o DataB as e Des ktop). H quatr o colunas que devem s er pr eenchidas . Pr eencha cada coluna como des cr ito a s eguir , Field Name: o nome do campo, T ype: o tipo do campo (s e inteir o, monetr io, booleano, etc.) Pr es s ione a bar r a de es paos com o cur s or nes s a coluna e es colha um tipo com as s etas , ou com o mous e, S ize: o tamanho do campo (em dgitos ou car acter es ). O tamanho deve s er um valor entr e 1 e 255. Es s a coluna no pode s er alter ada par a alguns tipos (ela fica vazia, nes s es cas os ), K ey: um as ter is co (* ) nes s a coluna deter mina s e o campo ou no uma chave. Pr es s ione a bar r a de es paos par a mos tr ar ou es conder o as ter is co. Vr ios campos podem s er chaves ao mes mo tempo (for mando uma chave compos ta). Us e as s etas do teclado, T AB ou ENT ER par a mover o cur s or (quando pos s vel), ou us e o mous e.
Depois de definir o tipo e o tamanho de cada campo, clique no boto S ave As par a s alvar a nova tabela no dis co. mos tr ada um caix a do tipo " S alvar como" onde voc deve digitar o nome do ar quivo a s er s alvo. A tabela s alva no dir etr io de tr abalho (vej a a s eo anter ior ).
Del phi 5
Quando a tabela ex ibida, s eus dados s o inicialmente pr otegidos contr a alter aes . Par a fazer alter aes ou adicionar novos dados , es colha o comando T able | View Data, ou pr es s ione F9. Faa as alter aes ou digite novos dados nor malmente. Us e o mous e, a tecla T AB , ou as s etas do teclado par a mover o cur s or e depois digite os valor es des ej ados . As alter aes s o s alvas automaticamente a cada r egis tr o (linha da tabela) digitado. Par a ter minar a edio dos dados , s imples mente feche a j anela onde ex ibida a tabela.
Del phi 5
Pode- s e adicionar ou r etir ar campos da tabela, ou alter ar o nome, o tamanho ou o tipo de campos j ex is tentes . Pode haver per das nes s e pr oces s o. Vej a o que pode acontecer . S e um campo for r etir ado, todos os dados contidos naqueles campos s o apagados per manentemente. S e o tamanho de um campo for r eduzido, valor es com compr imento maior que o novo tamanho s er o cor tados . Clique no boto S ave par a s alvar as alter aes . S e houver algum per igo de per das de dados , ex ibida um caix a de avis o como a s eguinte:
A caix a ilus tr ada pode s er ex ibida vr ias vezes , uma vez par a cada campo com pr oblemas . Ger almente, bas ta clicar em OK par a confir mar as alter aes na es tr utur a da tabela.
Trabalhando comDataSets
Um DataS et um conj unto de dados or ganizado em for ma de tabela (em linhas e colunas ). As colunas s o os campos e as linhas s o os r egis tr os . T odo o aces s o a bancos de dados no Delphi feito atr avs de DataS ets . Os componentes T able e Quer y s o os tipos pr incipais de DataS ets . Nes te captulo, ver emos as pr opr iedades , eventos e mtodos dos DataS ets . T udo que ver emos aqui vale par a os componentes T able e Quer y.
E s t ados de um Dat aS et
Um DataS et pode es tar em vr ios es tados difer entes . O es tado de um DataS et deter mina o que pode s er feito (ou es t s endo feito) com o DataS et. O valor da pr opr iedade S tate de um DataS et deter mina o s eu es tado atual. Vej a a s eguir uma des cr io br eve dos es tados mais impor tantes em que pode es tar um DataS et.
Del phi 5
Es tado Ds I nactive Ds B r ows e Ds Edit Ds I ns er t S ignificado O Datas et es t fechado. S eus dados no es to dis ponveis (no podem s er lidos nem alter ados ). O Datas et es t aber to. S eus dados podem s er vis ualizados , mas no podem s er alter ados . Es te o es tado padr o de um DataS et. O DataS et es t aber to. O r egis tr o atual pode s er modificado. O DataS et es t aber to. Um novo r egis tr o acaba de s er ins er ido.
O es tado ds B r ows e o es tado padr o. Quando um DataS et aber to, ele colocado automaticamente nes te es tado. Vr ios mtodos de um DataS et podem s er us ados par a alter ar o s eu es tado. Par a us ar um dos mtodos da ilus tr ao, s imples mente us e o nome do DataS et s eguido pelo nome do mtodo. O tr echo de cdigo abaix o, por ex emplo, alter a cinco vezes o es tado de um componente T able. pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); begin T able1.Open; // O es tado muda par a ds B r ows e ... T able1.Edit; //... muda par a ds Edit... T able1.I ns er t; //... muda novamente par a ds I ns er t ... T able1.Pos t; //... volta a ds B r ows e ... T able1.Clos e; //... e finalmente muda par a ds I nactive end;
Navegando em um Dat aS et
Os DataS ets ter iam pouca utilidade s e no fos s e pos s vel per cor r er e cons ultar (navegar ) os s eus r egis tr os . H vr ios mtodos e pr opr iedades teis par a a navegao de DataS ets . Par a per mitir a navegao de s eus r egis tr os , todo DataS et contm um cur s or que indica o r egis tr o atual (ou linha atual) do DataS et. no r egis tr o atual que s o feitas alter aes , ou onde s o ins er idos (ou r emovidos ) r egis tr os . T odos os mtodos de navegao alter am a pos io do cur s or . Vej a uma des cr io br eve des s es mtodos na tabela a s eguir : Mt odo F ir s t L as t N ex t P r i or MoveB y( n u m ) D es cr i o Move o cur s or par a o pr imeir o r egis tr o do DataS et. Move o cur s or par a o ltimo r egis tr o do DataS et. Move o cur s or par a o pr x imo r egis tr o do DataS et (imediatamente depois do r egis tr o atual). S e o cur s or j es tiver no ltimo r egis tr o, nada acontece. Move o cur s or par a o r egis tr o anter ior do DataS et (imediatamente antes do r egis tr o atual). S e o cur s or j es tiver no pr imeir o r egis tr o, nada acontece. Move o cur s or o nmer o de r egis tr os es pecificado em num. Um valor pos itivo move o cur s or par a fr ente; um valor negativo move- o par a tr s . Por ex emplo, T able1.moveB y(10) move o cur s or 10 r egis tr os par a tr s na tabela T able1. S e o nmer o de r egis tr os es pecificado for maior do que o nmer o que s e pode mover , o cur s or movido par a o pr imeir o ou o ltimo r egis tr o, dependendo da dir eo do movimento. Alm dos mtodos des cr itos acima, h duas pr opr iedades que indicam s e o cur s or chegou ao final ou ao incio de um DataS et: B OF e EOF . P r opr i edade B OF D es cr i o B OF alter ado par a T r ue quando o cur s or es t no pr imeir o r egis tr o do DataS et. B OF a abr eviao de B egin of File " I ncio do Ar quivo" . Quando o cur s or es tiver em qualquer r egis tr o que no s ej a o pr imeir o do DataS et, o valor de B OF Fals e. EOF alter ado par a T r ue quando o cur s or es t no ltimo r egis tr o do DataS et. EOF a abr eviao de E nd of File " Final do Ar quivo" . Quando o cur s or es tiver em qualquer r egis tr o que no s ej a o ltimo do DataS et, o valor de EOF Fals e.
E OF
Vej a a s eguir dois ex emplos que us am os mtodos e pr opr iedades vis tas acima. O pr imeir o ex emplo per cor r e uma quer y " Quer y1" do pr imeir o r egis tr o at o ltimo, s omando todos os valor es no campo " Quantidade" . FieldValues [ NomeDoCampo] us ado par a obter o valor de cada campo. Uma mens agem com o valor total mos tr ada no final.
Del phi 5
pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var T otal: Double; begin Quer y1.Open; { Abr ir a Quer y} Quer y1.Fir s t; { Mover par a o pr imeir o r egis tr o} T otal: = 0; while not (Quer y1.EOF) do begin T otal: = T otal + Quer y1[ 'Quantidade'] ; Quer y1.Nex t; { Mover par a o pr x imo r egis tr o} end; S howMes s age('Quantidade total: '+ FloatT oS tr (T otal)); Quer y1.Clos e { Fechar a Quer y} end; Es te s egundo ex emplo per cor r e os r egis tr os do componente T able " T able1" do ltimo at o pr imeir o, calculando o valor total do es toque: a s oma de todos os pr eos multiplicados pelas quantidades dos pr odutos . O ex emplo s emelhante ao anter ior , a no s er pela or dem inver s a e o us o de um componente T able em vez de um Quer y. Note que obviamente a or dem inver s a no obr igatr ia. Ela foi us ada s omente par a ilus tr ar B OF e os mtodos Las t e Pr ior . pr ocedur e T For m1.B utton2Click(S ender : T Obj ect); var Valor : Cur r ency; begin T able1.Las t; { Mover par a o ltimo r egis tr o} Valor : = 0; while not (T able1.B OF) do begin Valor : = Valor + T able1[ 'Quantidade'] * T able1[ 'Pr eco'] ; T able1.Pr ior ; { Mover par a o r egis tr o anter ior } end; S howMes s age('Valor do es toque: '+ FloatT oS tr (Valor )); end;
Appen d I n s er t P os t
Del phi 5
Modi fi cando campos
O valor de um campo do r egis tr o atual de um DataS et pode s er alter ado de vr ias maneir as , es pecificando o nome do campo dir etamente: T abela[ Pr eco] : = 54.43; Us ando a pr opr iedade FieldValues : T abela.FieldValues [ Pr eco] : = 54.43; Us ando o mtodo FieldB yName e pr opr iedades de conver s o: T abela.FieldB yName(Pr eco).As Cur r ency : = 54.43; Par a que s ej a pos s vel alter ar os valor es dos campos , o DataS et deve es tar no es tado ds Edit ou ds I ns er t (us e Edit, I ns er t ou Append par a coloc- lo em um des s es es tados ). Depois de r ealizar as alter aes , voc deve confir m- las , us ando o mtodo Pos t. Vej a um ex emplo que us a FieldValues : pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var NovaDes c: S tr ing; begin NovoNome : = Edit1.T ex t; with T abPr odutos do begin Edit; // Pr epar ar par a alter ao FieldValues [ 'Des cr icao'] : = NovaDes c; Pos t; // Confir mar alter ao end; end; No ex emplo, o campo " Des cr icao" do r egis tr o atual do componente T able " T abPr odutos " alter ado par a o valor digitado no componente Edit1. O mtodo Edit us ado par a colocar a tabela no es tado ds Edit, antes de fazer a alter ao. O mtodo Pos t, confir ma a alter ao, tor nando- a per manente.
Del phi 5
Pos t; end; end;
Apagando r egi s t r os
Pode- s e apagar r egis tr os inteir os r apidamente, com o mtodo Delete. Delete apaga o r egis tr o atual, s em confir maes , e coloca o DataS et no es tado ds B r ows e. O r egis tr o imediatamente depois do r egis tr o apagado s e tor na o r egis tr o atual.
Del phi 5
colchetes e os valor es devem s er s epar ados por vr gulas . Pode- s e us ar nil par a es pecificar um valor nulo (vazio) par a um ou mais campos . A or dem em que os valor es s o es pecificados deve s er a or dem dos campos no DataS et. S e o nmer o de valor es es pecificados for menor que o nmer o de campos na tabela, o r es tante dos campos do novo r egis tr o s o pr eenchidos com nil. O mtodo I ns er tRecor d chama Pos t implicitamente no final. Appen dR ecor d( [ val or 1 , val or 2 , ...] ) I dntico ao mtodo I ns er tRecor d, mas o r egis tr o adicionado ao final do DataS et. S e o DataS et for uma tabela index ada, os mtodos AppendRecor d e I ns er tRecor d tm ex atamente o mes mo efeito a pos io do r egis tr o adicionado depende do ndice da tabela. O mtodo AppendRecor d tambm chama Pos t implicitamente, tor nando as alter aes per manentes . Alter a os valor es dos campos cor r es pondentes do r egis tr o atual. O DataS et deve es tar no es tado ds Edit par a que S etFields pos s a s er us ado (us e o mtodo Edit). Par a alter ar apenas alguns campos do r egis tr o atual, us e nil como ar gumento par a cada campo que no des ej a alter ar . O mtodo Pos t no chamado implicitamente por S etFields . Deve- s e chamar Pos t depois do mtodo par a tor nar as alter aes per manentes . O ex emplo a s eguir us a o mtodo I ns er tRecor d par a ins er ir um novo r egis tr o na tabela T abPr odutos (es ta tabela tem os campos Codigo, Des cr icao, Pr eco e Quantidade). O ex emplo alter a s omente os dois pr imeir os campos (us ando os valor es lidos ) e o ltimo campo, as s umindo uma quantidade fix a de 12 par a es te. Par a o ter ceir o campo (o pr eo) es pecificado como nil. I s s o deix a o campo vazio (ou inalter ado). Em s eguida, o pr ogr ama per gunta s e o campo Pr eco deve s er pr eenchido ou no. Cas o pos itivo, us ado o mtodo S etFields par a alter ar s omente o pr eo do r egis tr o atual (note como nil us ado par a todos os outr os campos ). pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var NovoCodigo: I nteger ; NovaDes cr icao: S tr ing; NovoPr eco: Cur r ency; begin NovoCodigo : = S tr T oI nt(EditCodigo.T ex t); NovaDes cr icao : = EditDes cr icao.T ex t; with T abPr odutos do begin Open; //I ns er e um novo r egis tr o I ns er tRecor d([ NovoCodigo, NovaDes cr icao, nil, 12] ); // Confir ma a entr ada do pr eco if Mes s ageDlg('Entr ar com pr eo agor a?', mtConfir mation, [ mbYes , mbNo] , 0) = mr Yes then begin //Realiza a alter acao do pr eco (o campo es tava vazio) NovoPr eco : = S tr T oCur r (I nputB ox ('','Digite o pr eo','')); Edit; //Coloca o T able no es tado ds Edit (es s encial) S etFields ([ nil, nil, NovoPr eco, nil] ); //Alter a o pr eco Pos t; //Confir ma a alter ao end; end; end;
Del phi 5
cada campo es pecificado e um conj unto de opes de localizao (que pode s er vazio). Vej a a s eguir um ex emplo de uma chamada ao mtodo Locate: T abClientes .Locate('Nome; S obr enome', Var Ar r ayOf([ 'Mar ia', 'S '] ),[ loPar tialKey] ); O ex emplo localiza o pr imeir o r egis tr o da tabela T abClientes , com nome " Mar ia" e s obr enome comeando com " S " . O pr imeir o par metr o de Locate uma lis ta de campos s epar ados por ponto- e- vr gula, entr e as pas s imples . O s egundo par metr o um ar r ay es pecial que deve s er cons tr udo com o comando Var Ar r ayOf (par a o cas o de uma pes quis a em mais de um campo). Os valor es aqui devem " cas ar " com os campos es pecificados no pr imeir o par metr o. O ter ceir o par metr o es pecifica opes de pr ocur a. H duas opes de pr ocur a dis ponveis par a o mtodo Locate: loPar tialK ey loCas eI ns ens itive Per mite que os valor es de pr ocur a es pecificados no s egundo par metr o s ej am par ciais (par te de um nome, por ex emplo). Faz com que Locate ignor e mais culas e mins culas . Com es s a opo " mar ia" , " Mar ia" e " MARI A" s o cons ider ados iguais , por ex emplo.
S e houver algum r egis tr o que cas e com os valor es es pecificados , o mtodo Locate r etor na T r ue e move o cur s or par a aquele r egis tr o. S e nenhum r egis tr o for encontr ado, Locate r etor na Fals e. S e a localizao for bas eada em apenas um campo, a s intax e de Locate mais s imples . Vej a um ex emplo, que localiza o cliente com cdigo igual a 100. T abClientes .Locate('Codigo', 100, [ ] ); Agor a vej a um ex emplo que l os valor es em dois componentes Edit (" EditNome" e " EditS obr enome" ) e localiza o pr imeir o r egis tr o que cas a com es s es valor es , mos tr ando uma mens agem com o r es ultado da localizao. pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var NomePr oc, S obr enomePr oc: S tr ing; //Valor es pr ocur ados Achou: B oolean; //Res ultado da pes quis a begin NomePr oc : = EditNome.T ex t; S obr enomePr oc : = EditS obr enome.T ex t; Achou : = T abF unc.Locate('Nome; S obr enome', Var Ar r ayOf([ NomePr oc,S obr enomePr oc] ), [ loPar tialK ey, loCas eI ns ens itive] ); if Achou then S howMes s age('Regis tr o encontr ado.') els e S howMes s age('Regis tr o no encontr ado.'); end;
F i l t r ando Dat aS et s
Algumas vezes neces s r io ex ibir apenas um s ubconj unto dos r egis tr os de uma DataS et que atendam a alguma condio. I s s o pode s er feito us ando uma cons ulta S QL, ou aplicando um filtr o. As cons ultas S QL s o mais poder os as , mas tambm bem mais complex as . Elas s er o vis tas mais adiante. Os filtr os s o mais s imples e podem s er aplicados dir etamente a um componente T able, ou a um componente Quer y (e a outr os DataS ets ). Filtr os podem s er definidos de duas maneir as : us ando as pr opr iedades Filter e Filter ed, ou us ando o evento OnFilter Recor d.
U s ando F i l t er e F i l t er ed
Par a filtr ar um DataS et, defina uma condio par a a pr opr iedade Filter e alter e a pr opr iedade Filter ed par a T r ue. I s s o pode s er feito em tempo de des envolvimento ou em tempo de ex ecuo. A condio na pr opr iedade Filter deve es pecificar uma ex pr es s o lgica, com os nomes dos campos entr e as pas s imples . Vej a alguns ex emplos de condies : Es tado = PE; Quantidade < 100; Res pos ta < > Fals e
Del phi 5
(S alar io > 10000) AND (S alar io < = 50000) (Es tado = RJ) OR (Es tado = S P) S e o DataS et es tiver aber to (pr opr iedade Active = T r ue), a filtr agem dos r egis tr os feita imediatamente, mes mo em tempo de des envolvimento. S omente os r egis tr os par a os quais a condio ver dadeir a s o mos tr ados . Par a componentes que aces s am uma tabela filtr ada, como s e outr os r egis tr os no ex is tis s em.
Antes e depois de as mudanas em um DataS et s er em enviados par a o B anco de Dados (comando Pos t). Antes e depois de um r egis tr o s er apagado. Quando um novo r egis tr o adicionado. Us ado ger almente par a definir valor es padr o par a alguns campos . Quando os campos calculados do DataS et s o calculados .
Del phi 5
Open; Edit; Dis ableContr ols ; //Des abilitar atualizao while not EOF do begin FieldValues [ 'S alar io'] : = FieldValues [ 'S alar io'] * 1.08; Nex t; end; finally EnableContr ols ; //Habilitar atualizao end; end; end; H mais um mtodo r elacionado atualizao de componentes : o mtodo Refr es h. Es s e mtodo for a a atualizao dos componentes , fazendo com que os dados s ej am bus cados novamente no banco de dados . Refr es h til quando s o feitas alter aes no r egis tr o atual por outr o us ur io, por ex emplo. Uma chamada a Refr es h gar ante que os dados ex ibidos s o os mais atuais .
Del phi 5
R eadOn l y
Del phi 5
T abPr odutos .S etRange([ '0005'] , [ '0025'] ); O comando r es tr inge os r egis tr os da tabela a apenas aqueles com cdigos entr e " 0005" e " 0025" . Par a cancelar um Range depois de us - lo, us e o mtodo CancelRange, como em: T abPr odutos .CancelRange;
C omponentes TField
Quando voc as s ocia um DataS et a uma tabela de um banco de dados e abr e o DataS et, o Delphi cr ia automaticamente campos dinmicos , um par a cada campo da tabela. Os campos dinmicos s o cr iados na memr ia do computador , tempor ar iamente, quando o DataS et aber to e des tr udos quando o DataS et fechado. O tipo dos campos dinmicos , as s uas pr opr iedades , e a or dem em que eles s o ex ibidos dependem s omente das tabelas s quais es s es campos es to as s ociados . Par a que s e tenha mais contr ole s obr e os campos de um DataS et, o Delphi ofer ece os componentes T Field. Componentes T Field podem es tar as s ociados a um campo de um DataS et, ou podem s er novos campos , der ivados de cons ultas ou clculos . Os componentes T Field no podem s er adicionados dir etamente a um for mulr io. Eles fazem par te de um DataS et. Os campos definidos pelos componentes T Field s o tambm chamados de campos per s is tentes . I s s o por que eles " per s is tem" dur ante a ex ecuo do aplicativo e no s o des tr udos cada vez que o DataS et fechado (como acontece com os campos dinmicos ). Com os componentes T Field, voc pode contr olar quais campos s o ex ibidos , o tipo e a for matao de cada campo e vr ias outr as pr opr iedades . Voc pode tambm cr iar campos calculados e campos lookup. Es s es dois tipos de campos s o, talvez, a pr incipal r azo par a a ex is tncia dos componentes T Field.
O F iel ds E di t or
a par tir do Fields Editor que s o feitas todas as oper aes com campos per s is tentes . Clique com o boto dir eito dentr o do Fields Editor e es colha o comando Add Fields . Voc pode tambm us ar o comando Add all Fields par a cr iar campos per s is tentes par a todos os campos do DataS et, r apidamente (nes te cas o, o pas s o 3 no neces s r io). Uma j anela com todos os campos da tabela ex ibida:
Del phi 5
T odos os campos s o inicialmente s elecionados . Clique em um campo par a s elecionar s omente ele e us e CT RL ou S HI FT par a s elecionar vr ios campos . Depois clique em OK par a cr iar um campo per s is tente par a cada campo s elecionado. O Fields Editor ex ibido novamente, agor a com os novos campos cr iados :
Os campos cr iados des s a maneir a s ubs tituem os campos dinmicos cr iados pelo Delphi. No pode haver campos dinmicos e per s is tentes em um mes mo DataS et. S e, por ex emplo, voc cr iar apenas alguns campos per s is tentes (e no todos os dis ponveis ), s omente es s es campos s er o mos tr ados nos componentes ligados ao DataS et. A or dem em que os campos ex ibidos nos componentes ligados ao DataS et a or dem em que eles s o lis tados no Fields Editor . Es s a or dem pode s er alter ada ar r as tando os nomes dos campos dentr o do Fields Editor . Pode- s e tambm apagar campos us ando DELET E, ou adicionar novos campos us ando o comando Add Fields novamente.
Del phi 5
T I n t eger F i el d , T S t r i n gF i el d , T D at eT i m eF i el d e T F l oat F i el d s o tipos de componentes T F i el d . Es s es tipos s o definidos automaticamente pelo Delphi, dependendo dos campos as s ociados no banco de dados . Por ex emplo, um campo do tipo " I nteger " em uma tabela Par adox , ger a um componente do tipo T I nteger Field; um campo do tipo " Alpha" ger a um componente do tipo T S tr ingField, e as s im por diante. Vej a uma lis ta dos tipos mais impor tantes de componentes T Field: T ipo de T Field T booleanField T blobField T cur r encyField T DateField T DateT imeField T FloatField T I nteger Field T MemoField T s tr ingField T T imeField Valor es que podem s er ar mazenados Valor es booleanos (T r ue ou Fals e) Dados binr ios (figur as , por ex emplo). Nmer os r eais . Compatvel com tipo Cur r ency. Datas . Compatvel com tipo T Date. Datas e hor as . Compatvel com o tipo T DateT ime Nmer os r eais . Compatvel com tipos Float, Real e Double. Nmer os inteir os . Compatvel com tipo I nteger . T ex tos longos . Compatvel com tipo S tr ing. S tr ings pequenos (limitados a 8192 bytes ). Hor as . Compatvel com tipo T T ime.
Os componentes T Field (de vr ios tipos ) podem s er manipulados dir etamente no cdigo. Eles pos s uem pr opr iedades e eventos como os outr os componentes . A difer ena que eles s o componentes inter nos , que no apar ecem dir etamente nos for mulr ios . I s s o algumas vezes as s us ta o pr ogr amador iniciante, que es t acos tumado a tr abalhar vis ualmente com os componentes . H vr ios outr os componentes des s e tipo no Delphi, mas eles s o apenas us ados par a pr ogr amao avanada.
C ampos calculados
Os campos calculados ex ibem valor es que s o calculados dur ante a ex ecuo do aplicativo. Os clculos s o ger almente bas eados em valor es de outr os campos , mas podem tambm s er completamente independentes (o que r ar o). Par a cr iar um campo calculado par a um DataS et, abr a o Fields Editor par a o DataS et. (Clique duas vezes no DataS et.) Dentr o do Fields Editor , clique com o boto dir eito e es colha o comando New Field. O Delphi ex ibe a caix a de dilogo New Field, onde s e pode definir vr ias opes par a o novo campo (vej a ilus tr ao a s eguir ). Digite um nome par a o campo na r ea " Name" . Es te o nome pelo qual o componente s er identificado no Fields Editor . Enquanto o nome digitado, o nome na r ea " Component" atualizado automaticamente. Es te nome , por padr o, o nome do DataS et que contm o campo, s eguido pelo nome definido na r ea " Name" .
Defina um tipo par a o campo. O tipo deve s er compatvel com os valor es us ados par a o clculo do campo. Depois clique em OK par a cr iar o campo.
Del phi 5
O Delphi adiciona o nome do campo lis ta de campos no Editor de Cdigo e acr es centa uma linha Unit do for mulr io, declar ando um componente par a o novo campo. O ex emplo de cdigo a s eguir mos tr a (em negr ito) a linha acr es centada. Note que o nome do componente o nome que o Delphi define em " Component" , na hor a da cr iao do campo. ... type T For m1 = clas s (T For m) T abEmp: T T able; T abEmpEmpNo: T I nteger Field; T abEmpLas tName: T S tr ingField; T abEmpFir s tName: T S tr ingField; T abEmpPhoneE x t: T S tr ingField; T abEmpHir eDate: T DateT imeField; T abEmpS alar y: T FloatField; T abEmpNomeCompleto: T S tr ingField; end; ... As s im que cr iado, um campo calculado contm apenas valor es nulos . Par a r ealizar os clculos neces s r ios par a o campo, voc deve digitar cdigo par a o evento OnCalcFields do DataS et que contm o campo. Es s e cdigo deve calcular um valor par a o campo. Vej a um ex emplo que " calcula" o nome completo de cada funcionr io (concatenando o pr imeir o e ltimo nomes ). pr ocedur e T For m1.T abEmpCalcFields (DataS et: T DataS et); begin DataS et[ 'NomeCompleto'] : = DataS et[ 'Fir s tName'] + DataS et[ 'Las tName'] ; end; Voc pode definir vr ios campos calculados par a um DataS et. O valor de todos os campos calculados deve s er calculado s empr e dentr o do cdigo par a evento OnCalcFields do DataS et. No ex emplo a s eguir , o r ealizado o clculo de dois campos calculados e uma tabela de funcionr ios (chamada " T abFunc" ): um par a o s alr io anual e outr o par a o ender eo completo. pr ocedur e T For m1.T abFuncCalcFields (DataS et: T DataS et); begin DataS et[ S alar ioAnual] : = DataS et[ S alar ioMens al] * 12; DataS et[ EndCompleto] : = DataS et[ Rua] + ', ' + DataS et[ Numer o] + ', ' + DataS et[ B air r o] ; end;
C ampos lookup
Os campos lookup s o campos es peciais , us ados par a localizar automaticamente valor es em um s egundo DataS et, bas eando- s e em " valor es - chave" de um pr imeir o DataS et. Por ex emplo, s uponha que o s eu aplicativo us e uma tabela Pr odutos com campos par a o cdigo e a des cr io de cada pr oduto, e outr a tabela Pedidos , com campos par a o cdigo do pr oduto, e a quantidade e a data do pedido. Nes s e cas o, voc poder ia definir um campo lookup na tabela Pedidos par a mos tr ar a des cr io do pr oduto, bas eando- s e no cdigo do pr oduto. O campo lookup bus car ia a des cr io na tabela Pr odutos e a mos tr ar ia na tabela Pedidos (o cdigo do pr oduto poder ia at s er es condido). Par a cr iar um campo lookup em um DataS et, clique duas vezes no DataS et par a ex ibir o Fields Editor . Dentr o do Fields Editor , clique com o boto dir eito e es colha o comando New Field, digite um nome par a o novo campo em " Name" e defina um tipo par a o campo em " T ype" . Par a " Field T ype" , es colha " Lookup" Em " Lookup definition" , defina valor es par a as opes des cr itas a s eguir : Opo D at as et K ey F iel ds D es cr i o O DataS et de onde s er o bus cados os valor es par a o campo lookup. Os campos chave que s er o us ados como bas e par a r ealizar a bus ca. Es tes s o campos do DataS et que contm o campo lookup. Ger almente us ado apenas um campo aqui. Es colha um campo da lis ta ou digite dir etamente o nome do campo. Par a us ar mais de um campo chave, s epar e os nomes dos campos com ponto- e- vr gula. Os campos do DataS et que s er o compar ados com os campos es pecificados em K ey Fields . Es tes
L ooku p K eys
Del phi 5
campos per tencem ao DataS et que contm os valor es a s er em bus cados pelo campo lookup. R es u l t F i el d O campo a s er r etor nado pela bus ca. O valor des s e campo o valor ex ibido no campo lookup.
A ilus tr ao abaix o mos tr a a definio de um campo lookup que ex ibe a des cr io de um pr oduto, bas eando- s e no s eu cdigo. O campo lookup " cas a" o campo CodPr oduto da tabela Pedidos com o campo Codigo da tabela Pr odutos , r etor nando a des cr io do pr oduto.
Vi s i bl e
H vr ias outr as pr opr iedades impor tantes que no for am citadas aqui. Muitas delas s o definidas automaticamente quando um campo cr iado e r ar amente pr ecis am s er alter adas . Outr as s o tr atadas no cur s o avanado.
Del phi 5
Ocomponente Batchmove
O componente B atchMove us ado par a r ealizar tr ans fer ncias de gr andes quantidades de dados de uma tabela de banco de dados par a outr a. Com es s e componente, pode- s e copiar tabelas inteir as , ou cr iar novas tabelas com uma nica linha de cdigo (ou at em tempo de des envolvimento). Um dos us os mais comuns do componente B atchMove par a mover tabelas , ou par tes de tabelas , de um banco de dados local, como Par adox , par a um banco de dados S QL r emoto (como Or acle, S QL S er ver , etc.) A conver s o dos valor es , tipos e es tr utur a das tabelas r ealizada automaticamente pelo componente. Outr a utilidade do componente B atchMove copiar dados entr e uma tabela e outr a de um mes mo banco de dados . Pode- s e fazer is s o, por ex emplo, par a cr iar uma tabela for mada por r egis tr os de outr a tabela que s atis faam um condio es pecificada.
Confi gur ao bs i ca
Par a r ealizar uma tr ans fer ncia de dados com o componente B atchMove, voc deve definir quais s o as tabelas de or igem e de des tino e o mapeamento que s er feito entr e os campos de cada tabela. Vej a uma des cr io das pr opr iedades que pr ecis am s er alter adas : P r opr i edade D es t i n at i on S ou r ce Mappi n gs D es cr i o O nome da tabela de des tino, par a onde s er o tr ans fer idos os dados . O nome da tabela de or igem, de onde s er o ex tr ados os dados . Define o mapeamento entr e os campos da tabela de or igem e de des tino. S e as duas tabelas tm campos com nomes iguais , no neces s r io alter ar es s a pr opr iedade. S e os nomes for em difer entes , no entanto, voc deve indicar aqui quais s o os campos cor r es pondentes em cada tabela. Clique duas vezes na r ea do valor de Mappings e digite uma linha par a cada par de campos a s er em " cas ados " . Par a campos com o mes mo nome, s imples mente digite o nome em comum. Par a cada linha, us e: Campo da tabela de des tino = Campo da tabela de or igem Aqui os campos Codigo e Des cr icao tm os mes mos nomes nas duas tabelas . J o campo Quant na tabela de des tino cor r es ponde ao campo Quantidade na tabela de or igem. O mes mo acontece com os campos Valor e Pr eco. R ecor dCou n t O nmer o de r egis tr os que s er o tr ans fer idos de uma tabela par a outr a. S e Recor dCount for zer o, todos os r egis tr os s o tr ans fer idos .
Modos de oper ao
A tr ans fer ncia de dados com um componente B atchMove pode s er r ealizada de vr ias maneir as , us ando modos de oper ao difer entes . Pode- s e cr iar acr es centar , copiar , atualizar , ou apagar dados . A pr opr iedade Mode do componente B atchMove define qual a oper ao r ealizada. Vej a os valor es que es s a pr opr iedade pode as s umir . Val or de Mode B at Appen d bat Appen dU pdat e E f ei t o n a t r an s f er n ci a Adiciona os r egis tr os da tabela de or igem no final de tabela de des tino. A tabela de des tino deve ex is tir . (Es ta a opo padr o). S ubs titui os r egis tr os da tabela de des tino pelos que " cas am" com os r egis tr os da tabela de or igem. O " cas amento" feito bas eado nos ndices (ger almente as chaves pr imr ias ) das tabelas . Regis tr os que no cas am s o adicionados ao final da tabela de des tino. As duas tabelas envolvidas devem ex is tir . Cr ia uma nova tabela com a mes ma es tr utur a e dados da tabela de or igem. S e j ex is tir um tabela com o mes mo nome, ela s ubs tituda. Apaga os r egis tr os da tabela de des tino que " cas am" com os da tabela de or igem. As tabelas devem conter um ndice par a per mitir o " cas amento" . S ubs titui os r egis tr os da tabela de des tino pelos que " cas am" com os da tabela de or igem. Regis tr os que no cas am no s o tr ans fer idos (note a difer ena de batAppendUpdate).
Del phi 5
Em tempo de des envolvimento, faa o s eguinte, clique no componente B atchMove com o boto dir eito e es colha o comando Ex ecute. Vej a um ex emplo s imples que us a um componente B atchMove par a tr ans fer ir todos os r egis tr os de uma tabela chamada Pr odutos par a outr a chamada Pr odutos Novos . pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); begin T abPr odutos .Open; T abPr odutos Novos .Open; with B atchMove1 do begin S our ce: = T abPr odutos ; Des tination: = T abPr odutos Novos ; Mode: = batAppendUpdate; Ex ecute; end; T abPr odutos .Clos e; T abPr odutos Novos .Clos e; end; Vr ias pr opr iedades do componente B atchMove s o definidas dir etamente no ex emplo, mas lembr e- s e que todas es s as pr opr iedades poder iam tambm s er definidas em tempo de des envolvimento (vej a a tabela de pr opr iedades na pgina anter ior ).
A cr iao e a manipulao des s as tabelas contr olada pelas s eguintes pr opr iedades do componente B atchMove: P r opr i edade Ch an gedT abl eN am e D es cr i o O nome da tabela que conter todos os r egis tr os alter ados na tr ans fer ncia. A tabela cr iada automaticamente pelo Delphi. Deix e es s a pr opr iedade vazia par a no cr iar es s a tabela. (Aces s vel s omente atr avs de pr ogr amao) Retor na o nmer o de r egis tr os na tabela es pecificada em ChangedT ableName. O nome da tabela onde s er o ar mazenados todos os r egis tr os que no puder am s er tr ans fer idos por caus a de violaes de chave ou de integr idade. A tabela cr iada automaticamente pelo Delphi. Deix e es s a pr opr iedade vazia, par a evitar que a tabela s ej a cr iada (Aces s vel s omente atr avs de pr ogr amao). Retor na o nmer o de r egis tr os na tabela es pecificada em K eyViolT ableName. O nome da tabela onde s er o ar mazenados todos os r egis tr os que tiver am campos cor tados na tr ans fer ncia. Um campo cor tado, quando o campo de des tino menor que o campo de or igem (o valor or iginal no cabe). A tabela cr iada automaticamente pelo Delphi. Deix e es s a pr opr iedade vazia par a no cr iar es s a tabela. (Aces s vel s omente atr avs de pr ogr amao) Retor na o nmer o de r egis tr os na tabela es pecificada em Pr oblemT ableName.
P r obl em Cou n t
Del phi 5
C omponente DBEdit
O componente DB Edit a ver s o com aces s o a banco de dados do componente Edit. Voc pode us - lo par a ex ibir ou alter ar o valor de um campo de um banco de dados dir etamente. Vej a algumas pr opr iedades impor tantes des s e componente. P r opr i edade T ex t D es cr i o (Aces s vel s omente atr avs de pr ogr amao). Como o valor ex ibido nes s e componente vem de um campo, no pos s vel alter ar a pr opr iedade T ex t em tempo de des envolvimento, par a definir um valor inicial a s er ex ibido. A pr opr iedade T ex t, entr etanto, pode s er lida e alter ada em tempo de ex ecuo. Quando o valor de T ex t alter ado, o campo as s ociado no banco de dados alter ado tambm. Deter mina s e o valor ex ibido pode ou no s er alter ado pelo us ur io. Alter e ReadOnly par a T r ue par a no per mitir alter aes . O nmer o mx imo de car acter es que pode s er digitado dentr o do DB Edit. Us e es s a pr opr iedade par a tr abalhar com campos de tamanho fix o, como os us ados par a cdigos , por ex emplo.
R eadOn l y Max L en gt h
C omponente DBText
O componente DB T ex t cor r es ponde ao componente Label. Es s e componente us ado par a ex ibir valor es que no devem (nem podem) s er alter ados . Us e es te componente par a indicar que os campos s o apenas par a ex ibio. No h como alter ar o que ex ibido no componente DB T ex t dir etamente, nem com pr ogr amao. (O componente no apr es enta a pr opr iedade Caption). O que ex ibido no componente depende ex clus ivamente do campo as s ociado no banco de dados , definido pelas pr opr iedades DataS our ce e DataField.
Del phi 5
P r opr i edade Au t oD i s pl ay D es cr i o Define s e o tex to do campo as s ociado ex ibido imediatamente ou no. S e AutoDis play for Fals e, o tex to s s er ex ibido quando o us ur io clicar duas vezes no componente. I s s o tor na o aplicativo mais r pido, es pecialmente quando os tex tos a s er em ex ibidos s o muito ex tens os O valor padr o T r ue, que faz com o que tex to s ej a ex ibido automaticamente, quando o us ur io pas s a de um r egis tr o par a outr o. Deter mina s e o tex to ex ibido no componente pode s er alter ado ou no pelo us ur io.
R eadOn l y
ValueUnchecked
N OT A: s e o valor do campo as s ociado ao DB CheckB ox no for nem T r ue, nem Fals e, nem um valor das pr opr iedades ValueChecked ou ValueUnchecked, o componente apar ece acinzentado (nem mar cado, nem des mar cado).
Val u es
Val u e
C omponente DBImage
Es te componente us ado par a ex ibir imagens ar mazenadas em campos do do tipo B LOB (B inar y Lar ge OB j ect). Vej a as pr opr iedades mais impor tantes do componente DB I mage:
Del phi 5
P r opr i edade Au t oD i s pl ay D es cr i o S e AutoDis play for T r ue (o valor padr o), a imagem atualizada automaticamente quando o campo as s ociado alter ado. S e AutoDis play for Fals e, a imagem s atualizada (r ecar r egada) quando o us ur io clicar duas vezes no componente DB I mage. B or der S tyle deter mina s e ex ibida uma linha em volta da imagem. O valor bs None no mos tr a um linha; bs S ingle ex ibe uma linha fina. S e Center for T r ue (o padr o), a imagem ex ibida centr alizada no componente. S e Center for Fals e, a imagem ex ibida no canto es quer do s uper ior do componente. Alter e QuickDr aw par a T r ue par a que imagens com 256 cor es ou mais s ej am ex ibidas mais r apidamente, mas com per da de qualidade. Alter e QuickDr aw par a Fals e par a obter uma maior qualidade de ex ibio, mas com per da de velocidade. Deter mina s e a imagem s er ou no " es ticada" par a pr eencher todo o es pao do componente DB I mage. S e S tr etch for T r ue, a imagem es ticada (o que ger almente caus a dis tor es e per da de qualidade); s e S tr etch for Fals e, o tamanho da imagem no alter ado.
S t r et ch
S t yl e
Del phi 5
C omponente DBNavigator
O componente DB Navigator per mite r ealizar uma s er ie de oper aes comuns em r egis tr os de um DataS et, como navegao, ins er o e deleo. Um componente DB Navigator ligado a um DataS et atr avs de um componente DataS our ce (como os outr os componentes Data Contr ols ), mas o aces s o feito r egis tr o por r egis tr o e no campo por campo. comum us ar um componente DB Navigator em as s ociao com um componente DB Gr id par a a navegao dos dados em um DataS et. O componente DB Navigator compos to de um conj unto de botes . Cada boto ex ecuta um dos mtodos do DataS et, como Fir s t, Las t, Pr ior , Nex t, Pos t, Edit, etc. T udo que pode s er feito com DB Navigator pode s er feito atr avs de pr ogr amao, us ando es s es mtodos dir etamente. O DB Navigator apenas uma maneir a s imples e r pida de ofer ecer r ecur s os par a a navegao e alter ao de um DataS et par a o us ur io, s em a neces s idade de pr ogr amao. Vej a a s eguir os mtodos as s ociados a cada boto do DB Navigator :
Fir s t Pos t
Delete Las t
Pr ior Cancel
Edit I ns er t
Nex t Refr es h
H vr ias pr opr iedades impor tantes par a o componente DB Navigator . Com elas , voc pode es colher quais os botes s o ex ibidos no componente (Vis ibleB uttons ), e contr olar a apar ncia de " Dicas " par a cada boto (Hints e S howhint). P r opr i edade Con f i r m D el et e D es cr i o S e Confir mDelete for T r ue, uma caix a de confir mao ex ibida quando o boto " Delete" clicado. Cas o contr r io, o r egis tr o atual apagado s em confir maes . Es pecifique aqui o DataS our ce ao qual o DB Navigator es t ligado. Deter mina s e os botes do DB Navigator s o ex ibidos com efeito tr idimens ional, ou no. S e Flat for T r ue, o efeito tr idimens ional no ex ibido e o componente s e tor na s emelhante s bar r as de fer r amentas do Office 97. Alter e Hint par a definir as " dicas " que apar ecem par a cada boto no DB Navigator . Clique duas vezes ao lado da pr opr iedade e digite uma linha de tex to par a cada dica. As dicas s s er o mos tr adas s e a pr opr iedade S howHint for T r ue. S e Hints for deix ada vazia e S howHint for T r ue, as dicas ex ibidas s o os pr pr ios nomes dos botes (em ingls ). Es pecifique aqui quais botes do DB Navigator voc des ej a ex ibir . Es ta pr opr iedade muito impor tante, pois na maior ia das vezes o DB Navigator ofer ece mais botes do que neces s r io. Par a definir os botes a s er em ex ibidos , clique duas vezes no nome da pr opr iedade par a abr ir um lis ta de s ubpr opr iedades . mos tr ada uma s ubpr opr iedade par a cada boto que pode s er ex ibido (vej a a figur a ao lado). Par a es conder um boto, alter e a pr opr iedade cor r es pondente par a Fals e. Par a ex ibir um boto alter e a pr opr iedade cor r es pondente par a T r ue.
D at aS ou r ce F l at
H int s , S h ow H i n t
Vi s i bl eB u t t on s
Del phi 5
Um DB Gr id for mado por linhas , colunas e clulas . Cada clula contm um valor de um campo de um DataS et. Como padr o, o DB Gr id mos tr a tambm o nome de cada coluna e indica o r egis tr o atual, atr avs de um pequeno tr ingulo no lado es quer do. A pr opr iedade mais us ada no componente DB Gr id a pr opr iedade Options , que contm vr ias opes que podem s er ligadas (valor T r ue) ou des ligadas (valor Fals e). Vej a a s eguir o s ignificado das opes mais impor tantes : Opo dgE di t i n g dgAl w ays S h ow E di t or dgT i t l es dgI n di cat or dgCol u m n R es i z e dgCol L i n s dgR ow L i n es dgT abs dgR ow S el ect dgAl w ays S h ow S el ect i on dgCon f i r m D el et e dgCan cel On E x i t dgMu l t i S el ect E f ei t o qu an do l i gada Per mite que o us ur io alter e dados dentr o do DB Gr id. Faz com que o DB Gr id es tej a s empr e pr onto par a r ealizar alter aes (no es tado ds Edit). Faz com que ttulos s ej am ex ibidos no topo de cada coluna. Ex ibe o indicador do r egis tr o atual (um pequeno tr ingulo no lado es quer do do DB Gr id). Per mite que colunas s ej am movidas ou r edimens ionadas . Ex ibe linhas entr e as colunas do DB Gr id. Ex ibe linhas entr e as linhas do DB Gr id. Per mite que o us ur io us e T AB e S HI FT + T AB par a pas s ar de uma clula do DB Gr id par a outr a. Per mite que o us ur io s elecione linhas inteir as no DB Gr id. Faz com que a clula ou linha s elecionada per manea s elecionada, mes mo quando o DB Gr id no es t com o foco. Faz com que uma caix a de confir mao apar ea, quando o us ur io us a CT RL+ DELET E par a apagar um r egis tr o. Faz com que um novo r egis tr o ins er ido no DB Gr id no s ej a enviado par a o banco de dados , a no s er que o r egis tr o tenha s ido alter ado (no es tej a vazio). Per mite que mais de uma linha no DB Gr id pos s a s er s elecionada ao mes mo tempo.
Ocomponente Q uery
Nes te captulo, ver emos como us ar o componente Quer y par a r ealizar cons ultas S QL em bancos de dados . O componente Quer y per mite r ealizar cons ultas S QL em qualquer tipo de banco de dados s upor tado pelo Delphi, des de em bancos locais Par adox e dB AS E at bancos S QL, como Or acle ou S QL S er ver . Um componente Quer y contm o tex to de uma cons ulta S QL e a es pecificao dos par metr os us ados na cons ulta. O componente Quer y s e encar r ega da ex ecuo da cons ulta S QL e do pr oces s amento dos dados r etor nados pelo banco de dados , par a a cons ulta.
Del phi 5
3. 4. Na pr opr iedade S QL, es pecifique a cons ulta S QL que a s er ex ecutada pelo componente. Adicione um componente DataS our ce ao for mulr io e alter e a s ua pr opr iedade DataS et par a o nome do componente Quer y.
Par a ex ibir os r es ultados ger ados pelo componente Quer y, adicione um componente DB Gr id, ou outr o componente com aces s o a dados . Alter e a pr opr iedade DataS our ce des s e componente par a o nome do componente DataS our ce que voc acabou de adicionar . Par a ex ecutar a cons ulta S QL, alter e a pr opr iedade Active do componente Quer y par a T r ue. S e tudo cor r er bem, os r es ultados da cons ulta S QL s o ex ibidos imediatamente no DB Gr id (ou outr o componente com aces s o a dados ).
Em tempo de ex ecuo, alter e a pr opr iedade S QL dir etamente, us ando os mtodos Add, Append, Clear , etc. (a pr opr iedade S QL do tipo T S tr ings ). O ex emplo a s eguir l o tex to em um componente Edit e cr ia a cons ulta S QL no cdigo, bas eando- s e no tex to lido. chr (39) r etor na o car acter e " as pas s imples " (39 o cdigo AS CI I des s e car acter e). A cons ulta ex ecutada alter ando- s e a pr opr iedade Active do Quer y par a T r ue. pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var Continente: S tr ing; begin Continente : = Edit1.T ex t; Quer y1.S QL.Clear ; Quer y1.S QL.Add('S ELECT Name, Capital FROM Countr y ' + 'WHERE Continent = ' + chr (39) + Continente + chr (39)+ 'ORDER B Y Name'); Quer y1.Active : = T r ue; end;
Del phi 5
Par a es pecificar uma cons ulta dinmica (par ametr izada), faa o mes mo que par a as cons ulta es tticas , mas em vez de es pecificar valor es fix os na cons ulta, es pecifique par metr os , identificador es antecedidos por dois pontos ( : ). Vej a um ex emplo:
O E di t or de P ar m et r os
Par a cada par metr o definido, clique no par metr o e alter e as pr opr iedades DataT ype e Value, us ando o Obj ect I ns pector . A pr opr iedade DataT ype deter mina o tipo (Real, I nteger , etc.) do par metr o. DataT ype deve s er obr igator iamente alter ada. Par a confir mar as alter aes , feche a j anela do Editor de Par metr os . A pr opr iedade Value de um par metr o pode s er alter ada par a definir um valor inicial par a um par metr o, em tempo de des envolvimento. Mas o mais comum alter ar os valor es dos par metr os us ando pr ogr amao. A maneir a mais s imples us ando o mtodo Par amB yName do componente Quer y. Par a alter ar os par metr os de uma quer y em tempo de ex ecuo, us e o mtodo Par amB yName(nome do par metr o). Us e as pr opr iedades de conver s o As S tr ing, As I nteger , As Float, etc. par a conver ter valor es na hor a de atr ibu- los aos par metr os . Vej a um ex emplo:
Del phi 5
pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); begin with Quer y1 do begin Clos e; Par amB yName('val').As Cur r ency : = S tr T oCur r (Edit1.T ex t); Par amB yName('quant').As I nteger : = S tr T oI nt(Edit2.T ex t); Open; end; end; O ex emplo l dois valor es digitados em componentes Edit e atr ibui es s es valor es aos par metr os val e quant (vej a o ex emplo da s eo anter ior ). Em s eguida a cons ulta S QL ex ecutada us ando o mtodo Open do componente Quer y.
AlinguagemLocal SQ L
A linguagem Local S QL um s ubconj unto da linguagem S QL padr o (S QL 92 ANS I ). S QL uma linguagem univer s al us ada na gr ande maior ia dos bancos de dados r elacionais . A linguagem Local S QL contm os comandos mais bs icos da linguagem S QL e compatvel tambm com os bancos locais , do tipo Par adox e dB AS E, alm dos bancos de dados S QL mais poder os os , como Or acle e S QL S er ver . A linguagem Local S QL s uficiente par a r ealizar a maior ia das cons ultas S QL neces s r ias em um banco de dados . N OT A: como Local S QL um s ubconj unto da linguagem S QL, us ar emos apenas " S QL" de agor a em diante.
As duas par t es de S QL
A linguagem S QL s e divide em duas par tes independentes (chamadas tambm de linguagens ): uma linguagem de manipulao de dados , us ada par a cons ultar e alter ar os dados de bancos de dados , e uma linguagem de definio de dados , us ada par a alter ar a es tr utur a dos bancos . A linguagem de manipulao de dados cons tituda pelos s eguintes comandos pr incipais : Com an do S E L E CT I NS E R T U P D AT E DEL ET E F u n o Us ado par a r ecuper ar dados de uma ou mais tabelas , bas eando- s e em condies es pecificadas . O comando S ELECT us ado par a r ealizar muitas oper aes difer entes e muito poder os o. Us ado par a adicionar dados a uma tabela. Us ado par a atualizar (modificar ) dados ex is tentes em uma tabela. Us ado par a apagar r egis tr os de uma tabela.
A linguagem de definio de dados cons tituda pelos s eguintes comandos pr incipais : Com an do CR E AT E T AB L E AL T E R T AB L E D R OP T AB L E CR E AT E I N D E X D R OP I N D E X F u n o Cr iar uma tabela. Alter ar a es tr utur a de uma tabela. Des tr uir uma tabela (r emov- la do banco de dados ). Cr iar um ndice par a uma tabela. Remover um ndice par a uma tabela.
Del phi 5
O comando S E L E CT
O comando S ELECT o mais poder os o e mais complex o dos comandos da linguagem S QL. Es s e comando us ado par a r ecuper ar dados de uma ou mais tabelas . Os dados r ecuper ados dependem das condies definidas no comando S ELECT . A for ma bs ica par a o comando S ELECT a s eguinte: S ELECT WHERE ORDER GROUP [ campos r etor nados ] FROM [ tabelas cons ultadas ] [ condio] B Y [ campos de or denao] B Y [ campos de agr upamento]
Vej a o que s ignifica cada par te do comando: P ar t e do com an do S E L E CT Cam pos r et or n ados D es cr i o Os nomes dos campos a s er em r etor nados . S e um as ter is co (* ) for es pecificado, todos os campos das tabelas s o r etor nados . Os campos devem per tencer a uma das tabelas es pecificadas em tabelas cons ultadas . As tabelas de onde s er o ex tr ados os dados . Uma condio que r es tr inge os valor es que s o r etor nados . A condio pode us ar os oper ador es booleanos comuns de Obj ect Pas cal, como < , > , < > , = , AND, OR, NOT , entr e outr os . Os campos us ados como bas e par a a or denao dos valor es r etor nados . O pr imeir o campo es pecificado tem pr ior idade. Os outr os campos s o us ados como " cr itr ios de des empate" . Os campos us ados par a agr upar campos quando s o us adas funes de agr egao como COUNT , S UM e AVG.
Vej a agor a alguns ex emplos do us o do comando S ELECT : E s t e com an do... S E L E CT * F R OM P r odu t os S E L E CT N om e, P r eco F R OM P r odu t os S E L E CT N om e, P r eco F R OM P r odu t os W H E R E P r eco > 1 0 0 .0 0 S E L E CT Codi go, P r eco F R OM P r odu t os W H E R E Qu an t i dade > 1 2 S E L E CT N om e, Qu an t i dade F R OM P r odu t os W H E R E P r eco > 1 0 0 .0 0 AN D P r eco < 5 0 0 .0 0 S E L E CT N om e F R OM P r odu t os W H E R E Qu an t i dade < > 0 OR D E R B Y N om e S E L E CT * F R OM P edi dos , P r odu t os W H E R E P edi dos .CodP r odu t o = P r odu t os .Codi go S E L E CT N om e, S U M( P r eco* Qu an t i dade) F R OM P edi dos , P r odu t os W H E R E P edi dos .CodP r odu t o = P r odu t os .Codi go GR OU P B Y N om e, Codi go R et or n a... T odos os valor es de todos os campos da tabela Pr odutos (a tabela inteir a). T odos os nomes e os pr eos da tabela Pr odutos (mas nenhum outr o campo). O Nome e o Pr eo de todos os pr odutos com Pr eo maior que 100.00. O Cdigo e o Pr eo de todos os pr odutos com Quantidade maior que 12. Note que os campos na par te WHERE no pr ecis am es tar na par te S ELECT . O Nome e a Quantidade de todos os pr odutos com Pr eo entr e 100 e 500. S omente o Nome dos pr odutos com Quantidade difer ente de zer o, or denados pelo Nome do pr oduto. T odos os campos de ambas as tabelas Pedidos e Pr odutos , " cas ados " por cdigo. ( feita uma j uno das duas tabelas , bas eada nos campos Codigo e CodPr oduto). O Nome e o valor total dos pr odutos (Pr eo vezes Quantidade), agr upados por cdigo de pr oduto. (S e houver um pr oduto com o mes mo cdigo em vr ios pedidos , o valor de todos os pr odutos pedidos s omado o pr oduto s apar ece uma vez nos dados r es ultantes ).
U s ando I N e B E T WE E N
O comando I N us ado em condies par a deter minar s e um valor per tence a um conj unto es pecificado. O ex emplo a s eguir r etor na o nome e o pr eo de todos os pr odutos com quantidades que es tej am no conj unto { 100, 200, 300, 400, 500} : S ELECT Nome Pr eco FROM Pr odutos WHERE Quantidade I N (100, 200, 300, 400, 500)
Del phi 5
O comando B ET WEEN tambm us ado em condies , j unto com a palavr a AND, par a deter minar s e um valor es t dentr o de um inter valo es pecificado. Vej a dois ex emplos : S ELECT Nome, Quantidade FROM Pr odutos WHERE Pr eco B E T WE EN 100 AND 1000 S ELECT * FROM Pedidos WHERE Codigo B ET WE EN 0001 AND 0100
Vej a alguns ex emplos do us o de funes de agr egao: Com an do S QL S E L E CT AVG( P r eco) F R OM P r odu t os S E L E CT COU N T ( * ) F R OM P r odu t os W H E R E P r eco < 1 0 0 .0 0 S E L E CT S U M( P r eco* Qu an t i dade) F R OM P r odu t os R et or n a Retor na a mdia do pr eo de todos os pr odutos . Retor na o nmer o de pr odutos com pr eo abaix o de 100.00. Um nico valor r etor nado. Retor na a s oma da multiplicao do Pr eco e da Quantidade de todos os pr odutos . Um nico valor r etor nado.
O comando I NS E R T
O comando I NS E RT us ado par a ins er ir novos r egis tr os (com dados ) em tabelas . Es te comando us ado da s eguinte for ma: I NS ERT I NT O Nome da tabela (Campo1, Campo2, ...) VALUES (Valor 1, Valor 2, ...) Alguns ex emplos : Com an do I N S E R T I N T O Cl i en t es ( N om e, S obr en om e) VAL U E S ( L eon ar do, Gal vo) I N S E R T I N T O P r odu t os VAL U E S ( ' 0 0 7 9 ' ,' Ar n o 1 0 0 ' ,5 0 0 ,1 0 0 ,' 1 2 / 1 0 / 9 7 ' ) E f ei t o / Com en t r i o I ns er e um novo r egis tr o na tabela Clientes com Nome = " Leonar do" e S obr enome = " Galvo" . Os outr os campos do r egis tr o ficam vazios (nulos ), s e is s o for per mitido. I ns er e um novo r egis tr o na tabela Pr odutos , pr eenchendo todos os valor es do r egis tr o (Codigo, Nome, Valor , Quantidade e Data de entr ada). Note que os campos no pr ecis am s er es pecificados nes s e cas o.
O comando U P DAT E
O comando UPDAT E us ado par a atualizar (modificar ) r egis tr os em uma tabela. Es s e comando us ado da s eguinte for ma: UPDAT E Nome da T abela S E T Campo = Valor WHE RE Condio Ex emplos :
Del phi 5
Com an do U P D AT E P ai s es S E T Capi t al = B r at i s l ava W H E R E P ai s = E s l ovqu i a U P D AT E P r odu t os S E T P r eco = P r eco * 0 .8 E f ei t o / Com en t r i o Alter a a capital do Pas " Es lovquia" par a " B r atis lava" (todas as ocor r ncias ). Reduz o pr eo de todos os pr odutos da tabela Pr odutos par a 80% do pr eo anter ior .
O comando DE L E T E
O comando DELET E us ado par a apagar r egis tr os inteir os de uma tabela, que s atis faam uma condio es pecificada. D E L E T E F R OM N om e da t abel a W H E R E Con di o O s eguinte ex emplo, apaga todos os r egis tr os da tabela Pr odutos , que tm o campo Quantidade = 0: D E L E T E F R OM P r odu t os W H E R E Qu an t i dade = 0
O comando AL T E R T AB L E
O comando ALT ER T AB LE us ado par a alter ar a es tr utur a de uma tabela ex is tente. H duas ver s es par a es s e comando, uma par a adicionar campos e outr a par a r emov- los . ALT ER T AB LE Nome da tabela ADD NovoCampo1 T ipo1, ADD NovoCampo2 T ipo2, ... (Adiciona os campos es pecificados depois de ADD). ALT ER T AB LE Nome da tabela DROP Campo1, DROP Campo2, ... (Remove os campos es pecificados depois de DROP)
Vej a alguns ex emplos que us am o comando ALT ER T AB LE: Com an do ALT ER T AB LE Pr odutos ADD DataEx pir acao DAT E, E f ei t o Adiciona dois campos (colunas ) tabela Pr odutos : " DataEx pir acao" e For necedor "
Del phi 5
ADD For necedor CHAR[ 60] ALT ER T AB LE Jogador es DROP DataNas c Remove o campo " DataNas c" da tabela Jogador es .
O comando DR OP T AB L E
O comando DROP T AB LE us ado par a r emover tabelas inteir as de um banco de dados (A palavr a " Dr op" s ignifica " Deix ar cair " , ou " Abandonar " ). O us o des s e comando s imples : DROP T AB L E Nome da tabela
O comando CR E AT E I NDE X
O comando CREAT E I NDE X us ado par a cr iar ndices em tabelas . A es tr utur a do comando a a s eguinte: CREAT E I NDE X Nome do ndice ON Nome da tabela (Campo1, Campo2, ...) Par a tabelas dB AS E es s a a nica maneir a de cr iar ndices . Par a tabelas Par adox es s e comando s pode s er us ado par a a cr iao de ndices s ecundr ios . O ndice pr imr io de uma tabela Par adox o campo definido na par te " PRI MARY K EY" do comando CREAT E T AB LE.
O comando DR OP I NDE X
Us ado par a r emover ndices em uma tabela. Pode s er us ado de duas for mas : DROP I NDE X Nome da tabela.Nome do ndice, (Remove da tabela o ndice es pecificado) DROP I NDE X Nome da tabela.PRI MARY, (Remove da tabela o ndice pr imr io - par a tabelas Par adox )
C onexes A DO
O Delphi 5 incor por a uma biblioteca de 7 componentes par a aces s o camada ADO. A camada ADO um novo padr o Micr os oft par a aces s o a banco de dados . Antes do ADO, is to er a feito com a camada ODB C, mas a Micr os oft per cebeu que es te camada no s er vir ia par a aplicaes I nter net. S ur giu, ento, a OLE DB que alm de pos s uir dr iver s nativos par a aces s ar banco de dados altamente integr ada I nter net. A camada ADO s o clas s es de alto nvel par a aces s o ao OLE DB . O Delphi, at s ua ver s o 4, s aces s ava banco de dados atr avs da B DE. Mes mo quando er a neces s r io utilizar o ODB C, a camada B DE s er via como inter medir ia de comunicao. Com o advento da pr ogr amao par a I nter net e a difus o do des envolvimento em mltiplas camadas , a I npr is e viu a neces s idade de ex tender o padr o de aces s o, vis to que nem todos os pr ovedor es ou camadas Middletier poder o T er o B DE ins talado. S endo as s im, o Delphi 5 per mite o aces s o tambm via ADO (ActiveX Data Obj ects ), de for ma muita par ecida com o aces s o via B DE. Vej a a ilus tr ao abaix o, que r epr es enta a conex o via B DE ou ADO:
Delphi c/ BDE
Delphi c/ ADO
BDE
ADO
ODBC
OLE DB
ODBC
Ex emplo1: Cr iando um DataS et com T ADOT able: Es te ex emplo demons tr a o us o mais s imples dos obj etos ADO. Aqui, um obj eto DB Gr id s er pr eenchido com o contedo de uma tabela, for necido atr avs de um obj eto T ADOT able, cr ie uma nova aplicao, e no for mulr io 1, ins ir a um obj eto T ADOConnection; O obj eto ADO Connection equivalente ao obj eto T Databas e, e como es te, r epr es enta a conex o com o banco de dados . As tr ans aes e os par metr os de conex o s er o r ealizados atr avs des te obj eto. Em s eguida, devemos configur ar o obj eto ADOConnection1. D um clique duplo s obr e o obj eto, par a que a j anela Connection S tr ing s ej a ex ibida:
Del phi 5
Es ta j anela ir indicar os par metr os de conex o com o banco de dados . As opes r epr es entam: U s e D at a L i n k F i l e U s e Con n ect i on S t r i n g Ar quivo .UDL, que contm os par metr os de conex o pr for matados . Per mite cr iar um novo ar quivo .UDL, com todos os par metr os de conex o.
Nes te cas o, s elecione Us e Connection S tr ing e clique no boto B uild. A j anela Data Link Pr oper ties s er ex ibida:
Cada I tem ex ibido nes ta j anela r epr es enta um mecanis mo de conex o aos dados . Lembr ando, o ADO no aces s o o banco de dados s ozinho, ele s e conecta a um motor de aces s o par a r ealizar a conex o. Es te motor pode s er uma conex o ODB C, uma conex o OLEDB nativa, uma conex o JET E ngine, ou algum outr o tipo de motor ins talado. No nos s o cas o, us ar emos o motor Jet Engine, par a aces s ar o banco de dados Acces s . S elecione o por tanto, o item Jet Egine 4.0 OLE DB Pr ovider e clique em Nex t. A aba connection s er ex ibida: N ot a: Es ta aba ir pos s uir uma inter face difer ente par a cada banco de dados . Na opo n 1, s elecione o ar quivo .MDB do banco de dados que s er aces s ado por nos s a aplicao. Abr a o ar quivo DB DEMOS .MDB . Aps clique em OK , par a voltar ao I DE do Delphi. Alter e a pr opr iedade Connected par a T RUE, a fim de conectar com o banco de dados . I ns ir a um obj eto T ADOT able no for mulr io. Es te obj eto r epr es enta a conex o com a tabela e equivalente ao obj eto T T able. Pr imeir amente, devemos conectar es te obj eto ao T ADOConnection. Faa is to alter ando a pr opr iedade Connection, indicando o obj eto ADOConnection1. Em s eguida, indique o nome da tabela na pr opr iedade T ableName. S elecione Cus tomer . I ns ir a um obj eto T Datas our ce no for mulr io, e linke- o com o obj eto ADOT able1. I ns ir a um obj eto T DbGr id, e conecte- o com o obj eto DataS our ce1. B as ta alter ar a pr opr iedade Active do obj eto AdoT able1 par a T RUE, e s eu for mulr io s er par ecido com a figur a abaix o:
Del phi 5
Uma des cr io detalhada de todas as pr opr iedade, mtodos e eventos r elevantes aos obj eto da palheta ADO encontr a- s e dis ponvel a s eguir .
O component e T ADOConnect i on
Es te componente utilizado par a cr iar uma nova conex o com a camada ADO. bas tante s emelhante ao componente T Databas e, s ua utilizao tambm opcional.
Principais Propriedades
CommandT imeout Connected ConnectS tr ing Es ta pr opr iedade per mite es pecificar um deter minado tempo de limite par a obter uma r es pos ta de um comando ex ecutado. Es pecifica s e ex is te ou no uma conex o. Define a S tr ing de conex o entr e a camada inter ces s or a do banco de dados com o ADO. Utilizamos es ta pr opr iedade par a definir qual s er o banco de dados e a camada par a o AD O ( Jet , OD B C, OL E D B ). Es ta pr opr iedade per mite es pecificar um deter minado tempo de limite par a s er feita a conex o com o banco de dados . Es ta pr opr iedade define o tipo de conex o. CoCon n ect U n s peci f i ed , es te e o modo padr ao do AD O. CoAs yn cCon n ect , Es te modo e utilizado Quando o s er vidor for muito lento. Define onde es tar o cur s or par a s uas tabelas . Define um banco de dados padr o par a a conex o quando uma conex o via Con n ect i on S t r i n g no for bem s ucedida. Define o nvel de is olamento entr e do banco de dados . Es ta pr opr iedade s emelhante pr opr iedade T r ans I s olation do obj eto Databas e. Define um modo de conex o: S omente leitur a, leitur a e gr avao e etc. Es pecifica o mtodo de conex o que s er utilizado pela camada AD O: Jet , OL E D B , OD B C, etc.
Principais Eventos
After Connect After Dis connect B efor eConnect B efor eDis connect OnB eginT r as Complete OnCommitComplete OnConnectCompleted OnDis connect OnEx ecuteComplete OnI nfoMes s age Ocor r e aps efetuar uma conex o. Ocor r e aps des conectar . Ocor r e antes de efetuar uma conex o. Ocor r e andes de des conectar . Ocor r e quando iniciada uma nova tr ans ao. Ocor r e quando o comando Com m i t foi ex ecutado. Ocor r e quando feita uma conex o. Ocor r e quando ter minada uma conex o. Ocor r e quando uma conex o com o AD O ex ecutou um comando(Command). Ocor r e quando uma conex o bem s ucedida e infor maes adicionais s o enviadas pelo P r ovi der .
Del phi 5
OnLogin OnRollbackT r ans Complete OnWillConnect OnWillEx ecute Ocor r e quando aber ta a j anela L ogi n P r om pt . Ocor r e quando ex ecutado um RollB ack. Ocor r e quando uma conex o es t pr es tes a s er efetuada. Ocor r e quando uma ex ecuo es t pr es tes a s er efetuada.
Principais mtodos
Open Clos e Per mite ativar uma conex o T er mina uma conex o
T ADOT abl e
Obj eto ADOT able de uma conex o ADO equivalente ao obj eto T T able da camada B DE.
Principais Propriedades
CacheS ize Connection ConnectionS tr ing Cur s or Location I ndica quantos r egis tr os s er o pedidos par a o s er vidor por vez, e ar mazenados na memor ia local. Novos pedidos s o automaticamente contr olados pelo obj eto. Obj eto T AD OCon n ect i on , que r epr es enta a ins tancia do banco de dados atual. Pode s er us ado no lugar de um obj eto T AD OCon n ect i on . Per mite configur ar uma s tr ing de conex o com o s er vidor . I ndica s e o obj eto ir a tr abalhar em modo Ch ach edU pdat es . Cas o es ta pr opr iedade es tej a configur ada par a cl U s eCl i en t , os dados s er ao ar mazenados no cliente, e todas as oper acoes r ealizadas (como i n s er t , u pdat e e del et e) per manecer ao no mes mo. Cas o a pr opr iedade s ej a cl U s eS er ver , as alter acoes s er ao automaticamente enviadas par a o s er vidor . I ndica o tipo de cur s or utilizado pelo cliente. Os pos s iveis valor es s o. Ct U n s peci f i ed , Um tipo de cur s or no pr e- definido pelo obj eto. Ct Open F or w ar dOn l y , Cur s or uni- dir ecional. Com es te valor , o us uar io poder a apenas navegar par a fr ente, nunca r etor nar os r egis tr os . Ct K eys et , Cur s or bi -di r eci on al , no concor r ente. Aqui, o us uar io pode navegar par a fr ente e par a tr as no r es ult s et. As alter acoes feitas por tr ans acoes concor r entes no es tar ao aces s iveis , e os r egis tr os deletados , apes ar de vis iveis , no es tar ao dis poniveis . Ct D yn am i c, bi -di r eci on al e con cor r en t e. Es te tipo de cur s or e o que apr es enta a pior per for mance e o que gas ta mais r ecur s os do s is tema. Aqui, o us uar io vis ualiza as alter acoes , ins er coes e delecoes de outr as tr ans acoes . Ct S t at i c, Uma s imples copia dos r egis tr os . Qualquer tipo de alter acao concor r ente no s er a vis ualizada nes te cur s or . LockT ype Es pecifica como o lock de r egis tr os s er a ex ecutado. Os pos s iveis valor es s o. I t U n s peci f i ed , Um tipo de lock que no foi pr e- definido pelo obj eto; I t R eadOn l y , S omente leitur a; I t P es s i m i s t i c, I mpede que outr as s es s oes alter em o r egis tr o que es tiver locado pelo us uar io; I t Opt i m i s t i c, T odos podem alter ar o mes mo r egis tr o; I t B at ch Opt i m i s t i c, I mpede que outr as s es s oes alter em quando es tiver em modo update B atch. Mar s halOptions til apenas quando a tabela es t em Cl i en t -S i de. I ndica quais r egis tr os s er o devolvidos par a o s er vidor ou par a a camada m i ddl ew ar e. S e o valor for m oMar s h al Al l , todos os r egis tr os s er o enviados par a o s er vidor . Cas o o valor s ej a m oMar s h al Modi f i edOn l y , apenas os r egis tr os modificados s er o devolvidos . I ndica a quantidade mx ima de r egis tr os ex ibidos pelo obj eto. 0 (zer o) indica todos os r egis tr os . Quando Fals e, os dados s er o s empr e r equis itados via intr ues S QL S elect. Nes te cas o, a ins tr uo cr iada automaticamente pelo obj eto. O valor D ef au l t F al s e. Nome da tabela dentr o do banco de dados .
Cur s or T ype
Principais Eventos
OnEndOfRecor ds et Ocor r e quando o ponteir o avana aps o ltimo r egis tr o car r egado pelo R ecor dS et . impor tante notar que es ta ao no r epr es enta o final da tabela, e s im, o final do bu f f er . O par metr o Mor eD at a, quando T r u e, ir indicar a r equis io dos pr x imos r egis tr os que no for am car r egados par a o bu f f er .
Del phi 5
O par metr o E ven t S t at u s indica s e a oper acao que ger ou o evento foi ou no bem s ucedida. OnFetchComplete OnFetchPr ogr es s Ocor r e quando uma r equis io de dados par a o bu f f er ter minada. Ocor r e dur ante a leitur a dos dados par a o bu f f er . O par metr o P r ogr es s indica a quantidade de r egis tr os lidos , Max P r ogr es s a quantidade a s er lida e E ven t S t at u s s e a oper ao foi bem s ucedida. Ocor r e aps a gr avao de um valor par a algum campo da tabela. Ocor r e aps o ponteir o de r egis tr o r ealizar alguma movimentao. Ocor r e aps um ou vr ios r egis tr os s er em atualizados . Ocor r e antes da edio do valor de um campo. Ocor r e antes da edio/ins er o de um r egis tr o. Ocor r e antes da alter ao de algum valor da tabela. Ocor r e antes da movimentao do ponteir o par a algum lugar .
Principais Mtodos
function S eek(cons t K eyValues : Var iant; S eekOption: T S eekOption = s oFir s tEQ): B oolean; Faz a pes quis a utilizando o ndice atual. O pr imeir o par metr o um ar r ay OLE (Var Ar r ayOf) de valor es de pes quis a. O s egundo indica como a pes quis a s er r ealizada. Os pos s veis valor es par a S eekOption s o: S oF i r s t E Q, Cas o ex is ta, o ponteir o e pos icionado na pr imeir a ocor r encia. S oL as t E Q, Cas o ex is ta, o ponteir o e pos icionado na ultima ocor r encia S oAf t er E Q, Recor d pointer pos itioned at matching r ecor d, if found, or j us t after wher e that matching r ecor d would have been found. S oAf t er , O ponteir o pos icionado no r egis tr o encontr ado + 1. S oB ef or eE Q, Recor d pointer pos itioned at matching r ecor d, if found, or j us t befor e wher e that matching r ecor d would have been found. S oB ef or e, O ponteir o e pos icionado no r egis tr o encontr ado 1
T ADOQuer y
Repr es enta o obj eto T Quer y da palheta DataAcces s . O mais indicado par a conex es com um banco de dados Cliente- S er vidor .
Principais Propriedades
Connection Cur s or Location Obj eto T AD OCon n ect i on que r epr es enta a i n s t n ci a do banco de dados atual. I ndica s e o obj eto ir a tr abalhar em modo Ch ach edU pdat es . Cas o es ta pr opr iedade es tej a configur ada par a cl U s eCl i en t , os dados s er ao ar mazenados no cliente, e todas as oper acoes r ealizadas (como ins er t, update e delete) per manecer ao no mes mo. Cas o a pr opr iedade s ej a cl U s eS er ver , as alter acoes s er ao automaticamente enviadas par a o s er vidor . I ndica o tipo de cur s or utilizado pelo cliente. Os pos s iveis valor es s o: Ct U n s peci f i ed , Um tipo de cur s or no pr e- definido pelo obj eto. Ct Open F or w ar dOn l y , Cur s or uni- dir ecional. Com es te valor , o us uar io poder a apenas navegar par a fr ente, nunca r etor nar os r egis tr os . Ct K eys et , Cur s or bi- dir ecional, no concor r ente. Aqui, o us uar io pode navegar par a fr ente e par a tr as no r es ult s et. As alter acoes feitas por tr ans acoes concor r entes no es tar ao aces s iveis , e os r egis tr os deletados , apes ar de vis iveis , no es tar ao dis poniveis . Ct D yn am i c, B i- dir ecional e concor r ente. Es te tipo de cur s or e o que apr es enta a pior per for mance e o que gas ta mais r ecur s os do s is tema. Aqui, o us uar io vis ualiza as alter acoes , ins er coes e delecoes de outr as tr ans acoes . Ct S t at i c, Uma s imples copia dos r egis tr os . Qualquer tipo de alter acao concor r ente no s er a vis ualizada nes te cur s or . LockT ype Es pecifica como o lock de r egis tr os s er a ex ecutado. Os pos s iveis valor es s o: I t U n s peci f i ed , Um tipo de lock que no foi pr e- definido pelo obj eto; I t R eadOn l y , S omente leitur a; I t P es s i m i s t i c, I mpede que outr as s es s oes alter em o r egis tr o que es tiver locado pelo us uar io; I t Opt i m i s t i c, T odos podem alter ar o mes mo r egis tr o; I t B at ch Opt i m i s t i c, I mpede que outr as s es s oes alter em quando es tiver em modo update B atch.
Cur s or T ype
Del phi 5
Mar s halOptions til apenas quando a tabela es t em Cl i en t -S i de. I ndica quais r egis tr os s er o devolvidos par a o s er vidor ou par a a camada m i ddl ew ar e. S e o valor for m oMar s h al Al l , todos os r egis tr os s er o enviados par a o s er vidor . Cas o o valor s ej a m oMar s h al Modi f i edOn l y , apenas os r egis tr os modificados s er o devolvidos . I ndica a quantidade mx ima de r egis tr os ex ibidos pelo obj eto. 0 (zer o) indica todos os r egis tr os . S e T r u e, o obj eto ir cons ider ar as ex pr es s oes : var i avel como um nome de par metr o. Pr opr iedade da cl as s e T P ar am et er s , que s er ve par a a pas s agem de valor es par a os par ametr os da S QL . A s intax e difer ente da pr opr iedade Par ams do obj eto T Qu er y . Ex : AD OQu er y1 .P ar am et er s .P ar am s .P ar am B yn am e(codigo_ cliente).Value: = 1; I ns tr uo S QL que s er ex ecutada pelo obj eto.
S QL
Principais Eventos
OnEndOfRecor ds et Ocor r e quando o ponteir o avana aps o ltimo r egis tr o car r egado pelo R ecor dS et . impor tante notar que es ta ao no r epr es enta o final da tabela, e s im, o final do buffer . O par metr o Mor eD at a, quando T r u e, ir indicar a r equis io dos pr x imos r egis tr os que no for am car r egados par a o bu f f er . O par metr o E ven t S t at u s indica s e a oper acao que ger ou o evento foi ou no bem s ucedida. Ocor r e quando uma r equis io de dados par a o bu f f er ter minada. Ocor r e dur ante a leitur a dos dados par a o bu f f er . O par metr o P r ogr es s indica a quantidade de r egis tr os lidos , Max P r ogr es s a quantidade a s er lida e E ven t S t at u s s e a oper ao foi bem s ucedida. Ocor r e aps a gr avao de um valor par a algum campo da tabela. Ocor r e aps o pon t ei r o de r egis tr o r ealizar alguma movimentao. Ocor r e aps um ou vr ios r egis tr os s er em atualizados . Ocor r e antes da edio do valor de um campo. Ocor r e antes da edio/ins er o de um r egis tr o. Ocor r e antes da alter ao de algum valor da tabela. Ocor r e antes da movimentao do ponteir o par a algum lugar .
Principais Metodos
Open Clos e Ex ecS QL Abr e a Quer y Fecha a Quer y Ex ecuta uma intr uo S QL
T ADODat aS et
Es te obj eto a clas s e pai dos obj etos T AD OT abl e, T AD OQu er y e T AD OS t or edP r oc. S uas pr opr iedades , mtodos e eventos s o os mes mo des tes obj etos .
T ADOCommand
No pos s ui equivalente na palheta D at aAcces s . E s te componente r epr es enta o obj eto AD O Com m an d , da biblioteca AD O. S er ve apenas par a enviar ins tr ues S QL par a o s er vidor , e no per mite a ligao com obj etos D at aCon t r ol . Pos s ui uma per for mance otimizada par a ins tr ues que no neces s item r etor nar dados par a a aplicao. Oper aes como backu p , del eo de tabelas e u pdat e bat ch s s o mais r pidos quando ex ecutados atr avs des te componente. Aplicaes S QL tambm podem ter um des empenho melhor ado com es te componente.
Principais Propriedades
CommandT ex t CommandT imeOut CommandT ype Connection Par amCheck Par ameter s I ns tr uo S QL que s er ex ecutada pelo s er vidor . T empo que o obj eto ir es per ar pela r es pos ta do s er vidor . I ndica o tipo de ins tr uo contida na pr opr iedade Com m an dT ex t . Obj eto T AD OCon n ect i on , que r epr es enta a ins tncia do banco de dados atual. S e T r u e, o obj eto ir cons ider ar as ex pr es s oes : var i avel como um nome de par metr o. Pr opr iedade da clas s e T P ar am et er s , que s er ve par a a pas s agem de valor es par a os par metr os da S QL . A s intax e difer ente da pr opr iedade Par ams do obj eto T Qu er y . Ex :
Del phi 5
AD OCom m an d1 .P ar am et er s .P ar am s .P ar am B yn am e( codi go_ cl i en t e) .Val u e: = 1 ; Es te obj eto no pos s ui eventos . Par a tr atar os pos s veis r es ultados que es te obj eto pode ger ar , utilize os eventos do obj eto T ADOConnection.
Principais Mtodos
Ex ecute Envia a intr ucao S QL par a o s er vidor
T ADOS t or edP r oc
Equivalente ao obj eto T S tor edPr oc, da palheta DataAcces s . Per mite acionar uma pr ocedur e ar mazenada no s er vidor de banco de dados .
Principais Propriedades
Connection Par ameter s Pr ocedur eName Obj eto T AD OCon n ect i on que r epr es enta a ins tncia atual do banco de dados . Define os par metr os P r ocedu r e. que s er o pas s ados ou r ecebidos da S t or ed
T R DS Connect i on
Obj eto par a cr iao de aplicaes multi- camadas . Es te obj eto s er ve como Middletier par a conex es ADO em vr ias camadas . Ex is tem outr as alter nativas e s olues mais inter es s antes par a Delphi, como MI DAS e CORB A. Por tanto, no dar emos nfas e ao Remote Data S pace.
Palheta Interbase
A palheta I nter bas e for nece e o melhor mtodo par a cr iar uma aplicao Delphi aces s ando bas e de dados I nter bas e. Uma aplicao compilada em Delphi 5, utilizando os componentes da palheta I nter bas e apr es entar uma per for mance s uper ior do que as aplicaes compiladas em ver s es anter ior es do Delphi. I s to por que os novos componentes I nter bas e dis pens am a camada B DE ou qualquer outr a camada. Uma aplicao cons tr uda com es tes componentes ter o cdigo de aces s o ao banco built- in, ou s ej a, dentr o do pr pr io ex ecutvel. Repar e na figur a 1 a ex emplificao des ta difer ena:
Delphi
Delphi
BDE
Banco de Dados
Banco de Dados
Alm de maior per for mance, o des envolvedor pas s a a ganhar tambm em r ecur s os . Com os novos obj etos pos s vel ex tr air vr ias infor maes do s er vidor , como memr ia dis ponvel, es pao em dis co, banco de dados utilizado, por centual de r ecur s os dis ponveis , e outr as . Um maior contr ole do S QL e das tr ans aes r ealizadas tambm for am adicionadas aos componentes . Apes ar de todas es tas vantagens , os componentes I nter bas e ofer ecem um bvio ponto negativo: Uma aplicao cons tr uda com es tes componentes dever s er totalmente r econs tr uida cas o o cliente r es olvar mudar de banco de dados .
Del phi 5
C omponentes dapalhetaInterbase
A s eguir encontr a- s e uma br eve des cr io dos pr incipais componentes da palheta. Eles es to lis tados por or dem de impor tncia dentr o do pr oj eto:
T I B Dat abas e
Equivalente ao componente T Databas e, da palheta DataAcces s . Repr es enta a ins tncia do banco de dados da aplicao, e r ealiza a conex o ao banco, atr avs da pr opr iedade Connected.
Principais Propriedades
Connected Databas ename DefaultT r ans action I dleT imer Quando T r u e , inicia a conex o com o s er vidor . Nome do ar quivo de banco de dados . I ndica um obj eto T I B T r an s act i on como obj eto de tr ans ao D ef au l t . Es pecifica quanto tempo o cliente ir es per ar cas o o s er vidor no envie nenhuma r es pos ta. S e o tempo for ultr apas s ado e o s er vidor no r es ponder , a conex ao s er des feita. S e T r u e, o obj eto pedir nome e s enha ao us ur io. I ndica o cdigo de dialeto S QL utilizado pelo cliente. I ndica quais s er o as aes monitor adas pelo obj eto T I B S QL Mon i t or .
Principais Eventos
After Connect After Dis connect B efor eConnect B efor eDis connect OnI dleT imer OnLogin Ocor r e aps a conex o s er r ealizada. Ocor r e aps a conex o s er ter minada. Ocor r e ao pedido de conex o. Ocor r e ao pedido de tr mino da conex o. Ocor r e enquanto o cliente es per a por uma r es pos ta do s er vidor . Es te evento pode s er us ado par a s ubtituir o pedido de u s er n am e e pas s w or d do obj eto. Ao definir alguma r otina nes te evento, automaticamente a j anela de l ogi n no s er ex ibida e o nome e a s enha dever o s er pas s ados via cdigo.
T I B T r ans act i on
Um dos componentes mais inter es s antes da nova palheta. O componente I B T r ans action r epr es enta a ins tncia da tr ans ao atual e s implifica muito o contr ole de tr ans aes . Com es te obj eto, pos s vel contr olar tr ans aes concor r entes or iginr ias da mes ma conex o com o banco de dados , ou em T hr eads independentes .
Principais Propriedades:
Active DefaultAction Quando T r ue, ex ecuta o mtodo S tar tT r ans action no s er vidor . I ndica qual s er a o metodo ex ecutado quando a aplicacao ex ceder o tempo de idle time out, ou s ej a quando nenhum comando for mais enviado par a o s er vidor . S eus pos s iveis valor es s o: T aR ol l back , Ex ecuta a ins tr uo RollB ack. T aCom m i t , Ex ecuta a ins tr ucao Commit. T aR ol l backR et ai n i n g , Ex ecuta a ins tr uo RollB ack, e mantm o handle da tr ans ao aber to(os dados continuam na tela). Dis ponvel apenas na ver s o 6.0 ou s uper ior do I nter bas e. T aCom m i t R et ai n i n g , Ex ecuta a ins tr uo Commit e mantm o handle da tr ans ao aber to(os dados continuam na tela). DefaultDatabas e I dleT imer I ndica a ins tncia do banco de dados no qual a tr ans ao s er iniciada. Es pecifica quanto tempo o obj eto ir es per ar par a ex ecutar o mtodo es pecificado na pr opr iedade D ef au l t Act i on . O tempo comea a s er contado a par tir que nenhuma ins tr uo for enviada par a o s er vidor .
Principais Eventos
OnI dleT imer Ocor r e enquanto a aplicao no envia nenhuma ins tr uo S QL par a o s er vidor .
Principais Mtodos
Commit CommitRetaining Confir ma a tr ans ao no s er vidor . Confir ma a tr ans ao e mantm o h an dl e aber to. Nes te cas o, os dados per manecem na tela.
Del phi 5
Rollback RollbackRetaining S tar tT r ans action Call Cancela a tr ans ao atual. Cancela a tr ans ao e mantm o h an dl e aber to. Nes te cas o, os dados per manecem na tela. Dis ponvel apenas a par tir da ver s o 6 do I nter bas e. I nicia a tr ans ao. Rettor na a mens agems de er r o bas eado no E r r or Code pas s ado como par metr o.
T I B T abl e
Repr es enta uma conex o com alguma tabela do banco de dados . Equivalente ao obj eto T T Able da palheta DataAcces s . O us o do obj eto T I B T able apr es enta des vantagens em r elao ao us o do obj eto T I B Quer y, vis to que es te componente envia uma quantidade de ins tr uo muito maior ao s er vidor . r ecomendavel o us o do obj eto T I B Quer y.
Principais Propriedades
Active Databas e T ableName T r ans action Abr e a conex o com a tabela. Obj eto T I B D at abas e. Nome da tabela dentr o do banco de dados . Obj eto T I B T r an s act i on , que r epr es entar a a tr ans ao ativa par a as aes ex ecutadas atr avs des te obj eto.
Os demais mtodos e eventos s o os mes mos encontr ados no obj eto T T able, da palheta DataAcces s .
T I B Quer y
Repr es enta uma conex o S QL com o banco de dados . Pr aticamente toda a linguagem S QL(DDL/DML) s upor tada pelo banco de dados pode s er utilizada atr avs des te obj eto. Par a utilizar o obj eto T Quer y como um obj eto de edio, e r ecomendvel o s eu us o j untamente com o obj eto T UpdateS QL.
Principais Propriedades
Databas e S QL T r ans action Obj eto T I B Databas e, que r epr es enta a ins tncia do banco de dados . Cdigo S QL a s er enviado par a o s er vidor . Obj eto T I B T r ans action, que r epr es entar a tr ans ao ativa par a as aes ex ecutadas atr avs des te obj eto.
Os demais eventos e mtodos des te obj eto s o os mes mos encontr ados no obj eto T Quer y, da palheta DataAcces s .
T I B S t or edP r oc
Per mite ex ecutar uma pr ocedur e ar mazenada no s er vidor . Equivalente ao obj eto T S tor edPr oc, da palheta DataAcces s .
Principais Propriedades
DataB as e S tor edPr ocName Obj eto T I B Databas e, que r epr es enta a ins tncia do banco de dados Nome da pr ocedur e ar mazenada.
Os demais eventos e mtodos s o os mes mos do obj eto T S tor edPr oc.
T I B U pdat eS QL
Per mite configur ar o obj eto T I B Quer y ReadOnly par a tr abalhar com Live Res ult S ets . Com es te obj eto, pos s vel definir ins tr ues S QL par a cada mtodo Append, Edit ou Delete. O obj eto UpdateS QL gar ante maior per for mance par a editar uma tabela, pois a quer y tr abalha em modo ReadOnly.
Principais Propriedades
I ns er tS QL ModifyS QL DeleteS QL Refr es hS QL Define a ins tr uo S QL a s er ex ecutada quando o mtodo Append for chamado. Define a ins tr uo S QL a s er ex ecutada quando a tabela for editada. Define a ins tr uo S QL a s er ex ecutada quando algum r egis tr o for deletado. Define a ins tr uo S QL a s er ex ecutada quando o mtodo Refr es h for ex ecutado.
Os demais eventos e metodos s o os mes mos do obj eto T UpdateS QL, da palheta DataAcces s .
Del phi 5
T I B Dat aS et
Es te componente o obj eto ances tr al par a os componentes de aces s o a dados da palheta I nter bas e. S ua utuilizao no es cencial, pois o obj eto T Quer y pos s ui todos os s eus r ecur s os .
Principais Propriedades
Active B uffer Chunks Databas e DeleteS QL I ns er tS QL ModifyS QL Refr es hS QL S electS QL UpdateRecor dT ypes I ndica s e a quer y s er a aber ta. Numer o de r egis tr os no buffer . Obj eto T I B Databas e, que r epr es enta o banco de dados atual. I ns tr uo S QL que s er ex ecutada quando algum r egis tr o for deletado. I ns tr uo S QL que s er ex ecutada quando algum r egis tr o for ins er ido. I ns tr uo S QL que s er ex ecutada quando algum r egis tr o for alter ado. I ns tr uo S QL que s er ex ecutada quando o metodo Refr es h for chamado. I ns tr uo S QL que s er ex ecutada quando a quer y for aber ta. I ndica quais r egis tr os es tar o vis veis quando a pr opr iedade CachedUpdates es tiver s etada par a T r ue. Por default, as pr opr iedades cus Modified, cus I ns er ted, e cus Unmodified es tao s etadas par a T r ue, o que s ignifica que os r egis tr os atuais e ins er idos es tar o vis veis .
Principais Eventos
OnAfter Databas eDis connect OnAfter T r ans actionEnd Ocor r e aps o tr mino da conex o com o banco de dados . Ocor r e aps a ex ecuo de uma tr ans ao (com COMMI T ou ROLLB ACK ). Es te evento captur a apenas as tr ans acoes har d, ou s ej a, ter minadas com o metodo Commit ou RollB ack. Os mtodos CommitRetaining e RollbackRetaining no s o captur ados por es te evento. Ocor r e antes do tr mino da conex o com o banco de dados . Ocor r e antes da ex ecuo de um comando Commit ou RollB ack. Ocor r e aps a liber ao dos handles alocados pelo obj eto T I B Databas e. Ocor r e aps a liber ao dos handles alocados pelo obj eto T I B T r ans action.
B efor eDatabas eDis connect OnB efor eT r ans actionEnd Databas eFr ee T r ans actionFr ee
Os demais mtodos des te obj eto s o mes mos encontr ados na clas s e T DataS et, pai de vr ios componentes como T T able e T Quer y.
T I B S QL
Componente par a ex ecutar ins tr ues S QL. S ua difer enca par a com o obj eto T Quer y, que es te apr es enta a maior per for mance de ex ecuo, e aloca o mnimo de r ecur s os pos s veis . Em contr apar tida, es te obj eto no ofer ece inter face par a conex o com obj etos DataContr ol ele apenas ex ecuta as ins tr ues . r ecomendvel o s eu us o em oper aes que ex ij am uma r pida per for mance, como por ex emplo, r otinas de backup. Es te componente tambm pode s er utilizado par a cr iao de aplicacoes DS QL (Dynamic S QL), ou s ej a, aplicaes em que o pr pr io us ur io cr ia as intr ues S QL.
Principais Propriedades
Databas e GoT oFir s tRecor dOnEx ecute Par amCheck Obj eto T I B Databas e que r epr es enta o banco de dados atual. S e T r ue, vai par a o pr imeir o r egis tr o aps a ex ecuo de uma intr uo S QL Live Res ult S et Es ta pr opr iedade deve s er T r ue quando o obj eto T I B S QL pos s uir uma ins tr uo S QL DDL com par metr os . S e T r ue, o obj eto ir pr evenir de no mis tur ar os par metr os definidos na pr opr iedade S QL com os par metr os contidos dentr o da ins tr uo S QL. Por ex emplo, s e a ins tr uo cr iar uma S tor ed Pr ocedur e com um par metr o, s etar es ta pr opr iedade par a T r ue ir pr evenir o obj eto de tentar s ubs tituir o par ametr o da ins tr uo CREAT E PROCEDURE por um valor da pr opr iedade Par ams . I ns tr uo que s er ex ecutada. Obj eto T I B T r ans action que ir r epr es entar a tr ans ao atual.
S QL T r ans action
Principais Eventos
OnS QLchanging Ocor r e quando a ins tr uo S QL modificada.
Principais Metodos
Call F u n ct i on Cal l ( E r r Code: I S C_ S T AT U S ; R ai s eE r r or : B ool ean ) : I S C_ S T AT U S ;
Del phi 5
Retor na a mens agem de er r o cor r es pondente ao cdigo de er r o. CheckClos ed CheckOpen CheckValidS tatement Clos e Cur r ent Ger a uma ex ceo quando a quer y es t aber ta. Ger a uma ex ceo quando a quer y es t fechada. Ger a uma ex ceo s e a quer y no pos s uir uma clus ula S QL vlida. Elimina os handles ger ados pela quer y. f u n ct i on Cu r r en t : T I B XS QL D A; Retor na o tipo I B XS QL D A atualmente alocado pela quer y. Es te des cr iptor r epr es enta uma r ea de tr ans fer ncia de dados entr e o banco de dados e aplicao cliente. T oda ex ecuo de uma ins tr uo S QL cr ia uma ins tncia des te R ecor d . Ex ecQuer y FieldB yName Nex t Pr epar e Ex ecuta a quer y S QL. Utilizado par a aces s ar um campo da tabela atr avs de s eu nome. Move o pon t ei r o par a o pr x imo r egis tr o. Utilizado antes de pas s ar par metr os par a o obj eto. Per mite pr epar ar uma Quer y par a ex ecuo.
Principais Propriedades:
Allocation B ackoutCount B as eLevel Cur r entMemor y DataB as e DB Filename DbI mplementationClas s DbI mplementationNo DbS iteName DbS QLDialect DeleteCount Ex pungeCount Fetches For cedWr ites I ns er tCount Mar ks Max Memor y NoRes er ve NumB uffer s ODS Maj or Ver s ion ODS Minor Ver s ion PageS ize Pur geCount ReadI dx Count ReadOnly Reads ReadS eqCount S weepI nter val UpdateCount Retor na o nmer o de pginas alocadas . I ndica o nmer o de vezes que um r egis tr o do banco de dados foi r emovido. Retor na o nmer o de ver s o do banco de dados . Retor na a quantidade de memr ia atualmente alocada pelo s er vidor . Obj eto T I B D at abas e, que indicar o banco de dados pr ovedor das infor maes . Retor na o nome do ar quivo de banco de dados . Retor na o nmer o de clas s e do banco de dados . Retor na o nmer o de implementao do banco de dados . Retor na o nome do s ite do banco de dados . Retor na o nmer o S QL D i al ect atualmente utilizado pelo s er vidor . Retor na o nmer o de D el et es ex ecutados des de a ltima conex o com o s er vidor . Retor na o nmer o de r egis tr os r emovidos . Retor na o nmer o de F et ch s r ealizados . I ndica como a gr avao de dados es t s endo r ealizada. 0 par a as s ncr ono e 1 par a s cr ono. Retor na o nmer o de I n s er t s ex ecutados des de a ltima conex o com o s er vidor . Retor na o nmer o de gr avaes efetuadas no bu f f er Retor na, em byt es , a quantidade de memr ia utilizada des de a pr imeir a conex o r ealizada I ndica s e es pao r es er vado par a backup de r egis tr os modificados no banco I ndica o nmer o de bu f f er s alocados Retor na a par te s uper ior da ver s o do OD S Retor na a par te infer ior da ver s o do OD S Retor na o nmer o de byt es alocados por pgina Retor na o nmer o de P u r gi n gs r ealizados Retor na o nmer o de leitur as r ealizadas atr avs de ndices . I ndica quando o banco de dados ou no r ead-on l y Retor na o nmer o de pginas lidas no banco Retor na o nmer o de leitur as s eqenciais r ealizadas nas tabelas do banco Retor na o nmer o de tr ans aes confir madas entr e s w eeps Retor na o numer o de U pdat es ex ecutados des des a ltima conex o com o s er vidor .
Del phi 5
Us er Names Ver s ion Wr ites Retor na em uma lis ta de S t r i n g , os us ur ios conectados no banco de dados . Retor na a ver s o do I n t er bas e. Retor na o nmer o de pginas de dados es cr itas no banco.
T I B S QL Moni t or
Per mite cr iar um log de todas as oper aes e ins tr ues S QL que for am enviadas ao s er vidor . Como o aplicativo S QL Monitor no pode monitor ar as intr ues S QL enviadas pelos componentes I nter bas e(pois tr abalha no nvel da camada B DE), o des envolvedor pr ecis a us ar es te componente par a monitor ar e otimizar a aplicao cliente. O us o des te obj eto muito s imples . No ex is tem pr opr iedades a s er em configur adas , bas ta ins er ir um componente I B S QLMonitor na aplicao(ou em outr o aplicativo). Aps , o us ur io deve configur ar a pr opr iedade T r aceFlags do obj eto Databas e da aplicao cliente, indicando quais s er o os comandos filtr ados pelo obj eto I B S QLmonitor . As ins tr ues S QL podem s er captur adas atr avs do evento OnS QL do obj eto. Es te evento pas s a um par metr o EventT ex t, do tipo s tr ing, indicando o comando enviando par a o s er vidor . Por ex emplo, a aplicao poder ia ter um Lis tB ox par a r eceber as ins tr ues : pr ocedur e T For m1.I B S QLMonitor 1S QL(EventT ex t: S tr ing); begin Lis tB ox 1.I tems .Add(EventT ex t); end; Com es te cdigo, todos os comando enviados ao s er vidor (definidos na pr opr iedade T r aceFlags do obj eto Databas e) s er iam ex ibidos no Lis tB ox .
T I B E vent s
Componente par a utilizar os eventos do I nter bas e. O conceito de eventos no I nter bas e muito inter es s ante: o des envolvedor pode pr ogr amar eventos no banco de dados , que s er o ex ecutados em ins tr ues como I NS E RT , UPDAT E ou DELET E. Es tes eventos podem s er pr ogr amados em T r igger s ou S tor ed Pr ocedur es , e as aplicaes que r egis tr ar em os eventos atr avs do obj eto T I B E vents , r eceber o uma notificao toda vez que algum r egis tr o for ins er ido ou deletado, por ex emplo. Es te obj eto muito til par a cr iar telas de r efr es h automtico. Por ex emplo, um evento poder ia s er cr iado toda vez que um r egis tr o for ins er ido na tabela. T odas as mquinas clientes ir iam r eceber es te evento, e o s oftwar e poder ia s er pr ogr amado par a dar um Refr es h em s uas Quer ys aber tas , cr iando o efeito de Refr es h automtico s em caus ar Over head de CPU. Es te obj eto r oda em um T hr ead s epar ado, e no degr ada a per for mance do s is tema.
Principais Propriedades
Databas e Events Regis ter ed Obj eto T I B Databas e, que r epr es enta o banco de dados atual. Nome dos eventos que s er o r ecebidos pelo obj eto. S e T r ue, indica que o obj eto es tar ativo.
Principais Eventos
OnEventAler t Ocor r e quando algum evento r ecebido pelo obj eto. S etar o par metr o CancelAler ts par a T r ue, indica que o evento r ecebido dever s er ignor ado. Par a r etor nar e r eceber deter minado evento, bas ta chamar o mtodo QueueEvents . Nem todas as oper aes envolvendo obj etos da VCL poder o s er ex ecutadas nes te evento, vis to que ele r oda em um T hr ead s epar ado.
Principais Metodos
CancelEvents QueueEvents Regis ter Events UnRegis ter Events Cancela o r ecebimento dos eventos pendentes . I ndica ao obj eto par a iniciar o r ecebimento dos eventos . Regis tr a os eventos lis tados na pr opr iedade E ven t s . Es te mtodo j ex ecuta o mtodo Qu eu eE ven t s . Cancela o r ecebimento dos eventos lis tados na pr opr iedade E ven t s .
Del phi 5
O s componentes do Q uickReport
Relatr ios cr iados com os componentes QuickRepor t s o bas eados em bandas . Nas bandas podem s er adicionados componentes impr imveis , como ttulos de coluna, valor es de campos de uma tabela, nmer os de pginas e outr os . H mais de dez tipos de bandas difer entes . Cada tipo de banda s e compor ta de for ma dis tinta. Algumas bandas , por ex emplo, s e r epetem em todas as pginas , outr as s o ex ibidas apenas uma vez no r elatr io. H tambm bandas " inteligentes " que ofer ecem r ecur s os par a o agr upamento de dados , por ex emplo. Como a maior ia dos componentes QuickRepor t s o impr imveis , s o ofer ecidos vr ios r ecur s os par a a for matao detalhada e o pos icionamento pr ecis o dos componentes . No r es tante des te captulo ver emos como cr iar dois tipos de r elatr ios comuns : lis tagens e r elatr ios com agr upamento. Ver emos tambm detalhes s obr e os componentes QuickRepor t mais impor tantes .
Cr i ando um r el at r i o s i mpl es
Apr es entamos a s eguir os pas s os neces s r ios par a a cr iao um r elatr io s imples , que lis ta os r egis tr os de uma tabela ou quer y. Par a cr iar um r elatr io s imples (do tipo " Lis tagem" ), cr ie um novo for mulr io e adicione a ele um componente QuickRep. Ligue o componente QuickRep a um DataS et (T able ou Quer y), alter ando a s ua pr opr iedade DataS et. (Voc pode adicionar um T able ou Quer y ao for mulr io do r elatr io)
Defina as bandas que devem s er ex ibidas no r elatr io (pr opr iedade B ands ). As tr s bandas mais impor tantes s o " T itle" , " Column Header " e " Detail" . Alter e as pr opr iedades B ands .Has T itle, B ands .Has ColumnHeader e B ands .Has Detail par a T r ue par a adicionar es tas bandas ao r elatr io. (Vej a a figur a abaix o).
Na banda " T itle" , adicione um componente QRLabel e alter e s ua pr opr iedade Caption par a o ttulo do r elatr io. Alter e tambm a pr opr iedade Font par a des tacar o ttulo.
Del phi 5
Na banda " Column Header " , adicione componentes QRLabel par a os ttulos das colunas que des ej a ex ibir no r elatr io. Alter e a pr opr iedade Caption, como antes , par a definir o tex to a s er ex ibido no componente. (A banda " ColumnHeader " r epetida a cada nova pgina, logo depois do ttulo do r elatr io).
Na banda " Detail" , adicione componentes QRDB T ex t par a cada campo do DataS et a s er ex ibido no r elatr io. (A banda " Detail" a mais impor tante do r elatr io. Es ta banda r epetida par a cada r egis tr o do DataS et ligado ao componente QuickRep). Ligue cada componente QRDB T ex t aos campos adequados , alter ando s uas pr opr iedades DataS et e DataField. Por ex emplo, par a ex ibir o campo " Des cr icao" de uma tabela chamada " T abPr odutos " , alter e DataS et par a " T abPr odutos " e DataField par a " Des cr icao" . Quando um componente QRDB T ex t ligado a um campo de um DataS et, o nome do campo pas s a a s er ex ibido dentr o do componente (vej a a figur a a s eguir ).
Aplique os for matos neces s r ios aos componentes e s bandas . Us e a pr opr iedade Fr ame par a definir linhas de contor no, e a pr opr iedade Font par a definir tipos , es tilos e cor es de fonte. Par a vis ualizar o r elatr io em tempo de des envolvimento, clique com o boto dir eito no componente QuickRep e es colha o comando " Pr eview" . mos tr ada a j anela " Pr int pr eview" , com uma pr - vis ualizao do r elatr io:
Del phi 5
O Component e Qui ck R ep
O componente QuickRep o componente mais impor tante em um r elatr io. Es te componente deve s er adicionado a um for mulr io vazio e ligado a um DataS et (T able ou Quer y). O DataS et pode s er adicionado ao mes mo for mulr io do r elatr io, ou colocado em um DataModule s epar ado. O for mulr io onde adicionado o componente QuickRep pas s a a s er apenas um " r ecipiente" par a o r elatr io es s e for mulr io no deve s er ex ibido dir etamente. Par a ex ibir ou impr imir um r elatr io, s o us ados os mtodos Pr eview e Pr int, do componente QuickRep, como ver emos adiante.
S egue uma des cr io dos s eis tipos de bandas que podem s er adicionados us ando a pr opr iedade B ands : B an da Col u m n H eader D es cr i o A banda Col u m n H eader us ada par a os ttulos das colunas do r elatr io. Nes ta banda ger almente colocado tex to es ttico como nomes de campos us ando o componente QR L abel . Es ta banda s e r epete em todas as pginas do for mulr io, logo abaix o da banda T i t l e. A banda D et ai l (" Detalhe" ) o " cor ao" do r elatr io. Es ta banda r epetida par a cada r egis tr o. Nes ta banda, s o colocados componentes com aces s o a dados , pr incipalmente os componentes QR D B T ex t . A banda P ageF oot er (" Rodap" ) pos icionada na ex tr emidade de baix o de cada pgina do r elatr io (ex ceto, pos s ivelmente, na ltima). Nes ta banda podem s er colocados , por ex emplo, o nmer o da pgina, a data ou a hor a. Par a que a banda PageFooter no apar ea na ltima pgina do r elatr io, alter e par a Fals e a pr opr iedade Options .Las tPageFooter do componente Qu i ckR ep . P ageH eader A banda P ageH eader (" Cabealho" ) pos icionada na ex tr emidade de cima de cada pgina do r elatr io (ex ceto, pos s ivelmente, na pr imeir a pgina). Pode- s e colocar nes s a banda, por ex emplo, o ttulo do r elatr io, a data, ou outr as infor maes r elevantes , que devem s er r epetidas em todas as pginas . Par a que a banda P ageH eader no apar ea na pr imeir a pgina do r elatr io, alter e par a F al s e a pr opr iedade Opt i on s .F i r s t P ageH eader do componente Qu i ckR ep . A banda S u m m ar y (" Res umo" ) us ada ger almente par a ex ibir dados agr egados , como s omas , mdias , ou contagens . Es ta banda ex ibida logo depois da ltima banda D et ai l (com os dados do ltimo r egis tr o). Par a r ealizar os clculos neces s r ios nes s a banda, s o us ados componentes QR E x pr . A banda T i t l e (" T tulo" ) us ada par a ex ibir o ttulo do r elatr io. Es ta banda apar ece apenas uma vez , na pr imeir a pgina, e pos icionada logo depois do cabealho da pgina (s e es te ex is tir ).
D et ai l
P ageF oot er
S u m m ar y
T it le
Del phi 5
em outr a unidade, es pecificada na s eo Other ), podem s er alter adas com pr ecis o. O nmer o de colunas e o es paamento entr e colunas do r elatr io tambm podem s er alter ados .
Na s eo Other , pode- s e a alter ar a fonte e o tamanho de fonte us ados como padr o no for mulr io. A fonte e o tamanho es colhidos aqui tm efeito s obr e todos os componentes do r elatr io, ex ceto aqueles que tiver am s uas fontes alter adas dir etamente. A unidade de medida us ada no r elatr io tambm pode s er alter ada a unidade es colhida deter mina como s o medidas vr ias pr opr iedades dos componentes do for mulr io, como a lar gur a e a altur a, por ex emplo. Na s eo Page Fr ame, pode- s e definir bor das par a as pginas do r elatr io. B or das acima, abaix o, es quer da ou dir eita, e com vr ias cor es e es pes s ur as podem s er definidas . (A cor e a es pes s ur a valem par a todas as bor das ). Na ltima s eo, B ands , pos s vel acr es centar ou r emover bandas do r elatr io (ativando ou des ativando as opes cor r es pondentes ). Pode- s e tambm aj us tar pr ecis amente a altur a de cada banda.
Height
Fr ame
Del phi 5
O Component e QR L abel
O componente QRLabel us ado par a tex tos es tticos , como ttulos ou nomes de campos . A pr opr iedade Caption deter mina o tex to que s er ex ibido no componente. A pr opr iedade Font define as opes de fonte (fonte, es tilo, tamanho e cor ). T r s pr opr iedades r elacionadas deter minam o tamanho e a or ganizao do tex to ex ibido no componente QRLabel. AutoS ize faz com que o QRLabel alter e s ua lar gur a automaticamente, de acor do com o compr imento do tex to. AutoS tr etch faz com que a altur a do componente s ej a aj us tada automaticamente (par a tex tos com mais de uma linha). Wor dWr ap faz com que tex tos longos s ej am quebr ados em vr ias linhas . O efeito des s as tr s pr opr iedades s vezes depende do valor das outr as duas . AutoS tr etch, por ex emplo, s faz s entido quando Wor dWr ap for T r ue. O alinhamento de um componente QRLabel pode s er alter ado us ando as pr opr iedade Alignment e AlignT oB and. Alignment alter a o alinhamento com r elao ao tamanho do componente, da for ma us ual: taLeftJus tify alinha pela es quer da, taRightJus tify pela dir eita, e taCenter pelo centr o. A pr opr iedade AlignT oB and faz com que o alinhamento s ej a feito em r elao banda. S e AlignT oB and for T r ue e Alignment for taRightJus tify, por ex emplo, o QRLabel s er alinhado pela ex tr emidade dir eita da banda.
O Component e QR DB T ex t
O componente QRDB T ex t uma ver s o, com aces s o a bancos de dados , do componente QRLabel. Pr aticamente todas as pr opr iedades do componente QRLabel s e aplicam tambm ao componente QRDB T ex t. Alm des s as , h mais duas pr opr iedades impor tantes : DataS et e DataField. A pr opr iedade DataS et deter mina o T able ou Quer y ligado ao componente QRDB T ex t. A pr opr iedade DataField deter mina o campo da T able ou Quer y, cuj o contedo ex ibido no componente. Note que difer entemente dos componentes Data Contr ols (como o DB T ex t e o DB Edit), o aces s o a dados r ealizado dir etamente e no atr avs de um componente DataS our ce.
O Component e QR S ys Dat a
O componente QRS ys Data us ado par a ex ibir infor maes teis , como a data, a hor a, ou o ttulo do r elatr io. Es te componente muito s emelhante ao componente QRLabel as pr opr iedades de for matao, por ex emplo, s o as mes mas . A pr opr iedade Data deter mina a infor mao ex ibida no componente. Vej a alguns valor es que podem s er atr ibudos pr opr iedade Data: Alter e Data par a... qr s Date, qr s T ime, qr s DateT ime qr s PageNumber qr s Repor tT itle Par a mos tr ar ... A data, a hor a, ou a data e hor a atuais , r es pectivamente. O nmer o da pgina. O ttulo do r elatr io (ex tr ado da pr opr iedade Repor tT itle do componente QuickRep).
O Component e QR E x pr
Com o componente QREx pr , pos s vel r ealizar clculos , ou outr as oper aes no r elatr io. Podem s er calculados totais ou mdias de um campo, por ex emplo. A pr opr iedade Ex pr es s ion deter mina a oper ao r ealizada. A s intax e das ex pr es s es s egue uma s intax e par ecida com a da linguagem S QL. Vej a algumas ex pr es s es vlidas : Pr eco* Quantidade S UM(Pr eco) MI N(T abEs toque.Quantidade) MAX(T abPr odutos .Pr eco) AVERAGE(Pr eco* Quantidade) I F(Pr eco = 0, 'Em es toque', 'For a de es toque') A pr opr iedade Ex pr es s ion pode s er alter ada dir etamente, ou atr avs do " Ex pr es s ion Wizar d" (clique duas vezes ao lado do nome da pr opr iedade par a abr i es te " Wizar d" ). Os componentes QREx pr s o fr eqentemente colocados em bandas do tipo " S ummar y" , par a r ealizar clculos agr egados , como s omas ou mdias , mas podem s er colocados em qualquer tipo de banda.
Del phi 5
Faa o s eguinte: Cr ie um novo for mulr io e adicione a ele um componente QuickRep. Adicione uma banda " Detail" , us ando a pr opr iedade B ands do componente QuickRep. Adicione tambm uma banda QRGr oup, a par tir da paleta de componentes .
Adicione um componente Quer y e alter e a pr opr iedade S QL par a a s eguinte cons ulta S QL: S ELECT Nome, Des cr icao, Quantidade, Pr eco, Pr eco* Quantidade AS T otal FROM Loj as , Es toque, Pr odutos WHERE Loj as .Codigo = Es toque.CodLoj a AND Pr odutos .Codigo = Es toque.CodPr oduto ORDER B Y Nome Vej a a es tr utur a das tabelas us adas na cons ulta:
Alter e par a T r ue a pr opr iedade Active do componente Quer y. I s s o per mite tes tar o r elatr io em tempo de des envolvimento, us ando o comando Pr eview. Ligue o componente QuickRep ao componente Quer y (pr opr iedade DataS et). Na banda " Gr oup Header " (o componente QRGr oup) adicione componentes QRLabel, como na ilus tr ao a s eguir :
Na banda " Detail" , adicione componentes QRDB T ex t par a cada um dos campos a s er em lis tados . Ligue cada um dos componentes Quer y (alter ando a pr opr iedade DataS et) e alter e as s uas pr opr iedades DataField par a os nomes dos campos . Na banda " Gr oup Header " , ao lado de " Loj a" , adicione outr o QRDB T ex t e ligue- o ao campo " Nome" da Quer y (o nome da loj a). Alter e tambm a pr opr iedade Fr ame.Dr awB ottom da banda par a T r ue e a pr opr iedade Width par a 2. A ilus tr ao a s eguir mos tr a os r es ultados das mudanas .
Del phi 5
Par a r ealizar o agr upamento automtico, alter e a pr opr iedade Ex pr es s ion da banda " Gr oup Header " par a " Nome" (s em as as pas ). I s s o faz com que os dados s ej am agr upados por loj a. Finalmente, par a tes tar o r elatr io, clique nele com o boto dir eito e es colha o comando Pr eview. A ilus tr ao a s eguir mos tr a o r elatr io ger ado, com alguns dados de amos tr a:
I m pr i m in do e pr e-vi s u al iz an do r el at r i os
At agor a vimos apenas como ex ibir r elatr ios em tempo de des envolvimento, us ando o comando Pr eview. Relatr ios podem s er tambm ex ibidos e o que mais impor tante impr es s os , em tempo de ex ecuo. tudo muito s imples . Par a pr e- vis ualizar um r elatr io em tempo de ex ecuo, us e o mtodo Pr eview do componente QuickRep do r elatr io. Es s e comando, clar amente deve s er chamado a par tir de um comando de menu, ou de algum outr o componente, em um for mulr io s epar ado (lembr e- s e que o for mulr io que contm o r elatr io no deve s er ex ibido). O cdigo a s eguir mos tr a a pr e- vis ualizao do r elatr io em um for mulr io chamado " RelVendas " : pr ocedur e T For mRelator ios .B tPr eviaClick(S ender : T Obj ect); begin RelVendas .QuickRep1.Pr eview;
Del phi 5
end; Note que foi us ado o nome padr o do componente QuickRep (" QuickRep1" ). Recomenda- s e, no entanto que s e d um nome mais s uges tivo a es s e componente (" Relator io" , por ex emplo). Par a impr imir um r elatr io, us e o mtodo Pr int do componente QuickRep do r elatr io, como no s eguinte cdigo: pr ocedur e T For mPr incipal.Relator ioVendas 1Click(S ender : T Obj ect); begin RelVendas .QuickRep1.Pr int; end;
P al het a S er ver s
Es ta palheta per mite uma conex o COM(Components Obj ect Model) com aplicativos da famlia Office. O Contr ole des tes aplicativos j es tavam dis ponveis no Delphi 4, atr avs de OLE Automation, por m, a inter face COM o mais novo padr o da Micr os oft e, alm de ofer ecer mais poder ao des envolvedor , s er a tendncia dos novos aplicativos par a Windows . A ar quitetur a COM s e bas eia em pequenos obj etos , com funcionalidade pr pr ia, que podem s e conectar a outr os obj etos e for mar o aplicativo. Nes ta vis o, podemos dizer que o Wor d e o Ex cel s o, na ver dade, um gr ande conj unto de obj etos COM inter faceados e for necendo uma s oluo integr ada. Es te obj etos podem s er aces s ados por obj etos COM de outr os aplicativos , e a r eutilizao de funes pode s er cons eguida de uma maneir a muito pr tica.Vamos imaginar , por ex emplo, que es tivs s emos cons tr uindo uma aplicao calculador a cientfica em C+ + . Pr imar iamente, dever amos cons tr uir quatr o obj etos COM: um par a cada oper ao matemtica bs ica (s omar , diminuir , multiplicar e dividir ). Com es tes quatr o obj etos , poder iamos pr os s eguir e cr iar mais quatr o: fator ial, por centual, s eno e cos s eno. T er amos uma famlia de obj etos COM par ecida com a ilus tr ao abaix o:
Soma Multiplica o
Subtrao Diviso
Pas s o 1: Cr iao dos obj etos bs icos . Pas s o 2: Cr iao de novos obj eto a par tir dos obj etos bas cos .
Com a calculador a cr iada, imaginemos agor a que iniciar emos a cons tr uo de um aplicativo contbil em Delphi. Cer tamente ir emos pr ecis ar das funes imbutidas na calculador a, mas no quer emos r ees cr ever o cdigo. T er amos tr s opes :
Fatorial
Soma Multiplicao Subtrao Diviso
Percentual Cosseno
Seno
Cr iar uma DLL em C com as funes da calculador a ex por tadas ; Cr iar um obj eto .OCX contendo as funcoes da calculador a; Utilizar os obj etos COM do aplicativo calculador a dir etamente da aplicao DELPHI ; Nes te cas o, a opo 3 ofer ece as vantagens : No cas o da DLL, s e alguma funo fos s e includa, dever amos nos pr eocupar em atualizar tanto a DLL quanto a aplicao cliente, vis to que es ta pr ecis a de um header par a impor tar as funes . Outr o pr oblema s e r efer e a memr ia, pois a DLL s er ia car r egada uma vez par a cada pr oces s o. I s to tambem vale par a a OCX, j que cada pr oces s o cr ia uma ins tncia completa da OCX em ques to. J ao utilizar mos o obj eto COM dir etamente do aplicativo calculador a, ter amos maior facilidade par a manuteno, j que no pr ecis ar amos declar ar header s nas aplicaes clientes . Outr o ponto pos itivo s e deve ao fato de que apenas os obj etos neces s r ios s er iam ins tanciados , e no todo o aplicativo (a DLL e a OCX s er iam car r egadas por completo na memr ia, mes mo que es tivs s emos utilizando apenas uma par te do todo). Podemos tambm ofer ece a calculador a como um obj eto dis tr ibuido (DCOM Dis tr ibuted COM), e ins talar o aplicativo apenas no s er vidor . As mquinas clientes ir iam s e conectar ao obj eto COM atr avs da LAN, e des ta for ma, ao atualizar alguma das funes do obj eto, dever amos apenas atualizar a calculador a no s er vidor , nada mais . A palheta S er ver s ofer ece a funcionalidade COM dos aplicativos da famlia Office. Entendemos is to como: MS Wor d, MS E x cel, MS Power Point, Ms B r inder , MS Outlook e MS Acces s . E impor tante notar que qualquer outr o aplicativo ou obj eto COM pode s er aces s ado atr avs do Delphi, por m via cdigo. A funcionalidade COM dos
Del phi 5
aplicativos Office muito ex tens a, e o obj etivo des ta apos tila no o de s er uma r efer ncia s obr e o as s unto. S egue abaix o alguns ex emplos pr ticos s obr e o us o des ta palheta: I nicializando o Wor d - I ns ir a um componente T Wor dApplication e utilize o codigo: Wor dApplication1.Connect; Wor dApplication1.Vis ible : = T r ue; Abr indo um documento em br anco no Wor d - I ns ir a um obj eto T Wor dDocument, e ex ecute o metodo NewI ns tance: Wor dDocument1.Activate; //Ex ibe o aplicativo Wor d (no e neces s ar io) Wor dDocument1.NewI ns tance; //Cr ia um novo documento I ns er indo tex to no final do ar quivo: var T ex to : WideS tr ing; begin T ex to : = 'Wor kS hop Delphi 5 Novos Eecur s os ' + chr (13)+ chr (10)+ 'www.clubedelphi.com.br '; Wor dDocument1.Content.I ns er tAfter (t); end; S ubs tituindo uma palavr a - Nes te cas o, a palavr a de indice 2 s er a s ubs tituida pela s tr ing B or land Delphi. Wor dDocument1.Wor ds .I tem(2).T ex t: = 'B or land Delphi'; Alter ando a for matao de uma palavr a - I ns ir a um obj eto T Wor dFont e um T Wor dDocument. Em s eguida, digite o codigo: var T : WideS tr ing; begin Wor dFont1.ConnectT o(Wor dDocument.Content.Font); Wor dFont1.B old: = 1; Wor dFont1.I talic: = 1; Wor dDocument1.Content.I ns er tAfter (t); //o tex to s er a ins er ido com a for matacao negr ito e italico End; I ns er indo tex to no meio de um ar quivo: var T : WideS tr ing; begin T : = 'Clube Delphi'; //Es te comando ir a ins er ir a s tr ing 'Clube Delphi' apos a s egunda palavr a Wor dDocument1.Wor ds .I tem(2).I ns er tAfter (t); end; I ns er indo uma figur a dentr o do ar quivo: var for mato : Wor d; Data : T Handle; Palette: HPALET T E; begin I mage1.Pictur e.S aveT oClipB oar dFor mat(For mato,Data,Palette); //copia o conteudo do obj eto image par a o clipboar d ClipB oar d.S etAs Handle(For mato,Data); Wor dDocument1.Content.Pas te; //cola a ar ea de tr ans fer encia dentr o do documento end;
Del phi 5
Cont r ol P anel Appl et
Ar quivos .CPL agor a podem s er facilmente cr iados com o Delphi. Ar quivos CPL (Contr ol Panel Ex tens ion) nada mais s o do que os aplicativos r econhecidos pelo Windows como contedo do Painel de Contr oles . Um ar quivo CPL pos s ui a mes ma es tr utur a de um ar quivo ex ecutvel, por m, s eu cabealho difer ente.
Vej amos como cr iar uma aplicao CPL: V no Obj ect Repos itor y e s elecione Contr ol Panel Application; Repar e que um obj eto T AppletModule s er ex ibido:
Cr ie agor a o for mulr io que s er chamado pela aplicao, atr avs do menu File, New for m. S elecione o obj eto AppletModule1 e alter e o s eu evento OnActivate: pr ocedur e T AppletModule1.AppletModuleActivate(S ender : T Obj ect; Data: I nteger ); begin For m1.S howModal; end; Alter e as pr opr iedades do obj eto AppletModule1 de acor do com a tabela abaix o: AppletI con Caption Help cone que s er ex ibido no Painel de Contr ole. S elecione algum ar quivo .I CO do dir etr io de imagens do Delphi. T ex to que ir apar ecer abaix o do cone, r epr es entando o nome da aplicao. Digite T es te. T ex to que s er ex ibido na bar r a de s tatus do painel de contr ole. Digite Aplicao de tes te.
Del phi 5
Em s eguida, s alve o pr oj eto. Clique com o boto dir eito s obr e o obj eto AppletModule1 e s elecione a opo I ns tall Contr ol Panel Applet, par a que a aplicao s ej a copiada par a o dir etr io S ys tem do Windows . Abr a o Painel de Contr ole e tes te o s eu aplicativo! N ot a: O pr oces s o de ins talao do aplicativo no Painel de Contr ole s e limita apenas cpia do ar quivo .CPL par a o dir etr io S ys tem do Windows . Nenhum tipo de alter ao no r egis tr o neces s r io. O mes mo vale par a a des ins talao do aplicativo.
Principais Eventos
OnActivate OnI nquir y OnS top OnS tar tWPar ams OnCr eate OnDes tr oy Ocor r e quando o us ur io inicia a aplicao atr avs do painel de contr ole. Ocor r e quando o Windows (Painel de Contr ole) l as infor maes de r ecur s o do aplicativo, como cones , tex tos e outr os . Ocor r e quando o Windows (Painel de Contr oles ) inicia o pr oces s o de S hutDown do aplicativo. Ocor r e quando o aplicativo iniciado por outr o aplicativo, e no pelo us ur io. Ocor r e quando o AppletModule ins tanciado. Ocor r e quando o AppletModule r emovido da memr ia.
I nt er net E x pr es s
Es ta palheta vem adicionar um r ecur s o muito inter es s ante par a o des envolvedor Delphi: o fato de poder ex por tar dados em for mato XML. A XML (Ex tended Mar kup Language) uma ex tens o da HT ML, e tr az vr ias melhor ias no s entido de per for mance e flex ibilidade. Uma das pr incipais difer enas par a quem tr abalha com banco de dados , que a XML buffer iza os dados no B r ows er , no neces s itando ex ecutar um pes ado Reques t a cada movimentao de r egis tr o feita pelo us ur io. Enviar e r eceber dados em pacotes XML uma tar efa que
Del phi 5
tambm neces s ita de uma camada MI DAS par a captur a da infor mao no banco de dados . Note a difer ena de camadas em uma aplicacao I S API nor mal e uma aplicacao I S API XML:
Servidor WEB
Aplicao CGI
Pedido (Request)
Vamos cr iar pas s o a pas s o uma aplicao par a pr over infor maes em pacotes XML: Pr imeir amente, devemos cr iar o pequeno s er vidor MI DAS que ir bus car as infor maes no banco de dados . Cr ie um novo pr oj eto no Delphi, dentr o da nova aplicao, abr a o Repos itr io de Obj etos ; S elecione a aba MultiT ier ; Clique duas vezes s obr e o item Remote Data Module, que a j anela a s eguir ir apar ecer ;
Confir a na tabela abaix o o s ignificado das opes : CoClas s Name I ns tancing Nome da clas s e que s er r egis tr ada no Windows ; I ndica como o Datamodule s er ins tanciado. Os pos s veis valor es s o: I nter nal Cr ia a ins tncia do DataModule dentr o do pr pr io pr oces s o. Recomendvel quando o s er vidor que es tiver s endo cons tr udo for uma DLL; S ingle I ns tanceUma ins tncia da aplicao s er cr iada par a cada cliente conectado; Multiple I ns tance Apenas uma ins tncia da aplicao s er cr iada. Uma ins tncia do DataModule s er cr iada par a cada cliente conectado, por m, dentr o do es pao de pr oces s o da aplicao. T hr eading Model Utilizado apenas quando o Remote Data Module es t s endo cr iado dentr o de uma DLL. Confir a os pos s veis valor es : S ingle S omente uma r equis io s er pr oces s ada por vez. As demais per manecer o em fila; Apar tment O Datamodule1 ins tanciado par a cada r equis io do cliente. Nes ta s ituao, os dados es to s egur os , pois todos os aces s os s er o s afe- thr ead, ou s ej a, livr e de conflitos de memr ia. Es ta opo r ecomendvel par a aplicaes que utilizem o B DE; Fr ee Es te thr ead T er um compor tamento par ecido com Apar tment, por m, nes te cas o, os dados no es tar o T hr ead- S afe. As concor r ncias dever o s er tr atadas par a que um conflito de aces s o a memr ia no ocor r a;
Del phi 5
B oth I gual a opo Fr ee, por m, o r etor no par a o cliente s er feito em fila, e no em thr eads . B as eado nis to, vamos configur ar a caix a de dilogo confor ma a tabela abaix o: CoClas s Name I ns tancing T r ead Model COMidas S er ver Multiple I ns tance Apar tment
Pr imeir amente, devemos colocar um obj eto T S es s ion, que ir contr olar as aes de vr ios us ur ios concor r entes dentr o da aplicao. impor tante tambm configur ar a pr opr iedade AutoS es s ionName par a T RUE. Es ta pr opr iedade ir cr iar um nome de s eo difer ente par a cada us ur io conectado na aplicao. Aps , um obj eto Databas e deve s er ins er ido no DataModule1. Configur e cor r etamente o obj eto databas e par a que aponte par a o alias DB DEMOS . E , em s eguida, coloque um obj eto T table no DataModule. Linke o table com o obj eto Databas e e aponte- o par a a tabela Animals . Devemos agor a ins er ir o obj eto que ir a pr over os dados par a a aplicacao XML. Es te obj eto s er da clas s e T dataS etPr ovider , e ele s e encontr a na palheta MI DAS . Coloque um obj eto DataS etPr ovider e configur e- o de acor do com a tabela abaix o: DataS et Name T able1 Pr ovider Animals
E OK ! S alve a aplicao e ger e o ex ecutvel. A par tir des te momento ter emos um s er vidor midas ins talado na maquina. Devemos agor a cr iar a aplicacao XML, que ir r ecuper ar os dados atr avs do s er vidor MI DAS e for nec- los par a a mquina cliente atr avs do pr otocolo HT T P. Cr ie uma nova aplicao no Delphi. Abr a o r epos itr io de obj etos e s elecione a opo Web S er ver Application. A j anela de s eleo Web S er ver Application s er ex ibida:
A aplicao s er ger ada em for ma de DLL. Es ta opo ir ofer ecer melhor des empenho e menos cons umo de memr ia. A aplicao s er ger ada em for ma de ex ecutvel (.EXE). Es ta opo, apes ar de s er bem pr tica, ofer ece des empenho infer ior ao I S API . Var iao do CGI cr iada par a s er utilizada em s er vidor es Windows 16 bit.
Del phi 5
S elecione a opcao I S API e d OK . Um novo obj eto T webModule s er ex ibido:
Pr imeir amente, coloque um obj eto T DCOMConnection (palheta MI DAS ). Es te obj eto ir r ealizar a conex o com nos s o s er vidor MI DAS . Configur e s uas pr opr iedades de acor do com a tabela abaix o: S er ver Name Computer Name Connected Nome do s er vidor Midas a s er conectado Deve s er pr eenchido apenas quando o s er vidor midas no es tiver local. Nes te cas o, o nome da mquina onde o s er vidor es t ins talado deve s er as s inalado nes ta pr opr iedade T RUE
Em s eguida, ins ir a dois obj etos T XMLB r oker (palheta MI DAS ) dentr o do WebModule. Es te obj eto ir r ecuper ar os dados das tabelas contidas dentr o do s er vidor . Configur e s uas pr opr iedades de acor do com a tabela abaix o: Name RemoteS er ver Pr ovider Name XMLB r oker 1 Obj eto T DCOMConnection, que r epr es enta a conex o com o s er vidor MI DAS . S elecione DCOMConnection1 Nome do obj eto DataS etPr ovider que r epr es enta as tabelas ex por tadas pelo s er vidor MI DAS . S elecione Pr ovider Animals . XMLB r oker 2 DCOMConnection1 Pr ovider Clients
Em s eguida, devemos ins er ir a ltima clas s e r equer ida, T midas PagePr oducer . Es te obj eto ir cr iar a pgina XML bas eada nos dados da tabela. I ns ir a um obj eto T midas PagePr oducer no for mulr io. S elecione o obj eto Midas PagePr oducer 1 e d um clique duplo s obr e a pr opr iedade WebPageI tems do obj eto. O Editor HT ML s er ex ibido:
Clique com o boto dir eito s obr e o item Midas PagePr oducer 1 e s elecione a opo New Component.Em s eguida, es colha Datafor m. Aps , clique com o boto dir eito s obr e o novo item, DataFor m. Des ta vez, s elecione Datagr id. S elecione o novo item, DataGRid1 e configur e s ua pr opr iedade XMLB r oker par a o nome do obj eto XMLB r oker que ir pr over os dados conver tidos em XML. Nes te cas o, s elecione XMLB r oker 1. Repar e que o DbGr id j ir ex ibir o ttulo das colunas . O ltimo pas s o cr iar uma ao par a ex ecutar es te Midas PagePr oducer . Clique com o boto inver s o no obj eto WebDataModule e s elecione a opo actions editor . No editor de aes , cr ie uma nova ao atr avs do boto New Action. Um obj eto T webAction s er cr iado. Configur e s uas pr opr iedades de acor do com a tabela abaix o:
Del phi 5
Default Pr oducer PathI nfo T RUE. I s to ir ex ecutar es t quando o us ur io digitar o nome do aplicativo no br ows er , s em nenhum par metr o. Ex : www.clubedelphi.com.br /pr oj ect1.ex e Nome do obj eto r es pons vel pela r epos ta ao cliente. Nes te cas o, s er o obj eto Midas PagePr oducer 1, que r etor nar uma pgina XML par a o cliente. Par metr o que o us ur io dever digitar na URL par a ex ecutar es ta ao. Como es ta a ao default, no neces s r io infor mar es ta pr opr iedade
E Ok! Compile o pr oj eto, e r epar e que o aplicativo pr oj ect1.dll s er adicionado no dir etr io da aplicao. O pr x imo pas s o copiar o aplicativo par a algum dir etr io de aplicaes do s er vidor WEB . No dir etr io da aplicao, alguns ar quivos JavaS cr ipt dever o s er copiados . Es tes ar quivos es to no dir etr io < Delphi> \S our ce\WebMidas : Xmldb.j s Xmldis p.j s Xmldom.j s Xmler r dis p.j s Xmls how.j s impor tante notar que o s er vidor WEB dever es tar cor r etamente configur ado e aj us tado par a que a aplicaco funcione de for ma es tvel.
Del phi 5