Você está na página 1de 104

O obejtivo deste material ser prticio e objetivo Exemplos desta apostila esto baseados no Delphi 6 e 7

Desde que a primeira verso do Delphi foi lanada, em 1995, esta ferramenta tem se mostrado como a melhor escolha no desenvolvimento para Windows. Numa relao com outros ambientes de programao, podemos dizer que o Delphi tem o poder do C++, e a facilidade do Visual Basic. A principal vantagem do Delphi est na linguagem usada, Object Pascal, que uma evoluo do Pascal padro. O Pascal surgiu no final dos anos 60 e, at hoje, usada como uma das primeiras linguagens de programao para estudantes de computao. Em 1984, a Borland lanou o Turbo Pascal, que se firmou como o melhor compilador de Pascal do mercado e, a partir de ento, passou a incluir novos recursos nesta linguagem, como Units e Objetos, at a ascenso do Windows, quando foi lanado o Turbo Pascal for Windows e, depois, o Borland Pascal, cuja linguagem considerada a primeira verso da Object Pascal. Na sua atual verso, usada pelo Delphi, a Object Pascal uma linguagem poderosa, slida e respeitada, sem perder sua peculiar facilidade. No Delphi, a criao de aplicativos comea com a montagem de componentes em janelas, como se fosse um programa grfico, o usurio tambm pode utilizar componentes desenvolvidos por terceiros ou criar seus prprios componentes. O Delphi vem com todas as ferramentas necessrias para a criao de bancos de dados dBase e Paradox, alm de uma verso do Interbase, permitindo a criao de aplicativos com banco de dados sem a necessidade de aquisio de outro programa. O Delphi tambm tem acesso a bases de dados como Foxpro, Access, InFormix, SYBASE, Oracle, SQL Server e DB2, alm de qualquer outro banco de dados para Windows compatvel com ODBC.

A imaginao mais importante que o conhecimento Albert Einstein

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

INFORMAES BSICAS NECESSRIAS

difcil programar ?
Todos podemos, porm precisamos querer . Nem todas as pessoas possuem a tendncia e serem programadores, contudo programar com Delphi super fcil e voc tambm conseguir. J

O que um programa ?
So ordens em forma de cdigo da linguagem Delphi dadas ao computador para que ele realize de forma estruturada e lgica o que lhe for pedido. Ex: Voc trabalha, certo ? , ganha um salrio , paga seus fornecedores ( supermercado, restaurante etc ) , se no pag-los no ter o que comer... Um programa tornar suas rotinas de trabalho mais prticas. O programador ordenar ao programa fazer determinadas tarefas em determinada seqncia lgica. uma definio sintetizada.

O que um programador de computador ?


Programador de computador a pessoa que possui conhecimentos de uma linguagem, neste caso Dlephi, de lgica, anlize e estruturamento - basicamente. Todos somos programadores , todos os dias temos rotinas que devem ser cumpridas com uma determinada seqncia lgica. O programador de computador digita linhas de cdigo para criar um programa. Ex: Cadastrar clientes, transportadoras etc

O que um programa fonte ?


Programa o cdigo fonte digitado/criado pelo programador. O cdigo fonte fica sempre em poder do seu criador o programador . No comum vender o programa fonte ( o segredo do seu negcio ) para seu cliente - cada caso um caso J Ex: Programa de Cadastro de Clientes, programa de Cadastro de Fornecedores ( programa ou mdulo ).

Quando meu programa est pronto, o que venderei ?


No caso do Delphi, quando o programa estiver pronto basta copiar o programa com a terminao .exe , as tabelas que contem os dados e instalar o BDE na mquina do seu cliente..

O que um sistema ?
Um sistema composto de vrios programas ou arquivos. Minha empresa possui um sistema para folha de pagamento . Neste sistema existem vrios outros mdulos ( programas ) que interagem entre si e as vezes so transparentes para o usurio. Ex: Uma empresa tem um diretor ( programa_mestre.exe ), e este possui vrios funcionrios ( mdulos, programas ) que trabalham para esta empresa.

A religio sem a cincia cega, a cincia sem a religio intil Albert Einstein Delphi Aplicado
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

Adquira o software Delphi J Instale o Delphi no seu computador J

R Como criar um programa ou sistema em Delphi?


Digite o cdigo do programador que composto por ordens escritas com a linguagem Delphi juntamente com uma determinada lgica dizendo para o programa fazer alguma determinada tarefa. Compile ( Ctrl F9 ). O processo de compilao deve ser realizado para converter o cdigo fonte ( seu segredo de programador ) de forma que o computador possa interpret-lo e carreg-lo na memria ram ( mostrar na tela ). O usurio no ser capaz de ver o cdigo fonte ( ver o segredo ) do programa, somente usar o programa. Veja a interpretao de um programa: Voc j fez alguma casa, ou no ? Se j, tambm teve que fazer um projeto para esta, tambm programou detalhadamente custos do projeto etc... Isso tambm pode ser considerado um programa ( se usar material de qualidade inferior poder ter problemas, se usar material de tima qualidade ... se ... se... lgica ). Tudo dentro de uma seqncia lgica e criteriosa. Programar est em nosso meio todos os dias, assim sendo, podemos todos nos considerar desenvolvedores, pois, pensamos e analizamos tudo dentro de uma ordem lgica.

R Origem do nome Delphi = Delfos


De acordo com fontes obtidas na Internet... Na antiga Grcia, Delfos foi uma cidade sagrada localizada nas encostas do Monte Parnasso, onde Apolo possua um templo e ditava orculos pela boca de Pitia. Escavaes realizadas, desde o final do sculo passado, levaram descoberta dos templos de Apolo e de Atena, tesouros, obras de arte e esttuas que fazem de Delfos um dos mais ricos da Grcia. Em ingls a palavra Delfos escrita Delphi. J "Faa as coisas o mais simples que puder, porm no se restrinja s mais simples." Delphi Aplicado
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

R Tela padro do Delphi 6.0

Aba/paleta de propriedades. Paleta de eventos.

Form1 o nome do formulrio padro atribudo pelo Delphi.

Componentes.

Aps ter aberto o Delphi ser mostrado um Formulrio padro, object inspector, aba das propriedades e eventos. Para alternar entre o editor de cdigo fonte, pressione F12, para voltar para o formulrio pressione F12. Para alternar para as propriedades e eventos pressione F11.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

R Tela padro do Delphi 7.0

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

R Tela padro do Delphi 2005


Apenas para dar um idia do novo Delphi, pois os exemplos desta apostila so baseados no Delphi 6 e 7.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

"Disponvel no mercado desde 1995, quando foi lanada sua primeira verso, o novo Delphi 2005 chega ao mercado com recursos inovadores e implementaes significativas para maior produtividade no desenvolvimento para Microsoft Windows tanto na plataforma Win32 quanto .Net, e com otimizaes dos investimentos em software. Esta nova verso permite o desenvolvimento em Delphi ou C#, para Win32 ou .NET em um nico ambiente, com Gerenciamento do Ciclo Completo de Desenvolvimento da Aplicao presente. A Borland Software anuncia globalmente o Borland Delphi 2005, at ento conhecido pelo codinome Diamondback. O ambiente Rapid Application Development (RAD) para aplicaes Windows e .NET combina suporte a Win32, .NET, Delphi e C# em um nico ambiente. Seus novos recursos melhoram significativamente a produtividade do desenvolvedor de aplicaes e da equipe de desenvolvimento, e se integra s solues de Gerenciamento do Ciclo Completo de Desenvolvimento da Aplicao (Application Lifecycle Management - ALM) da Borland. "O Delphi 2005 o mais importante upgrade do Delphi em anos e o sistema de desenvolvimento IDE e ALM Windows mais completos existentes no mercado hoje, afirma George Paolini, vice-presidente e gerente geral de ferramentas de desenvolvimento da Borland. "Ele est diretamente alinhado com a viso da Borland para Produo Otimizada de Software, ajudando as equipes de desenvolvimento a aprimorar a previsibilidade e o sucesso de projetos de software para que eles sejam fornecidos no prazo, dentro do oramento e com o valor mximo para os negcios." Suportando diversas linguagens e SDKs Win32 e .NET, o Delphi 2005 traz muitos aprimoramentos inovadores como produtividade do desenvolvedor e da equipe, como code refactoring, teste unitrio e o novo framework de aplicao de negcios empresariais baseado no modelo ECO II (Enterprise Core Objects) para .NET. Tambm permite que equipes de desenvolvimento mantenham e usufruam de aplicaes Windows existentes, ao mesmo tempo explorando novas oportunidades. "A Borland entende a presso sobre as equipes de desenvolvimento Windows de hoje para suportar aplicaes existentes e, simultaneamente, evoluir com novas tecnologias, tudo no contexto de ciclos de fornecimento mais curtos e recursos reduzidos", declarou Michael Swindell, diretor de gerenciamento de produto para ferramentas de desenvolvimento da Borland. "O Delphi 2005 oferece as capacidades que os desenvolvedores precisam para acelerar o processo de desenvolvimento e manuteno de aplicaes Windows existentes e da prxima gerao." Alguns dos aprimoramentos mais significativos do Delphi 2005 so relacionadas abiaxo, permitindo-nos uma melhor compreeno deste revolucionrio produto. Suporta mulltiplas linguagens e SDKs Windows. Suportando desenvolvimento em Delphi e C#, possibilita desenvolvimento Win32 e .NET nativo a partir da mesma ferramenta e da mesma linguagem (Delphi). Tambm suporta ASP.NET, ADO.NET, VCL.NET e VCL para Win32.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

Integra solues ALM plenamente, sendo projetado para oferecer aos desenvolvedores uma viso das diversas fases do ciclo de desenvolvimento da aplicao com a integrao de StarTeam e Optimizeit. A integrao do StarTeam visa simplificar o gerenciamento de recursos de cdigo-fonte e aprimorar a comunicao da equipe, enquanto a incluso do Optimizeit Profiler para .NET ajuda a automatizar o teste unitrio e melhorar a qualidade e o desempenho gerais da aplicao. Implementa desenvolvimento MDA profissional, com ECO II do Delphi 2005 teremos uma soluo Model Driven Architecture (MDA) rpida e de classe empresarial para .NET com o objetivo de acelerar o desenvolvimento, aprimorar a qualidade e aumentar a capacidade de manuteno de aplicaes mais complexas. ECO II uma soluo completa para esquematizar e criar objetos automaticamente e fornece cache de objeto .NET altamente escalvel com capacidades avanadas de objeto, persistncia, verso e tradues. Delphi 2005 simplifica e acelera o desenvolvimento em Windows, incluindo muitos recursos com uma IDE inovadora para ajudar a aprimorar a experincia adiquirida do desenvolvedor, aumentando sua produtividade e otimizando todo o processo. Os recursos abrangem code refactoring avanado, Help Insights e Error Insights, SyncEdit, Gerenciamento de Histrico e novos aperfeioamentos na linguagem Delphi. Alm disso, um facilitador para ADO.NET foi projetado para acelerar e simplificar cada aspecto do desenvolvimento de aplicaes .NET conectadas a bancos de dados com Delphi ou C#. transparente, o compromisso da Borland em disponibilizar uma ferramenta, que integre todo o legado da plataforma Win32, avanando substancialmente no sentido do desenvolvimento para .Net framework. Isto um fator tranquilizador para quem necessite tomar deciso de desenvolver ou no para .Net neste momento, no necessitando com isso ter que se manter numa verso do produto defazada com o tempo. Delphi 2005, consegue com destreza, solucionar problemas no tocante a questes tcnicas, fornecendo um nico ambiente para acomodar tais objetivos. Pr-requisitos para instalar o Delphi 2005 .NET Framework 1.1 .NET Framework SDK 1.1 .Visual J# .NET 1.1 Redistributable Microsoft XML Core Services ( MSXML ) 4.0 SP2 Internet Explorer 6 SP1

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

Ao abrir o Delphi 2005 voc ver um tela como esta abaixo:

Vamos criar nosso primeiro programa, clique em File New VCL Forms Application Delphi for Win32

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

Editor cdigo fonte do Delphi 2005: Para melhor manipular ou navegar no cdigo fonte, no Delphi 2005 foi adicionado o sinal de MAIS Maximizar e o sinal de MENOS para minimizar Exemplo 1 para

Exemplo 2

Exemplo 3

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

10

File New VCL Forms Application Delphi for Win32

Vamos inserir um boto do tipo TBitBtn

Clique no componente e arraste-o para formulrio.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

11

A propriedade Caption foi alterada para Clique e Name para Clique_Bit.

Arquivo gerados pelo Dephi 2005.

Programa pronto.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

12

Outro exemplo:

Resultado:

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

13

R Introduo ao Delphi 6 / 7
Vamos criar um formulrio, por um boto e ao clicar neste boto mostar uma mensagem. Abra o Delphi 6.0, ser mostrada a tela abaixo. ( File New Application ). padro ser aberto um formulrio com nome Form1.

Insira um componente Button no formulrio ( Form1 ). O boto que esta na aba Standard.

Aps inserido boto do tipo ( Button ), d um clique duplo sobre Button1, ser aberta uma tela para definir o evento ( clique ) deste boto, ou seja, ao clicar no boto ser mostrada a mensagem Meu primeiro - Ol

O que um Evento ?: uma ao que ser executada. Neste exemplo, ao clicar no boto OK ( no evento OnClick ) ser mostrada uma mensagem.
Form1 o nome padro do Formulrio, pode ser mudado na propriedade Name.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

14

O que um EVENTO ?
Agora definiremos o evento OnClick do boto Mensagem. Os programas feitos em Delphi so orientados a eventos. Eventos so aes normalmente geradas pelo usurio. Existem eventos associados ao formulrio e cada componente inserido neste. Neste exemplo, programamos o evento OnClick do boto do tipo Button, ou seja, ao clicar no boto ser mostrada uma mensagem. Pressione F9 para rodar / executar o programa e ver seu resultado.

Aps clicar no boto Button1 mostrar mensagem.

Selecione o formulrio, clique no Object Inspector (no drop down ), veja o grfico abaixo, clique em Form1.

" Existem duas coisas infinitas: o Universo e a tolice dos homens Albert Einstein " Delphi Aplicado
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

15

Clique em Form1, ao lado, na propriedade Caption, onde mostra Form1 digite, por exemplo, Cadastro de Clientes. Veja no exemplo abaixo a mudana, ao invs de Form1 mostra Cadastro de Clientes.

