Você está na página 1de 140

Del phi 5

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

Estrutura de um aplicativo no Delphi_____________________________________________11 Trabalhando com Projetos ____________________________________________________11

Arquivos gerados pelo Delphi __________________________________________________15

Componentes e seus conceitos bsicos __________________________________________16

Formulrios e Caixas de Dilogo _______________________________________________23

Del phi 5
Controlando a criao dos formulrios_________________________________________________________ 28 Imprimindo formulrios _____________________________________________________________________ 28 Utilizando o objeto TFrame__________________________________________________________________ 29 Caixas de dilogo predefinidas_______________________________________________________________ 30

Trabalhando com menus _____________________________________________________32

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

Componentes visuais comuns _________________________________________________35

A linguagem Object Pascal ____________________________________________________46

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

O depurador integrado _______________________________________________________72

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

Trabalhando com bancos de dados no Delphi: uma viso geral________________________77

Introduo ao Acesso a bancos de dados ________________________________________79

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

Principais Propriedades ____________________________________________________________________________________ 115 Principais Eventos ________________________________________________________________________________________ 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

TADOQuery __________________________________________________________________________ 117

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

TIBDatabaseInfo_______________________________________________________________________ 123 TIBSQLMonitor________________________________________________________________________ 124 TIBEvents ____________________________________________________________________________ 124

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

Principais Propriedades ____________________________________________________________________________________ 135 Principais Eventos ________________________________________________________________________________________ 135

Del phi 5

OA mbiente de Desenvolvimento do Delphi 5.0


O Delphi ofer ece um ambiente vis ual de des envolvimento r ico e ver s til. Os que nunca us ar am outr o ambiente vis ual de des envolvimento como o Delphi (Vis ual B as ic, Vis ual C+ + , Power B uilder , etc.) podem es tr anhar inicialmente a or ganizao vis ual do ambiente. Difer entemente de aplicativos comuns , como o Wor d e o Ex cel da Micr os oft, o Delphi no uma aplicativo MDI (com uma j anela pr incipal capaz de conter vr ias j anelas s ecundr ias ). O ambiente do Delphi compos to por vr ias j anelas independentes que podem s er s obr epos tas e r eor ganizadas livr emente na tela.

O am bi en t e de des envolvi m ent o do D el ph i

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).

Mos t r an do/ es con den do par t es da bar r a de f er r am en t as

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.

Adici on an do bot es bar r a de f er r am ent as

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

ABarrade Menus e os Menus de atalho


Na bar r a de menus es to todos os comandos que podem s er chamados no Delphi. A bar r a de menus us ada, nor malmente, apenas par a comandos pouco comuns . Os comandos mais comuns (como s alvar um ar quivo ou compilar um pr oj eto, por ex emplo), podem s er chamados mais r apidamente us ando teclas de atalho, ou us ando os botes da bar r a de fer r amentas . Os menus de atalho (chamados com o boto dir eito do mous e) s o muito us ados no Delphi. H menus de atalho as s ociados a pr aticamente todas as par tes do ambiente de des envolvimento.

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.

Navegando pelo ambiente


Dur ante o des envolvimento de um aplicativo no Delphi, s o cr iadas muitas j anelas . O Delphi ofer ece vr ios r ecur s os par a navegar entr e es s as j anelas . Par a alter nar entr e um for mulr io e a Unit as s ociada, r ealize uma das s eguintes aes , pr es s ione F12, ou es colha o comando View | T oggle For m /Unit, ou clique no boto T oggle For m/Unit na bar r a de fer r amentas (vej a figur a a s eguir ).

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.

Estruturade umaplicativo no Delphi Formulrios e Units


T oda a par te vis ual e toda a inter ao com o us ur io de um for mulr ios . Par a cada for mulr io adicionado a um aplicativo, o (tr aduo liter al: " Unidade" ) um pr ogr ama completo em Obj ect no Delphi. As Units contm as declar aes (o nome e o tipo) de par a os eventos definidos par a es s es componentes . aplicativo cr iado no Delphi bas eada nos Delphi cr ia uma Unit as s ociada. Uma Unit Pas cal, a linguagem de pr ogr amao us ada cada componente no for mulr io, e o cdigo

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.

Oque o arquivo de projeto


Par a cada pr oj eto, o Delphi mantm um ar quivo de pr oj eto. O ar quivo de pr oj eto um ar quivo tex to comum es cr ito em Obj ect Pas cal, que contm infor maes s obr e todas as par tes de um pr oj eto. Um ar quivo de pr oj eto cr iado automaticamente quando o Delphi inicializado, ou quando um novo pr oj eto cr iado. Par a cada pr oj eto, por maior que s ej a, h apenas um ar quivo de pr oj eto. Quando voc compila um pr oj eto no Delphi, o ar quivo de pr oj eto o pr imeir o a s er compilado. A par tir dele, o Delphi s abe ex atamente quais for mulr ios , Units e outr os obj etos devem s er compilados tambm, par a ger ar o ar quivo final do aplicativo (em ger al, um ar quivo ex ecutvel). Outr a funo impor tante do ar quivo de pr oj eto contr olar a or dem de cr iao dos for mulr ios , como ver emos depois .

Visualizando e entendendo o arquivo de projeto


O ar quivo de pr oj eto no mos tr ado automaticamente no Editor de Cdigo. Par a vis ualizar o ar quivo de pr oj eto do pr oj eto atual, us e o comando Pr oj ect | View S our ce.

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.

A lterando o arquivo de projeto


A no s er em cas os es peciais , o ar quivo de pr oj eto no deve s er alter ado manualmente. Ele atualizado automaticamente pelo Delphi quando s o feitas alter aes no pr oj eto (quando um for mulr io adicionado, por ex emplo). As alter aes no ar quivo de pr oj eto, quando neces s r ias , devem s er feitas atr avs do Pr oj ect Manager , ou us ando o comando Pr oj ect | Options . H um gr ande nmer o de detalhes e opes que podem s er definidas .

Del phi 5

Usando o Project Manager


O Pr oj ect Manager (Ger enciador de Pr oj etos ) uma fer r amenta til que d aces s o a todos os for mulr ios e Units de um pr oj eto. O us o do Pr oj ect Manager es pecialmente impor tante par a pr oj etos complex os , com muitas Units e for mulr ios . Par a ex ibir o Pr oj ect Manager , us e o comando View | Pr oj ect Manager . A ilus tr ao a s eguir mos tr a o Pr oj ect Manager par a um pr oj eto de tamanho mdio.

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 .

Usando Project G roups


O Delphi 4.0 intr oduziu os Pr oj ect Gr oups (Gr upos de Pr oj etos ), que per mitem tr abalhar com vr ios pr oj etos ao mes mo tempo. Os Pr oj ect Gr oups s o teis par a aplicativos complex os , com vr ios ar quivos ex ecutveis , ou com vr ias DLLs (bibliotecas de funes ). Os Pr oj ect Gr oups facilitam a compilao e a depur ao de conj untos de pr oj etos r elacionados . O cdigo de um pr oj eto, por ex emplo, pode s er copiado facilmente par a outr o pr oj eto do mes mo Pr oj ect Gr oup.

U m P r oj ect Gr ou p com doi s pr oj et os , exi bi do n o P r oj ect Manager

Del phi 5

Salvando umProject G roup


Par a cada Pr oj ect Gr oup, o Delphi mantm um ar quivo com a ex tens o .B PG. Es te ar quivo, no entanto, s es cr ito no dis co quando s alvo ex plicitamente pelo pr ogr amador . Par a s alvar o ar quivo do Pr oj ect Gr oup, abr a o Pr oj ect Manager (View | Pr oj ect Manager ), clique com o boto dir eito no nome do Pr oj ect Gr oup (o pr imeir o nome ex ibido) e es colha o comando S ave Pr oj ect Gr oup. N OT A: S e voc us ar o comando File | S ave all par a s alvar todos os ar quivos de um pr oj eto, o ar quivo do Pr oj ect Gr oup s er s alvo tambm.

A dicionando e removendo projetos emumProject G roup


Pode- s e adicionar novos pr oj etos , ou pr oj etos j ex is tentes a um Pr oj ect Gr oup. Par a adicionar um novo pr oj eto, us e o comando Pr oj ect | Add New Pr oj ect. Es te comando abr e a caix a de dilogo New I tems , onde pode s er es colhido o tipo de pr oj eto. Par a adicionar um pr oj eto ex is tente, us e o comando Pr oj ect | Add Ex is ting Pr oj ect e es colha o pr oj eto a s er adicionado (ar quivo .DPR). Par a r emover um pr oj eto de um Pr oj ect Gr oup, neces s r io us ar o Pr oj ect Manager (no h comando de menu par a is s o). No Pr oj ect Manager , s imples mente clique no nome do pr oj eto a s er r emovido e pr es s ione DELET E. Outr a maneir a us ar o boto Remove da bar r a de fer r amentas do Pr oj ect Manager . Note que um pr oj eto no apagado quando r emovido de um Pr oj ect Gr oup. Vale notar , tambm, que um mes mo pr oj eto pode fazer par te de vr ios Pr oj ect Gr oups difer entes .

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 e executando projetos


Pode- s e compilar e ex ecutar um pr oj eto a qualquer momento dur ante o des envolvimento (contanto que no haj a er r os no cdigo, clar o). H vr ias maneir as de compilar um pr oj eto no Delphi. A ex ecuo tambm pode s er r ealizada de vr ias for mas . pos s vel ver ificar s e os ar quivos de um pr oj eto contm er r os de s intax e. Es s e pr ocedimento muito r pido, por que o Delphi no pr ecis a ger ar um ar quivo final. Par a ver ificar a s intax e de todos os ar quivos do pr oj eto atual, es colha o comando Pr oj ect | S yntax Check [ nome do pr oj eto] . O Delphi ver ifica a s intax e e mos tr a os er r os r es ultantes em uma nova j anela. S e no houver er r os , volta ao es tado anter ior . No ex ibida nenhuma mens agem.

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.

Os com andos de com pil ao ( par a um pr oj et o ch am ado " E dit or " )

C ompilando Project G roups


pos s vel compilar todos os pr oj etos de um Pr oj ect Gr oup. Par a is s o, us e os comandos Pr oj ect | Compile All Pr oj ects e Pr oj ect | B uild All Pr oj ects . Es s es dois comandos funcionam de for ma s emelhante aos comandos Pr oj ect | Compile e Pr oj ect | B uild, com a difer ena de que compilam todos os pr oj etos do Pr oj ect Gr oup, e 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] .

E x em pl o de i nf or m aes de com pil ao par a um pr oj et o

Executando o aplicativo gerado


Depois de compilar um pr oj eto, voc pode ex ecutar o aplicativo ger ado de dentr o do Delphi, par a tes t- lo. Voc pode tambm ex ecutar o aplicativo de for a do Delphi, us ando o Ex plor er do Windows , por ex emplo. A vantagem de ex ecutar o aplicativo de dentr o do Delphi, que o Delphi capaz de identificar e inter ceptar os er r os que ocor r er em dur ante a ex ecuo do aplicativo. Par a ex ecutar o aplicativo ativo a par tir do Delphi: Es colha o comando Run | Run, ou pr es s ione F9. S e o pr oj eto tiver s ido alter ado depois da ltima compilao, o Delphi compila novamente o pr oj eto. S e for em encontr ados er r os , eles s o ex ibidos na par te de baix o do Editor de Cdigo, e o aplicativo no ex ecutado.

A rquivos gerados pelo Delphi


Um pr oj eto no Delphi cons titudo de ar quivos de vr ios tipos . Nas s ees anter ior es , mencionamos dois dos mais impor tantes : o ar quivo de pr oj eto (ex tens o .DPR) e as Units (ex tens o .PAS ). Outr os ar quivos muito impor tantes ger ados s o os ar quivos de des cr io de for mulr io (ex tens o .DFM). Os ar quivos .DPR, .PAS e .DFM cons tituem o ver dadeir o " cdigo fonte" do pr ogr ama e s o (ger almente) os nicos ar quivos impr es cindveis par a a ger ao do aplicativo final. Vr ios outr os ar quivos s o ger ados na pr imeir a compilao do pr oj eto, como os ar quivos .RES , .CFG e .DOF.

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

A rquivos .RES, .DO F e .C FG


Os ar quivos .RES , s o ger ados automaticamente pelo Delphi. Es s es ar quivos contm, por ex emplo, o cone do aplicativo, imagens , cur s or es e outr os r ecur s os r elacionados ao Windows . A alter ao e o us o dir eto dos ar quivos .RES es t alm do es copo des te cur s o bs ico. Os ar quivos .DOF e .CFG, tambm ger ados automaticamente, s o us ados par a manter infor maes s obr e opes do compilador e do linkeditor . Es s es ar quivos s o alter ados indir etamente us ando o comando Pr oj ect | Options . Os ar quivos .DOF e .CFG nunca devem s er alter ados dir etamente.

C omponentes e seus conceitos bsicos


Os componentes s o a par te mais impor tante da maior ia dos aplicativos cr iados no Delphi. O Delphi ofer ece uma gr ande quantidade de componentes . Componentes podem s er us ados par a cons tr uir aplicativos completos r apidamente, algumas vezes com poucos cliques do mous e.

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.

Al t er ando pr opr i edades em t empo de des envol vi ment o


As pr opr iedades de um componente que podem s er alter adas em tempo de des envolvimento s o lis tadas na par te es quer da do Obj ect I ns pector . Na par te dir eita do Obj ect I ns pector , s o lis tados os valor es par a cada pr opr iedade. H vr ios tipos de pr opr iedades no Delphi. As pr opr iedades mais comuns s o as com valor es numr icos ou s tr ings . Par a alter ar es s e tipo de pr opr iedade, s imples mente digite um novo valor ou s tr ing, ao lado do nome da pr opr iedade.

P r opr iedades n um r icas e s t r i n gs

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 ).

U m a pr opr iedade com um a li s t a de opes

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 .

E x em pl os de pr opr iedades e s u bpr opr i edades com pos t as

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.

Al t er ando pr opr i edades em t empo de ex ecuo


As pr opr iedades de um componente podem tambm s er alter adas em tempo de ex ecuo. Es s as alter aes devem s er feitas us ando pr ogr amao. H algumas pr opr iedades que s podem s er alter adas us ando pr ogr amao. Es s as pr opr iedades no s o lis tadas no Obj ect I ns pector e por tanto s es to aces s veis a par tir de pr ogr amas . Alter ar uma pr opr iedade de um componente us ando pr ogr amao s imples . O s eguinte tr echo de cdigo alter a o ttulo de um for mulr io chamado " For m1" par a " Pr incipal" e depois des abilita um boto chamado " B utton1" , alter ando s ua pr opr iedade Enabled par a Fals e. For m1.Caption: = Pr incipal; B utton1.Enabled: = Fals e; Comandos des s e tipo s o os comandos mais s imples e mais us ados no Delphi. S o chamados de atr ibuies (como em outr as linguagens de pr ogr amao). Nes s e cas o, o lado es quer do da atr ibuio define o componente e a pr opr iedade que s er alter ada (s epar ados por pontos ). No lado dir eito es pecificado o valor . Note que o s mbolo par a a atr ibuio de Obj ect Pas cal difer ente da maior ia das outr as linguagens (: = ).

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.

As s oci ando cdi go a um event o


Os eventos dis ponveis par a um componente s o lis tados na pgina Events do Obj ect I ns pector . Par a muitos componentes , a lis ta de eventos ex tens a. No entanto, s omente poucos eventos s o us ados com fr equncia. H tr s for mas bs icas par a adicionar eventos a um componente: Clicar duas vezes no componente: is s o alter a o evento padr o do componente. O evento padr o ger almente o mais us ado. Par a o componente B utton, por ex emplo, o evento padr o OnClick, que ocor r e quando o boto clicado. O Delphi mos tr a o Editor de Cdigo, j com um " es queleto" do cdigo par a o evento. Vej a um ex emplo des s e es queleto: pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); begin | end;

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).

A dicionando componentes aumformulrio


H vr ias tcnicas par a adicionar componentes a um for mulr io. Apr es entamos todas elas a s eguir . Par a adicionar um componente a um local es pecfico do for mulr io: Es colha o componente a s er adicionado, na paleta de componentes (mude par a a pgina da paleta que contm o componente, s e neces s r io). Clique no for mulr io, no local onde des ej a adicionar o componente. O componente adicionado no local clicado. Par a adicionar um componente ao centr o do for mulr io: Na paleta de componentes , clique duas vezes no componente. S e j houver outr os componentes no for mulr io, outr os componentes adicionados us ando es s e mtodo s o colocados um pouco abaix o e dir eita do ltimos adicionados . I s s o gar ante que os componentes no " des apar eam" uns por tr s outr os . Par a adicionar vr ias cpias de um mes mo componente: Na paleta de componentes , clique no componente s egur ando a tecla S HI FT . Clique no for mulr io (vr ias vezes ) nos locais des ej ados . No neces s r io s elecionar novamente o componente, antes de cada clique. Quando ter minar , clique novamente no componente (na paleta de componentes ) par a des ativ- lo. Par a definir o tamanho de um componente no momento em que adicionado: Na paleta de componentes , clique no componente. No for mulr io, ar r as te par a definir o tamanho des ej ado par a o componente. Par a adicionar um componente s em us ar a paleta de componentes Chame o comando View | Component Lis t. Uma caix a com todos os componentes dis ponveis , lis tados em or dem alfabtica ex eibida (vej a a figur a).

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 .

S el eci onando e r edi mens i onando component es


Par a fazer alter aes em um componente, neces s r io pr imeir o s elecion- lo. Vej a as maneir as mais comuns . Par a s elecionar um nico componente em um for mulr io, r ealize uma das s eguintes oper aes : Clique no componente. Clique em uma r ea vazia do for mulr io e em s eguida us e T AB par a alter nar par a o componente. S elecione o nome do componente na lis ta localizada na par te de cima do Obj ect I ns pector (vej a a ilus tr ao a s eguir ).

N a par t e de cim a do Obj ect I n s pect or s o li s t ados os n om es de t odos os com ponent es no f or m ul r i o.

S el eci on e um com pon en t e da li s t a par a s el eci on -lo n o f or m ul r i o

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 .

Duplicando e transferindo componentes


No Delphi, no h um comando que per mita duplicar um componente dir etamente. Par a fazer is s o, neces s r io us ar os comandos Copy, Cut e Pas te do menu Edit, ou as teclas de atalho cor r es pondentes . Quando um componente duplicado des s a maneir a, a cpia r es ultante mantm as mes mas pr opr iedades que o componente or iginal e continua as s ociada aos mes mos eventos . A nica difer ena entr e a cpia e o or iginal a s ua pr opr iedade Name, que mudada automaticamente pelo Delphi quando o componente copiado. (Dois componentes no podem ter o mes mo nome em um for mulr io). Par a duplicar um ou mais componentes em um for mulr io, s elecione os componentes e es colha o comando Edit | Copy (ou pr es s ione CT RL+ C). Clique em um local vazio do for mulr io e es colha o comando Edit | Pas te (CT RL + V). Os componentes s o copiados e s o pos icionados ligeir amente abaix o e dir eita dos componentes or iginais . Pode- s e tambm us ar os comandos do menu Edit par a tr ans fer ir componentes de um for mulr io par a outr o, ou par a dentr o de um componente de agr upamento (como um Gr oupB ox , ou Panel). Par a tr ans fer ir componentes , s elecione os componentes e es colha o comando Edit | Cut (ou pr es s ione CT RL+ X). Par a mover os componentes par a outr o for mulr io clique no for mulr io. Par a mov- los par a dentr o de um componente de agr upamento (Gr oupB ox , Panel, etc.) clique dentr o des s e componente. Es colha o comando Edit | Pas te (CT RL+ V).

A linhando, travando e sobrepondo os componentes


Par a manter um vis ual unifor me e or ganizado nos s eus for mulr ios , muitas vezes neces s r io alinhar componentes um pelo outr o. Voc pode alinhar componentes de tr s maneir as bs icas no Delphi, us ando a Alignment palette (Paleta de alinhamento) Us ando a caix a de dilogo Align, ou Alinhando pela gr ade (gr id). Par a alinhar componentes com a Alignment palete S elecione os componentes a s er em alinhados Es colha o comando View | Alignment palette par a ex ibir a s eguinte j anela:

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.

Al i nhando pel a gr ade


Os pontos mos tr ados em um for mulr io, dur ante o tempo de des envolvimento, s o a gr ade (gr id) do for mulr io. A gr ade " atr ai" componentes par a pos ies pr edefinidas , facilitando o alinhamento. Voc pode des ativar a gr ade, ou alter ar s eu es paamento. Uma gr ade com um es paamento menor per mite o alinhamento mais pr ecis o (e mais flex vel) dos componentes .

E x i bi o da gr ade com doi s val or es par a o es paam en t o

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.

Cont r ol ando a s obr epos i o de component es


Componentes podem s er s obr epos tos em um for mulr io. Pode- s e alter ar a or dem de s obr epos io, tr azendo um componente par a fr ente ou enviando- o par a tr s . A or dem de s obr epos io padr o a or dem em que os componentes s o adicionados ao for mulr io. Os componentes adicionados mais r ecentemente s o colocados " por cima" dos mais antigos . Par a tr azer um componente par a fr ente ou mandar um componente par a tr s : S elecione o componente e clique nele com o boto dir eito do mous e. Es colha o comando B r ing to fr ont (T r azer par a fr ente) ou S end to back (Mandar par a tr s ). N OT A: componentes gr ficos , como os componentes Label, S peedbutton e B evel, no podem s er colocados na fr ente de componentes " aj anelados " (a maior ia dos demais ).

Formulrios e C aixas de Dilogo


Uma inter face com o us ur io no Delphi ger almente compos ta por um for mulr io pr incipal e vr ios outr os for mulr ios , como caix as de dilogo, j anelas s ecundr ias , etc. Nes te captulo, ver emos vr ias maneir as par a cr iar novos for mulr ios e como or ganiz- los e conect- los . Ver emos tambm como definir a or dem em que os for mulr ios s o cr iados e como us ar as caix as de dilogos pr edefinidas do Delphi.

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"

Especificando o formulrio principal


T odo aplicativo cr iado no Delphi deve ter um de s eus for mulr ios definidos como for mulr io pr incipal. O for mulr io pr incipal o for mulr io que cr iado e ex ibido pr imeir o no aplicativo. es s e for mulr io, ger almente, o que contm a bar r a de menus , bar r as de fer r amentas e outr os componentes impor tantes que s o us ados por

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.

Propriedades dos formulrios


Alm das pr opr iedades que todos os componentes apr es entam, como Height e Width, os for mulr ios apr es entam vr ias pr opr iedades ex clus ivas , que per mitem alter ar s ua apar ncia e s eu compor tamento. Vej a a s eguir des cr ies des s as pr opr iedades . P r opr i edade Act i veCon t r ol Capt i on H ei gh t , W i dt h Cl i en t H ei gh t Cl i en t W i dt h B or der I con s D es cr i o Es ta pr opr iedade deter mina qual contr ole r ecebe o foco quando o for mulr io mos tr ado. Quando o us ur io clica em uma r ea vazia no for mulr io, o contr ole definido aqui que r ecebe o foco. O tex to ex ibido da bar r a de ttulo do for mulr io. A altur a e a lar gur a totais do for mulr io, em pix els . A dis tncia (em pix els ) entr e a par te inter na da bor da de baix o do for mulr io at s ua bar r a de ttulo. A dis tncia hor izontal (em pix els ) entr e as par tes inter nas das bor das es quer da e dir eita do for mulr io. Os contr oles que s o ex ibidos na B ar r a de ttulo do for mulr io. Voc pode definir quatr o opes par a B or der I cons : bi S ys t em Men u : mos tr a o Menu de Contr ole (tambm chamado " Menu de S is tema" ). bi Mi n i m i z e: mos tr a o boto minimizar no for mulr io. bi Max i m i z e: mos tr a o boto max imizar no for mulr io. bi H el p : boto de aj uda (inter r ogao). S apar ece s e bi Max i m i z e ou bi Mi n i m i z e es tiver em Fals e. Es s e boto us ado par a ex ibir a pgina de aj uda definida par a o for mulr io (s e houver ). Define a apar ncia das bor das do for mulr io e s e o for mulr io pode s er r edimens ionado ou no. As s eguintes opes es to dis ponveis : bs D i al og : o. Mos tr a s omente o boto Fechar . O for mulr io no pode s er r edimens ionado. Es te o padr o par a as caix as de dilogo. bs S i n gl e: O for mulr io no pode s er r edimens ionado e mos tr ado com bor das com linhas s imples . bs N on e: . O for mulr io no pode s er r edimens ionado s em bor das . bs S i z eabl e: (opo padr o). O for mulr io pode s er r edimens ionado e mos tr ado com bor das . bs T ool W i n dow : como bs S i n gl e, mas o for mulr io mos tr ado com um bar r a de ttulo mais es tr eita. Es s a opo pode s er us ada par a cr iar " bar r as de fer r amentas flutuantes " , por ex emplo. O for mulr io no pode s er r edimens ionado. bs S i z eT ool W i n : como bs T ool W i n dow , mas o for mulr io pode s er r edimens ionado. Deter mina a pos io e o tamanho do for mulr io em tempo de ex ecuo. As opes par a Pos ition s o as s eguintes : poD es i gn ed : a pos io e o tamanho do for mulr io s o os mes mos definidos em tempo de des envolvimento. (Es ta a opo padr o). poD ef au l t a pos io e o tamanho do for mulr io s o deter minados pelo Windows . O Delphi no contr ola nem o tamanho nem a pos io. poD ef au l t P os On l y : s omente a pos io do for mulr io definida pelo Windows . O tamanho o que foi definido em tempo de des envolvimento. poD ef au l t S i z eOn l y : s omente o tamanho definido pelo Windows . A pos io a que foi definida em tempo de des envolvimento. poS cr een Cen t er : o tamanho do for mulr io mantido igual ao definido em tempo de des envolvimento, mas a pos io no centr o da tela. S e vr ios monitor es es tiver em s endo us ados (no Windows 98), a pos io pode s er aj us tada par a que o for mulr io caiba inteir o em um dos monitor es . poD es kt opCen t er : s emelhante opo poS cr een Cen t er , mas a pos io no do for mulr io no aj us tada par a aplicativos que us am vr ios monitor es . Deter mina como o for mulr io s er ex ibido inicialmente no aplicativo (minimizado, max imizado ou r es taur ado). Opes : w s N or m al : mos tr a o for mulr io com tamanho nor mal (nem max imizado nem minimizado). w s Max i m i z ed : mos tr a o for mulr io max imizado. w s Mi n i m i z ed : mos tr a o for mulr io minimizado.

B or der S t yl e

P os i t i on

W i n dow S t at e

Eventos dos formulrios


H dezenas de eventos par a os for mulr ios . Muitos deles s o us ados apenas r ar amente. A s eguir apr es entamos os eventos mais us ados .

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

Mtodos dos formulrios


Vej a a s eguir uma des cr io dos mtodos mais comumente us ados par a os for mulr ios . Mt odo Cl os e D es cr i o O mtodo Clos e fecha o for mulr io. S e o for mulr io for o pr incipal o aplicativo encer r ado.

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;

A pr opr i edade Modal R es ul t


Quando s e mos tr a for mulr ios de for ma modal (us ando S howModal), pode- s e alter ar a pr opr iedade ModalRes ult de botes no for mulr io par a que eles r ealizem automaticamente aes comuns . Pode- s e, por ex emplo, adicionar um componente B utton ao for mulr io e alter ar s ua pr opr iedade ModalRes ult par a mr Clos e. I s s o faz com que o for mulr io s ej a fechado quando o componente B utton clicado. O mtodo S howModal r etor na o

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} ...

Usando o teclado comformulrios


A maior ia dos aplicativos par a Windows per mite o us o do teclado par a a navegao entr e componentes de um for mulr io. As teclas mais comuns de navegao s o a tecla T AB e as s etas do teclado.

A lterando aordemde tabulao


A or dem de tabulao a or dem em que os componentes de um for mulr io r ecebem o foco (tor nam- s e ativos ) quando pr es s ionada a tecla T AB . O componente que es t com o foco pode s er alter ado, ou ativado com o teclado. Pode- s e, por ex emplo, us ar a tecla T AB par a mover o foco par a um boto no for mulr io e depois pr es s ionar ENT ER, o que equivale a clicar no boto. N OT A: alguns componentes no podem r eceber o foco no s e pode us ar a tecla T AB par a chegar at eles com o teclado. Os componentes Label e S peedB utton s o os ex emplos mais comuns . A or dem de tabulao pode s er definida de vr ias maneir as no Delphi. A maneir a mais dir eta alter ar a pr opr iedade T abOr der par a cada componente. O valor de T abOr der deve s er um valor inteir o e no deve haver valor es duplicados no mes mo for mulr io (o Delphi no per mite). Por ex emplo, par a que um componente s ej a o s egundo a r eceber o foco quando o us ur io pr es s iona a tecla T AB , faa T abOr der = 1 (a contagem de T abOr der comea de zer o). H outr a maneir a de alter ar a or dem de tabulao. Faa o s eguinte: clique com o boto dir eito em uma r ea vazia do for mulr io e es colha o comando T ab Or der . Na caix a que apar ece, s o lis tados todos os componentes que podem r eceber foco do for mulr io. S o lis tados o nome e o tipo de cada componente na or dem de tabulao atual (vej a a ilus tr ao a s eguir ).

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.