Role para baixo, na propriedade Name est escrito Form1, este o nome do formulrio, mude-o para Clientes_Frm. Adote uma nomeao padro, digite Clientes e o nome do formulrio e Frm indica que um Formulrio. A nomeao importantssima para facilitar a manuteno do seu sistema.

Clique no boto, na propriedade Caption digite Mensagem, role para baixo, na propriedade Name digite But_Mens ( But para indicar que o boto do tipo Button e Mens a abreviao de Mensagem ).
O que uma PROPRIEDADE ? Propriedades so caractersticas bsicas de um componente. Cada componente Delphi possui uma srie de propriedades com um valor default (padro). Perceba que no modelo aparecem algumas das propriedades relativas a um Form, tais como sua altura, fonte dos textos, estilo, cor, tipo de cursor, etc., todas elas com um valor padro includo pelo Delphi.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

16

Veja abaixo como esta o programa fonte. Nome padro Unit1, porque o arquivo ainda no foi salvo.

Linha Uses contm bibliotecas necessrias para este programa, estas foram automaticamente includas pelo Delphi 6.0

Observe com ateno os nomes dos objetos de acordo com a nomeao que definimos.

Salve unidade ( Unit1 - formulrio ) e o projeto. Clique no cone Save All, defina o nome da Unit1 para Clientes.pas, aps informe o nome para o projeto Intro1.dpr

Veja abaixo cdigo fonte completo ... observe nomes dos objetos ...

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

17

Rode/execute o programa pressionando na tecla F9 e clique no boto Mensagem , ser mostrada uma caixa de mensagem de texto com a mensagem Meu primeiro - Ol

Os 11 passos acima devero ser seguidos. Se voc quer ou no definir nomeao / nomenclatura padro para os objetos do seu programa fica ao seu critrio, posso lhe assegurar que uma boa nomeao lhe poupar muito tempo. Delphi utiliza propriedades, eventos e componentes

Propriedades

primeira maneira

Na barra de ttulos do Delphi, clique em View, clique em Object Inspector ou pressione F11. Atravs dessa janela que poderemos redefinir as diversas propriedades de qualquer componente do projeto. Perceba que existem duas abas / guias (Tabs): uma para as propriedades ( properties ) e outra para os eventos ( events ). Propriedades so caractersticas bsicas de um componente. Cada componente Delphi possui uma srie de propriedades com um valor default (padro). Perceba que no modelo aparecem algumas das propriedades relativas a um Form, tais como sua altura, fonte dos textos, estilo, cor, tipo de cursor, etc., todas elas com um valor padro includo pelo Delphi. Defina as seguintes propriedades na aba/guia Properties ( propriedades ) do formulrio abaixo: Clique em Caption e ao lado digite Exemplo 1, clique na propriedade Name e digite Exemplo_Frm.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

18

Defina a propriedade Caption do boto digitando Mensagem, role para baixo, na propriedade Name digite But_Mens. Na aba Standard ( barra superior de componentes ), clique no boto Button, posicione o ponteiro do mouse sobre o formulrio e clique, ser posto um Button ( boto ) no formulrio como no exemplo ao lado ). A inicial But_ para definir o tipo de boto que est em uso, ou seja, do tipo Button. Podemos usar outros tipos de botes, Ex: Bitbtn e SpeedButton = Bit_Mens ou Speed_Mens. Cada programador / desenvolvedor adotar um padro de nomeao dos objetos, que importantssimo para manuteno do sistema.

Insira um componente Label. Clique em Label, posicione o ponteiro do mouse sobre o formulrio e clique, ser posto um Label no form. Clique em Label1, pressione F11 ( propriedades ), na propriedade Caption digite O Tempo Sbio, clique em Color e defina a cor clBlue ( cl = Caption, l = label ), clique em +Font ( fonte ), Color = clYellow e Size para 15, clique em +Style, clique em True em fsBold.

Propriedades

segunda maneira

Na segunda maneira veremos como definir as propriedades via cdigo. Esta forma mais trabalhosa, porm o programador dever saber ou conhecer as vrias formas para resolver suas situaes. Insira um Button ( que est na aba Standard ) , pressione F11, clique na propriedade ( properties ) e escreva ao lado de Caption o texto Mensagem, role barra de rolagem para baixo, clique na propriedade Name e defina o nome But_Mens, insira um Label1

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

19

D um clique duplo sobre o boto Mensagem, para definir o evento OnClick ( ao clicar executar o evento, a ao ), veja o cdigo abaixo:

Execute o programa pressionando F9, clique no boto Mensagem e veja o resultado.

Resumindo, as duas maneiras retornaro o mesmo resultado J

PROPRIEDADES: Aba / paleta / guia das propriedades ( properties )

Clique no boto Mensagem, note no lado esquerdo TODAS as propriedades do boto. Cada boto ( componente ou objeto ) selecionado ter suas respectibvas PROPRIEDADES.

EVENTOS: Aba ou paleta de eventos ( EVENTOS )

Cada boto ( componente , ou objeto ) selecionado ter seus EVENTOS especficos.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

20

COMPONENTES: Aba / guia dos componentes Standard


Existem vrias paletas / abas / guias com vrios componentes. Na aba Standard se encontram os componentes mais comuns. Note que o componente Button est na aba Standard.

Clique na aba Additional e note os respectivos componentes que pertencem a esta aba. Lembre-se, cada componente possui suas prprias propriedades e seus respectivos eventos.

R O que so variveis ?
um local na memria do computador onde armazenamos temporariamente alguma informao para futura reutilizao. Podemos ter diversos tipos de variveis de memria. O tipo da varivel define qual o tipo de informao que iremos armazenar ( Ex: texto, numrica etc )

Tipos de Variveis
BOOLEAN BYTE CHAR COMP Tipo lgico que pode assumir somente os valores TRUE ou FALSE e ocupa 1 byte de memria. Tipo numrico inteiro, pode assumir valores numa faixa de 0 a 255, ocupa 1 byte. Tipo alfa-numrico, pode armazenar um caractere ASCII, ocupa 1 byte. Tipo numrico real, pode assumir valores na faixa de -9.2.10 -18 a 9.2.10+18 , ocupa 8 bytes, pode ter entre 19 e 20 algarismos significativos.

EXTENDED Tipo numrico real, pode assumir valores na faixa de -3,4.10-4932 a +1,1.10 +4932, ocupa 10 bytes de memria e tem entre 19 e 20 algarismos significativos. INTEGER LONGINT Tipo numrico inteiro, pode assumir valores numa faixa de -32768 a +32767, ocupa 2 byte de memria. Tipo numrico inteiro, pode assumir valores numa faixa de -2147483648 a +2147483647, ocupa 4 bytes de memria.
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

Delphi Aplicado

21

REAL SHORTINT SINGLE WORD STRING

Tipo numrico real, pode assumir valores na faixa de -2,9.10-39 a +1,7.10 +38, ocupa 6 bytes de memria e tem entre 11 e 12 algarismos significativos. Tipo numrico inteiro, pode assumir valores numa faixa de -128 a +127, ocupa 1byte de memria. Tipo numrico real, pode assumir valores numa faixa de -1,5.10-45 a +3,4.10+38, ocupa 4 bytes de memria, e tem de 7 a 8 algarismos significativos. Tipo numrico inteiro, pode assumir valores numa faixa de 0 a 65535, ocupa 2bytes de memria. Tipo alfanumrico, possuindo como contedo uma cadeia de caracteres. O nmero de bytes ocupados na memria varia de 2 a 256, dependendo da quantidade mxima de caracteres definidos para a string. O primeiro byte contm a quantidade real de caracteres da cadeia.

D um clique duplo sobre o boto Button1 e no evento OnClick digite as linhas de cdigo que esto na pgina seguinte: A palavra Imaginao ser armazenada temporariamente dentro da varivel do tipo Texto. O nmero 13 ser armazenado dentro da varivel do tipo Inteira.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

22

R Mais sobre variveis

Outro exemplo usando variveis de memria:

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

23

R Constantes Tipadas
Na verdade, constantes tipadas so variveis inicializadas com valor persistente, que podem ser alteradas normalmente, como qualquer varivel. A nica diferena de sintaxe entre constantes tipadas e simples que o tipo da constante indicado explicitamente na declarao. Se uma constante tipada for declarada localmente, ela no ser destruda quando o mtodo for encerrado. Para diferenciar das constantes normais, costuma-se declarar estas com letras de caso varivel, como abaixo.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

24

R Begin ... End

( Incio ... Fim )

Blocos de comandos. Entre um Begin e um End so armazenadas linhas de cdigo.

D um clique duplo sobre o boto Button1, ser aberto o editor de cdigos, no evento OnClick ( significa: ao clicar ), sero mostradas as linhas Procedure... e Begin e End, digite cdigo sempre entre o Begin e End.

R If

( se )

Condio lgica. Se o contedo do Edit1 for igual ( = ) ao nmero 10 ser mostrado uma mensagem.

R If ... else

( Se ... Caso contrrio )

Se o contedo do Edit1 um no for igual ao nmero 10 mostra a segunda mensagem

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

25

R IF

R Como criar descrio com mais de uma linha ?


Insira um boto do tipo Button1 , clique no Object Inspector, selecione o formulrio Form1, d clique duplo no evento OnCreate e digite o cdigo abaixo:

Quebra linha.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

26

Ou

R Tags
Para cada boto ou dependendo do tipo de componente haver um tag. No Tag 10, ao invs de digitar o valor 10, digitei 11 para provocar o erro, veja o resultado.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

27

R Inc() e Dec()
Incrementando variveis e decremetando.

Defina uma varivel inteira no incio do programa

R Formatando casas decimais