Evitando que umcomponente recebao foco


Muitas vezes , no neces s r io que todos os componentes em um for mulr io s ej am capazes de r eceber o foco (us ando a tecla T AB ). Alguns componentes , como os componentes Panel e Gr oupB ox ger almente no pr ecis am r eceber foco. Par a evitar que um componente r eceba o foco: Alter e s ua pr opr iedade T abS top (" Par ada de tabulao" ) par a Fals e.

Del phi 5

C ontrolando acriao dos formulrios


Quando voc adiciona for mulr ios a um aplicativo, o Delphi faz com que todos es s es for mulr ios s ej am cr iados na memr ia do computador , as s im que o aplicativo ex ecutado. Es s a a configur ao padr o, mas voc pode fazer com que for mulr ios no s ej am cr iados automaticamente (par a poupar memr ia, por ex emplo, ou par a r eduzir o tempo de inicializao do aplicativo). Outr os cas os em que melhor no cr iar um for mulr io automaticamente quando es s e for mulr io no us ado com fr equncia, ou cons ome muitos r ecur s os da mquina (aces s ando um banco de dados , por ex emplo). Alm de definir s e um for mulr io deve s er cr iado ou no, voc pode definir a or dem em que os for mulr ios s o cr iados . Par a es pecificar quais for mulr ios devem s er cr iados em tempo de ex ecuo, es colha o comando Pr oj ect | Options e mude par a a pgina " For ms " . Os nomes de todos os for mulr ios no pr oj eto s o ex ibidos na lis ta " Auto- cr eate for ms " . Os nomes dos for mulr ios dis ponveis , mas que no s er o cr iados automaticamente, apar ecem na lis ta " Available for ms " .

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.

P r int t o f it page N o s cal i n g

Utilizando o objeto TFrame


O obj eto T Fr ame tem o pr ops ito des te componente cr iar uma clas s e incor por ada de vr ios outr os componentes . O mais inter es s ante que es te novo Fr ame pode tambm s er adicionado a s ua palheta de componentes , s endo as s im ins tanciado futur amente em s uas outr as aplicaes de for ma independente da or iginal. As alter aes feitas em obj etos T Fr ame s o automaticamente r efletidas nas ins tncias que a r efer enciam. O cdigo mantido na Unit do Fr ame. A utilizao de Fr ames muito s imples , bas ta clicar em 'File | New Fr ame...'.

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

O objeto TFrame inserido dentro de um formulrio.

C aixas de dilogo predefinidas


O Delphi ofer ece vr ios comandos par a a ex ibio de caix as de dilogo comuns , como caix as de mens agem (Mes s age B ox es ) e caix as de entr ada (I nput B ox es ). Es s es comandos per mitem que aplicativos com r ecur s os s imples de entr ada e s ada s ej am cr iados r apidamente. Mes s age B ox es (Caix as de Mens agem) As caix as de mens agem s o us adas par a ex ibir r es ultados , er r os , ou avis os par a o us ur io. Elas s o caix as modais (bloqueiam a ex ecuo do pr ogr ama quando s o ex ibidas ). H dois comandos par a mos tr ar caix as de mens agem no Delphi. O mais s imples S howMes s age, que mos tr a apenas uma mens agem e um boto OK . J o comando Mes s ageDlg ofer ece mais opes , como s mbolos e ttulos difer entes . Us e o comando S howMes s age par a mos tr ar uma mens agem s imples par a o us ur io. A mens agem ex ibida em uma pequena caix a, com um boto OK . A caix a fechada quando o boto OK clicado. No ex emplo abaix o, uma caix a de mens agem ex ibida quando o boto B utton1 r ecebe um clique: pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); begin S howMes s age('Es te comando no pode s er us ado no momento.'); end; A caix a de mens agem ex ibida a s eguinte:

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 ) ;

Mt W ar nin g Mes s ageD lg( 'Mens agem de avi s o, m t W ar n in g, m bOK Cancel , 0 ) ;

Mt E r r or Mes s ageD l g( ' Men s agem de er r o' , m t E r r or ,

Mt Con f i r m at i on Mes s ageD lg( 'Men s agem de

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 ) ;

Mt Cu s t om Mes s ageD lg( 'Out r a m en s agem ' , m t Cu s t om , m bOK Cancel , 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.

A dicionando menus e abrindo o Menu Designer


Menus no Delphi s o cr iados us ando os componentes MainMenu e PopupMenu. Es tes s o os pr imeir os componentes da pgina S tandar d da paleta de componentes (vej a a figur a abaix o).

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.

C onstruindo menus principais


Menus pr incipais s o os menus que apar ecem no topo das j anela pr incipal do aplicativo. Par a cr iar um menu pr incipal em um for mulr io, adicione um componente MainMenu e clique no componente duas vezes par a mos tr ar o Menu Des igner . A s eqncia de figur as a s eguir ilus tr a o pr ocedimento bs ico par a a cons tr uo de um menu pr incipal.

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.

D i gi t e o n ovo t t ul o e pr es s i one E N T E R . Con t i nu e da m es m a f or m a par a adi cion ar os out r os com andos .

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.

U m s epar ador em t em po de des en volvim ent o

e em t em po de execuo.

Definindo "teclas de acelerao" e teclas de atalho


Par a que comandos de menus pos s am s er es colhidos r apidamente us ando o teclado, o Delphi per mite que s ej am definidas teclas de aceler ao e teclas de atalho. As teclas de aceler ao s o as letr as que apar ecem s ublinhadas nos menus . Um comando ou ttulo de menu com uma tecla de aceler ao pode s er es colhido, pelo teclado, us ando ALT com a tecla definida. Par a definir teclas de aceler ao par a um ttulo de menu ou comando, digite um " &" dentr o de s ua pr opr iedade Caption, antes do car acter e a s er definido como tecla de aceler ao. Na figur a a s eguir , a letr a " E" do menu " Editar " foi definida como tecla de aceler ao. Note que o " E" apar ece s ublinhado no menu. As s im, pos s vel es colher o menu com o teclado, us ando ALT + E.

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

P ar a adici on ar um s u bm enu a um com an do, s el eci on e o com an do e pr es s ion e CT R L + S et a da D i r eit a.

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.

C onstruindo menus popup


As tcnicas us adas par a a cons tr uo de menus popup s o pr aticamente as mes mas que as us adas par a os menus pr incipais . O pr ocedimento at mais s imples , pois um menu popup for mado por apenas um conj unto de comandos (e s ubmenus ). Os menus popup podem s er as s ociados a muitos tipos de componentes , inclus ive B uttons , Memos e for mulr ios . Par a as s ociar um menu popup a um componente, voc deve adicionar um componente PopupMenu ao for mulr io que contm o componente. Depois , bas ta alter ar a pr opr iedade PopupMenu do componente par a o nome do componente PopupMenu adicionado. Par a cons tr uir um menu popup (adicionar itens e s ubmenus ) pr oceda da mes ma maneir a que par a os menus pr incipais Clique duas vezes no componente PopupMenu par a abr ir o Menu Des igner . Em s eguida, digite o nome de cada comando, s eguido de ENT ER. Par a acr es centar outr as opes como s epar ador es ou teclas de atalho us e as mes mas tcnicas des cr itas anter ior mente. A figur a abaix o mos tr a um ex emplo de um menu popup no Menu Des igner :

U m m en u popu p n o Men u D es i gn er

A ssociando cdigo aos comandos de ummenu


Par a as s ociar cdigo a um comando de menu (ou de s ubmenu), d um duplo clique no comando, no Menu Des igner . I s s o ger a o cdigo par a o evento OnClick do comando. Nes te evento, digite o cdigo a s er ex ecutado quando o comando for es colhido no aplicativo. Note que os comandos de menus , as s im como os pr pr ios menus , s o tr atados como componentes no Delphi. Eles pos s uem pr opr iedades e eventos , como os outr os componentes comuns . Muitas das pr opr iedades dos menus s o definidas indir etamente, atr avs do Menu Des igner , mas h algumas pr opr iedade que s podem s er alter adas dir etamente com o Obj ect I ns pector . A s eguir s o des cr itas algumas pr opr iedades impor tantes dos menus e dos comandos de menus . Par a alter ar es s as pr opr iedades , pr imeir o s elecione um menu, s ubmenu, ou comando de menu no Menu Des igner . P r opr i edade D es cr i o

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

Trabalhando comvrios menus


Um for mulr io pode conter vr ios menus , inclus ive vr ios menus pr incipais . O Menu Des igner per mite pas s ar de um menu par a outr o em um for mulr io, r apidamente.Par a pas s ar par a um menu par a outr o, dentr o do Menu Des igner , clique com o boto dir eito e es colha o comando S elect Menu par a ex ibir a lis ta de menus do for mulr io. Depois clique duas vezes em um item da lis ta. Apes ar de s er pos s vel acr es centar vr ios menus pr incipais (componentes MainMenu) a um for mulr io, s omente um menu pr incipal pode es tar ativo de cada vez. O menu pr incipal us ado em um for mulr io deter minado pela pr opr iedade Menu do for mulr io. Es s a pr opr iedade pode s er alter ada dur ante a ex ecuo do aplicativo. Por ex emplo, a linha de cdigo a s eguir , For mPr incipal.Menu: = MainMenu2, alter a o menu pr incipal do for mulr io " For mPr incipal" par a o menu " MainMenu2" .

C omponentes visuais comuns


Os componentes vis uais , tambm chamados de contr oles , s o us ados par a a inter ao dir eta com o us ur io. Nes te captulo, ver emos detalhes s obr e os componentes vis uais mais impor tantes e mais comumente us ados .

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

As cor es pr edef in idas do D el phi

Cl Aqu a Cl Gr een cl Mar oon

Azul pis cina Ver de es cur o Vinho

cl F u ch s i a cl L i m e cl N avy

Rox o clar o Ver de limo Azul mar inho

cl Gr ay cl L t Gr ay cl Ol i ve

Cinza es cur o Cinza clar o Ver de oliva

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

P r opr i edade E n abl ed

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.

E x em pl os de com ponent es Mem o

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

A pr opr i edade L i nes


A pr opr iedade Lines , que deter mina o contedo do componente Memo, do tipo T S tr ings , um conj unto index ado de s tr ings . Vr ios outr os componentes , como o Lis tB ox e o ComboB ox tambm us am pr opr iedades des te tipo. Pr opr iedades do tipo T S tr ings podem s er manipuladas de vr ias maneir as . Pode- s e, por ex emplo adicionar ou r emover linhas , ver ificar ou alter ar a linha com um deter minado ndice, ou apagar todas as linhas . Par a adicionar linhas , us e o mtodo Add ou Append, como em: Memo1.Lines .Add(Uma linha); ou Memo1.Lines .Append(Outr a linha); A difer ena entr e Add e Append que Add r etor na um valor : o ndice da linha adicionada. Append no r etor na um valor . Par a r emover linhas , us e o mtodo Delete ( ndice). O ex emplo a s eguir apaga as pr imeir as cinco linhas de um componente Memo. (Note que a pr opr iedade Lines index ada a par tir de zer o.) pr ocedur e T For mT es teMemo.B tApagar Click(S ender : T Obj ect); var I : I nteger ;

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

Mu l t i S el ect , E x t en dedS el ect

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).

E x em pl os de com ponent es Com boB ox

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

O tex to na par te de cima do Com boB ox .

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

cbUnchecked cbChecked cbGr ayed

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.

C omponente RadioG roup


O componente RadioGr oup uma ver s o es pecial do componente Gr oupB ox (des cr ito a s eguir ), que s pode conter RadioB uttons . Par a adicionar RadioB uttons , alter e a pr opr iedade I tems (da mes ma for ma que par a os componentes Lis tB ox e ComboB ox ). Par a or ganizar os RadioB uttons em mais de uma coluna, alter e a pr opr iedade Columns . A pr opr iedade I temI ndex deter mina qual RadioB utton es t s elecionado.

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 .

B evelI nner = bs Rais ed B evel Ou t er B evel W i dt h

B evelI nner = bs Lower ed

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 = 1 B or der S t yl e B or der W i dt h Capt i on

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

AlinguagemO bject Pascal


A linguagem Obj ect Pas cal a linguagem por tr s de quas e todas as par tes de um aplicativo no Delphi. Os ar quivos de pr oj eto e as Units , como j vimos , s o es cr itos em Obj ect Pas cal. O cdigo us ado par a cr iar os componentes pr edefinidos do Delphi tambm pr aticamente todo nes s a linguagem. Nos captulos anter ior es us amos vr ias vezes pequenas par tes da linguagem Obj ect Pas cal (dentr o do cdigo par a os eventos , por ex emplo). Nes te captulo ver emos como us ar r ecur s os mais avanados da linguagem e como cr iar pr ogr amas que no dependam s omente da inter face com o us ur io.

Usando o comando de atribuio


O comando de atr ibuio um dos mais us ados em muitas linguagem de pr ogr amao. O comando de atr ibuio us ado par a a alter ar valor es de var iveis e pr opr iedades no Delphi. J mos tr amos vr ios ex emplos que us am atr ibuio. Aqui es t mais um: pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); begin Edit1.Color : = clRed; Edit1.T ex t : = 'Novo tex to'; Memo1.ReadOnly : = T r ue; end; O comando de atr ibuio, como s e v for mado por duas par tes , a par te es quer da um nome de uma var ivel ou de uma pr opr iedade; a par te dir eita o novo valor que s er atr ibudo var ivel ou pr opr iedade. Es s e valor pode s er outr a var ivel ou pr opr iedade, uma cons tante, ou outr a ex pr es s o. Os tipos dos dois lados devem s er os mes mos , ou pelo menos compatveis ; cas o contr r io, o Delphi ger a er r os na compilao. Roni Peter s on

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 !

T i pos de var i vei s


O tipo declar ado par a uma var ivel define o conj unto de valor es per mitidos par a aquela var ivel. H uma gr ande quantidade de tipos dis ponveis em Obj ect Pas cal. H vr ios tipos muito par ecidos entr e s i, que s o us ados apenas par a manter compatibilidade com ver s es anter ior es da linguagem Pas cal. Abaix o lis tamos os tipos mais comumente us ados . T i po I n t eger D ou bl e R eal Cu r r en cy D es cr i o Nmer os inteir os (s em par te fr acionr ia) que podem var iar de - 2.147.483.647 at 2.147.483.647. Nmer os r eais de alta pr ecis o, com at 16 dgitos s ignificativos . Us ado par a nmer os muito gr andes ou muito pr ecis os . Podem var iar de 5.0 x 10 - 324 at 1.7 x 10 308 . Nmer os r eais de alta pr ecis o. I dntico a Double. Nmer os r eais de alta pr ecis o, com quatr o cas as decimais . O tipo ideal par a valor es monetr ios (us e es te tipo em vez de Double, par a es s es valor es ). Uma var ivel com es s e tipo pode var iar de 922337203685477.5808 at 922337203685477.5807 (mais de 900 tr ilhes ). Valor es booleanos s podem ter valor es T r ue (ver dadeir o) ou Fals e (fals o). Car acter es ANS I (padr o) Cadeias de car acter es com tamanhos que podem var iar dinamicamente. S tr ings podem ter tamanho pr aticamente ilimitado. T am an h o 4 bytes 8 bytes 8 bytes 8 bytes

B ool ean Ch ar S t r ing

1 byte 1 byte Var ivel

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.

A rrays unidimensionais - Vetores


Os Ar r ays s o us ados com fr eqncia, pr aticamente em qualquer pr ogr ama. Ar r ays s o s eqncias index adas de valor es do mes mo tipo. Vej a alguns ex emplos de declar aes de ar r ays : var Nomes : ar r ay [ 1..100] of s tr ing; S alar ios : ar r ay [ 1..50] of Real; Aqui, a var ivel " Nomes " uma s eqncia de 100 pos ies do tipo s tr ing e " S alar ios " uma s eqncia de 50 valor es do tipo Real. Os elementos de um ar r ay s o index ados : par a aces s ar um valor de um ar r ay, digite o nome do ar r ay, s eguido do ndice entr e colchetes . Por ex emplo: Nomes [ 32] . O ndice pode s er qualquer ex pr es s o que tenha como r es ultado um valor inteir o. O ex emplo a s eguir declar a um ar r ay " quadr ados " com 100 inteir os e depois pr eenche es s e ar r ay com os quadr ados dos nmer os de - 50 a 250: pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var I : I nteger ; Quadr ados : ar r ay [ 1..100] of I nteger ; begin for I : = - 50 to 250 do Quadr ados [ I ] : = (I * I ); end;

A rrays multidimensionais - Matrizes


Ar r ays multidimens ionais s o s imples mente " ar r ays de ar r ays " . Os ar r ays que vimos at agor a tm apenas uma dimens o. Ar r ays com duas dimens es (bidimens ionais ) s o us ados par a ar mazenar tabelas de valor es . Pode-

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.

Ani nhando comandos i f


Muitas vezes , um pr ogr ama deve decidir entr e mais de duas opes . Par a is s o, pode- s e us ar comandos if aninhados (um if dentr o de outr o). Vej a um ex emplo: pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); var Nota: Real; begin Nota : = S tr T oFloat(Edit1.T ex t); if nota < 5.0 then S howMes s age('Repr ovado por mdia') els e if (Nota > = 5.0) and (Nota < 7.0) then S howMes s age('Apr ovado na final') els e if Nota > 8.5 then S howMes s age('Apr ovado com ex celncia') els e S howMes s age('Apr ovado s imples mente') end; O ex emplo l uma nota digitada pelo us ur io e mos tr a uma mens agem que var ia de acor do com o valor da nota. Acompanhe o flux o do pr ogr ama: s e a nota for menor que 5, a pr imeir a mens agem ex ibida; cas o contr r io (qualquer valor maior ou igual a 5), o pr ogr ama checa a s egunda condio: s e a nota es tiver entr e 5 e 7, a s egunda mens agem ex ibida. S e no, o pr ogr ama ver ifica s e a nota maior que 8.5 e, s e for , mos tr a a ter ceir a mens agem. A mens agem depois do ltimo els e s ex ibida s e nenhuma das condies anter ior es for ver dadeir a (is s o acontece s e a nota es tiver entr e 7 e 8.5). N OT A: no pr ogr ama acima foi us ada a palavr a chave and par a cr iar uma condio mais complex a. H mais duas palavr as - chaves s emelhantes : or e not. Pode- s e us ar qualquer combinao de not,

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.

Defi ni ndo o val or de r et or no de uma funct i on


O valor r etor nado por uma function pode s er definido de duas maneir as : atr ibuindo um valor par a o nome da function, ou alter ando a var ivel es pecial Res ult. As duas funes a s eguir s o ex atamente equivalentes : function Dobr o1(Numer o: I nteger ): I nteger ; begin Dobr o: = Numer o * 2; end;

Chamando pr ocedur es e funct i ons


Depois de definir uma pr ocedur e ou function, voc pode cham- la dir etamente no s eu cdigo, em qualquer lugar da Unit em que foi definida. Par a chamar uma pr ocedur e ou function, bas ta es pecificar o s eu nome e valor es par a s eus par metr os (s e houver ). O s eguinte tr echo de cdigo mos tr a como chamar a pr ocedur e Des contar (definida acima) par a r ealizar um des conto de 10% s obr e um pr eo p. (O valor de p no final s er 450.0). ... P: = 500.0; Des contar (10, P); ...

Onde cr i ar pr ocedur es e funct i ons


H r egr as par a o pos icionamento das pr ocedur es no cdigo: as pr ocedur es devem s er colocadas s omente depois da par te implementation da Unit (vej a a s eguir ), depois das declar aes das var iveis globais . O ex emplo a s eguir us a a pr ocedur e Des contar e uma var iao da function Dobr ar , dos ex emplos anter ior es . Os valor es de cem pr eos , ar mazenados no ar r ay Pr ecos , s o alter ados no evento OnClick do componente B utton1. (O pr ogr ama, apes ar de completo, foi mantido deliber adamente s imples , par a ilus tr ar melhor os conceitos envolvidos ).

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).

Entendendo o cdigo das Units


As Units contm pr aticamente todo o cdigo de um aplicativo no Delphi. As Units ger almente s o as s ociadas a for mulr ios , mas podem s er cr iadas de for ma totalmente independente. Nes ta s eo ver emos detalhes s obr e cada par te de uma Unit.

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.

Rotinas paramanipulao de strings


A manipulao de s tr ings uma tar efa muito comum em pr ogr amao. A s eguir , lis tamos as pr incipais r otinas de manipulao de s tr ings ofer ecidas pelo Delphi. (As r otinas cuj os nomes comeam com " Ans i" s o capazes de lidar com car acter es acentuados e, por tanto, s o muito teis par a s tr ings em por tugus ). F u n o D es cr i o

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

Funes de converso de tipo


A linguagem Obj ect Pas cal es pecialmente ex igente com r elao aos tipos us ados em ex pr es s es , e nas chamadas de pr ocedur es e functions . S e o tipo us ado no for compatvel com o tipo es per ado, ger ado um er r o de compilao. Funes de conver s o de tipo devem s er us adas par a conver ter valor es par a os tipos adequados . As pr incipais funes de conver s o de tipo s o lis tadas na tabela a s eguir . S e uma conver s o for ilegal, es s as funes levantam a ex ceo Econver tEr r or . F u n o T i po de or i gem T i po de des t i n o

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

S tr T oDateT ime 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 :

U s ando B ook mar k s


Voc pode mar car linhas do cdigo com bookmar ks , par a depois r etor nar a es s as linhas r apidamente, us ando o teclado ou comandos de menu. Pode- s e definir at dez bookmar ks par a cada Unit. Linhas com um bookmar k definido apar ecem com o nmer o do bookmar k (dentr o de um quadr ado ver de) na mar gem es quer da do Editor de Cdigo (vej a figur a).

Del phi 5

O E di t or de Cdigo com doi s bookm ar ks def in idos

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 .

U s ando o r ecur s o Code B r ow s er


O r ecur s o Code B r ows er per mite navegar r apidamente entr e vr ios ar quivos r elacionados . Voc pode, por ex emplo, abr ir o ar quivo que tenha a definio de uma pr ocedur e ou function, com apenas um clique do mous e. Par a us ar es s e r ecur s o, no Editor de Cdigo, pr es s ione e mantenha pr es s ionada a tecla CT RL e mova o cur s or . Quando o cur s or apontar par a uma par te " navegvel" do cdigo, como o nome de uma Unit ou for mulr io, es s a par te apar ece s ublinhada em az ul, como um link na I nter net (vej a a figur a).

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).

O s controles de navegao do Editor de C digo


Us e a s eta par a a es quer da par a pular par a o ltimo local vis itado e a s eta par a a dir eita par a o pr x imo (a s eta par a a dir eita s ativada s e a s eta par a a es quer da for us ada ao menos uma vez). O funcionamento s emelhante aos botes " B ack" e " For war d" dos br ows er s par a a I nter net. Voc tambm pode pular par a um local vis itado clicando ao lado das s etas , e es colhendo um local a par tir da lis ta ex ibida. Localizando e s ubs tituindo O Delphi ofer ece um conj unto de r ecur s os poder os os par a a localizao e a s ubs tituio de tr echos de cdigo em s eus pr ogr amas .

L ocal i z ando t ex t os no ar qui vo at ual


O Delphi ofer ece todas as opes comuns par a localizao de tex tos . Voc define o tex to a s er localizado e vr ias outr as opes us ando o comando S ear ch | Find, que ex ibe a s eguinte caix a de dilogo:

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)

L ocal i z ando t ex t os em vr i os ar qui vos


pos s vel localizar tex tos em vr ios ar quivos , at em ar quivos que no es to aber tos no Editor de Cdigo. Par a localizar tex tos em vr ios ar quivos , es colha o comando S ear ch | Find in files , ou es colha a pgina Find in files da caix a de dilogo Find (vej a a s eo anter ior ). A s eguinte caix a ex ibida:

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.

Out r as t cni cas par a l ocal i z ao


Depois de localizar um tr echo de tex to, com os comandos des cr itos , voc pode localiz- lo novamente s em us ar comandos de menu. Us e o comando S ear ch | S ear ch again, ou pr es s ione F3 par a localizar as pr x imas ocor r ncias do tex to. Com o comando S ear ch | I ncr emental S ear ch, o Delphi localiza o tex to a medida que voc digita. Depois de es colher es s e comando, o tex to digitado apar ece na bar r a de s tatus , na par te de baix o do Editor de Cdigo.

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.

Confi gur ando o E di t or de Cdi go


O Editor de Cdigo pode s er configur ado par a s e adaptar melhor s ua maneir a de pr ogr amar , ou a cos tumes antigos que for am adquir idos com a ex per incia de pr ogr amao. H uma quantidade enor me de opes que podem s er alter adas par a o Editor de Cdigo. Ver emos aqui as mais impor tantes e teis .

Del phi 5

Conf i gu r ao do E dit or de Cdi go: pgin a D i s pl ay.

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.

Opes importantes da pgina Display


Na pgina Dis play, voc define a apar ncia e a or ganizao da tela do Editor de Cdigo, alter ando as s eguintes opes : Opo Cr eat e back u p f ile Z oom t o f u l l s cr een Vi s i bl e r i gh t m ar gi n R i gh t Mar gi n Vi s i bl e Gu t t er Gu t t er W i dt h E di t or F on t / S i z e D es cr i o Ative es s a opo par a cr iar s empr e ar quivos de backup quando um ar quivo s alvo a par tir do Editor de Cdigo. Ative es s a opo par a que o Editor de Cdigo ocupe toda a r ea da tela, quando s ua j anela max imizada. S e es s a opo es tiver des ativada (o padr o), a j anela do Editor de Cdigo no s obr epe a j anela pr incipal do Delphi. Ex ibe ou no a linha da mar gem do lado dir eito do Editor de Cdigo. Deter mina a dis tncia da mar gem dir eita, em car acter es . Ex ibe ou no a faix a cinza na par te es quer da do Editor de Cdigo. Deter mina a lar gur a da faix a cinza, em car acter es . A fonte us ada no Editor . As fontes que voc pode es colher es to r es tr itas a s omente fontes monoes paadas fontes nas quais todos os car acter es ocupam a mes ma lar gur a. S ize o tamanho da fonte, em pontos .

Opes importantes da pgina Colors


Na pgina Color s , voc define as cor es us adas par a o efeito de S yntax highlighting. o efeito de S yntax Highlighting que faz a palavr as mudar em de cor ou de es tilo dur ante a digitao do cdigo. Es te efeito alter a as cor es de elementos de pr ogr amas , dependendo da funo ou s ignificado des s es elementos (ex emplos de elementos s o comentr ios , palavr as - chave, cons tantes , var iveis , etc.). Cada elemento pode s er mos tr ado com duas cor es : a cor de fr ente (For egr ound) e a cor de fundo (B ackgr ound). Voc pode tambm es colher entr e vr ios padr es de cor es pr edefinidos .

Del phi 5

Conf i gu r ao do E dit or de Cdi go: pgin a Col or s

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.

Usando os recursos Code Insight


Os r ecur s os Code I ns ight facilitam muito a pr epar ao de pr ogr amas no Delphi. H tr s muito teis : Code Completion, Code Par ameter s e Code T emplates

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

o cdi go i n s er ido e o cu r s or col ocado n a pos i o apr opr i ada.

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;

Confi gur ando os r ecur s os do Code I ns i ght


pos s vel des ativar ou ativar cada um dos r ecur s os do Code I ns ight, ou alter ar opes ger ais par a es s es r ecur s os . Par a is s o, es colha o comando T ools | Evir onment Options e mude par a pgina Code I ns ight, ilus tr ada a s eguir :

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.

Erros e tipos de erros


H dois tipos de er r os bs icos que podem ocor r er (e quas e s empr e ocor r em) dur ante o des envolvimento de um aplicativo: er r os de compilao e er r os de ex ecuo. Os er r os de compilao apar ecem dur ante a compilao do aplicativo no Delphi. Os er r os de compilao s o ger almente caus ados por er r os de s intax e, ou er r os de tipos . Es s es er r os , ger almente s o os mais fceis (ou menos difceis ) de cor r igir . Muitas vezes es s es er r os s o caus ados por s imples er r os de digitao. Um er r o de compilao fcil de cor r igir por que o compilador mos tr a ex atamente a linha em que o er r o ocor r eu e s vezes at s uger e uma maneir a de cor r igi- lo. Os er r os de ex ecuo ocor r em dur ante a ex ecuo do aplicativo. Es tes s o bem mais difceis de cor r igir . Como os aplicativos do Delphi s o compilados , o cdigo que ex ecutado conver tido antes em cdigo binr io. O cdigo binr io pur o no guar da ligao dir eta com as linhas do cdigo fonte (o cdigo nas Units ) o cdigo binr io s r econhece pos ies de memr ia. Por is s o, quando ocor r e um er r o em tempo de ex ecuo, no mos tr ada a linha onde ocor r eu o er r o, mas s im a pos io de memr ia (um nmer o em hex adecimal! ) Vej a um ex emplo de uma mens agem de er r o de 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 .