Varivel Valor ( R$ 10,00

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

28

R Confirmao ao fechar o formulrio


Outra maneira de como pedir confirmao antes de fechar o formulrio.

Ao clicar no X ser solicitado confirmao.

Selecione o formulrio, clique na aba Events e selecione o evento OnCloseQuery:

R Criando Funo para mostrar o dia da semana

Digite a funo ( function ) abaixo:

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

29

R Sender
Como podemos ver o mtodo BitBtn4 tem um ponteiro para o TObject chamado de Sender ( aquele que envia, remetente, emissor ). Cada evento handler ( manipulador ) ter pelo menos um parmetro sender. Quando for clicado neste evento ao clicar handler ( BitBtn4Click ) do evento OnClick ser chamado. O parmetro Sender se refere ao controle que usado para chamar um mtodo.

Outro exemplo

Observe que como est sendo chamado o mesmo evento.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

30

R Subtraindo horas

R Abrindo e fechando unidade Cd-Rom


Insira dois botes Bitbtn e no evento OnClick de cada boto digite o cdigo abaixo.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

31

R Variveis globais
Veremos como transportar variveis de um programa para outro, para isso teremos dois formulrios com dois campos. No primeiro programa definiremos as variveis Nome e Idade, e nestas sero armazenados dados para transportar para o formulrio 2.

Unit1 ( Programa 1 )

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

32

Unit2 ( Programa 2 )

R Mensagem com MessageBox e Case


Outra forma de iusar o MessageBox juntamente com o Case.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

33

R Como definir descrio para os botes ?


Quando o ponteiro do mouse estiver posicionado sobre um determinado cone, ser mostrada uma pequena descrio ou orientao dizendo o que este faz. Clique no formulrio, clique no boto Cadastro de Clientes, quando um determinado objeto estiver selecionado sero mostrados pequenos botes pretos em sua volta, indicando que este est selecionado. Clique na aba Properties, selecione a propriedade Hint, no lado direito desta propriedade digite o seguinte texto: Ser aberto outro formulrio, mais abaixo, na propriedade ShowHint, mude o valor para True, pressione a tecla F9 para rodar o programa, posicione o ponteiro do mouse sobre o boto e veja a descrio Ser aberto outro formulrio.

Quando o ponteiro do mouse estiver parado sobre o boto ser mostrada descrio.

R Salvando Unit ( programa )

Clique no cone Save ( Crtl S - Salvar ), digite o nome Menu.pas para salvar o formulrio corrente ( o menu do projeto )

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

34

R O que so eventos ?
Eventos so acontecimentos provocados por aes do usurio que ocorrem quando um Form est ativo. Ns podemos programar respostas a esses estmulos. Propriedades e Eventos esto disponveis para todos os componentes visuais do Delphi. Mas quais so as propriedades e eventos que estaro disponveis? Naturalmente, isso depender do tipo de controle que estamos utilizando. Uma vez construdo um Form, para acessar as propriedades e eventos correspondentes a um determinado componente, basta clicar sobre ele. Se o componente for o prprio Form, ser s clicar sobre qualquer rea do Form (rea pontilhada). Vamos criar uma situao em nosso projeto para exemplificar o uso dos eventos:

Clique no boto Cadastro de Clientes , clique na aba Events ( eventos ), note que foi selecionado o evento OnClick, d um clique duplo, ser aberto o editor de cdigos do Delphi.

D um clique duplo no boto Cadastros de Clientes:


Estamos usando o evento OnClick, ou seja, quando for clicado no boto Cadastro de Clientes mudar a cor de fundo do formulrio.

Salve o projeto, digite o nome Sis_Madrugadao, pressione F9 para executar / rodar o projeto / programa. Aps clicar no boto Cadastro de Clientes ser alterada a cor do fundo do formulrio. O objetivo deste exemplo mostrar como funciona o evento OnClick.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

35

Observe atentamente a evoluo do cdigo fonte.

Bibliotecas que foram inseridas automaticamente pelo Delphi aps ter inserido os botes. StdCtrls e Buttons.

Ao clicar no boto Clientes o fundo do formulrio ser pintado de azul.

R Como racionar a digitao do cdigo ?


Quando o projeto se torna grande e neste so usados vrios componentes, variveis, procedures etc ser difcil lembrar todos os nomes do objetos, assim sendo, use os recursos adequadamente para racionar seu trabalho. Entre um Begin e o End, buscaremos as propriedades e mtodos de um objeto. Mantenha a tecla Ctrl pressionada, aps tecle na barra espaadora, ser aberta uma tela listando as vrias propriedades, constantes etc que estaro disponveis para o objeto selecionado. Para listar, basta digitar as letras iniciais do objeto que esta no projeto, posicione com o ponteiro do mouse ou setinha do teclado na propriedade que est sendo listada, pressione enter, aps digite ponto ( . ), espere alguns segundos, sero listadas mais propriedades, mtodos do segundo objeto selecionado, selecione o que desejar e pressione enter, no final da linha digite ponto e virgula ( ; )

Mantenha pressionada a tecla Ctrl , aps pressione barra espaadora, sero listadas para serem escolhidas as propriedades ou mtodos daquele respectivo objeto.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

36

Aps digitado ponto ( . ) sero listadas outras as propriedades ou funes do formulrio em uso.

Digite dois pontos ( : ) e o sinal de igual ( = ), aps pressione Ctrl e barra de espao para listar as propriedades etc

No final da linha digite ponto e virgula ( ; )

Formulrio_Menu.Cor := recebe_cor

R Disparando o mesmo evento


Executa a mensagem que foi definida no boto 1, disparando o mesmo evento nos outro botes.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

37

R O que compe um projeto ?


Um projeto no Delphi basicamente composto de vrios formulrios de entrada de dados e relatrios. Quando o projeto compilado, ser gerado um arquivo / programa com a terminao .exe ( executvel ), ex: Sis_Aula.exe, e dentro deste estaro todos os formulrios, relatrios do sistema..., Clientes, Fornecedores, Transportadoras etc Project1.dpr

Sis_Aula.exe

Unit1.pas

MDULO PRINCIPAL (menu)


Menu.pas

Mdulo 1

CLIENTES

Mdulo 2

Mdulo 3

FORNECEDORES

TRANSPORTADORAS

clientes.pas

fornecedores.pas

transportadoras.pas

Unit2.pas

Unit3.pas

Unit4.pas

Sis_aula.exe o nome do projeto, este composto por quatro unidades.

R Quais so os arquivos do seu projeto que devem ser copiados ?


Quando o projeto estiver pronto e desejar instal-lo em outra mquina proceda da seguinte maneira: 1. Instale o BDE, est no cd Delphi ou crie os discos de instalao que j conter o BDE. 2. Copie o arquivo Sis_Aula ( .exe ) 3. Copie todas as tabelas que sero utilizadas no projeto. Se o projeto no possuir tabelas, basta apenas copiar o arquivo sis_aula.exe ( .exe ) J Delphi Aplicado
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

38

R Arquivos que compe uma aplicao.


Extenso Definio Funo

.dpr .cfg .dof .pas .dfm .res .opt .~dp .~pa .~df .dsk

Cdigo fonte em Pascal do arquivo principal do projeto. Lista todos os formulrios e units no projeto, e contm cdigo de inicializao da aplicao. Criado quando o projeto salvo. Apesar de ter a extenso *.cfg este um arquivo texto. Guarda diversas opes do compilador. Discutir estas opes est fora do Arquivo do Projeto escopo deste curso. Para a maior parte dos casos as opes default funcionam perfeitamente. Apesar de ter a extenso *.dof este um arquivo texto. Arquivo do Projeto Guarda diversas opes do projeto. Estas opes voc configura usando a caixa de dilogo Project Options que vamos ver mais frente. Um arquivo .PAS gerado por cada formulrio que o projeto contm. Seu Cdigo fonte da Unit projeto pode conter um ou mais arquivos .PAS associados com algum ( Object Pascal) formulrio. Contem todas as declaraes e procedimentos incluindo eventos de um formulrio. Arquivo binrio que contm as propriedades do desenho de um Arquivo grfico do formulrio contido em um projeto. Um .DFM gerado em companhia de formulrio um arquivo .PAS para cada formulrio do projeto. Arquivo de Recursos Arquivo binrio que contm o cone, mensagens da aplicao e outros do Compilador recursos usados pelo projeto. Arquivo texto que contm a situao corrente das opes do projeto. Arquivo de opes do Gerado com o primeiro salvamento e atualizado em subsequentes projeto alteraes feitas para as opes do projeto. Arquivo de Backup Gerado quando o projeto salvo pela segunda vez. do Projeto Arquivo de Backup Se um .PAS alterado, este arquivo gerado. da Unit Backup do Arquivo Se voc abrir um .DFM no editor de cdigo e fizer alguma alterao, este grfico do formulrio arquivo gerando quando voc salva o arquivo. Situao da rea de Este arquivo armazena informaes sobre a situao da rea de trabalho Trabalho especifica para o projeto em opes de ambiente( Options Environment). Arquivo do Projeto

Obs.: .~DF, .~PA , .~DP so arquivos de backup( Menu Options, Enviroment, Guia Editor Display, Caixa de Grupo Display and file options, opo Create Backup Files, desativa o seu salvamento). Devido a grande quantidade de arquivos de uma aplicao, cada projeto deve ser montado em um diretrio especfico.

Arquivos Gerados pela Compilao


Extenso Definio Funo

.exe .dcu

Este um arquivo executvel distribuivel de sua aplicao. Este arquivo incorpora todos os arquivos .DCU gerados quando sua aplicao compilada. O Arquivo .DCU no necessrio distribuir em sua aplicao. Cdigo objeto da Unit A compilao cria um arquivo .DCU para cada .PAS no projeto. Arquivo compilado executvel

Obs.: Estes arquivos podem ser apagados para economizar espao em disco.

" Quando voc est namorando uma bela garota, uma hora parece um segundo. Quando voc se senta numa brasa viva, um segundo parece uma hora. Isso relatividade. Albert Einstein " Delphi Aplicado
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

39

R Clusulas e bibliotecas de uma unit .


Neste arquivo est escrito o cdigo de criao da aplicao e seus formulrios. O arquivo Project tem apenas uma seo. Esta seo formada pelo seguinte cdigo: Program Uses Forms In Unit1 {$R *.RES} Define o Projeto. Clusula que inicia uma lista de outras unidades. a unidade do Delphi que define a forma e os componentes do aplicativo. A clausula indica ao compilador onde encontrar o arquivo Unit. A unidade que voc criou. Diretiva compiladora que inclui o arquivo de recursos.

Veja abaixo como fica o Project quando aberto um novo projeto:

Cdigo fonte do arquivo Unit (.PAS)

Nesta divisria sero escritos os cdigos dos seus respectivos forms (Unit1 = Form1). Aqui sero definidos os cdigos de cada procedimento dos componentes que voc colocar no form. Seo Unit Declara o nome da unit. Seo Uses Contm as units acessadas por este arquivo. Seo Interface Nesta seo esto as declaraes de constantes, tipos de variveis, funes e procedures gerais da Unit/Form. As declaraes desta seo so visveis por qualquer Unit. Esta seo formada pelo seguinte cdigo: Interface: Palavra que inicia a seo; Uses: Clusula que inicia uma lista de outras unidades compiladas (units) em que se baseia: SysUtils Utilitrios do sistema (strings, data/hora, gerar arquivos). WinProcs Acesso a GDI, USER e KERNEL do Windows. Wintypes Tipos de dados e valores constantes. Messages Constantes com os nmeros das mensagens do Windows e tipos de dados das Mensagens. Classes Elementos de baixo nvel do sistema de componentes. Graphics Elementos grficos. Controls Elementos de nvel mdio do sistema de componentes. Forms Componentes de forma e componentes invisveis de aplicativos. Dialogs Componentes de dilogo comuns. Delphi Aplicado
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

40

Seo Type Declara os tipos definidos pelo usurio. Subsees: Private, declaraes privativas da Unit. Public declaraes publicas da Unit. Seo Var Declara as variveis privadas utilizadas. Seo Implementation Contm os corpos das funes e procedures declaradas nas sees Interface e Type. Nesta seo tambm esto definidos todos os procedimentos dos componentes que esto includos no Form. As declaraes desta seo so visveis apenas por ela mesma. Esta seo formada pelo seguinte cdigo: {$R*.DFM} Diretiva compiladora que inclui toda a interface, propriedades da forma e arquivo *.DFM {$S+} Diretiva compiladora que ativa verificao de pilha. Seo uses adicional Serve para declarar Units que ativam esta seo. Initialization Nesta seo, que opcional, pode ser definido um cdigo para proceder as tarefas de inicializao da Unit quando o programa comea. Ela consiste na palavra reservada initialization seguida por uma ou mais declaraes para serem executadas em ordem. componentes do

R O que so mtodos ?
So procedures ou funes embutidas nos componentes e formulrios, previamente definidas pelo Delphi. Alguns mtodos so descritos a seguir: Show Hide Print SetFocus BringtoFront Mostra um formulrio; Esconde um formulrio mais no o descarrega; Imprime um formulrio na impressora; Estabelece o foco para um formulrio ou componente; Envia para frente.

Adiante veremos exemplos prticos exemplificando mtodos

" Grandes almas sempre encontraram forte oposio de mentes medocres Albert Einstein " Delphi Aplicado
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

41

R O que so componentes ?
So elementos que j esto no Delphi prontos para serem utilizados e o programador definir suas propriedades e eventos de acordo com sua necessidade ( o que so propriedades e eventos, veremos adiante J ). Vamos inserir alguns botes e aps verificar a alterao que o Delphi far no cdigo fonte. Abas de componentes. Aba Additional Para inserir um boto BitBtn: Clique no boto OK e aps clique no formulrio. Poder ser definido um cone para o boto na propriedade Glyph.

Adicione no formulrio corrente trs componentes Bitbtn ( aba Additional ) Altere as propriedade Caption para Cadastro de Clientes, que ser o texto exibido no boto, altere a propriedade Name de BitBtn para Bit_Cad_Clientes. Sugiro Bit_ para identificar o tipo de boto/componente que est sendo usado, como j falei anteriormente, cada programador adotar um padro de nomeao para melhor identificao dos objetos. Aps digitar o Caption com o contedo Cadastro de Clientes, altere a propriedade Width para 129, para no truncar o texto do boto.

Aps nomear uma propriedade, o Delphi far tambm a modificao interna do cdigo fonte de BitBtn1 para Bit_Cad_Clientes.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

42

Eventos: Os programas feitos em Delphi

so orientados a eventos. Eventos so aes normalmente geradas pelo usurio. Ex.: Clicar no mouse ou mov-lo, pressionar uma tecla etc. Os eventos podem ser tambm gerados pelo windows. Existem eventos associados ao formulrio e a cada componente inserido neste. Exemplos: Evento que est ligado formulrio, OnCreate, que ocorre quando mostramos o formulrio na tela. Ao componente boto est ligado o evento OnClick, que ocorre quando damos um click com o mouse sobre o boto.

Eventos comuns ao formulrio e aos componentes.


Alguns eventos ligados tanto ao formulrio quanto aos componentes esto listados a seguir. OnClick ocorre quando o usurio clica o objeto. OndblClick ocorre quando o usurio da um duplo clique. OnKeyDown ocorre quando o usurio pressiona uma tecla enquanto o objeto tem foco. OnKeyUp ocorre quando o usurio solta uma tecla enquanto o objeto tem o foco. OnKeyPress ocorre quando usurio da um clique numa tecla ANSI. OnMouseDown ocorre quando o usurio pressiona o boto do mouse. OnMouseUp ocorre quando o usurio solta o boto do mouse. OnMouseMove ocorre quando o usurio move o ponteiro do mouse.

Rotinas que Respondem a Eventos


Cada evento gera uma procedure, aonde voc deve inserir as linhas de cdigo que envolve este evento. Por exemplo, o evento OnClick, que gerado ao clicarmos em um boto chamado Bit_Sair, cria a procedure:

Onde Tform1 o objeto Tform que contm o boto Bit_Sair, e Sender um objeto Tobject que representa o componente que deu origem ao evento. Se voc quiser inserir uma rotina que trate um determinado evento de um componente, faa o seguinte: clique sobre o componente; no Object Inspector, seleciona a pgina Events; d um duplo clique sobre o evento para o qual quer inserir o cdigo; entre no editor de cdigo e escreva as linhas de cdigo. Exemplo:

Obs.: Escreva seu cdigo entre o begin e o end, se desejar retirar o evento e o componente, retire primeiro os eventos do componente removendo somente o cdigo que voc digitou, aps o componente; o resto dos procedimentos o DELPHI remover para voc.

" A palavra progresso no ter sentido enquanto houver crianas infelizes Albert Einstein " Delphi Aplicado
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

43

R Como inserir mais formulrios no projeto ?


Clique no cone onde est apontando o bolo, ser aberto um novo formulrio.

Defina as duas propriedades bsicas do formulrio: Caption e Name. Caption = Cadastro de Clientes Name = Clientes_Frm

Cada programador adotar seu padro de nomeao, digitei _Frm no final do nome para indicar que um Formulrio.

Insira um componente Label ( aba Standard ) e na propriedade Caption digite Clientes.

Salve a unidade ( form ) com o nome de Clientes.pas, repita o processo da pgina anterior criando um formulrio para Fornecedores.pas e Transportadoras.pas, tambm defina as propriedades Caption e Name de cada um destes formulrios. At o momento nosso projeto possui quatro formulrios. Pressione F12 para alternar entre os formulrios e o cdigo fonte.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

44

Lista os objetos e uses utilizados no projeto corrente.

Veja os vrios formulrios ( telas ) que esto em uso Menu Fornecedores Transportadoras e Clientes

Clique duplo sobre Label1, o cursor ser imediatamente posicionado no objeto.

R Como criar um menu ?


Criando um menu muito fcil. Insira um formulrio e trs botes do tipo Bitbtn veja baixo:

Clique duplo sobre o boto Cadastro de Clientes, aps clique em File, Use Unit, selecione o formulrio Clientes e clique OK. Para abrir todos os formulrios arraste o mouse marcando a lista da caixa abaixo e clique OK.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

45

O Delphi no est conseguindo identificar o formulrio Clientes, para que isto ocorra preciso clicar em File ( canto superior esquerdo do menu ), clique em Use unit e selecione a unit Clientes para incluir no projeto atual.

Agora o formulrio Clientes_Frm foi reconhecido pela lista Ctrl + barra espao.

ShowModal mostrar o formulrio Clientes_Frm. Pode ser usado ShowModal ou Show. Repita este processo para os botes Fornecedores e Transportadoras.

Com o ShowModal os controles ( foco ) so transferidos unicamente para tela Clientes, se for clicado no boto Fornecedores, voc ouvir apenas um bip e no ter acesso. Com o Show, poder ser clicado no formulrio Menu ou em Clientes. Delphi Aplicado
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

46

Vamos definir um cone para o boto Cadastro de Clientes

Clique nos trs pontinhos para selecionar um cone. Abaixo, ser aberta uma tela pedindo para informar o caminho onde esto armazenados os arquivos do tipo .bmp

Clique para mostrar o caminho onde esto os arquivos do tipo .bmp

Aps clicado em Abrir , clique no boto OK. Delphi Aplicado


- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

47

Outra maneira de inserir um cone padro a propriedade Kind do componente Bitbtn. Porm, aps selecionado o cone, o Delphi mudar a propriedade Caption de Fornecedores para Ignore que o caption padro, ento digite novamente o Caption Fornecedores.

R Como definir um cone para o formulrio corrente ?


O cone ser exibido no canto superior esquerdo do formulrio.

cone definido. Clique no formulrio corrente, selecione a propriedade Icon do formulrio, clique nos trs pontinhos [...], ser aberta uma tela, clique no boto Load, informe o caminho onde esto os arquivos do tipo cone ( .ico ), clique em abrir, escolha o arquivo do tipo .ico e clique ok

R Como remover barra de ttulo e bordas do formulrio ?


uma maneira de remover a barra de ttulo e bordas do formulrio via programao.

Sem barra de ttulo.

Com barra de ttulo.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

48

R Qual funo do Database Desktop ?

DATABASE DESKTOP 7
um utilitrio onde ser criado a base de dados (tabelas - nomes dos campos, tamanhos dos campos, ndices etc).

Introduo
O BDE um ncleo de Banco de Dados que fornece a capacidade de acesso a banco de dados para os softwares Delphi, Paradox, dBase e C++, oferecendo um grande conjunto de caractersticas previamente testadas para auxiliar desenvolvedores de aplicaes ClienteServidor. Alm de fornecer utilitrios para acessar bancos de dados de maneira compartilhada, o BDE inclui um conjunto de fontes de dados para acessar bases Paradox, dBase e arquivos texto. Tambm possvel acessar qualquer banco de dados padro ODBC ou, atravs de SQL Links, acessar diretamente Interbase, Oracle, Sybase e MS-SQL Server. O BDE tambm composto de um conjunto de funes que compe uma API (Interface para Programao de Aplicaes) que permite os desenvolvedores acessarem diretamente esses bancos de dados.
"A vida maravilhosa se no se tem medo dela - Charles Chaplin Delphi Aplicado
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

49

Criao do Banco de Dados

Para criar um banco de dados novo, normalmente, necessrio dispor de alguma ferramenta do prprio banco de dados, como o Access, mas se a base de dados for Paradox, ou dBase, voc pode usar o Database Desktop, um utilitrio que vem com o Delphi e permite a criao desses tipos de bancos de dados.
Database Desktop

Fornece uma interface simples e completa para configurao, definio e manipulao de tabelas de bancos de dados Paradox e dBase. Alm disso na Opo Tools/Alias Manager voc pode configurar seu banco de dados, como ser lembrado logo adiante.

Tabelas Paradox
Para criar tabelas Paradox, siga os passos abaixo. Voc deve salvar as tabelas de um mesmo banco de dados na mesma pasta, pois o Paradox trata a pasta onde esto as tabelas como sendo o banco de dados. Clique em File/New/Table Escolha o tipo da nova tabela, Paradox 7 Aparece uma janela para que voc defina a estrutura de campos, ndices e demais opes necessrias na criao da tabela Em Field Name, voc escolhe o nome do campo, com at 25 caracteres Em Type, o Tipo do campo, com a barra de espao ou o boto direito do mouse voc pode escolher o tipo a partir de uma lista Size o tamanho do campo, usado somente em alguns tipos de campos Key especifica os campos que faro parte da chave primria, que no pode se repetir e deve ser composta pelos primeiros campos da tabela

Table Properties
Em Table Properties voc define os vrios aspectos de configurao da tabela. Muitas dessas opes podem ser implementadas no Delphi e vrios programadores preferem no us-las no Database Desktop.
Opo Validity Checks Table Lookup Secondary Indexes Referential Integrity Password Security Table Language Dependent Tables Descrio Validaes para os campos, como obrigatoriedade, valor mnimo e mximo Indica que o valor atribudo a um determinado campo tem que estar gravado em outra tabela Cria ndices secundrios Cria integridade referencial, geralmente utilizada em relacionamentos de 1 para N. Permite a criao de senhas, protegendo a tabela de acesso no autorizado Especificar o driver de lngua utilizado pela tabela, geralmente o Pdox ANSI Intl850 Mostra todas as tabela dependentes atravs da integridade referencial

Tipos de Campos
Os principais tipos de campos so mostrados abaixo, mas existem outros alm desses. Os tamanhos marcados com asterisco indicam que o campo pode guardar tamanhos maiores que os informados, o que ultrapassar o tamanho ser guardado em um arquivo externo com a extenso MB.
Tipo A N $ S I D T @ M G L + Descrio Alfanumrico Numrico Monetrio Short Integer Long Integer Data Hora Data e Hora de modificao Memo Grfico Lgico Autoincremental Faixa 10
308

Tamanho 1-255

32767 2147483648

1-240* 1-240* True/False 1-2147483648

Configurao

Para configurar o acesso a um banco de dados, voc tem vrias opes, criar um Alias, usar o componente TDatabase ou os dois juntos. Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 50

Aliases
Um Alias um nome lgico, um atalho para um banco de dados. Todo o trabalho do Delphi com um banco de dados pode ser feito baseado no Alias, de forma que para mudar de banco de dados, s necessrio mudar o Alias. Para criar um Alias voc pode usar Database Explorer, o BDE Administrator ou o prprio Database Desktop.

Database Explorer
Pode aparecer com os nomes Database Explorer ou SQL Explorer. Nele voc pode manipular os Aliases, navegar pelas estruturas dos bancos de dados, alterar os dados das tabelas e executar comandos SQL. Para criar um Alias selecione o item Databases, clique em Object/New, escolha o tipo do banco de dados, ou Standard para dBase, Paradox e arquivos texto, depois digite um nome do Alias, esse nome ser usado pelo Delphi quando voc quiser acessar o banco de dados, finalmente defina as propriedades do banco de dados na seo Definition, cada banco de dados ter suas prprias definies.

BDE Administrator
Com o BDE Administrator voc pode alterar a configurao da BDE, por exemplo em Configuration/System/Init voc tem a propriedade Local Share que deve ser setada para True, quando voc quiser que a base de dados seja compartilhada em uma rede. Alm disso, voc pode criar Aliases, como no Database Explorer.
TDatabase

Esse componente permite a manipulao de um banco de dados, atravs de um Alias da BDE ou da criao de um Alias local, somente visvel dentro da aplicao, esse componente tambm permite o gerenciamento de transaes, garantindo uma integridade maior no projeto. Por essas e outras razes o uso do componente Database altamente recomendado como opo para criao de Aliases.
Propriedades AliasName Connected DatabaseName DataSetCount DataSets DriverName InTransaction KeepConnection LoginPrompt Params TransIsolation Mtodos Close CloseDataSets Commit Open Rollback StartTransaction Eventos OnLogin Descrio Nome do Alias do banco de dados, usado quando voc criar um Alias da BDE Define se a conexo com o banco de dados est ativa Nome do Alias local a ser usado pelos outros componentes do Delphi Nmero de DataSets (Tabelas) abertos no banco de dados Lista com os DataSets abertos Driver usado para criar um Alias local, automaticamente cancela a propriedade AliasName Define se o Database est em transao Define se a conexo com o banco de dados ser mantida, mesmo sem DataSets abertos Define se ser mostrado o quadro de login padro da BDE Parmetros do banco de dados, com itens semelhantes seo Definition do Database Explorer Nvel de isolamento da transao, define como uma transao ir enxergar outra Descrio Encerra a conexo com o banco de dados, todos os DataSets sero fechados Fecha todos os DataSets abertos, mas a conexo no encerrada Grava alteraes feitas durante a transao Abre a conexo com o banco de dados Anula todas as alteraes feitas durante a transao Inicia uma transao Descrio Evento usado quando voc quiser escrever seu prprio mtodo de conexo com o banco de dados

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

51

Para acessar uma base de dados Access, voc poderia usar os valores mostrados na descrio textual a seguir. AliasName DatabaseName LoginPrompt KeepConnection Params.Strings 'USER NAME 'LANGDRIVER = 'Clientes' = 'Dados' = False = True = ( 'DATABASE NAME=C:\Meus Documentos\Clientes.mdb' = Fritz' 'OPEN MODE = READ/WRITE' = intl850' 'PASSWORD = secreto5')

Para ajudar a preencher os parmetros de um Database, clique duas vezes sobre o componente e clique em Defaults, todos os parmetros defaults sero apresentados. Para acessar uma base Paradox, use as propriedades abaixo, note que para o Paradox, a nica informao realmente significante o Path, a pasta onde esto as tabelas. AliasName DatabaseName LoginPrompt KeepConnection Params.Strings = 'DBDEMOS' = 'Dados' = False = True = ('PATH=d:\Borland\Delphi 5\Demos\Data' 'ENABLE BCD = FALSE' 'DEFAULT DRIVER = PARADOX') Aps a criao do Alias da BDE ou do Alias local, usando o componente TDatabase, o banco de dados est configurado e pronto para ser usado.
Database Form Wizard

Aps a configurao do banco de dados, a maneira mais rpida, de se fazer uma janela de manuteno de dados atravs do Form Wizard no menu Database. Ao chegar no Wizard so feitas uma srie de perguntas que podem resultar em uma janela simples ou Mestre/Detalhe. O acesso ao banco de dados pode ser feito atravs de componentes TTable ou atravs de SQL, com o componente TQuery, usaremos o componente TTable. Todos os campos selecionados aparecem na janela permitindo entrada de dados atravs de componentes do tipo TDBEdit. Cada DBEdit recebe um Label baseado no nome do campo na tabela selecionada. Na Janela includo tambm um componente para permitir a navegao e a manuteno dos dados, um DBNavigator. O componente utilizado para fazer a ligao entre os componentes visuais e o TTable um TDataSource. Geralmente os componentes TTable e TDataSource so inseridos em DataModules, que so a base para a criao de classes de dados. Sempre Aps usar o Wizard, lembre-se de mudar os nomes dos componentes, para que fiquem mais claros.

Form Passo a Passo


O diagrama abaixo mostra como o Wizard fez a ligao entre os componentes, onde os quadrados so componentes e as elipses, propriedades.

DB

TDatabase

TTable

DataSet

TDBEdit

DatabaseName

DatabaseName

TDataSource

DataSource

Para concluir, acompanhe abaixo os passos realizados pelo Wizard e tente voc mesmo criar seu prprio Form. Inclua um novo DataModule Adicione ao DataModule um Table e um DataSource No Table Coloque em DatabaseName o nome do Alias criado pela propriedade DatabaseName do Database e em TableName, o nome da tabela No evento OnCreate do DataModule, chame o mtodo Open do componente Table No DataSource coloque em DataSet o nome do componente TTable

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

52

No Form, para definir a interface com o usurio, use os componentes de controle de dados que esto na pgina DataControls, basicamente DBEdit e DBNavigator Para poder acessar os dados, coloque a Unit onde est o DataModule no uses da Unit do Form Em todos os componentes DataControls, escolha na propriedade DataSource, o componente DataSource criado no DataModule Em alguns controles, como no DBEdit, deve ser especificado tambm o campo da tabela, na propriedade DataField

Seguindo esses passos, o Form estar pronto para usar. Mais adiante, veremos uma forma mais rpida de se criar um Form de manuteno, mas o mais importante compreender os passos mostrados acima, com todos os componentes e propriedades envolvidas. Vamos detalhar agora cada um dos componentes envolvidos nesse processo, para compreendermos melhor o que est acontecendo.
TDataModule

Um DataModule como se fosse um Form invisvel, onde iremos inserir os componentes de acesso a dados, como o Table e o Datasource. Por serem tambm classes, os DataModules permitem a fcil implementao de modelos de objetos, permitindo herana, criao de mtodos, dentre outros aspectos. Para inserir um DataModule em um projeto, escolha New DataModule do menu File. Os DataModules no gastam recursos do sistema, servem apenas para conter os componentes de acesso a dados e criar, assim, uma classe persistente.
TTable

Componente usado para acessar uma tabela em um banco de dados. Esse componente o mais importante quando acessamos bases de dados Desktop. Muitas dos itens mostrados abaixo esto definidos na classe TDataSet, ancestral do TTable.
Propriedades Active BOF CanModify DatabaseName EOF Exclusive FieldCount FieldDefs Fields Filter Filtered IndexFieldNames IndexName IndexDefs MasterFields MasterSource Modified ReadOnly RecNo RecordCount State TableName TableType Descrio Define se a tabela esta aberta ou fechada. Informa se est no incio da tabela. Define se a aplicao pode inserir, deletar ou alterar registros. Nome do banco de dados onde est a tabela, deve ser escolhido um Alias, que pode ser local. Informa se est no fim da tabela. Define se a tabela pode ser compartilhada por outro usurio. Nmero de campos da tabela. Lista com a Definio dos campos da tabela. Lista de objetos do tipo TField, que representam os campos da tabela. String com uma condio de filtragem. Define se a tabela filtrada. Nome dos campo de ndice, usados para ordenar os registros da tabela. Nome do ndice atual, vazia quando o ndice for a chave primria. Lista com a definio dos ndices. Campos usados no relacionamento com a tabela mestre. DataSource da tabela mestre em uma relao Mestre/Detalhe. Define se o registro atual foi modificado. Define se a tabela somente para leitura. Nmero do registro atual. Nmero de registros. Estado da tabela. Nome da tabela. Tipo da tabela.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

53

Mtodo AddIndex Append AppendRecord Cancel Close CreateTable Delete DeleteIndex DeleteTable DisableControls Edit EmptyTable EnableControls FieldByName FindKey FindNearest First Insert InsertRecord IsEmpty Last Locate LockTable Lookup MoveBy Next Open Post Prior Refresh RenameTable UnlockTable Evento AfterCancel AfterClose AfterDelete AfterEdit AfterInsert AfterOpen AfterPost AfterScroll BeforeCancel BeforeClose BeforeDelete BeforeEdit BeforeInsert BeforeOpen BeforePost BeforeScroll OnCalcFields OnDeleteError OnEditError OnFilterRecord OnNewRecord OnPostError

Descrio Cria um novo ndice, a tabela deve ser exclusiva. Entra em modo de insero e, ao gravar, o registro ser colocado no fim do arquivo. Insere um registro no final do arquivo atravs de cdigo. Cancela as alteraes feitas no registro atual. Fecha a tabela. Cria uma tabela, depende de FieldDefs e IndexDefs. Exclui o registro corrente. Exclui um ndice. Exclui a tabela. Desabilita a atualizao dos controles visuais. Permite a alterao dos campos do registro atual. Apaga todos os registro da tabela, para isso a tabela no pode esta sendo compartilhada. Habilita os controles visuais. Acessa um campo, do tipo TField, pelo nome. Procura o registro com os valores exatos aos dos parmetros nos campos do ndice atual. Procura o registro com os valores mais aproximados aos dos parmetros nos ndices. Move para o primeiro registro. Entra em modo de insero de um novo registro na posio atual. Adiciona um novo registro, j com os dados, na posio atual. Define se a tabela est vazia. Move para o ltimo registro. Procura um registro, usando ou no ndices, de acordo com a disponibilidade. Trava a tabela. Procura um registro e retorna valores dos campos deste. Move um nmero especfico de registros. Move para o prximo registro. Abre a tabela. Grava as alteraes no registro atual. Move para o primeiro registro. Atualiza a tabela com os dados j gravados. Renomeia a tabela. Destrava a tabela. Descrio Aps do mtodo Cancel. Aps o fechamento da tabela. Aps do mtodo Delete. Aps do mtodo Edit. Aps do mtodo Insert. Aps do mtodo Open. Aps do mtodo Post. Aps mudar de registro. Antes do mtodo Cancel. Antes do fechamento da tabela. Antes do mtodo Delete. Antes do mtodo Edit. Antes do mtodo Insert. Antes do mtodo Open. Antes do mtodo Post. Antes de mudar o registro. Evento usado para calcular os valores dos campos calculados. Quando ocorre um erro ao chamar o mtodo Delete. Quando ocorre um erro ao chamar o mtodo Edit. Evento usado com filtragem varivel. Quando a tabela entra em modo de insero, no deixa Modified igual a True. Quando ocorre um erro ao chamar o mtodo Post.

Filtros
Usando o Filter, voc pode filtrar os registro de uma tabela usando uma expresso lgica, como nos exemplos abaixo. Para tornar um filtro ativo, basta colocar Filtered igual a True.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

54

Contudo, se a condio de filtragem for muito varivel, prefervel usar um cdigo como o mostrado abaixo no evento OnFilterRecord da Table, para fazer uma filtragem dinmica, com a propriedade Filter vazia e Filtered igual a True.

Ao filtrar uma tabela, a propriedade RecordCount da Table, s mostra o nmero de registros que satisfazem ao filtro, como se os outros registros nao existissem.

Alterando Registros
Para alterar registros em cdigo, colocamos a tabela em modo de edio, alteramos o valor dos campos e gravamos as alteraes, se for necessrio.

Inserindo Registros
Para inserir registros em cdigo voc pode usar os mtodos AppendRecord e InsertRecord, caso voc no precise de algum campo, mesmo assim ele deve ser informado com o valor Null.

Localizando Registros
Para localizar registros voc pode usar vrios mtodos, mas o melhor deles o Locate, no exemplo abaixo feita uma pesquisa exata.

Voc tambm pode fazer uma pesquisa parcial e/ou sem sensitividade de caso usando o terceiro parmetro, que um conjunto de opes.

Se voc precisar fazer uma pesquisa por mais de um campo, separe os nomes dos campos por ponto e vrgula e use a funo VarArrayOf para criar um array com os valores que voc quer procurar.

Caso os campos pesquisados sejam indexados, a pesquisa ser muito mais eficiente, seno ser criado um filtro temporrio da BDE para localizar os registros.

Indexao
A indexao usada para ordenar os registros da tabela, para isso voc deve escolher os campos pelos quais voc quer ordenar na propriedade IndexFieldNames, inclusive em cdigo, como mostrado abaixo, todos campos devem ser indexados e separados por ponto e vrgula.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

55

Estados da Tabela
A propriedade State determina o estado das tabelas, os principais estados so demonstrados abaixo, veja como os mtodos mudam o estado.
Insert Append dsInsert Post Cancel Delete dsBrowse Edit Post Cancel Delete dsEdit

Verificando Alteraes
Onde for necessrio a verificao de alteraes feitas em uma Tabela, por exemplo no evento OnClose de um Form de manuteno, voc pode usar a propriedade Modified, como mostrado no exemplo abaixo.

Valores Default
Caso voc queira especificar valores Default para os campos de uma tabela, use o evento OnNewRecord, pois nesse evento o registro no marcado como modificado.

Percorrendo uma Tabela


Utilize um cdigo semelhante ao mostrado abaixo para percorrer uma tabela do incio ao fim.

Forms Modais de Incluso/Alterao


Para mostrar Forms Modais de incluso ou alterao de registros utilize comandos como os mostrados abaixo.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

56

Mestre/Detalhe
Nos relacionamentos de 1 para N, uma tabela pode estar ligada a outra em uma relao Mestre/Detalhe, nesse tipo de relao os registros da tabela de ordem N so filtrados pelo campo de relacionamento com a tabela de ordem 1. Por exemplo, se o relacionamento de Clientes com Pedidos for mestre/detalhe, s sero acessados em pedidos, os registros cujo campo CodCli seja igual ao CodCli da tabela de Clientes. Para fazer esse tipo de relacionamento, siga os passos abaixo. No uses da Unit detalhe, Pedidos, inclua a Unit da tabela mestre, Clientes Na Table detalhe, Pedidos, Coloque em MasterSource o DataSource da tabela mestre, Clientes Em MasterFields, chame o Fields Links Designer e escolha os campos de ligao das tabelas, no caso, CodCli para as duas tabelas

Fields Editor

Para criar objetos para os campos de uma tabela clique duas vezes no componente TTable ou escolha Fields Editor no seu menu de contexto, na janela do Fields Editor, clique com o boto direito do mouse e escolha Add, na janela Add Fields, escolha os campos que voc vai querer usar e clique em Ok. No Fields Editor podemos tambm remover os campos criados, alterar sua ordem de apresentao e usar suas propriedades e eventos no Object Inspector. Para cada campo criado um objeto de um tipo descendente de TField, como TStringField, TIntegerField, TFloatField. As principais propriedades dos objetos TField esto listadas na tabela abaixo. Se voc no criar nenhum objeto TField, todos os campos da tabela estaro disponveis, mas caso voc crie algum, somente os campos que voc criar estaro disponveis. Se voc selecionar os campos no Fields Editor e arrastar para o Form, sero criados os controles visuais para esses campos, Label, DBEdit e outros, mas antes coloque a descrio dos campos na propriedade DisplayLabel.

TField
A classe TField usada como ancestral para todos as classes dos campos. Geralmente iremos usar objetos de classes descendentes de TField, mas em todos eles podemos encontrar os itens mostrados abaixo.
Propriedades Alignment AsBoolean AsCurrency AsDateTime AsFloat AsInteger AsString AsVariant Calculated CanModify ConstraintErrorMessage CustomConstraint DataSet DataSize DataType DefaultExpression DisplayLabel DisplayText DisplayWidth EditMask FieldKind FieldName FieldNo Index IsIndexField Descrio Alinhamento do texto do campo nos controles visuais. Valor do campo convertido para Boolean. Valor do campo convertido para Currency. Valor do campo convertido para DataTime. Valor do campo convertido para Doubl. Valor do campo convertido para Integer. Valor do campo convertido para string. Valor do campo convertido para Variant. Indica se o campo calculado em tempo de execuo. Indica se um campo pode ser modificado. Mensagem de erro se a condio de CustomConstraint no for satisfeita. Condio de validao do campo. DataSet onde est o campo. Tamanho do campo, em Bytes. Propriedade do tipo TFieldType, que indica o tipo do campo. Expresso com valor Default do campo para novos registros. Ttulo a ser exibido para o campo. Texto exibido nos controles visuais associados ao campo. Nmero de caracteres que deve ser usado para mostrar o campo no controles visuais. Mscara de edio do campo. Propriedade do tipo TFieldKind que indica o tipo do campo, como Calculado ou Lookup. Nome do campo na tabela. Posio fsica do campo na tabela. Posio do campo nos controles visuais. Indica se um campo vlido para ser usado como ndice.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

57

IsNull KeyFields Lookup LookupCache LookupDataSet LookupKeyFields LookupResultField ReadOnly Required Size Text Value Visible

Indica se o campo est vazio. Campo chave da tabela no relacionamento com LookupDataSet, usado em campos Lookup. Indica se um campo Lookup. Define se ser usado cache para campos Lookup. DataSet onde est definido o valor do campo Lookup. Campo chave do relacionamento em LookupDataSet. Valor do campo, que ser mostrado nos controles visuais. Define se um campo somente para leitura. Define se o campo obrigatrio. Tamanho fsico do campo. Texto de edio do campo. Acesso direto ao valor do campo. Define se um campo visvel.

Esto listadas abaixo algumas classes que realmente iremos manipular no tratamento dos campos de uma tabela, so classes descendentes de TField.
TStringField TSmallintField TFloatField TCurrencyField TBooleanField TDateField TBlobField TIntegerField TWordField TAutoIncField TBCDField TDateTimeField TTimeField TBytesField TVarBytesField TGraphicField TMemoField

Em alguns desses campos voc pode encontrar as propriedades mostradas abaixo, que no esto presentes em TField.
Propriedades MaxValue MinValue DisplayFormat EditFormat Currency DisplayValues Mtodos LoadFromFile SaveToFile Descrio Valor mximo para o campo. Valor mnimo para campo. Formato de apresentao do campo, como ,0.00 % ou ,0.## Km . Formato de edio do campo. Define se um campo monetrio. Usado com campos Boolean, define o texto para True e False, como Sim;No. Descrio Carrega o contedo do campo de um arquivo. Salva o contedo do campo para um arquivo.

Para acessar os campo de uma tabela, existem vrias abordagens, como mostrado abaixo.. Usando o objeto TField ligado ao campo.

Usando a notao de colchetes. Se voc no especificar nenhuma propriedade, assumida a propriedade Value por padro.

Atravs do mtodo FieldByName

Usando a lista Fields do TTable

Converso de Tipos
A converso de tipo de um campo pode ser feita atravs as propriedades tipo As..., como AsString.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

58

Validao
Para validar os valores de um campo, voc pode usar a propriedade CustomConstraint, por exemplo para garantir que a quantidade de um item seja maior que zero, use em CustomConstraint Quantidade > 0, e em CustomConstraint coloque a mensagem para o usurio caso a condio seja falsa. Outra forma, mais flexvel, usando o evento OnValidate, com um cdigo como abaixo, onde gerada uma exceo para cancelar a atribuio do valor ao campo.

Formatao Personalizada
Caso queira fazer uma formatao personalizada do campo, pode usar os eventos OnGetText e OnSetText. Por exemplo, se tiver um campo Estado, e quiser que quando o valor do campo for C fosse mostrado Casado e S, Solteiro, no evento OnGetText use um cdigo como o abaixo.

Como controle visual para o usurio escolher o valor do campo, voc poderia usar o DBComboBox, com Solteiro e Casado na propriedade Items, e no evento OnGetText do campo o cdigo mostrado abaixo.

Campos Calculados
Para criar campos calculados, clique com o direito no Fields Editor e escolha New Field, no quadro NewField, digite o nome do campo, o nome do objeto ser automaticamente informado, o tipo do campo, seu tamanho e escolha Calculated em Field type. Para colocar um valor nesse campo usaremos o evento OnCalcFields do componente TTable, em nenhuma outra parte os valores desses campos podem ser alterados. O cdigo do evento OnCalcFields deve ser enxuto, pois este chamado vrias vezes durante a edio de um registro e um procedimento pesado pode comprometer a performance do sistema.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

59

R O que BDE ?
O Borland Database Engine o corao do Delphi e suas aplicaes com banco de dados usando o mesmo database engine usado pelo Paradox e dBase. Paradox e dBase claro trazem capacidades adicionais alm do database engine (como o Delphi tambm o faz), mas isso longe de dizer que o valor agregado destes recursos adicionais maior de 2 % das capacidades - os outros 98% so providos pelo database engine e esto disponveis para todos os usurios deste engine. O Borland Database Engine (BDE) uma coleo de DLLs que as aplicaes de banco de dados iro fazer chamadas. Cada estao de trabalho que tiver a aplicao de banco de dados instalada dever ter, tambm, o BDE instalado ( o Delphi vem com a instalao do BDE para voc adicionar a sua aplicao). O BDE permite a voc usar tabelas dBase, Paradox ou ODBC em modo multi-usurio. A verso Cliente/Servidor do Delphi tambm vem com links para servidores de banco de dados como Oracle, Sybase, MS SQL Server, Informix, e InterBase. Arquitetura do Banco de Dados do Delphi

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

60

Arquitetura dos Componentes de Banco de Dados

Diagrama de Estados do Dataset

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

61

Estados do DataSet
Estado Descrio dsInactive O Dataset esta fechado. Estado de Espera. O estado default quando um dataset aberto. Registros pode ser dsBrowse visualizados mas no mudados ou inseridos. dsEdit Habilita o a linha corrente para ser editada. dsInsert Habilita uma nova linha para ser inserida. Uma chamada para o Post inserir a nova linha. Habilita FindKey, GotoKey, and GoToNearest para procurar valores nas tabelas do banco de dsSetKey dados. Estes mtodos somente pertencem para o componente TTable. Para TQuery, a procura feita com a syntax do SQL. Modo quando os OnCalcFields executado; previne qualquer mudana para outros campos dsCalcFields ou campos calculados. Raramente usado explicitamente.

Abrindo e Fechado DataSets


Antes que uma aplicao possa acessar dados atravs de um dataset, o dataset deve ser aberto. Existem dois meios para abrir o dataset: Ativando a propriedade Active para True, isto pode ser feito atravs do Object Inspector ou programavelmente em tempo de execuo. Table1.Active := True; - Chamando o mtodo do Dataset Open em tempo de execuo. Table1.open; Para fechar o processo e semelhante s muda o a propriedade para False e o evento para Close;

Navegando no Dataset Propriedades e Mtodos de Navegao


Mtodo ou Propriedade Mtodo First Mtodo Last Mtodo Next Mtodo Prior Propriedade BOF Propriedade EOF Exemplo: Table1.Last; // Move o cursor para o ltimo registro da tabela Descrio Move o cursor para a primeira linha em um dataset. Move o cursor para a ultima linha em um dataset. Move o cursor para a prxima linha em um dataset. Move o cursor linha anterior em um dataset. True quando o cursor est no incio do dataset, em outro caso false. True quando o cursor est no final do dataset, em outro caso false.

Modificando dados no Dataset


Os seguintes mtodos habilitam uma aplicao para inserir, atualizar, e deletar dados no dataset. Mtodo Descrio Comfirma qualquer dado pendente e move um registro em branco para o final do Append dataset, e coloca o dataset em estado de Insert. Cancela a operao corrente e coloca o dataset em estado de Browse. Cancel Apaga o registro corrente e coloca o dataset em estado de Browse. Delete Apaga uma tabela DeleteTable Coloca o dataset em estado de edio. Se um dataset j est estado de Edit ou Insert, Edit uma chamada para Edit no tem efeito. EmptyTable Esvazia uma tabela. Confirma qualquer dado pendente, e coloca o dataset em estado de insero. Insert Tentativa para confirmar um registro novo ou alterado. Se sucesso, o dataset e Post colocado em estado de Browse; se insucesso, o dataset fica no estado corrente. Atualiza a viso do banco de dados. Refresh Delphi Aplicado
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

62

R Tipos, tamanhos dos campos, driver... da tabela


Tools Database Desktop File New Table Paradox 7 ( veja o grfico abaixo) Ok.

Digite o nome do campo. Informe o tipo do campo. Pressione na barra de espao para ver a lista de tipos de campos. Informe o tamanho do campo.

Clique em File New Table e escolha o driver Paradox.

Tipo de tabela: Drivers de melhor performance para acessar dados so dBase e Paradox, estes tambm oferecem suporte para linguagem SQL.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

63

Paradox melhor quando...


A aplicao utilizada com menos de 10 usurios concorrentemente dados e estruturas de dados devem ser facilmente modificados por usurios finais a mquina cliente proporcionalmente mais potente que a mquina servidora largura de banda da rede satisfatria velocidade e convenincia so mais importantes que integridade baixa disponibilidade de administradores de rede e BD qualificados somente uma aplicao acessar rotineiramente os dados as aplicaes sero as resp. pela manuteno da integridade de dados pequena ou moderada quantidade de dados ( < 100 MB )

InterBase melhor quando...


A aplicao utilizada com mais de 10 usurios concorrentemente dados devem ser centralizados, mantidos e protegidos a mquina servidora muito mais potente que a mquina cliente rede est carregada integridade de dados crucial disponibilidade de administradores de rede e BD qualificados vrias aplicaes podero acessar os dados o banco ser o resp. pela integridade de dados moderada a grande quantidade de dados ( > 100 MB )

Fazendo a melhor escolha


Escolher entre Paradox e InterBase pode ter implicao importante para o seu projeto. Portanto, essencial saber o que mais adequado em cada situao. A maioria presume que uma rede estar envolvida. Se voc est implementando um sistema mono-usurio, o Paradox usualmente a melhor escolha. O servidor InterBase local pode ser indicado para um sistema mono-usurio, mas sem os aspectos de concorrncia, as vantagens bsicas do InterBase no estaro sendo utilizadas.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

64

R Tipos de campos do Paradox


Cria ndice primrio. Basta pressionar uma vez na barra espaadora, neste campo ser mostrado um asterisco ( * ). Para remover pressionar

Field Name: Informe o nome do campo. Se preferir abrevie o nome, no acentue nomes dos campos. Ex: (Cdigo, Nmero = Codigo, Numero). Sugesto:Ex. Clie_Codigo, Clie_Nome, Clie_Fone, Clie_Fax ... assim ser fcil para identificar a tabela e o nome do campo. J Type: Tipo de campo aceito. Informe a letra do tipo de campo. Para ver tipos pressione na barra de espao o Delphi abrir um drop-down, veja abaixo: Ex. A para Ascii ou N para Numrico.

Define o tamanho do campo.

novamente.

Alfa .................. Letras, nmeros, smbolos (*#$ etc) Number ............ At 15 dgitos $ Money ........... R$ 100,00 R$ 700,10 Short ................ At 32.767 Long Integer .... at 2.147.483.647 # (BCD) ............ Formato decimal cdigo binrio at 15 dgitos Date .................. Datas vlidas de Jan. 1, 9999 at Dez 31, 9999 Time ................. Armazena hora. @ ...................... Armazena valores da data e da hora Memo ............... Para campos de textos enormes. Armazena ate 240 caracteres e este contedo armazenado em um arquivo com a terminao .MB Formated Memo Pode formatar as fontes, cores, tamanho etc Graphic ............ Campo pode conter arq. grficos .BMP, .GIF etc OLE ................. Pode armazenar, sons, vdeos, figuras. Logical ............. Armazena Verdadeiro ou Falso. +- ...................... Auto incrementar. Comea com 1 e segue (no editvel) Binary .............. Armazena na forma binria (geralmente para sons Bytes ................ Armazena cdigos de barra ou para fitas magnticas.

Table Properties
Em Table Properties voc define os vrios aspectos de configurao da tabela. Muitas dessas opes podem ser implementadas no Delphi e vrios programadores preferem no us-las no Database Desktop.
Opo Validity Checks Table Lookup Secondary Indexes Referential Integrity Password Security Table Language Dependent Tables Descrio Validaes para os campos, como obrigatoriedade, valor mnimo e mximo. Indica que o valor atribudo a um determinado campo tem que estar gravado em outra tabela. Cria ndices secundrios. Cria integridade referencial, geralmente utilizada em relacionamentos de 1 para N. Permite a criao de senhas, protegendo a tabela de acesso no autorizado. Especificar o driver de lngua utilizado pela tabela, geralmente o Pdox ANSI Intl850. Mostra todas as tabela dependentes atravs da integridade referencial.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

65

R Como criar uma tabela para armazenar dados ?


Crie a tabela de dados a seguir. Na barra de ttulos do Delphi clique em Tools, clique em Database Desktop, clique em File New Table e defina os nomes dos campos como mostra a seguir. Na tabela sero armazenados dados que sero cadastrados no formulrio de entrada de dados.

Com o utilitrio Database Desktop podemos criar os campos, ndices primrios, ndices secundrios, apagar registros das tabelas, alterar registros etc

Padro na nomeao dos campos: Como uma tabela de Clientes definirei as iniciais do nome dos campos de Clie_ , quando estiver fazendo alguma alterao no programa ser mais fcil para chamar os campos dos Clientes.

Mover campo: Clique no campo desejado e arraste-o para cima ou para baixo.

Cria chave primria: Para definir uma chave primria ( * ) basta pressionar uma vez no asterisco.

Insere campo: Clique no campo desejado e pressione na tecla Insert ( ins ).


Apaga campo: Clique no campo desejado e pressione Ctrl + Del

Salva a tabela: Este arquivo conter todos os registros dos Clientes.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

66

Grave o arquivo com o nome de Clientes.pas, antes de confirmar o salvamento do arquivo, crie uma pasta para armazenar somente a(s) tabela(s) de dados. Clique no cone criar nova pasta, crie uma pasta chamada dados, grave-a dentro da pasta Delphi Madruga para no misturar com os arquivos fonte.

Todos os arquivo do projeto corrente:

Dentro da sub-pasta dados estaro todas as tabelas.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

67

R Criando ndice secundrio.


Na barra de ttulo do Delphi Tools, clique em Database Desktop, File, Open, Table, Clientes.db, clique no cone Restructure

Para definir o ndice primrio, pressione na barra de espao, quando surgir o asterisco significa que o ndice foi definido.

Criando ndice secundrio para o campo nome

Criando ndice secundrio: Aps clicado em Secondary Indexes, clique no campo Clie_Nome , clique na setinha preta apontando para direita, clique OK, ser aberta uma caixa de texto, digite Inome. A letra I no incio do campo significa ndice, nome, porque o ndice ser para o campo nome.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

68

Crie outro ndice secundrio para cidade.

P Crie mais duas tabelas com os campos e ndices acima, uma tabela para Fornecedores e uma Transportadoras. Em breve utilizaremos o menu que criamos anteriormente.

R O que um alias e como cri-lo ? ( maneira bsica )


Vamos criar um Alias ( atalho ) para acessar as tabelas de uma forma mais prtica e rpida. Quando voc insere um componente Table ou Query em um formulrio deve configurar as propriedades DatabaseName com o caminho apontando para o local ( pasta / diretrio ) das tabelas e se por alguma razo resolver mudar a localizao das tabelas, ter que alterar em todas as propriedades DatabaseName de todos os formulrios que usam esta tabela, com certeza muito mais trabalhoso M Vamos criar o alias : Clique Database - Explore - Object - New - Standard ok digite o nome do Alias = madruga, digite o caminho onde esto as tabelas ( ou tabela = C:\Delphi Madruga\Dados ), para gravar o alias, clique na setinha azul apontando para baixo ( descrio: apply ) e Ok. ( Adiante aprenderemos como criar Alias via programa ). Se algum dia precisar alterar o caminho, no precisar alterar mais a propriedade DatabaseName, basta alterar o caminho onde esta apontando para a tabela.

Grava o Alias

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

69

Com utilitrio SQL Explorer podemos tambm visualizar mais informaes sobre as tabelas: Para acessar este recurso, localize no menu da barra de ttulos do Delphi, clique na opo Database e clique em Explore ser aberta a tela abaixo.

O Alias Madruga esta apontando para 3 tabelas. Se no futuro precisar alterar o local, basta alterar o Path ( caminho ), muito mais rpido J

Crie alias para suas aplicaes.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

70

Com o SQL Explorer possvel visualizar todos os campos da tabela, campos ndices, campos que compem os ndices, tipo de drive da tabela ( Paradox ) etc.

Nomes dos campos da tabela de Clientes. ndices secundrios.

Mostra a ordem (Order) do campo, tipo (Type) ( alfa, numrico ), tamanho (Length).

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

71

Pode-se alterar incluir, alterar, apagar registros ( aba Data ).

Na aba Data pode-se cadastrar, alterar, apagar e navegar nos registros.

Dados da tabela podero tambm ser filtrados via SQL. Aps digitado a linha SQL clique no raio para visualizar o resultado gerado pela SQL.

Exemplos de SQL:
SELECT * FROM Clientes Listar todos os registros da tabela Clientes. SELECT * FROM Clientes ORDER BY Clie_Nome DESC Listar todos os registros da tabela Clientes e classifica-os em ordem de Clie_Nome Descendente. SELECT Clie_Nome, Clie_Cidade FROM Clientes Listar os campos Clie_Nome e Clie_Cidade da tabela Clientes. SELECT Clie_Nome, Clie_Cidade FROM Clientes ORDER BY Clie_Nome ASC Listar os dois campos ( Clie_Nome e Clie_Cidade ) da tabela Clientes e os classifica em ordem de Clie_Nome em ordem ascendente ( ASC ou DESC ). SELECT Clie_Nome, Clie_Cidade FROM Clientes WHERE Clie_Codigo = 3 ( ou, Clie_Cidade = Timb )

Listar os campos ( Clie_Nome e Clie_Cidade ) da tabela Clientes que possua o cdigo 3 ( ou, Cidade igual a Timb ).

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

72

R Como criar um formulrio simples de entrada de dados ?


Clique em File New Application clique em Project, clique na opo Remove from Project, ser aberta uma pequena tela, clique em Unit1 para remover a Unit1, clique Ok e clique Yes para confirmar. Na barra de ferramentas do Delph clique em Database, clique em FormWizard e siga as telas a seguir passo a passo para criar o formulrio de entrada de dados.

Selecione o Alias Madruga e clique na tabela Clientes para gerar o formulrio de entreda de dados.

Selecione os campos para serem exibidos no formulrio.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

73

A disposio dos campos ser feita horizontalmente. H 3 maneiras: Horizontal, Vertical ou em uma grade de dados.

Deixe esta opo desativada.

Clique na propriedade Caption e digite Cadastro de Clientes, mais abaixo clique na propriedade Name e digite Clientes_Frm ( nome do formulrio )

O formulrio est pronto para entrada de dados, possui navegador de registros que faz as operaes bsicas de incluso, alterao, consulta e deleo de registros. Para rodar o programa pressione F9.
uAltere as propriedades Name dos dois componentes: Table1 para Clientes_TB e DataSource para Clientes_DS.

v Aps renomeado Table1 e DataSource1, pressione F12 para abrir a tela de cdigo, mude Table1.Open; para Clientes_TB.Open;

Funo do Table1: Serve para manipular os dados de uma tabela fsica em uma base de dados. Esta ser acessada atravs de um caminho ou alias. Delphi Aplicado

Funo do DataSource1: Este faz a ligao do componente de acesso do banco de dados com o de visualizao de dados. Ele no visual , somente atua como condute para as informaes entre o componente Dataset (veremos adiante) e os componentes de visualizao. Salve este formulrio com o nome de Clientes.pas 74

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

R Organizando arquivos do projeto


Organizando os arquivos do projeto. uma forma de copiar ou apagar arquivos de maneira mais rpida etc. File New Application Project Options Directories / Conditionals sera mostrada a tela abaixo, preencha os campos de acordo com a tela:

Aponte o caminho onde esto os arquivos do seu projeto.

Sistema organizado

Arquivos da pasta Bin, executvel ( .exe ) , arquivo de projeto ( .dpr ), compilados ( .dcu )

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

75

Arquivos que esto na pasta frm, arquivo fonte ( .pas ) e .dfm

R Como criar atalho ao pressionar alt + uma letra ?


Clique em Clie_Nome, clique na propriedade Caption e mude para apenas Nome

Atalho: O caracter & diante da letra criar um atalho para ativar o boto Limpa Campos, note que a letra L esta sublinhada para ativar o pressionamento da combinao Alt + L

R Quais as propriedades bsicas do formulrio de dados ?


Propriedades bsicas necessrias que devem sempre ser definidas em um formulrio quando trabalhar com dados/tabelas. importante que o desenvolvedor adote um padro na nomeao ( nomenclatura ) dos componentes e mantenha o cdigo fonte bem orgranizado para futuras manutenes. J

Formulrio
Propriedade Caption: Propriedade Name:

Defina as propriedades Caption e Name. O contedo da propriedade Caption ser mostrada no topo do formulrio. Ex: Caption = Cadastro de Clientes. Defina um nome para o formulrio. A terminao _FRM significa que este objeto um formulrio. Se preferir poder deixar o nome padro Form1, porm se o projeto possuir 20 Forms a identificao se tornar complicada Form1, Form2, Form3, Form4 ... Form20. Ex: Name = Clientes_Frm

Table

Defina as propriedades DatabaName, TableName e Name. Propriedade DatabaseName Informe o nome da pasta onde conter as tabelas de dados ou Alias. Propriedade TableName Informe a tabela que ser usada no formulrio corrente. Clientes.db.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

76

Propriedade Name

Defina o nome para o componente Table. Como padro o nome Table1, meu padro Clientes_TB. Terminao _TB indica que um tabela Clientes esta usando um componente Table = TB. Defina as propriedades DataSet e Name. Defina a tabela que est sendo usada no formulrio corrente, ou seja, Clientes_TB. ( _TB = Table ). Como padro o nome DataSource1, meu padro Clientes_DS ( _DS = DataSource ).

DataSource
Propriedade DataSet Propriedade Name Nomeao Padro do Delphi.

R Senha
O usurio ter 3 chances, caso no digitar a senha correta nas 3 primeira tentativas o programa fechar.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

77

R Como definir descries para os botes do navegador ?


Defina descries para os botes do navegador de dados para facilitar a identificao, quando o mouse estiver parado sobre um boto, ser mostrada uma pequena descrio dizendo o que aquele boto faz.

Clique no navegador para selecion-lo, na propriedade Hint (...) clique nos trs pontinhos, traduza as mesangens que esto escritas em ingls J

Digite as descries abaixo.

De ... para

Aps traduzido todas as descries selecione a propriedade do navegador de dados chamada ShowHint, defina o valor para True ( para mostrar as descries ).

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

78

R Criando relatrio simples


Partindo do ponto que voc j possui um tabela de dados com registros cadastrados, faremos o relatrio para listar todos os registros. File New Other clique na aba Business, clique no o cone QuickReport Wizard, Ok, clique no boto Start wizard, informe o alias e o nome da tabela ... veja abaixo. Clique na setinha, ser aberta uma lista de Alias, escolha o alias que voc criou.

Selecionei apenas 3 campos.

Veja abaixo, formulrio relatrio que foi criado pelo New Report Wizard.

Clique no formulrio do relatrio, clique em Properties ( F11 ), clique em Caption e digite ao lado Relatrio de Clientes, clique na propriedade Name e digite QuickRep1, salve o relatrio com o nome de Rel_Clientes2.pas

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

79

Caso no tenha um formulrio insira um novo, para isto clique no cone Form, insira tambm um boto do tipo BitBtn.

Salve o formulrio File Save as - Tela_Rel_Clientes.pas. Para o formulrio 3 ( Form 3 ) enchergar o relatrio precisamos abri-lo, clique em File, Use unit e selecione o arquivo Rel_Clientes2 D um clique duplo sobre o boto Relatrio e digite: Rel_Clientes.QuickRep1.Preview; Veja abaixo o resultado:

R Como validar campos ?


1 forma: Para evitar que um determinado campo fique em branco, sem contedo proceda da seguinte forma: Clique no campo Edit1, clique na aba Events, d um clique duplo em no evento OnExit e digite o cdigo abaixo para validar o campo. Ser obrigatorio a digitao de algo.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

80

2 forma: Clique no campo Edit1, clique na aba Events, d um clique duplo no evento OnExit e digite o cdigo a seguir. Ser verificado se a digitao Vectra ou VITARA: Edit1

3 forma:

3 forma: Neste caso estamos usando uma tabela de dados. Clique no componente Table1, clique na aba Events, d um clique duplo no evento BeforePost, digite o cdigo abaixo. Ao tentar gravar o registro e se o contedo do campo Nome for branco/vazio, ser mostrado uma mensagem de erro, forando digitao de algo.

R Como adicionar ou remover formulrios no projeto ?


Para remover ou adicionar formulrios no projeto corrente clique em um dos cones a seguir:

Adiciona form.

Remove form.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

81

R Validando campo data antes de gravar registro.


Siga os passos... clique no componente Clientes_TB, clique no boto direito, clique em Fields editor, clique no campo Cli_Data_Nasc, clique na propriedade EditMask, clique nos 3 pontinhos do EditMask (...), ser aberta uma tela para formatar a data, clique em Date, clique no campo Input Mask e onde mostra !99/99/00;1;_ adicione mais dois zeros caso queira formatar ano com 4 digitos, ficando assim: !99/99/0000;1;_ e para finalizar clique OK.

Clique no compenente Clientes_TB, clique no evento BeforePost ( antes de gravar ) e digite o cdigo mostrado abaixo. Ateno: O registro ser validado antes de gravar na tabela.

Verifica na tabela se campo est vazio.

Clique duplo na tabela Clientes_TB, clique no campo Cli_Data_Nasc e digite os cdigos no evento OnGetText e OnSetText, esto na prxima pgina.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

82

R Como definir mscara no campo


Vamos definir algumas mascaras para os campos abaixo:

telefone

Clique duplo sobre o componente Table ( Clientes_TB ), clique no campo Clie_Fone, clique nos trs pontinhos ( ... ) do EditMask, o Delphi abrir uma tela para configurar a mascara para o campo corrente.

Clique sobre Phone, ser mostrado no lado direito os caracteres que formataro o campo Telefone, se precisar basta adicionar ou remover os nmeors nove ou zeros, veja abaixo um exemplo como fica um campo formatado.

Antes de formatar campo Nr. Telefnico

Aps formatar campo Nr. Telefnico

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

83

R Formatadores de campos
Use a propriedade EditMak com os caracteres restritos que esto abaixo para formatar campos. Este recurso valida a entrada do caracter digitado no campo formatado. Caracter ! > < \ l (L minusculo) L a A 9 0 c C # : / Descrio Espaos em branco no aparecero Todos os caracteres seguintes sero maisculos at que aparea o caracter Todos os caracteres seguintes sero minsculos at que aparea o caracter Indica um caracter literal Somente caracter alfabtico Obrigatoriamente um caracter alfabtico (A-Z, a-z) Somente caracter alfanumrico Obrigatoriamente caractere alfanumrico ( A-Z, a-z, 0-9) Somente caracter numrico Obrigatoriamente caracter numrico permite um caracter Obrigatoriamente um caracter Permite um caracter numrico ou sinal de mais ou de menos, mas no os requer. Separador de horas, minutos e segundos Separador de dias, meses e anos

R Validando data com Try ... Except ... On EConvertError do


Clique em um campo Edit, clique na aba Events, d um clique duplo no evento OnExit e ditie o cdigo abaixo para validar a data:

Clique no campo Data que j foi definido uma mscara de data ( veja pgina anterior ), clique no evento OnExit e digite o cdigo abaixo. Ao sair do campo data mostrar uma mensagem.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

84

R Detalhes sobre Excees

Try .. Except ... EConvertError

O tratamento de exceo um mecanismo capaz de dar robustez a uma aplicao, permitindo que os erros sejam manipulados de uma maneira consistente e fazendo com que a aplicao possa se recuperar de erros, se possvel, ou finalizar a execuo quando necessrio, sem perda de dados ou recursos. Para que uma aplicao seja segura, seu cdigo necessita reconhecer uma exceo quando esta ocorrer e responder adequadamente a essa exceo. Se no houver tratamento para uma exceo, ser exibida uma mensagem padro descrevendo o erro e todos os processamentos pendentes no sero executados. Uma exceo deve ser respondida sempre que houver perigo de perda de dados ou de recursos do sistema.
Excees

Excees so classes definidas pelo Delphi para o tratamento de erros. Quando uma exceo criada, todos os procedimentos pendentes so cancelados e, geralmente mostrada uma mensagem de erro para o usurio. As mensagens padro nem sempre so claras, por isso indicado criar seus prprios blocos protegidos.
Blocos Protegidos

Um bloco protegido um grupo de comandos com uma seo de tratamento de excees.

Algumas vezes voc pode precisar especificar quais excees quer tratar, como mostrado abaixo.

Principais Excees

O Delphi define muitas excees, para cada erro existe uma exceo correspondente.
Classe Exception EAbort EAccessViolation EConvertError EDivByZero EInOutError EIntOverFlow EInvalidCast EInvalidOp EOutOfMemory EOverflow ERangeError EUnderflow EVariantError EZeroDivide EDatabaseError EDBEngineError Descrio Exceo genrica, usada apenas como ancestral de todas as outras excees Exceo silenciosa, pode ser gerada pelo procedimento Abort e no mostra nenhuma mensagem Acesso invlido memria, geralmente ocorre com objetos no inicializados Erro de converso de tipos Diviso de inteiro por zero Erro de Entrada ou Sada reportado pelo sistema operacional Resultado de um clculo inteiro excedeu o limite TypeCast invlido com o operador as Operao invlida com nmero de ponto flutuante Memria insuficiente Resultado de um clculo com nmero real excedeu o limite Valor excede o limite do tipo inteiro ao qual foi atribuda Resultado de um clculo com nmero real menor que a faixa vlida Erro em operao com variant Diviso de real por zero Erro genrico de banco de dados, geralmente no usado diretamente Erro da BDE, descende de EDatabaseError e traz dados que podem identificar o erro

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

85

Blocos de Finalizao

Blocos de finalizao so executados sempre, haja ou no uma exceo. Geralmente os blocos de finalizao so usados para liberar recursos.

Voc pode usar blocos de proteo e finalizao aninhados.

Gerao de Excees

Voc pode provocar uma exceo usando a clusula raise.

Tambm possvel criar seus prprios tipos de excees.

Se voc quiser que uma exceo continue ativa, mesmo depois de tratada, use a clusula raise dentro do bloco de tratamento da exceo. Geralmente isso feito com excees aninhadas.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

86

Erros de Bancos de Dados

A exceo EDBEngineError permite a identificao de erros de bancos de dados gerados pela BDE.

Note que a varivel E, que vai identificar o erro, s precisa ser declarada no bloco de tratamento da exceo. No help voc pode consultar outras propriedades de EDBEngineError que podem ser importantes. Voc tambm pode usar os eventos de erro do componente Table, sem precisar de blocos de tratamento.

Alguns cdigos de erro da BDE esto listados abaixo. Todas as constantes e funes relacionadas API da BDE no Delphi 3 esto na Unit BDE, que deve ser adicionada clusula uses. No BDE API Help voc pode encontrar referncia sobre as funes nativas da BDE, como tambm alguns exemplos em Delphi. Constante DBIERR_KEYVIOL DBIERR_MAXVALERR DBIERR_FORIEGNKEYERR DBIERR_LOCKED DBIERR_FILELOCKED DBIERR_NETMULTIPLE DBIERR_MINVALERR DBIERR_REQDERR DBIERR_LOOKUPTABLEERR Descrio Violao de chave primria Valor mximo excedido Erro de chave externa, como em integridade referencial Registro travado Arquivo travado Mais de um diretrio usado como NetFileDir Campo com valor mais baixo que valor mnimo Campo obrigatrio faltando Erro em tabela Lookup

Se voc quiser mais informaes a respeito do erro pode usar o procedimento DBIGetErrorContext, como na funo mostrada abaixo que retorna determinadas informaes sobre o erro.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

87

R Inserindo registros em uma tabela


Insira 4 edits e um boto Bitbtn, ao clicar neste boto ser gravado os quatro campos: Tela abaixo est em modo de projeto:

A nica funo do DBgrid neste exemplo apenas mostrar todos os registros cadastrados.

Tela abaixo mostra programa em execuo.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

88

R Gravando campo data


Gravando o campo data usando Try ... Except para controlar a operao.

utilizada a estrutura Try ... Except para controlar a operao, se alguma coisa no funcionar o bloco except executado mostrando a mensagem de erro. O Edit prepara o registro para a alterao, o comando Post grava esta alterao.

R Como forar digitao somente de letras ?


Valida o contedo digitado no campo Edit1, ou seja, sero aceitas somente letras, tente digitar algum nmero. Clique na aba Events e no evento OnKeyPress digite as linhas de cdigo abaixo:

R Como forar digitao somente de nmeros ?


Valida o contedo digitado no campo Edit1, ou seja, sero aceitos somente nmeros e os caracteres - , + e backspace, tente digitar alguma letra. Clique na aba Events e no evento OnKeyPress digite as linhas de cdigo abaixo:

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

89

R Como navegar nos campos com setinhas baixo/cima ou enter ?


Primeira maneira: Clique no campo Edit1, clique na aba Events, d um clique duplo em OnKeyPress e digite:

Quando estiver no campo Edit1 e pressionar enter o pular para o prximo campo Edit2. Clique no campo Edit2, clique na aba Events, d um clique duplo em OnKeyPress e digite:

Quando estiver no campo Edit2 e pressionar enter o pular para o prximo campo Edit3. Segunda maneira: Neste cdigo programaremos ao pressionar enter, setinha para cima, setinha para baixo, algumas pessoas preferem usar estas teclas para navegar nos campos ao invs do mouse, ento esta a soluo. Selecionaremos todos campos, mantenha a tecla Shift pressionada e com o mouse clique no campo Edit1, Edit2 e Edit3, aps clique na aba Events, d um clique duplo no evento OnKeyDown e digite:

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

90

R Como mudar cores do editor de cdigo fonte do Delphi ?


Na barra de ttulo do Delphi clique em Tools, Editor Options e clique na aba color, selecione por exemplo Comment , clique na cor vermelha, desta forma quando houver algum comentrio no programa ser exibido em vermelho.

possvel configurar cdigo fonte com vrias combinaes de cores.

Desfaz aes aps ter salvo a unit.

Exemplo:

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

91

R Para que serve o Object inspector ? ( inspetor de objetos )


possvel ter acesso mais rapidamente a um objeto ou componente atravs do Object Inspector, clique no drop-down, sero listados todos os objetos em uso do projeto corrente, aps clique no objeto desejado o ponteiro (cursor) ser posicionado no objeto selecionado. O Object Inspector - Inspetor de Objetos serve como um atalho para chegar mais rapidamente em algum objeto.

R Definindo seus prprios cdigos

trechos de cdigos

Programando o editor de cdigos. Quando programamos varias procedures ou blocos de cdigos so constantemente repetidos, uma maneira de poupar a edio destes cdigos e programar o Editor de cdigos. Na barra de ttulos do Delphi clique em ( Delphi 6 ) Tools Editor Options. ( Delphi 7 ) Tools - Editor Options, clique na aba Source Options, clique no boto Edit Code Templates

Add: Adiciona novos cdigos.

Edit: Edita / altera cdigo.

Delete: Apaga trecho de cdigo adicionado. Aps clicar no boto Add ser mostrada a tela ao lado:

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

92

Digite um exemplo ou a sintaxe da funo que mostra a mensagem e clique OK.

Agora vamos invocar o cdigo de dentro do editor de cdigos do Delphi. Para ativar a listagem do cdigo que foi inserida clique a combinao Ctrl J ( control jota ), pressione a letra M , visto que o cdigo foi gravado com a inicial M de Mensagem. Pressione

Ctrl J
para listar seus cdigos.

Aps clicado em Mensagem1 ser inserida a linha na posio do cursor:

mais pratico editar o arquivo Delphi32.dci que se encontra no caminho abaixo: C:\Arquivos de programas\Borland\Delphi6\Bin Abra este arquivo e digite os cdigos que voc mais utilizar, e para invocar pression Ctrl J Coloquei as linhas separadoras para melhor localizar / visualizar os vrios cdigos.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

93

R Como forar gravao do registro antes fechar o formulrio ?


Se alterar o registro corrente, ao fechar o formulrio ser mostrada uma caixa de mensagem pedindo onfirmao para gravao deste registro. Quando clicar no X para fechar o formulrio ser mostrada uma caixa de dilogo pedindo confirmao.

O campo Nome Cliente foi alterado, ao clicar no X para fechar o formulrio ser solicitado confirmao, se ou no para gravar alterao. Primeira maneira: Clique no formulrio corrente, clique na aba Events, d um clique duplo no evento OnClose e digite o cdigo abaixo:

Segunda maneira: Digite o cdigo abaixo no evento OnClose ( veja exemplo acima )

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

94

R Como pular de campo ao pressionar enter ?


Ao pressionar a tecla ENTER posicionar o ponteiro ( cursor ) no prximo campo.

Clique no campo EditClie ( primeiro campo deste formulrio ). Clique na aba Events, clique duplo no evento OnKeyDown e digite a linha de cdigo abaixo: If Key = Vk_Return then Perform(Wm_NextDlgCtl,0,0); Veja abaixo cdigo completo:

Programaremos o pressionamento da tecla enter para todos os campos da tabela. Selecione todos os campos, matenha a tecla Shift pressionada e clique nos quatro campos, pressione F11, clique na aba Events, d um clique duplo no evento OnKeyDown e digite o cdigo abaixo:

Note que todos os campos esto selecionados para usar o mesmo evento. Outra forma: Clique na aba Events, d um clique duplo no evento OnKeyDown e digite o cdigo abaixo:

Note o evento : OnKeyDown

Note o evento : OnKeyPress Delphi Aplicado


- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

95

R Como limpar todos o campos

edits ?

Insira um boto Bitbtn, d um clique duplo neste boto e digite o cdigo abaixo: 1 maneira:

2 maneira Para limpar um nico campo digite a linha abaixo:

R Ativa / Desativa boto Iniciar do Windows


Teste realizado no Windows XP. Aps executar o programa ( F9 ) clique no boto iniciar do Widnows este no funcionar.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

96

R Como abrir/criar formulrio dinamicamente ?


Carrega formulrio para memria mais rapidamente, se o seu projeto possuir muitos formulrios a serem abertos, esta a maneira adequada. Crie 4 ( quatro ) formulrios.

Com o projeto aberto, clique em Project Options, selecione o formulrio desejado para cri-lo dinamicamente, clique na setinha que esta apontando para o lado direito, aps clicado na setinha o formulrio ser passado / transferido para o lado direito ( Clientes_Frm ) e clique OK para finalizar.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

97

No formulrio do Menu_Frm, d um clique duplo no botoo Clientes_Bit e no evento OnClick digite o cdigo abaixo:

R Como procurar um registro no mesmo campo por cdigo ou nome ?


No campo Localiza por Cdigo ou Nome ser possvel procurar por cdigo ou nome. Clique no Edit1, clique na aba Events, clique no evento OnChange e digite o cdigo abaixo. Para esta situao usaremos Try ... Except ... end Como fazer ndice secundrio, volte para pgina 49 Nome do ndice secundrio: Iempresa

Digite o cdigo abaixo no evento OnChange do campo de pesquisa ( Edit1 )

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

98

R Como navegar nos registros usando teclas de funo ( F1, F2 ) ?


Usaremos as teclas de funo para navegar nos registros.

Selecione o formulrio corrente, na propriedade KeyPreview defina o valor para True. Selecione o formulrio, no evento OnKeyDown do form digite o cdigo abaixo, neste exemplo estou usando a tabela de Vendedores.

F1 = registro anterior. F2 = prximo registro. F3 = primeiro registro. F4 = ltimo registro. F5 = insere registro. F6 = apaga registro.

F7 = edita registro. F8 = grava. F9 = cancela. ESC = sai programa. F10 = e-mail. F11 = calculadora.

R Como instalar Quick Report do Delphi 6 no Delphi 7


O Delphi 7 usa componentes Rave para criar relatrios, se preferir usar o Quick Report do Delphi 6 siga os passo abaixo: Feche todos os projetos abertos. Abra o menu Component na Barra de Menus. Selecione a opo Install Packages. Na caixa de dilogo que se abre, selecione o boto Add Abra o diretrio \bin (a localizao padro c:\Arquivos de Programas\Borland\Delphi7\bin). Selecione o arquivo dclqrt70.bpl. Clique em Abrir. De volta janela Project Options, clique no boto OK. Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

99

R Memria Total e Livre


Mostra quantidade de memria total e a quantidade livre.

R Formatando valores e calculando percentual


Insira dois Edits e um boto Bitbtn, no evento OnClick digite o cdigo abaixo:

Digite o valor 100 e 10

Posicione o ponteiro do mouse sobre a palavra FloatToStr e pressione F1 ( ajuda ), veja as opes de formataes, clique em Example e clique no boto Exibir.

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

100

R Como excluir TODOS registros da tabela ?


Insira um boto do tipo Bitbtn, d um clique duplo sobre este boto, clique na aba Events, clique no evento OnClick e digite o cdigo abaixo:

R Validando campo com Try ... Except


Usando Try ... Execpt

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

101

INFORMAES BSICAS NECESSRIAS ........................................................................................ 2 difcil programar ?..................................................................................................................................... 2 O que um programa ?................................................................................................................................. 2 O que um programador de computador ?.................................................................................................... 2 O que um programa fonte ?........................................................................................................................ 2 Quando meu programa est pronto, o que venderei ? .................................................................................... 2 O que um sistema ?.................................................................................................................................... 2 R Como criar um programa ou sistema em Delphi? ..................................................................................... 3 R Origem do nome Delphi = Delfos............................................................................................................. 3 R Tela padro do Delphi 6.0 ........................................................................................................................ 4 R Tela padro do Delphi 7.0 ........................................................................................................................ 5 R Tela padro do Delphi 2005 ..................................................................................................................... 6 R Introduo ao Delphi 6 / 7 ...................................................................................................................... 14 Propriedades primeira maneira ............................................................................................................ 18 Propriedades segunda maneira............................................................................................................. 19 PROPRIEDADES: Aba / paleta / guia das propriedades ( properties ) ........................................................ 20 EVENTOS: Aba ou paleta de eventos ( EVENTOS ).................................................................................. 20 COMPONENTES: Aba / guia dos componentes Standard....................................................................... 21 R O que so variveis ?.............................................................................................................................. 21 R Mais sobre variveis............................................................................................................................... 23 R Constantes Tipadas ................................................................................................................................ 24 R Begin ... End ( Incio ... Fim ) ............................................................................................................. 25 R If ( se ) ............................................................................................................................................... 25 R If ... else ( Se ... Caso contrrio )......................................................................................................... 25 R IF ........................................................................................................................................................... 26 R Como criar descrio com mais de uma linha ? ..................................................................................... 26 R Tags ....................................................................................................................................................... 27 R Inc() e Dec()........................................................................................................................................... 28 R Formatando casas decimais ................................................................................................................... 28 R Confirmao ao fechar o formulrio ....................................................................................................... 29 R Criando Funo para mostrar o dia da semana ........................................................................................ 29 R Sender.................................................................................................................................................... 30 R Subtraindo horas .................................................................................................................................... 31 R Abrindo e fechando unidade Cd-Rom..................................................................................................... 31 R Variveis globais.................................................................................................................................... 32 R Mensagem com MessageBox e Case ...................................................................................................... 33 R Como definir descrio para os botes ? ............................................................................................. 34 R Salvando Unit ( programa ) .................................................................................................................... 34 R O que so eventos ?................................................................................................................................ 35 R Como racionar a digitao do cdigo ?................................................................................................... 36 R Disparando o mesmo evento................................................................................................................... 37 R O que compe um projeto ?.................................................................................................................... 38 R Quais so os arquivos do seu projeto que devem ser copiados ?.............................................................. 38 R Arquivos que compe uma aplicao. .................................................................................................... 39 Arquivos Gerados pela Compilao ............................................................................................................ 39 Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 102

R Clusulas e bibliotecas de uma unit..................................................................................................... 40 Cdigo fonte do arquivo Unit (.PAS).......................................................................................................... 40 Seo Unit.................................................................................................................................................. 40 Seo Uses ................................................................................................................................................. 40 Seo Interface.......................................................................................................................................... 40 Seo Type ................................................................................................................................................. 41 Seo Var ................................................................................................................................................... 41 Seo Implementation................................................................................................................................. 41 R O que so mtodos ? ............................................................................................................................. 41 R O que so componentes ?.................................................................................................................... 42 Eventos comuns ao formulrio e aos componentes...................................................................................... 43 Rotinas que Respondem a Eventos ............................................................................................................. 43 R Como inserir mais formulrios no projeto ? ........................................................................................ 44 R Como criar um menu ?........................................................................................................................... 45 R Como definir um cone para o formulrio corrente ?............................................................................... 48 R Como remover barra de ttulo e bordas do formulrio ?....................................................................... 48 R Qual funo do Database Desktop ? ....................................................................................................... 49 DATABASE DESKTOP 7 ......................................................................................................................... 49 um utilitrio onde ser criado a base de dados (tabelas - nomes dos campos, tamanhos dos campos, ndices etc). ............................................................................................................................................................ 49 Introduo .............................................................................................................................................. 49 Criao do Banco de Dados........................................................................................................................ 50 Database Desktop ....................................................................................................................................... 50 Tabelas Paradox ......................................................................................................................................... 50 Table Properties.......................................................................................................................................... 50 Tipos de Campos ........................................................................................................................................ 50 Configurao .............................................................................................................................................. 50 Aliases........................................................................................................................................................ 51 Database Explorer ...................................................................................................................................... 51 BDE Administrator..................................................................................................................................... 51 TDatabase .................................................................................................................................................. 51 Database Form Wizard ............................................................................................................................... 52 Form Passo a Passo .................................................................................................................................... 52 TDataModule ............................................................................................................................................. 53 TTable........................................................................................................................................................ 53 Filtros......................................................................................................................................................... 54 Alterando Registros .................................................................................................................................... 55 Inserindo Registros..................................................................................................................................... 55 Localizando Registros ................................................................................................................................ 55 Indexao ................................................................................................................................................... 55 Estados da Tabela ....................................................................................................................................... 56 Verificando Alteraes ............................................................................................................................... 56 Valores Default .......................................................................................................................................... 56 Percorrendo uma Tabela ............................................................................................................................. 56 Forms Modais de Incluso/Alterao .......................................................................................................... 56 Mestre/Detalhe ........................................................................................................................................... 57 Fields Editor ............................................................................................................................................... 57 TField......................................................................................................................................................... 57 Converso de Tipos .................................................................................................................................... 58 Validao ................................................................................................................................................... 59 Formatao Personalizada .......................................................................................................................... 59 Campos Calculados .................................................................................................................................... 59 R O que BDE ? ...................................................................................................................................... 60 Arquitetura dos Componentes de Banco de Dados ...................................................................................... 61 Delphi Aplicado
- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

103

Diagrama de Estados do Dataset ................................................................................................................. 61 Estados do DataSet..................................................................................................................................... 62 Abrindo e Fechado DataSets....................................................................................................................... 62 Navegando no Dataset Propriedades e Mtodos de Navegao ................................................................ 62 Modificando dados no Dataset.................................................................................................................... 62 R Tipos, tamanhos dos campos, driver... da tabela ..................................................................................... 63 R Tipos de campos do Paradox.................................................................................................................. 65 Field Name:................................................................................................................................................ 65 Type:.......................................................................................................................................................... 65 Table Properties.......................................................................................................................................... 65 R Como criar uma tabela para armazenar dados ? ..................................................................................... 66 R Criando ndice secundrio. ..................................................................................................................... 68 R O que um alias e como cri-lo ? ( maneira bsica ) .......................................................................... 69 Exemplos de SQL:...................................................................................................................................... 72 R Como criar um formulrio simples de entrada de dados ?....................................................................... 73 R Organizando arquivos do projeto............................................................................................................ 75 R Como criar atalho ao pressionar alt + uma letra ? ............................................................................ 76 R Quais as propriedades bsicas do formulrio de dados ? ......................................................................... 76 R Senha ..................................................................................................................................................... 77 R Como definir descries para os botes do navegador ? ......................................................................... 78 R Criando relatrio simples ....................................................................................................................... 79 R Como adicionar ou remover formulrios no projeto ?............................................................................. 81 R Validando campo data antes de gravar registro.................................................................................... 82 R Como definir mscara no campo telefone ? ....................................................................................... 83 R Formatadores de campos ........................................................................................................................ 84 R Detalhes sobre Excees Try .. Except ... EConvertError ................................................................. 85 Excees .................................................................................................................................................... 85 Blocos Protegidos....................................................................................................................................... 85 Principais Excees .................................................................................................................................... 85 Blocos de Finalizao ................................................................................................................................. 86 Gerao de Excees .................................................................................................................................. 86 Erros de Bancos de Dados .......................................................................................................................... 87 R Inserindo registros em uma tabela .......................................................................................................... 88 R Gravando campo data............................................................................................................................. 89 R Como forar digitao somente de letras ? .......................................................................................... 89 R Como forar digitao somente de nmeros ? ..................................................................................... 89 R Como navegar nos campos com setinhas baixo/cima ou enter ? .......................................................... 90 R Como mudar cores do editor de cdigo fonte do Delphi ?....................................................................... 91 R Para que serve o Object inspector ? ( inspetor de objetos )...................................................................... 92 R Definindo seus prprios cdigos trechos de cdigos ............................................................................ 92 R Como forar gravao do registro antes fechar o formulrio ? ................................................................ 94 R Como pular de campo ao pressionar enter ?............................................................................................ 95 R Como limpar todos o campos edits ?.................................................................................................. 96 R Ativa / Desativa boto Iniciar do Windows ............................................................................................ 96 R Como abrir/criar formulrio dinamicamente ? ....................................................................................... 97 R Como procurar um registro no mesmo campo por cdigo ou nome ? ............................................... 98 R Como navegar nos registros usando teclas de funo ( F1, F2 ) ?............................................................ 99 R Como instalar Quick Report do Delphi 6 no Delphi 7............................................................................. 99 R Memria Total e Livre ......................................................................................................................... 100 R Formatando valores e calculando percentual......................................................................................... 100 R Como excluir TODOS registros da tabela ? .......................................................................................... 101 R Validando campo com Try ... Except.................................................................................................... 101

Delphi Aplicado

- by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )

104