E x ecut ando um pr ogr ama at a pos i o do cur s or


No Editor de Cdigo, voc pode pos icionar o cur s or em qualquer linha de um pr ogr ama e ex ecutar o pr ogr ama at aquela linha. Es s e r ecur s o es pecialmente til par a pr ogr amas ex tens os . Voc pode ex ecutar r apidamente uma par te do pr ogr ama par a depois s e concentr ar na par te " s us peita" , que contm os er r os . Par a ex ecutar um pr ogr ama at a pos io do cur s or , no Editor de Cdigo, pos icione o cur s or na linha at onde o pr ogr ama deve s er ex ecutado. Realize uma das aes a s eguir , es colha o comando Run | Run to Cur s or , clique com o boto dir eito no Editor de Cdigo e es colha o comando Debug e depois Run to Cur s or , pr es s ione F4 O Delphi ex ecuta nor malmente todas as linhas do pr ogr ama at a linha anter ior linha do cur s or . Depois o depur ador inter r ompe a ex ecuo e as s ume o contr ole, r ealando a pr x ima linha a s er ex ecutada (a linha do cur s or ). A pr x ima linha a s er ex ecutada chamada ponto de ex ecuo. O ponto de ex ecuo r ealado em azul, no Editor de Cdigo. ex ibida tambm uma pequena s eta do lado es quer do da linha. A ilus tr ao abaix o mos tr a o ponto de ex ecuo logo depois de um pr ogr ama s er ex ecutado com o comando Run to cur s or .

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.

E x ecut ando um pr ogr ama l i nha por l i nha


Um pr ogr ama pode s er ex ecutado linha por linha no Delphi, par a que s e pos s a, por ex emplo, entender a ex ecuo em detalhe, ou ver ificar pr ecis amente onde os er r os es to acontecendo. O depur ador do Delphi ofer ece dois comandos par a ex ecutar um pr ogr ama linha por linha: T r ace I nto e S tep Over .

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).

U s ando os doi s comandos


Par a pr ogr amas complex os , voc ger almente vai pr ecis ar us ar os dois comandos , T r ace I nto e S tep Over , alter nadamente. S e, dur ante a depur ao, voc achar neces s r io " entr ar " no cdigo de uma pr ocedur e ou function, us e o comando T r ace I nto. Par a pular o cdigo da pr ocedur e ou function, ex ecutando- a r apidamente us e o comando S tep Over . Voc pode us ar um comando ou o outr o na or dem que des ej ar .

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.

Defi ni ndo br eak poi nt s


Os br eakpoints (" pontos de par ada" ) per mitem for ar a par ada da ex ecuo em linhas es pecficas de um pr ogr ama. Pode- s e definir br eakpoints par a vr ias linhas de um mes mo pr ogr ama, des de que es tas s ej am linhas ex ecutveis (no s e pode definir br eakpoints par a linhas de comentr ios , por ex emplo).

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).

B r eakpoin t s def i ni dos no E di t or de Cdi go

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.

Mos t r ando os br eak poi nt s defi ni dos


Dur ante a depur ao de um pr ogr ama ex tens o, o nmer o de br eakpoints definidos pode cr es cer muito. Par a facilitar o tr abalho com br eakpoints , voc pode mos tr ar uma j anela com a lis ta de todos os br eakpoints definidos . Par a mos tr ar todos os br eakpoints definidos em um aplicativo, es colha o comando View | Debug Windows > B r eakpoints .

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 .

Verificando variveis e expresses


A ex ecuo linha por linha de um pr ogr ama pode no s er s uficiente par a des cobr ir a caus a de um er r o. s vezes neces s r io ver ificar o valor de var iveis ou ex pr es s es dur ante a ex ecuo do pr ogr ama. O Delphi ofer ece vr ios r ecur s os par a r ealizar es s as tar efas .

T r abal hando com Wat ches


Watches (" s entinelas " ) s o us ados par a monitor ar os valor es de uma var ivel ou ex pr es s o, dur ante a ex ecuo de um aplicativo no Delphi. Os watches definidos s o atualizados automaticamente dur ante a ex ecuo. Par a definir um watch, no Editor de Cdigo, s elecione a var ivel ou ex pr es s o cuj o valor des ej a monitor ar (es te s er o watch). Clique com o boto dir eito em cima do tr echo s elecionado e es colha o comando Debug > Add Watch at Cur s or no menu de atalho que apar ece. O Delphi cr ia o watch e mos tr a a lis ta de watches definidos :

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.

Aval i ando e modi fi cando ex pr es s es


A caix a de dilogo Evaluate/Modify per mite avaliar ex pr es s es e alter ar var iveis , dur ante a depur ao. Par a avaliar e modificar ex pr es s es , es colha o comando Run | E valuate/ Modify, o Delphi mos tr a a s eguinte caix a de dilogo:

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.

Trabalhando combancos de dados no Delphi: umaviso geral


O Delphi ofer ece r ecur s os poder os os par a a cr iao de aplicativos com aces s o a bancos de dados . Aplicativos cr iados no Delphi podem ter aces s o a dezenas de tipos de bancos de dados , locais ou r emotos . Par a os bancos de dados mais popular es , como Or acle, S ybas e, DB 2, Acces s , etc., o Delphi ofer ece aces s o nativo. T oda a comunicao entr e o Delphi e es s es S GB Ds feita inter namente no ambiente do Delphi. O aces s o nativo ger almente muito mais r pido. Par a bancos de dados menos popular es , o Delphi ofer ece aces s o via ODB C (Open Databas e Connectivity). Pr aticamente todos os bancos de dados pr ofis s ionais s o compatveis com a tecnologia ODB C. Um banco de dados compatvel com ODB C ofer ece dr iver s ODB C que podem s er ins talados no Windows . Com o dr iver ODB C cor r es pondente ins talado, um banco de dados pode s er aces s ado facilmente a par tir do Delphi (o aces s o bem mais lento que o aces s o nativo, no entanto).

Aarquiteturade acesso abancos de dados


T odo o aces s o a bancos de dados a par tir de um aplicativo Delphi, s ej am es s es bancos r emotos ou no, feito atr avs do B DE (B or land Databas e Engine). O B DE uma inter face padr o que ger encia a par te tcnica por tr s do aces s o e manipulao de bancos de dados . Alm dis s o, o B DE unifor miza a comunicao entr e o aplicativos e os bancos de dados pode- s e us ar os mes mos componentes e comandos par a aces s ar um banco de dados Or acle, ou um banco Par adox , por ex emplo. Os bancos locais , como Par adox e dB as e s o aces s ados dir etamente pelo B DE. J os bancos r emotos S QL, como Or acle e S ybas e, pr ecis am tambm do dr iver S QL Links , ins talado automaticamente com o Delphi Client/S er ver . es s e dr iver que gar ante a unifor mizao do aces s o a bancos de dados S QL, ger ando cons ultas S QL automaticamente, no dialeto de S QL us ado pelo banco. Com o dr iver S QL Links , pos s vel tr abalhar com bancos S QL da mes ma for ma que com bancos locais .

Del phi 5

Aarquiteturade acesso abancos de dados no Delphi - C omponentes bsicos


H dezenas de componentes no Delphi par a o tr abalho com bancos de dados . S o duas pginas da paletas de componentes ex clus ivamente dedicadas a bancos de dados : as pginas Data Acces s e Data Contr ols .

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 na Dat a Cont r ol s


A pgina Data Contr ols contm componentes que podem s er ligados dir etamente a campos e tabelas de um banco de dados . Muitos des s es componentes s o apenas ver s es mais poder os as dos componentes na pgina S tandar d.

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

Introduo ao A cesso abancos de dados


O aces s o a bancos de dados a par tir de um aplicativo no Delphi bas eado em tr s componentes bs icos : DataS our ce, T able e Quer y. Os tr s s o componentes no- vis uais . Eles no s o ex ibidos dur ante a ex ecuo. Apenas contr olam a conex o com o banco de dados e o pr oces s amento dos dados . A conex o com um banco de dados ger almente feita atr avs de um componente T able ou Quer y. Es s es componentes s o tipos de DataS ets . Os DataS ets s o conj untos de dados ar mazenados em for mato de tabela (em linhas e colunas ). Ver emos mais s obr e DataS ets no pr x imo captulo. Ambos os componentes T able e Quer y tm as pr opr iedades Databas eName, que indica o banco de dados as s ociado ao componente. Um componente T able ligado a uma tabela de um banco de dados atr avs de s ua pr opr iedade T ableName. Um componente Quer y contm o tex to de uma quer y em S QL. Es s a quer y pode s er ex ecutada, ger ando uma nova tabela de dados (tempor r ia) como

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:

Usando o DataBase Desktop


O DataB as e Des ktop um aplicativo independente que ins talado j unto com o Delphi. Ele pode s er aces s ado dir etamente, atr avs do menu I niciar , ou mes mo de dentr o do Delphi. Com o Databas e Des ktop voc pode cr iar tabelas de bancos de dados do tipo Par adox /dB AS E. Es s as tabelas s o muito teis par a a cr iao de aplicativos com bancos de dados pequenos ou mdios , us ados por um ou poucos computador es . Outr a funo impor tante do DataB as e Des ktop a definio de " Alias es " . Par a entr ar no Databas e Des ktop, r ealize uma das s eguintes oper aes , de for a do Delphi, clique no boto I niciar e es colha Pr ogr amas > B or land Delphi 5 > DataB as e Des ktop. De dentr o do Delphi, es colha o comando T ools | DataB as e Des ktop.

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 ).

Adi ci onando dados a uma t abel a


Uma vez cr iadas as tabelas de um banco de dados , voc pode pr eench- las com dados dentr o do pr pr io Databas e Des ktop. (Es s e r ecur s o ger almente us ado s omente par a adicionar alguns dados de amos tr a, pois os dados s o nor malmente adicionados a par tir dos aplicativos ). Par a adicionar dados a uma tabela (ou alter ar dados ), es colha o comando File | Open > T able. Na caix a que apar ece, es colha a tabela a s er alter ada. Os ar quivos ex ibidos na caix a s o os do dir etr io de tr abalho. Es colha um Alias na par te de baix o par a mos tr ar ar quivos de outr o dir etr io. A tabela aber ta e ex ibida em uma j anela. S e a tabela contiver dados , es tes s o ex ibidos tambm. (Na figur a a s eguir , mos tr ada uma pequena tabela no Databas e Des ktop, com tr s campos e alguns dados j digitados ).

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.

Al t er ando a es t r ut ur a de uma t abel a


Algumas vezes , neces s r io adicionar campos ou r etir ar campos de uma tabela, alter ando s ua es tr utur a. Voc pode fazer is s o facilmente no DataB as e Des ktop. Par a alter ar a es tr utur a de uma tabela, s e a tabela no es tiver aber ta, us e o comando File | Open > T able par a abr i- la. Es colha o comando T able | Res tr uctur e. A caix a de dilogo com a es tr utur a da tabela ex ibida (figur a a s eguir ).

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.

Abr i ndo e fechando Dat aS et s


Par a alter ar ou ler os dados em uma DataS et, voc deve pr imeir o abr ir o DataS et. Par a abr ir um DataS et, r ealize uma das s eguintes oper aes , alter e a pr opr iedade Active do DataS et par a T r ue. I s s o pode s er feito em tempo de des envolvimento no Obj ect I ns pector , ou em tempo de ex ecuo. O s eguinte comando abr e o componente chamado " T able1" : T able1.Active: = T r ue; Us e o mtodo Open no DataS et, como abaix o: Quer y1.Open; Quando um DataS et aber to os dados conectados a ele s o lidos e ex ibidos automaticamente (s e houver componentes onde os dados pos s am s er ex ibidos , clar o). No ex emplo do captulo anter ior , abr imos um componente T able em um for mulr io par a que os dados fos s em ex ibidos imediatamente em um componente DB Gr id. Voc deve s empr e fechar um DataS et depois de us - lo, par a liber ar r ecur s os do s is tema. Par a fechar um DataS et, r ealize uma das s eguintes oper aes , alter e a pr opr iedade Active do DataS et par a Fals e. Us e o mtodo Clos e no DataS et, como em T able1.Clos e.

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;

Modi fi cando Dat as et s


Pode- s e alter ar um DataS et dir etamente, modificando valor es campo a campo, ou adicionando e r emovendo r egis tr os inteir os . Os s eguintes mtodos per mitem fazer es s as alter aes : Mt odo E di t D es cr i o Coloca o DataS et no es tado ds Edit. I s to per mite a alter ao dos valor es do r egis tr o atual. Muitos componentes chamam es s e mtodo implicitamente par a per mitir a alter ao dir eta dos valor es de um DataS et. O componente DB Gr id, por ex emplo, entr a no es tado ds Edit us ando o mtodo Edit, quando s e d um duplo clique em um dos r egis tr os . Adiciona um r egis tr o vazio ao final do DataS et. O es tado do DataS et muda par a ds I ns er t. Adiciona um r egis tr o vazio na pos io atual do cur s or . O es tado do DataS et muda par a ds I ns er t (como par a o mtodo Append). T enta enviar o novo r egis tr o ou o r egis tr o alter ado par a o banco de dados . S e tudo cor r er bem, o DataS et colocado no es tado ds B r ows e. Cas o contr r io, o es tado do DataS et no alter ado. O comando Pos t um tipo de confir mao da ltima entr ada. Muitos componentes chamam Pos t automaticamente (quando s e pas s a de um r egis tr o par a outr o em um DB Gr id, por ex emplo). Can cel D el et e Cancela a ltima oper ao (uma alter ao em um r egis tr o, por ex emplo) e coloca o DataS et no es tado ds B r ows e. Apaga o r egis tr o atual e coloca o DataS et no es tado ds B r ows e.

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.

Adi ci onando r egi s t r os


Os mtodos I ns er t e Append s o us ados par a adicionar novos r egis tr os a um DataS et. I ns er t adiciona um r egis tr o vazio na pos io atual do cur s or ; Append adiciona um r egis tr o vazio depois do ltimo r egis tr o do DataS et. Os dois mtodos colocam o DataS et no es tado ds I ns er t. N OT A: Par a tabelas index adas do tipo Par adox e dB AS E, os comandos I ns er t e Append tm o mes mo efeito. Eles adicionam um novo r egis tr o na pos io deter minada pelo ndice da tabela. O ex emplo a s eguir ins er e um novo r egis tr o depois do dcimo r egis tr o da tabela. Moveby(10) move o cur s or 10 r egis tr os adiante; I ns er t ins er e o novo r egis tr o na pos io do cur s or . Em s eguida, valor es s o definidos par a os campos " Des cr icao" , " Pr eco" e " Quantidade" e as alter aes s o confir madas com Pos t. pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); begin with T abPr odutos do begin Fir s t; MoveB y(10); I ns er t; FieldB yName(Codigo).As I nteger : = 78; FieldB yName(Des cr icao).As S tr ing : = T elevis o T oNaB oa; FieldB yName(Pr eco).As Cur r ency : = 754.00; FieldB yName(Quantidade).As I nteger : = 24;

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.

Confi r mando e cancel ando mudanas


Depois de ins er ir um r egis tr o, ou modificar os valor es dos s eus campos , voc pode us ar o mtodo Pos t par a tor nar as mudanas per manentes , ou us ar o comando Cancel par a cancelar es s as mudanas . P os t chamado automaticamente, quando o cur s or movido par a outr o r egis tr o, us ando os mtodos F i r s t , L as t , P r i or , N ex t , ou MoveB y . Os mtodos I n s er t e Appen d tambm chamam o mtodo P os t , tor nando per manentes as mudanas que haviam s ido feitas antes do r egis tr o s er adicionado. Dur ante a alter ao de um r egis tr o, ou logo depois da ins er o de um novo r egis tr o, pos s vel des fazer alter aes r ecentes , us ando o mtodo Can cel . Na maior ia dos componentes D at a Con t r ol s , o mtodo Can cel chamado automaticamente quando o us ur io pr es s iona a tecla ES C, dur ante a edio de um campo. Quando o mtodo Can cel chamado, os valor es dos campos do r egis tr o atual r ever tem par a os valor es antes da alter ao. No cas o em que um novo r egis tr o acabou de s er ins er ido, o mtodo Can cel r emove o novo r egis tr o. O ex emplo abaix o adiciona um novo r egis tr o a uma tabela com quatr o campos (chamada " T abPr odutos " ). Os valor es ins er idos s o lidos a par tir de quatr o E di t s . As mudanas s tm efeito, entr etanto, depois da confir mao do us ur io (feita com a funo Mes s ageDlg). S e o us ur io confir mar a alter ao, us ado o mtodo P os t par a enviar os dados ao banco de dados ; s e no, o mtodo Can cel cancela todas as mudanas . 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; NovaQuant: I nteger ; begin // L os valor es nos quatr o Edits NovoCodigo: = S tr T oI nt(EditCodigo.T ex t); NovaDes cr icao: = EditDes cr icao.T ex t; NovoPr eco: = S tr T oCur r (E ditPr eco.T ex t); NovaQuant: = S tr T oI nt(EditQuant.T ex t); with T abPr odutos do begin Open; // Abr e a tabela, colocando- a no es tado ds B r ows e Append; // Cr ia um novo r egis tr o no final (es tado ds I ns er t) // Alter a os valor es de cada campo FieldValues [ 'Codigo'] : = NovoCodigo; FieldValues [ 'Des cr icao'] : = NovaDes cr icao; FieldValues [ 'Pr eco'] : = NovoPr eco; FieldValues [ 'Quantidade'] : = NovaQuant; // Confir ma as alter aes if Mes s ageDlg('Confir ma alter ao?', mtConfir mation, mbYes NoCancel,0) = mr Yes then Pos t els e Cancel; end; end;

I ns er i ndo e Modi fi cando r egi s t r os i nt ei r os


H tr s mtodos que per mitem ins er ir ou alter ar r egis tr os inteir os : I ns er tRecor d, AppendRecor d e S etFields . Mt odo I n s er t R ecor d( [ val or 1 , val or 2 , ...] ) D es cr i o I ns er e um novo r egis tr o, na pos io atual do cur s or , com os valor es es pecificados . A lis ta de valor es deve es tar entr e

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;

S et F i el ds ( [ val or 1 , val or 2 , ...] )

L ocal i z ando r egi s t r os com L ocat e


O mtodo Locate maneir a mais ver s til e mais r pida de localizar r egis tr os em um DataS et. Como ar gumentos do mtodo Locate, voc es pecifica o nome dos campos a s er em cons ultados , o valor des ej ado par a

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.

U s ando o event o OnF i l t er R ecor d


Us ando o evento OnFilter Recor d, voc pode definir filtr os muito mais elabor ados , us ando os r ecur s os da linguagem Obj ect Pas cal. O evento OnFilter Recor d r ecebe o par metr o booleano Accept cuj o valor , no final do cdigo do evento, deter mina s e o r egis tr o s er ex ibido (" aceito" ) ou no. Uma r efer ncia ao DataS et que es t s endo filtr ado tambm pas s ada como par metr o. Par a cada r egis tr o no DataS et, o evento OnFilter Recor d chamado e o par metr o Accept ver ificado. S e Accept for T r ue (o valor padr o) o r egis tr o ex ibido; s e Accept for Fals e, o r egis tr o no ex ibido (ele filtr ado). Vej a um ex emplo: pr ocedur e T For m1.T abPr odutos Filter Recor d(DataS et: T DataS et; var Accept: B oolean); begin if DataS et[ 'Des cr icao'] > = 'M' then if DataS et[ 'Pr eco'] * DataS et[ 'Quantidade'] < 2000.00 then Accept: = T r ue; end;

E vent os dos Dat aS et s


Os DataS ets ofer ecem vr ios eventos que podem s er us ados par a ver ificar e validar mudanas antes de s e tor nar em per manentes . H eventos as s ociados a todo os mtodos mais impor tantes , como Open, Clos e, I ns er t e Edit. Par a a maior ia des s es mtodos h dois eventos : um que ocor r e antes de o mtodo s er chamado (pr efix o " B efor e" ), e outr o que ocor r e depois (pr efix o " After " ). Vej a uma des cr io br eve de cada um des s es eventos : E s t es even t os ... B ef or eOpen , Af t er Open B ef or eCl os e, Af t er Cl os e B ef or eI n s er t , Af t er I n s er t B ef or eE di t , Af t er E di t B ef or eCan cel , Af t er Can cel B ef or eP os t , Af t er P os t B ef or eD el et e, Af t er D el et e On N ew R ecor d On Cal cF i el ds ...ocor r em : Antes e depois de o DataS et s er aber to. Antes e depois de o DataS et s er fechado. Antes e depois de o DataS et entr ar no es tado ds I ns er t. Antes e depois do DataS et entr ar no es tado ds Edit. Antes e depois ex plicitamente). do comando Cancel s er chamado (implicitamente ou

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 .

C ontrolando aatualizao de componentes


Componentes as s ociados a dados de um banco de dados , como o DB Gr id e a maior ia dos outr os componentes Data Contr ols , s o atualizados automaticamente quando o cur s or movido de um r egis tr o par a outr o. Muitas vezes , es s a atualizao no des ej ada como, por ex emplo, quando o pr ogr ama faz uma pes quis a em uma tabela, ou faz atualizaes em vr ios r egis tr os . A atualizao dos componentes pode s er des abilitada tempor ar iamente us ando o mtodo Dis ableContr ols e depois r eabilitada com EnableContr ols . Ger almente, es s es mtodos s o us ados em um bloco tr y- finally par a que os componentes s ej am r eabilitados mes mo s e ocor r er uma ex ceo no pr oces s amento do DataS et. Vej a a s eguir um ex emplo que us a es s e dois mtodos . O ex emplo aumenta, em 8% , o s alr io de todos os funcionr ios cadas tr ados no T able " T abFuncionar ios " . Os componentes as s ociados ao T able s o des abilitados antes do pr oces s amento da tabela e s o r eabilitados no final, na par te finally, mes mo s e houver ex cees dur ante o pr oces s amento. pr ocedur e T For m1.B utton1Click(S ender : T Obj ect); begin with T abFuncionar ios do begin tr y

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 .

C omponentes DataC ontrols e Table Usando o componente DataSource


O componente DataS our ce funciona como um " canal de comunicao" entr e DataS ets e os componentes DataContr ols . T odo DataS et (T able, Quer y, etc.) deve s er as s ociado a um componente DataS our ce par a que s eus dados pos s am s er ex ibidos em componentes Data Contr ols .

P r opr i edades do component e Dat aS our ce


O componente DataS our ce um componente s imples , com apenas cinco pr opr iedades , duas das quais (Name e T ag) s o comuns a todos os componentes do Delphi. Vej a uma des cr io das outr as tr s : P r opr i edade Au t oE di t D es cr i o Deter mina s e o DataS et ligado ao DataS our ce entr a no es tado ds Edit automaticamente quando o us ur io clica no componente as s ociado (um DB Gr id, por ex emplo). Lembr e- s e que um DataS et no es tado ds Edit pode ter s eus r egis tr os alter ados . O padr o par a es s a pr opr iedade T r ue. S e for es pecificado o valor Fals e, o DataS et deve s er colocado no es tado ds Edit ex plicitamente, us ando o mtodo Edit, par a que s ej a pos s vel fazer alter aes nele. D at aS et E n abl ed Contm o nome do DataS et as s ociado ao DataS our ce. Deter mina s e o DataS our ce es t ou no ativo (T r ue = ativo). Quando E nabled = Fals e (des ativado) todos os componentes ligados ao DataS our ce apar ecem vazios (no ex ibem dados ).

E vent os do component e Dat aS our ce


H apenas tr s eventos par a o componente DataS our ce: E ven t o On D at aCh an ge D es cr i o Es te evento ocor r e quando o cur s or do DataS et movido par a outr o r egis tr o, depois de alter aes no DataS et. I s s o acontece, por ex emplo, quando os mtodos Fir s t, Las t, Nex t ou Pr ior s o chamados . Voc pode us ar es s e evento par a s incr onizar os dados ex ibidos com os dados de um banco de dados (no cas o em que componentes comuns s o us ados par a ex ibir dados , por ex emplo). On S t at eCh an ge On U pdat eD at a Es te evento ocor r e quando o es tado do DataS et as s ociado ao DataS our ce alter ado. Ocor r e imediatamente antes de uma atualizao no DataS et as s ociado depois de um comando Pos t, mas antes dos dados s er em r ealmente atualizados . O evento ocor r e mes mo s e o comando Pos t for chamado implicitamente por outr o comando ou outr o componente.

Del phi 5

Usando o componente Table


Um componente T able contm todas as infor maes de uma tabela de um banco de dados . Vimos anter ior mente que um componente T able um DataS et, por tanto j conhecemos vr ios mtodos e pr opr iedades des s e componente. Na ver dade, por s er o tipo de DataS et mais comum, o componente T able foi o componente us ado na maior ia dos ex emplos do captulo anter ior . Nes te captulo ver emos mais detalhes s obr e algumas pr opr iedades e mtodos j conhecidos . Ver emos tambm como us ar vr ios r ecur s os que s o ex clus ivos dos componentes T able.

Conect ando-s e a uma t abel a de banco de dados


No captulo " T r abalhando com bancos de dados no Delphi: uma vis o ger al" , vimos um ex emplo completo onde conectamos uma componente T able a um banco de dados e ex ibimos o s eu contedo em um componente DB Gr id. Vej a aquele captulo par a um des cr io pas s o- a- pas s o s obr e como r ealizar a conex o com um banco de dados . O pr ocedimento par a a conex o pr ecis a alter ar tr s pr opr iedades do componente T able. Vej a a s eguir uma des cr io de cada uma des s as pr opr iedades . P r opr i edade Act i ve D es cr i o Active deter mina s e a tabela es t aber ta ou no. Es ta pr opr iedade pode s er alter ada em tempo de des envolvimento par a que os r egis tr os da tabela s ej am ex ibidos , mes mo antes da ex ecuo do aplicativo. A pr opr iedade Active deve es tar em Fals e par a que s ej a pos s vel alter ar vr ias pr opr iedades da tabela, inclus ive as pr opr iedades Databas eName e T ableName. Quando es tas duas pr opr iedades s o alter adas , o Delphi alter a automaticamente Active par a Fals e. D at abas eN am e Databas eName o nome do banco de dados que contm a tabela as s ociada. O nome es pecificado aqui ger almente um Alias definido no DataB as e Des ktop. Par a tabelas locais , como as dos bancos Par adox e dB AS E, pode- s e tambm es pecificar o dir etr io onde as tabelas do banco de dados es to localizadas . T abl eN am e T ableName o nome da tabela do banco qual o componente T able es t as s ociado. Quando a pr opr iedade Databas eName definida pr imeir o, as tabelas do banco de dados s o lis tadas automaticamente par a es s a pr opr iedade.

Cont r ol ando o aces s o a uma t abel a


Par a alguns bancos de dados , pr incipalmente os que us am S QL, h um contr ole r gido s obr e a leitur a e a es cr ita dos r egis tr os de uma tabela. H tr s pr opr iedades do componentes T able que per mitem ver ificar per mis s es ou contr olar o aces s o s tabelas de um banco de dados . Vej a a s eguir uma des cr io des s as pr opr iedades : P r opr i edade Can Modi f y D es cr i o Es ta uma pr opr iedade s omente leitur a que indica s e a tabela as s ociada ao componente T able pode s er alter ada ou no. Voc pode ver ificar o valor de CanModify par a s e cer tificar que os dados da tabela podem s er alter ados . Deter mina s e o us ur io pode vis ualizar e alter ar os dados da tabela, ou apenas vis ualizar es s es dados . O valor de ReadOnly contr olado pelo aplicativo e no pelo banco de dados , como acontece par a a pr opr iedade CanModify. Voc pode alter ar a pr opr iedade ReadOnly par a T r ue (o padr o Fals e) par a ex ibir os dados em uma tabela s em, no entanto, per mitir alter aes do us ur io. E x cl u s i ve Es ta pr opr iedade us ada apenas par a tabelas Par adox , dB AS E ou Fox Pr o. Alter e- a par a T r ue par a que apenas um us ur io de cada vez tenha aces s o tabela. S e o valor de Ex clus ive for Fals e, s er per mitido o aces s o tabela por vr ios us ur ios ao mes mo tempo.

R eadOn l y

T r abal hando com R anges


Algumas vezes , es pecialmente quando s e es t tr abalhando com tabelas ex tens as , til r es tr ingir os r egis tr os ex ibidos a apenas um s ubconj unto dos r egis tr os de uma tabela. Uma maneir a par a fazer is s o atr avs de filtr os , como vimos no captulo s obr e DataS ets . Outr a maneir a us ando Ranges , um r ecur s o ex clus ivo dos componentes T able. Os Ranges definem um valor inicial e um valor final par a um ou mais campos de uma tabela. Par a tabelas Par adox e dB AS E, o campos us ados devem s e index ados . Par a tabelas S QL (Or acle, S QL S er ver , S ybas e, etc.) pode- s e us ar quais quer campos par a os Ranges . A maneir a mais s imples e dir eta par a s e definir um Range us ando o mtodo S etRange. Es te mtodo tem como ar gumentos duas lis tas de valor es : os valor es iniciais e os valor es finais do Range. Os valor es devem s er lis tados na or dem dos campos da tabela e devem s er colocados entr e colchetes ( [ ] ). Us e a palavr a- chave nil par a omitir campos do incio da tabela. Vej a um ex emplo do us o de S etRange, par a uma tabela cuj o pr imeir o campo um cdigo de quatr o dgitos :

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.

Cr i ando campos per s i s t ent es


Os componentes T Field, ou campos per s is tentes , s podem s er cr iados dentr o de DataS ets . Na maior ia das vezes , os campos per s is tentes s o as s ociados aos campos de uma tabela j ex is tente, por tanto o DataS et deve es tar ligado a um banco de dados antes da cr iao dos campos . Como os DataS ets mais us ados s o os componentes T able, us ar emos es s e componentes como bas e par a os ex emplos do r es tante des s a s eo. Os pr ocedimentos apr es entados a s eguir , no entanto, valem tambm par a outr os tipos de DataS ets , como o componente Quer y, por ex emplo. Par a cr iar campos per s is tentes par a um componente T able, clique duas vezes no componente T able, par a ex ibir o Fields Editor (vej a ilus tr ao a s eguir ).

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.

T i pos de campos per s i s t ent es


Quando voc cr ia campos per s is tentes par a um DataS et, o Delphi adiciona, ao cdigo da Unit que contm o DataS et, declar aes par a cada componente T Field as s ociado. Vej a as declar aes ger adas par a o ex emplo anter ior (des tacadas em negr ito). unit Unit1; ... 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; end; ...

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.

P r opr i edades dos component es T F i el d


Uma das maior es vantagens dos componentes T Field (campos per s is tentes ) s obr e os campos dinmicos (cr iados automaticamente pelo Delphi) o fato de que voc pode alter ar as pr opr iedades dos campos T Field. Vej a as pr opr iedades mais teis dos campos T Field na tabela a s eguir : P r opr i edade Al i gn m en t D ef au l t E x pr es s i on D es cr i o Deter mina o alinhamento do valor ex ibido no campo. Defina aqui um valor padr o par a o campo. O valor pode s er qualquer ex pr es s o vlida em S QL, mas que no s e r efir a a nomes de campos . O valor deve s er es pecificado entr e as pas s imples , a no s er que s ej a for mado apenas por dgitos . O ttulo mos tr ado par a o campo em componentes como o DB Gr id. Deter mina s e o campo pode ou no s er alter ado. Quando um campo cr iado, ReadOnly definido de acor do com o campo da tabela de banco de dados as s ociado a ele. Voc pode alter ar ReadOnly par a T r ue par a pr oteger um campo contr a alter aes , mes mo s e o campo cor r es pondente no banco de dados no es tiver pr otegido. N OT A: Em um componente DB Gr id, pr es s ionar T AB pula os campos que tm a pr opr iedade ReadOnly = T r ue. R equ i r ed O valor de Requir ed definido automaticamente pelo Delphi quando um campo cr iado. Es s a pr opr iedade deter mina s e o campo pode ou no s er nulo. Faa Requir ed = T r ue par a pr oibir valor es nulos par a um campo. Alter e es s a pr opr iedade par a Fals e par a es conder o campo em um DB Gr id. O valor padr o T r ue. Es s a pr opr iedade muito til quando s e us a campos calculados em uma tabela. Voc pode es conder os campos que for am us ados par a os clculos , mos tr ando apenas os campos com os r es ultados , por ex emplo.

D i s pl ayL abel R eadOn l y

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).

bat Copy bat D el et e bat U pdat e

E x ecut ando a oper ao de t r ans fer nci a


A tr ans fer ncia de dados com um componente B atchMove pode s er r ealizada em tempo de des envolvimento ou em tempo de ex ecuo. Em tempo de ex ecuo, us e o mtodo Ex ecute do componente B atchMove, como em: B atchMove1.Ex ecute;

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 ).

L i dando com er r os na t r ans fer nci a


Uma oper ao de tr ans fer ncia de dados entr e tabelas pode caus ar muitos er r os , pr incipalmente quando a quantidade de dados a s er tr ans fer ida gr ande, ou quando h muitas difer enas entr e as tabelas de or igem e de des tino. Er r os que podem ocor r er s o violaes de chave (quando um r egis tr o adicionado contm a mes ma chave que um r egis tr o ex is tente) e er r os de conver s o (os tipos dos campos no s o compatveis ). O componente B atchMove pode cr iar novas tabelas dur ante a tr ans fer ncia, par a per mitir um contr ole maior s obr e os r egis tr os que for am tr ans fer idos e s obr e os r egis tr os que caus ar am pr oblemas . T r s tabelas (do tipo Par adox ) podem s er cr iadas . As tr s tabelas contm (r es pectivamente): Regis tr os alter ados dur ante a tr ans fer ncia. Regis tr os que no puder am s er tr ans fer idos , devido a violaes de chave ou r es tr ies de integr idade. Regis tr os que tiver am campos cor tados , devido conver s o dos tipos de cada campo, ou a campos com do mes mo tipo, mas com tamanhos difer entes .

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.

Ch an gedCou n t K eyVi ol T abl eN am e

K eyVi ol Cou n t P r obl em T abl eN am e

P r obl em Cou n t

Del phi 5

C omponentes DataC ontrols


Os componentes da pgina Data Contr ols , da paleta de componentes do Delphi, per mitem aces s ar e alter ar dados em um banco de dados dir etamente. J vimos uma intr oduo br eve s obr e es s es componentes e j us amos um deles nos ex emplos anter ior es : o componente DB Gr id. Nes te captulo, ver emos detalhes s obr e como funcionam e como us ar os mais impor tantes componentes Data Contr ols . T odos os componentes Data Contr ols tm a capacidade de ex ibir e alter ar dados de um banco de dados . Muitas das tar efas neces s r ias par a a leitur a e a manipulao de dados s o r ealizadas automaticamente por es s es componentes . Algumas vezes , um aplicativo inteir o com aces s o a bancos de dados pode s er des envolvido us ando componentes Data Contr ols , s em a neces s idade de manipular dados dir etamente com pr ogr amao.

P r opr i edades Dat aS our ce e Dat aF i el d


H dois tipos bs icos de componentes Data Contr ols : os que aces s am campos de uma DataS et, como os componentes DB Edit e DB T ex t, e os que aces s am r egis tr os inteir os de um DataS et, como o componente DB Gr id. Os componentes que aces s am os dados de um DataS et campo a campo tm duas pr opr iedades impor tantes em comum: DataS our ce e DataField. A pr opr iedade DataS our ce deter mina o DataS our ce ao qual o componente es t conectado. Es te DataS our ce deve es tar conectado a um componente T able ou Quer y (um DataS et), par a que pos s a ter aces s o ao banco. A pr opr iedade DataField indica o campo ao qual o componente es t as s ociado. Es te um dos campos do DataS et conectado ao DataS our ce. Os componentes DB Gr id e DB Navigator aces s am dados r egis tr o por r egis tr o, e no campo por campo, como os outr os componentes Data Contr ols . Por tanto, es s es componentes no apr es entam a pr opr iedade DataField (eles no es to as s ociados a um campo es pecfico). Outr as pr opr iedades e r ecur s os comuns . A maior ia dos componentes Data Contr ols tm componentes cor r es pondentes na pgina S tandar d da paleta de componentes . Por ex emplo, o componente DB Edit cor r es ponde ao componente Edit, e o componente DB T ex t cor r es ponde ao componente Label. Na ver dade, vr ios dos componentes Data Contr ols s o apenas ver s es com aces s o a bancos de dados dos componentes da pgina S tandar d. Por is s o, a maior ia das pr opr iedades des s es componentes s o as mes mas , como aquelas que deter minam a cor , o alinhamento, as dimens es , etc. Muitos eventos e mtodos tambm s o os mes mos . Nas s ees a s eguir , ver emos apenas as pr opr iedades e eventos r elevantes par a o tr abalho com bancos de dados (alm de algumas outr as pr opr iedades es s enciais ). Vej a os captulos s obr e os componentes comuns par a mais detalhes s obr e as outr as pr opr iedades e eventos .

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.

C omponente DBM emo


Es te componente s emelhante ao componente Memo. Ele us ado par a ex ibir tr echos longos de tex to, como os ar mazenados em campos do tipo " MEMO" dos bancos de dados . H algumas novas pr opr iedades inter es s antes :

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

C omponente DBC heckBox


O componente DB CheckB ox uma ver s o es pecial, com aces s o a bancos de dados , do componente CheckB ox . Es s e componente ger almente ligado a um campo do tipo booleano, mas tambm pode s er ligado a outr os tipos de campos com dois valor es pos s veis , como " S im/No" , " Ligado/Des ligado" , etc. Os valor es as s ociados aos es tados do DB CheckB ox s o definidos pelas pr opr iedades ValueChecked e ValueUnchecked: P r opr i edade ValueChecked D es cr i o Os valor es que cor r es pondem ao DB CheckB ox quando ele es t mar cado. Pode- s e es pecificar um nico valor , ou uma lis ta de valor es s epar ados por ponto- evr gulas , como " S im; Ver dadeir o; T r ue" . S e o valor do campo as s ociado for um dos valor es es pecificados na lis ta, o componente DB CheckB ox apar ece mar cado. S e o campo as s ociado for um campo booleano, um valor T r ue mar ca, e um valor Fals e des mar ca o DB CheckB ox . I s s o acontece mes mo s e os valor es T r ue e Fals e no for em es pecificados nas pr opr iedades ValueChecked e ValueUnchecked. Os valor es que cor r es pondem ao DB CheckB ox quando ele es t des mar cado. Como par a a pr opr iedade anter ior , pode- s e es pecificar um nico valor , ou uma lis ta de valor es , como por ex emplo: " No; Fals e; Fals o" .

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).

C omponente DBRadioG roup


Es s e componente s emelhante ao componente RadioGr oup. Ele us ado par a lis tar opes que s o mutuamente ex clus ivas (s omente uma pode s er es colhida). Uma car acter s tica inter es s ante des s e componente que o ttulo ex ibido ao lado dos RadioB uttons no pr ecis a s er o mes mo valor que lido ou ar mazenado no campo as s ociado. A pr opr iedade I tems define os ttulos que s o ex ibidos e Values define os valor es as s ociados a cada ttulo. P r opr i edade Capt i on I t em s I t em I n dex D es cr i o O tex to que apar ece na par te de cima do DB RadioGr oup. Us ado par a identificar o gr upo de opes . Os itens ex ibidos ao lado de cada RadioB utton. Clique duas vezes ao lado des s a pr opr iedade par a definir a lis ta de itens digite um item par a cada linha. (Apenas dis ponvel atr avs de pr ogr amao). Retor na o ndice do RadioB utton que es t s elecionado no momento. O ndice um nmer o inteir o. Z er o cor r es ponde ao pr imeir o RadioB utton. Os valor es as s ociados aos itens ex ibidos . Os valor es es pecificados s o os valor es que s o lidos ou es cr itos no campo as s ociado. Clique duas vezes ao lado da pr opr iedade par a definir a lis ta de valor es . A or dem dos valor es deter mina a as s ociao com os itens es pecificados na pr opr iedade I tems . S e Values for deix ada vazia vazia, os valor es lidos e ar mazenados s o os es pecificados na pr opr iedade I tems (os mes mos que apar ecem na tela). (Apenas dis ponvel atr avs de pr ogr amao). O valor cor r es pondente ao RadioB utton que es t s elecionado.

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.

B or der S t yl e Cen t er Qu i ckD r aw

S t r et ch

C omponentes DBListBox e DcomboBox


Os componentes DB Lis tB ox e DB ComboB ox s o as ver s es com aces s o a bancos de dados dos componente Lis tB ox e ComboB ox , r es pectivamente. Os valor es lis tados nes s es componentes devem s er adicionados dir etamente, alter ando a pr opr iedade I tems . Os valor es no s o tr azidos do campo as s ociado no banco de dados (is s o no s er ia pr tico par a tabelas com centenas ou milhar es de valor es difer entes , por ex emplo). P r opr i edade I t em s D es cr i o I tems deter mina os itens ex ibidos . Es s es itens podem s er adicionados manualmente, em tempo de des envolvimento, ou em tempo de ex ecuo. A pr opr iedade I tems do tipo T S tr ings . I s s o s ignifica que voc pode us ar os mtodos Add e Append par a adicionar itens , e Delete par a apagar itens (vej a detalhes s obr e o tipo T S tr ings na s eo s obr e o componente Memo, no captulo " Componentes Vis uais Comuns " . (S omente par a o componente DB ComboB ox ). Deter mina o compor tamento e a apar ncia do componente DB ComboB ox . As opes s o idnticas s do componente ComboB ox elas s o des cr itas em detalhe no s eo s obr e es te componente.

S t yl e

C omponentes DBLookupList e DBLookupC ombo


Es tes dois componentes s o s emelhantes , na s ua apar ncia, aos componentes DB Lis tB ox e DB ComboB ox , mas ofer ecem vr ios r ecur s os a mais . Os dois componentes tr abalham com dois DataS ets e no um como acontece com a maior ia dos outr os componentes Data Contr ols . O compor tamento dos componentes DB LookupLis t e DB LookupCombo par ecido com o dos campos lookup, que vimos no captulo s obr e componentes T Field. Eles " cas am" dois campos es pecificados em DataS ets difer entes e ex ibem um valor r es ultante. Um componente DB LookupLis t ou DB LookupCombo pode s er ligado a um campo lookup. Nes s e cas o, bas ta definir as pr opr iedades DataS our ce e DataField apr opr iadamente, par a as s ociar o campo lookup ao componente. O componente " r econhece" que o campo o do tipo lookup r ealiza as bus cas automaticamente, ex ibindo os r es ultados . Os componentes DB LookupLis t e DB LookupCombo, no entanto, s o ger almente ligados a campos comuns . Eles tm a capacidade de fazer a bus ca dos valor es automaticamente, s em a neces s idade de us ar campos lookup pr edefinidos . Par a is s o, neces s r io lig- los a campos de dois DataS ets difer entes . Par a configur ar componentes DB LookupLis t ou DB LookupCombo, na pr opr iedade DataS our ce, es colha o DataS our ce a s er dir etamente ligado ao componente. Os dados des s e DataS our ce s o os dados que s er o alter ados pelo componente. Na pr opr iedade DataField, es colha o campo que s er alter ado. Na pr opr iedade Lis tS our ce defina o DataS et de onde s er o lidos os valor es , de acor do com o valor do campo es pecificado em DataField. Na pr opr iedade Lis tField defina o campo de onde os valor es s er o lidos . Os valor es lidos a par tir do campo definido em Lis tField s o os valor es ex ibidos no componente. Finalmente, alter e a pr opr iedade K eyField par a o campo que s er compar ado com o campo definido em DataField. I s s o ter mina a configur ao. Quando os DataS ets s o ativados , o valor do campo DataField (do pr imeir o DataS et) lido e compar ado com os valor es no campo K eyField (do s egundo DataS et). O valor r etor nado o valor do campo Lis tField (do s egundo DataS et).

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

C omponente DBG rid


O componente DB Gr id um dos componentes mais us ados par a tr abalhar com os dados de um DataS et. Da mes ma for ma que par a o componente DB Navigator , o componente DB Gr id tr abalha com dados r egis tr o por r egis tr o. Vej a um ex emplo de um DB Gr id em ao:

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.

Confi gur ando um component e Quer y


O componente Quer y, como o componente T able, um tipo de DataS et. Por tanto, muitas das pr opr iedades e mtodos que vimos no captulo s obr e DataS ets tambm s e aplicam ao componente Quer y. Vej a os pas s os bs icos neces s r ios par a us ar e configur ar um componente Quer y em um for mulr io: 1. 2. Adicione um componente Quer y ao for mulr io. Alter e a pr opr iedade Databas eName par a o Alias do banco de dados a s er utilizado.

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 ).

E s peci fi cando a cons ul t a S QL a s er ex ecut ada


A cons ulta S QL de um componente Quer y ar mazenada na s ua pr opr iedade S QL. A pr opr iedade S QL uma lis ta de s tr ings (do tipo T S tr ings ), contendo as linhas da cons ulta S QL. Quando um componente Quer y ex ecutado, todas as linhas da pr opr iedade S QL s o concatenadas em uma s e enviadas ao banco de dados . Os r es ultados da cons ulta S QL podem, ento, s er aces s ados atr avs do componente Quer y. Pode- s e es pecificar dois tipos de cons ultas S QL: con s u l t as es t t i cas e con s u l t as di n m i cas . As cons ultas es tticas no podem s er alter adas em tempo de ex ecuo. S e os dados do banco de dados no for em alter ados entr e uma ex ecuo e outr a da cons ulta, os dados r etor nados s er o os mes mos . As cons ultas dinmicas , tambm chamadas de cons ultas par ametr izadas , podem s er alter adas dur ante a ex ecuo do aplicativo. Cons ulta dinmicas contm par metr os . Os par metr os podem s er alter ados dir etamente no cdigo, ou em tempo de des envolvimento. Par a es pecificar uma cons ulta es ttica (s em par metr os ), em tempo de des envolvimento, na pr opr iedade S QL do componente Quer y, digite a cons ulta S QL a s er ex ecutada. Par a alter ar o valor da pr opr iedade S QL, clique duas vezes ao lado des s a pr opr iedade no Obj ect I ns pector e digite o comando S QL na j anela que apar ece (vej a a figur a abaix o).

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:

No ex emplo, s o definidos dois par metr os : quant e val.

T r abal hando com par met r os


Quando voc define par metr os na cons ulta S QL de um componente Quer y, o Delphi l e r egis tr a automaticamente os par metr os definidos . Antes de ex ecutar a cons ulta par ametr izada, no entanto, voc deve configur ar os par metr os , definindo o tipo e (pos s ivelmente) um valor inicial par a cada par metr o. Par a configur ar os par metr os de um componente Quer y, s elecione o componente Quer y e clique duas vezes ao lado da pr opr iedade Par ams , no Obj ect I ns pector . I s s o mos tr a o Editor de Par metr os (figur a abaix o)

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.

E x ecut ando cons ul t as


Um componente Quer y deve s er " ex ecutado" par a que s ua cons ulta S QL s ej a ex ecutada. Quando voc ex ecuta um componente Quer y, o Delphi inter pr eta o s eu comando S QL, s ubs titui os par metr os pelos valor es es pecificados e dis ponibiliza os dados r es ultantes da cons ulta. Nos ex emplos anter ior es , us amos o mtodo Open (ou a pr opr iedade Active) do componente Quer y par a ex ecutar cons ultas S QL. Open, no entanto, s pode s er us ado par a cons ultas com o comando S E L E CT . As cons ultas S QL que no r etor nam dados , como as que us am os comandos I N S E R T , U P D AT E , D E L E T E , etc. devem s er ex ecutadas us ando o mtodo E x ecS QL , como em Quer y1.Ex ecS QL;

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.

t abel as con s u l t adas con di o

Cam pos de or den ao

Cam pos de agr u pam en t o

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

U s ando L I K E e car act er es " cur i nga"


Os comando LI K E us ado em condies , j unto com os car acter es % e _ , par a fazer " cas amentos " par ciais . O car acter e % vale por um ou mais car acter es (como o * do DOS ); o car acter e _ vale por ex atamente um car acter e (s emelhante ao ? do DOS ). Vej a um ex emplo: S ELECT * FROM Pr odutos WHERE Nome LI K E Micr o% Es te ex emplo r etor na todos os pr odutos com o nome comeando com " Micr o" .

U s ando funes de agr egao


As funes de agr egao s o us adas par a r ealizar clculos s imples nos valor es de um campo, como s omas , mdias e contagens . S o cinco as funes de agr egao: F u n o SUM AVG MI N MAX COU N T R et or n a... A s oma de todos os valor es numr icos em um campo. A mdia de todos os valor es no nulos em um campo. O valor mnimo em um campo. O valor mx imo em um campo. O nmer o de valor es em um campo, ou o nmer o total de r egis tr os r etor nados .

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

A l i nguagem de defi ni o de dados O comando CR E AT E T AB L E


Us ado par a cr iar tabelas . Com es s e comando, voc es pecifica o nome da tabela a s er cr iada e o nome e o tipo de cada campo da nova tabela: CREAT E T AB LE Nome da T abela ( Campo1 T I PO1 Campo2 T I PO2 ... PRI MARY K EY (CampoChave)) A par te PRI MARY K EY define a chave pr imr ia da tabela. Vej a um ex emplo do us o do comando CREAT E T AB LE: CREAT E T AB LE Jogador es ( Nome CHAR[ 40] , S obr enome CHAR[ 60] , DataNas c DAT E, Clube: CHAR[ 40] , PRI MARY K EY (S obr enome)) Par a cr iar uma tabela do tipo Par adox ou dB AS E adicione .DB ou .DB F ao final do nome da tabela e coloque o nome entr e as pas , como no ex emplo a s eguir : CREAT E T AB LE " Clientes .db" ( Codigo: I NT EGER; Nome CHAR[ 30] , Cidade CHAR[ 40] )

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

Banco de Dados BDE compatvel

Banco de Dados BDE compatvel

Banco de Dados BDE compatvel

Banco de Dados BDE compatvel

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.

ConnectionT imeout ConnectOption

Cur s or Location DefaultDatabas e I s olationLevel Mode Pr ovider

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

Max Recor ds T ableDir ect T ableName

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 .

OnfieldChangeComplete OnMoveComplete OnRecor dChangeComplete OnWillChangefield OnWillChangeRecor d OnWillChangeRecor ds et OnWillMove

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.

Max Recor ds Par amCheck Par ameter s

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 .

OnFetchComplete OnFetchPr ogr es s

OnfieldChangeComplete OnMoveComplete OnRecor dChangeComplete OnWillChangefield OnWillChangeRecor d OnWillChangeRecor ds et OnWillMove

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

Nome da S t or edP r ocedu r e.

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 .

LoginPr ompt S QLDialect T r aceFlags

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.

T I B Dat abas eI nfo


Retor na var ias infor maes a r es peito do banco de dados es pecificado. B as ta ins er ir um componente T I B Databas eI nfo, configur ar s ua pr opr iedade Databas e par a o obj eto T I B Databas e cor r es pondente, e captur ar os valor es de s uas pr opr iedades .

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 .

Component es Qui ck R epor t


O Delphi ofer ece o conj unto de componentes QuickRepor t, par a a cr iao de r elatr ios par a impr es s o, bas eados em bancos de dados . Os " componentes QuickRepor t" , como os chamar emos , es to localizados na pgina QRepor t da paleta de componentes .

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.

Bandas e tipos de bandas


Com a pr opr iedade B ands do componente QuickRep, pode- s e adicionar ou r emover os s eis tipos de bandas mais us ados . Par a adicionar uma banda, clique duas vezes na pr opr iedade B ands , no Obj ect I ns pector , e alter e par a T r ue a pr opr iedade " Has ..." cor r es pondente ao tipo de banda des ej ado (vej a a figur a a s eguir ).

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

Alterando a formatao geral do relatrio


O componente QuickRep ofer ece muitas opes de for matao, que podem s er alter adas atr avs do Obj ect I ns pector (pr opr iedades B ands , Font, Fr ame e Page), ou us ando o comando Repor t S ettings dis ponvel no menu de atalho do componente. Clique com o boto dir eito no componente QuickRep e es colha o comando Repor t S ettings (ou clique duas vezes no componente) par a ex ibir a s eguinte a caix a de dilogo ilus tr ada a s eguir . Vej a o que pode s er alter ado em cada s eo des ta caix a: Na s eo Paper s ize, voc pode alter ar o tipo e o tamanho do papel, e a or ientao (r etr ato ou pais agem). Na s eo Mar gins , as mar gens das pginas , em milmetr os (ou

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.

Propriedades comuns a todas as bandas


H vr ias pr opr iedades comuns a todas as bandas , como as que deter minam a altur a da banda ou linhas de contor no. Par a alter ar as pr opr iedades de uma banda, deve- s e pr imeir o s elecion- la (nor malmente) com um clique. Vej a a s eguir uma des cr io das pr opr iedade mais impor tantes . P r opr i edade For ceNewPage For ceNewColumn D es cr i o Alter e a pr opr iedade For ceNewPage par a T r ue, par a que s ej a iniciada uma nova pgina cada vez que a banda s elecionada impr es s a. Alter e a pr opr iedade For ceNewColumn par a T r ue, par a que s ej a iniciada uma nova coluna cada vez que a banda s elecionada impr es s a. (Aplicvel s omente em r elatr ios com mais de uma coluna). A pr opr iedade Height deter mina a altur a da banda, na unidade de medida atual. Es s a pr opr iedade pode s er alter ada de for ma inter ativa no r elatr io clique na banda e ar r as te os pequenos quadr ados que apar ecem acima e abaix o da banda. A pr opr iedade Fr ame deter mina a ex ibio de bor das em volta da banda de vr ios for matos e cor es , em volta das pginas do r elatr io. As opes s o bas tante intuitivas : Color : A cor das bor das . (S e aplica a todas as quatr o bor das ). Dr awB ottom, Dr awLeft, Dr awRight, Dr awT op: Deter minam quais bor das s er o ex ibidas abaix o, es quer da, dir eita e acima, r es pectivamente. S tyle: o es tilo da linha das bor das (s lido, tr acej ado, pontilhado, etc.) Width: a es pes s ur a das bor das . (S e aplica a todas as quatr o bor das ).

Height

Fr ame

O utros componentes importantes


Ver emos agor a mais alguns detalhes impor tantes s obr e os quatr o componentes mais us ados em r elatr ios : QRLabel, QRDB T ex t, QRS ys Data e QREx pr .

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.

C riando relatrios comagrupamento


Relatr ios com agr upamento s o muito comuns , na maior ia dos aplicativos com aces s o a bancos de dados . Ex emplos des s e tipo de r elatr io s o " Funcionr ios por loj a" , " Pr ofes s or es por depar tamento" , " Mdico por es pecializao" , etc. Os r elatr ios com agr upamento s o cr iados com os mes mos componentes apr es entados nas s ees anter ior es . Apenas um novo componente neces s r io: um tipo de banda es pecial chamado QRGr oup. Ver emos como cr iar um r elatr io com agr upamento atr avs de um ex emplo, um r elatr io (em um aplicativo de contr ole de es toque) que lis ta o es toque agr upado por loj a. Us ar emos um componente Quer y par a obter os dados neces s r ios e par a gar antir a or denao cor r eta (por loj a).

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.

Cada con e r epr es en t a um ar qui vo .CP L , l ocal iz ado n o di r et r i o W i ndow s / S ys t em

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.

Obj et o T Appl et Modul e Principais Propriedades


AppletI con Caption Help Res idI con Res idI nfo Res idName cone que s er ex ibido no Painel de Contr ole. T ex to que ir apar ecer abaix o do cone, r epr es entando o nome da aplicao. T ex to que s er ex ibido na bar r a de s tatus do painel de contr ole. I ndica o nmer o do cone a s er ex ibido. Lembr e- s e que um aplicativo pode pos s uir vr ios cones . I ndica o nmer o do Res our ce da s tr ing de help. Vr ias s tr ings de Help s podem s er adicionadas com um editor de r ecur s os . I ndica o nmer o do Res our ce da s tr ing r efer ente ao Caption. Vr ios Captions s podem s er adicionados com um editor de r ecur s os .

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

Servidor WEB Midas Server CGI XML

Aplicao CGI

Pedido Resposta (Request) (Respons e) Browser Cliente

Pedido (Request)

Buffer dos registros . Browser Cliente

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

Aps dar OK na caix a de dilogo, o obj eto T r emoteDataModule ir apar ecer :

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:

I S API /NS API CGI Win/CGI

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

Name RemoteS er ver Pr ovider Name

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.

U t i l i z ando o DB Navi gat or com X ML


Vamos cr iar um outr o tipo de inter face par a a nos s a Homepage: Os dados s er o ex ibidos em campos e o us ur io poder navegar entr e eles atr avs de uma bar r a de navegao. Par a a cons tr uo des te ex emplo, abr a o cliente XML cons tr udo anter ior mente. I ns ir a um novo Midas PagePr oducer . Com es te, ir emos contr uir a nova pgina de vis ualizao dos dados . D um clique duplo s obr e a pr opr iedade WebPageI tems , par a que o editor de pginas s ej a ex ibido. S elecione o item Midas PagePr oducer 1 e clique com o boto inver s o do mous e. S elecione a opo New Component... Na j anela de s eleo, s elecione a opo DataFor m. Clique s obr e o item datafor m1 e pr es s ione o boto inver s o do mous e. S elecione a opo FieldGr oup. Clique novamente s obr e o item Datafor m1 e adicione o item DataNavigator . Ok! S er neces s r io cr iar uma ao par a es te PagePr oducer . Clique com o boto inver s o s obr e o WebDataModule e s elecione a opo Action Editor . Cr ie uma nova ao e configur e s ua pr opr iedade Pr oducer par a o obj eto Midas PagePr oducer 2, que acabar a de s er cr iado. Compile o pr oj eto e ins tale- o no s er vidor Web. Par a tes tar a aplicao bas ta digitar a ur l: http: //s er vidor web/dir etor io_ da_ aplicao/pr oj ect1.ex e/Midas PagePr oducer 2 E o r es ultado s er par ecido com a ilus tr ao abaix o:

Del phi 5

Você também pode gostar