modulo1a delphi aplicado

104
Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 1 O obejtivo deste material é ser “ práticio” e “objetivo “ Exemplos desta apostila estão baseados no Delphi 6 e 7 Desde que a primeira versão do Delphi foi lançada, em 1995, esta ferramenta tem se mostrado como a melhor escolha no desenvolvimento para Windows. Numa relação com outros ambientes de programação, 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 evolução do Pascal padrão. O Pascal surgiu no final dos anos 60 e, até hoje, é usada como uma das primeiras linguagens de programação para estudantes de computação. Em 1984, a Borland lançou o Turbo Pascal, que se firmou como o melhor compilador de Pascal do mercado e, a partir de então, passou a incluir novos recursos nesta linguagem, como Units e Objetos, até a ascensão do Windows, quando foi lançado o Turbo Pascal for Windows e, depois, o Borland Pascal, cuja linguagem é considerada a primeira versão da Object Pascal. Na sua atual versão, usada pelo Delphi, a Object Pascal é uma linguagem poderosa, sólida e respeitada, sem perder sua peculiar facilidade. No Delphi, a criação de aplicativos começa com a montagem de componentes em janelas, como se fosse um programa gráfico, o usuário também pode utilizar componentes desenvolvidos por terceiros ou criar seus próprios componentes. O Delphi vem com todas as ferramentas necessárias para a criação de bancos de dados dBase e Paradox, além de uma versão do Interbase, permitindo a criação de aplicativos com banco de dados sem a necessidade de aquisição de outro programa. O Delphi também tem acesso a bases de dados como Foxpro, Access, InFormix, SYBASE, Oracle, SQL Server e DB2, além de qualquer outro banco de dados para Windows compatível com ODBC. “ A imaginação é mais importante que o conhecimento – Albert Einstein “

Upload: ronysilva2009

Post on 24-Jul-2015

228 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 1

O obejtivo deste material é ser “ práticio” e “objetivo “

Exemplos desta apostila estão baseados no Delphi 6 e 7

Desde que a primeira versão do Delphi foi lançada, em 1995, esta ferramenta tem se mostrado como a melhorescolha no desenvolvimento para Windows. Numa relação com outros ambientes de programação, podemos dizerque 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 evolução do Pascal padrão. OPascal surgiu no final dos anos 60 e, até hoje, é usada como uma das primeiras linguagens de programação paraestudantes de computação.

Em 1984, a Borland lançou o Turbo Pascal, que se firmou como o melhor compilador de Pascal do mercado e, apartir de então, passou a incluir novos recursos nesta linguagem, como Units e Objetos, até a ascensão do Windows,quando foi lançado o Turbo Pascal for Windows e, depois, o Borland Pascal, cuja linguagem é considerada a primeiraversão da Object Pascal.

Na sua atual versão, usada pelo Delphi, a Object Pascal é uma linguagem poderosa, sólida e respeitada, sem perdersua peculiar facilidade.

No Delphi, a criação de aplicativos começa com a montagem de componentes em janelas, como se fosse umprograma gráfico, o usuário também pode utilizar componentes desenvolvidos por terceiros ou criar seus próprioscomponentes.

O Delphi vem com todas as ferramentas necessárias para a criação de bancos de dados dBase e Paradox, além deuma versão do Interbase, permitindo a criação de aplicativos com banco de dados sem a necessidade de aquisiçãode outro programa. O Delphi também tem acesso a bases de dados como Foxpro, Access, InFormix, SYBASE,Oracle, SQL Server e DB2, além de qualquer outro banco de dados para Windows compatível com ODBC.

“ A imaginação é mais importante que o conhecimento – Albert Einstein “

Page 2: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 2

INFORMAÇÕES BÁSICAS NECESSÁRIAS

É difícil programar ?Todos podemos, porém precisamos querer . Nem todas as pessoas possuem a tendência eserem programadores, contudo programar com Delphi é super fácil e você também conseguirá. J

O que é um programa ?São ordens em forma de código da linguagem Delphi dadas ao computador para que ele realize deforma estruturada e lógica o que lhe for pedido. Ex: Você trabalha, certo ? , ganha um salário , paga seus fornecedores ( supermercado, restaurante etc ) , se não pagá-los não terá o quecomer... Um programa tornará suas rotinas de trabalho mais práticas. O programadorordenará ao programa fazer determinadas tarefas em determinada seqüência lógica. É uma

definição sintetizada.

O que é um programador de computador ?Programador de computador é a pessoa que possui conhecimentos de uma linguagem, neste casoDlephi, de lógica, análize e estruturamento - basicamente. Todos somos programadores , todosos dias temos rotinas que devem ser cumpridas com uma determinada seqüência lógica. Oprogramador de computador digita linhas de código para criar um programa. Ex: Cadastrarclientes, transportadoras etc

O que é um programa fonte ?Programa é o código fonte digitado/criado pelo programador. O código fonte fica sempre empoder do seu criador o programador . Não é comum vender o programa fonte ( o segredo do seunegócio ) para seu cliente - cada caso é um caso J Ex: Programa de Cadastro de Clientes,programa de Cadastro de Fornecedores ( programa ou módulo ).

Quando meu programa está pronto, o que venderei ?No caso do Delphi, quando o programa estiver pronto basta copiar o programa com a terminação.exe , as tabelas que contem os dados e instalar o BDE na máquina do seu cliente..

O que é um sistema ?Um sistema é composto de vários programas ou arquivos. Minha empresa possui um sistema parafolha de pagamento . Neste sistema existem vários outros módulos ( programas ) que interagem

entre si e as vezes são transparentes para o usuário. Ex: Uma empresa tem um diretor (programa_mestre.exe ), e este possui vários funcionários ( módulos, programas ) quetrabalham para esta empresa.

“ A religião sem a ciência é cega, a ciência sem a religião é inútil – Albert Einstein “

Page 3: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 3

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

R Como criar um programa ou sistema em Delphi?

å Digite o código do programador que é composto por ordens escritas com a linguagem Delphijuntamente com uma determinada lógica dizendo para o programa fazer alguma determinadatarefa.

ç Compile ( Ctrl F9 ). O processo de compilação é deve ser realizado para converter o códigofonte ( seu segredo de programador ) de forma que o computador possa interpretá-lo ecarregá-lo na memória ram ( mostrar na tela ). O usuário não será capaz de ver o código fonte( ver o segredo ) do programa, somente usar o programa.

Veja a interpretação de um programa:

Você já fez alguma casa, ou não ? Se já, também teve que fazer um projeto para esta, tambémprogramou detalhadamente custos do projeto etc... Isso também pode ser considerado um

programa ( se usar material de qualidade inferior poderá ter problemas, se usar material deótima qualidade ... se ... se... lógica ). Tudo dentro de uma seqüência lógica e criteriosa.

Programar está em nosso meio todos os dias, assim sendo, podemos todos nos considerardesenvolvedores, pois, pensamos e analizamos tudo dentro de uma ordem lógica.

R Origem do nome Delphi = Delfos

De acordo com fontes obtidas na Internet... Na antiga Grécia, Delfos foi uma cidade sagradalocalizada nas encostas do Monte Parnasso, onde Apolo possuía um templo e ditava oráculos pelaboca de Pitia. Escavações realizadas, desde o final do século passado, levaram à descoberta dostemplos de Apolo e de Atena, tesouros, obras de arte e estátuas que fazem de Delfos um dosmais ricos da Grécia. Em inglês a palavra Delfos é escrita Delphi. J

"Faça as coisas o mais simples que puder, porém não se restrinja às mais simples."

Page 4: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 4

R Tela padrão do Delphi 6.0

Após ter aberto o Delphi serámostrado um Formulário

padrão, object inspector, abadas propriedades e eventos.

Para alternar entre o editor decódigo fonte, pressione F12,para voltar para o formuláriopressione F12. Para alternar

para as propriedades e eventospressione F11.

Form1 é o nomedo formulário

padrão atribuídopelo Delphi.

Aba/paleta depropriedades.

Paleta deeventos.

Componentes.

Page 5: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 5

R Tela padrão do Delphi 7.0

Page 6: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 6

R Tela padrão do Delphi 2005Apenas para dar um idéia do novo Delphi, pois os exemplos desta apostila são baseados no Delphi 6 e 7.

Page 7: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 7

"Disponível no mercado desde 1995, quando foi lançada sua primeira versão, o novo Delphi 2005 chega aomercado com recursos inovadores e implementações significativas para maior produtividade nodesenvolvimento para Microsoft Windows tanto na plataforma Win32 quanto .Net, e com otimizações dosinvestimentos em software.

Esta nova versão permite o desenvolvimento em Delphi ou C#, para Win32 ou .NET em um único ambiente,com Gerenciamento do Ciclo Completo de Desenvolvimento da Aplicação presente.

A Borland Software anuncia globalmente o Borland Delphi 2005, até então conhecido pelo codinomeDiamondback. O ambiente Rapid Application Development (RAD) para aplicações Windows e .NETcombina suporte a Win32, .NET, Delphi e C# em um único ambiente. Seus novos recursos melhoramsignificativamente a produtividade do desenvolvedor de aplicações e da equipe de desenvolvimento, e seintegra às soluções de Gerenciamento do Ciclo Completo de Desenvolvimento da Aplicação (ApplicationLifecycle Management - ALM) da Borland.

"O Delphi 2005 é o mais importante upgrade do Delphi em anos e o sistema de desenvolvimento IDE eALM Windows mais completos existentes no mercado hoje, afirma George Paolini, vice-presidente egerente geral de ferramentas de desenvolvimento da Borland. "Ele está diretamente alinhado com a visão daBorland para Produção Otimizada de Software, ajudando as equipes de desenvolvimento a aprimorar aprevisibilidade e o sucesso de projetos de software para que eles sejam fornecidos no prazo, dentro doorçamento e com o valor máximo para os negócios."

Suportando diversas linguagens e SDKs Win32 e .NET, o Delphi 2005 traz muitos aprimoramentosinovadores como produtividade do desenvolvedor e da equipe, como code refactoring, teste unitário e o novoframework de aplicação de negócios empresariais baseado no modelo ECO II (Enterprise Core Objects) para.NET. Também permite que equipes de desenvolvimento mantenham e usufruam de aplicações Windowsexistentes, ao mesmo tempo explorando novas oportunidades.

"A Borland entende a pressão sobre as equipes de desenvolvimento Windows de hoje para suportaraplicações existentes e, simultaneamente, evoluir com novas tecnologias, tudo no contexto de ciclos defornecimento mais curtos e recursos reduzidos", declarou Michael Swindell, diretor de gerenciamento deproduto para ferramentas de desenvolvimento da Borland. "O Delphi 2005 oferece as capacidades que osdesenvolvedores precisam para acelerar o processo de desenvolvimento e manutenção de aplicaçõesWindows existentes e da próxima geração."

Alguns dos aprimoramentos mais significativos do Delphi 2005 são relacionadas abiaxo, permitindo-nosuma melhor compreenção deste revolucionário produto.

ü Suporta mulltiplas linguagens e SDKs Windows. Suportando desenvolvimento em Delphi e C#, possibilitadesenvolvimento Win32 e .NET nativo a partir da mesma ferramenta e da mesma linguagem (Delphi).Também suporta ASP.NET, ADO.NET, VCL.NET e VCL para Win32.

Page 8: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 8

ü Integra soluções ALM plenamente, sendo projetado para oferecer aos desenvolvedores uma visão dasdiversas fases do ciclo de desenvolvimento da aplicação com a integração de StarTeam e Optimizeit. Aintegração do StarTeam visa simplificar o gerenciamento de recursos de código-fonte e aprimorar acomunicação da equipe, enquanto a inclusão do Optimizeit Profiler para .NET ajuda a automatizar o testeunitário e melhorar a qualidade e o desempenho gerais da aplicação.

ü Implementa desenvolvimento MDA profissional, com ECO II do Delphi 2005 teremos uma solução ModelDriven Architecture (MDA) rápida e de classe empresarial para .NET com o objetivo de acelerar odesenvolvimento, aprimorar a qualidade e aumentar a capacidade de manutenção de aplicações maiscomplexas. ECO II é uma solução completa para esquematizar e criar objetos automaticamente e fornececache de objeto .NET altamente escalável com capacidades avançadas de objeto, persistência, versão etraduções.

ü Delphi 2005 simplifica e acelera o desenvolvimento em Windows, incluindo muitos recursos com uma IDEinovadora para ajudar a aprimorar a experiência adiquirida do desenvolvedor, aumentando suaprodutividade e otimizando todo o processo. Os recursos abrangem code refactoring avançado, HelpInsights e Error Insights, SyncEdit, Gerenciamento de Histórico e novos aperfeiçoamentos na linguagemDelphi. Além disso, um facilitador para ADO.NET foi projetado para acelerar e simplificar cada aspecto dodesenvolvimento de aplicações .NET conectadas a bancos de dados com Delphi ou C#.

É transparente, o compromisso da Borland em disponibilizar uma ferramenta, que integre todo o legado daplataforma Win32, avançando substancialmente no sentido do desenvolvimento para .Net framework. Isto éum fator tranquilizador para quem necessite tomar decisão de desenvolver ou não para .Net neste momento,não necessitando com isso ter que se manter numa versão do produto defazada com o tempo. Delphi 2005,consegue com destreza, solucionar problemas no tocante a questões técnicas, fornecendo um único ambientepara 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

Page 9: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 9

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 forWin32

Page 10: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 10

Editor código fonte do Delphi 2005:

Para melhor manipular ou navegar no código fonte, no Delphi 2005 foi adicionado o sinal de MAIS paraMaximizar e o sinal de MENOS para minimizar

Exemplo 1

Exemplo 2

Exemplo 3

Page 11: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 11

File – New – VCL Forms Application Delphi for Win32

Vamos inserir um botão do tipo TBitBtn

Clique no componente earraste-o para formulário.

Page 12: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 12

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

Arquivo gerados pelo Dephi 2005.

Programa pronto.

Page 13: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 13

Outro exemplo:

Resultado:

Page 14: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 14

R Introdução ao Delphi 6 / 7Vamos criar um formulário, por um botão e ao clicar neste botão mostar uma mensagem.å Abra o Delphi 6.0, será mostrada a tela abaixo. ( File – New – Application ). É padrão ser aberto umformulário com nome Form1.

ç Insira umcomponente Button noformulário ( Form1 ).O botão que esta na

aba Standard.

é Após inserido botão do tipo( Button ), dê um clique duplo sobreButton1, será aberta uma tela para

definir o evento ( clique ) deste botão,ou seja, ao clicar no botão será

mostrada a mensagemMeu primeiro - Olá

O que é um Evento ?: É uma açãoque será executada. Neste exemplo,ao clicar no botão OK ( no evento

OnClick ) será mostrada umamensagem.

Form1 é o nome padrão do Formulário, pode ser mudado na propriedade Name.

Page 15: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 15

è Pressione F9 para “ rodar / executar “ o programa e ver seu resultado.

ê Selecione o formulário, clique no Object Inspector (no drop down ), veja o gráfico abaixo, clique emForm1.

" Existem duas coisas infinitas: o Universo e a tolice dos homens – Albert Einstein "

O que é um EVENTO ?

Agora definiremos o evento OnClick dobotão Mensagem.

Os programas feitos em Delphi sãoorientados a eventos. Eventos são ações

normalmente geradas pelo usuário.Existem eventos associados ao formulárioe cada componente inserido neste. Neste

exemplo, programamos o eventoOnClick do botão do tipo Button, ouseja, ao clicar no botão será mostrada

uma mensagem.

Após clicar nobotão Button1

mostrarámensagem.

Page 16: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 16

ë Clique em Form1, ao lado, na propriedade Caption, onde mostra Form1 digite, por exemplo, Cadastrode Clientes. Veja no exemplo abaixo a mudança, ao invés de Form1 mostra Cadastro de Clientes.

ì Clique no botão, na propriedade Caption digite Mensagem, role para baixo, na propriedade Namedigite But_Mens ( But para indicar que o botão é do tipo Button e Mens é a abreviação de Mensagem ).

í Role para baixo, na propriedade Nameestá escrito Form1, este é o nome do

formulário, mude-o para Clientes_Frm.Adote uma nomeação padrão, digite

Clientes e o nome do formulário e Frmindica que é um Formulário.

A nomeação é importantíssima parafacilitar a manutenção do seu sistema.

O que é uma PROPRIEDADE ?Propriedades são características básicas de umcomponente. Cada componente Delphi possui

uma série de propriedades com um valor default(padrão).

Perceba que no modelo aparecem algumas daspropriedades relativas a um Form, tais comosua altura, fonte dos textos, estilo, cor, tipo decursor, etc., todas elas com um valor padrão

incluído pelo Delphi.

Page 17: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 17

î Veja abaixo como esta o programa fonte.

ï Salve unidade ( Unit1 - formulário ) e o projeto.

Veja abaixo código fonte completo ... observe nomes dos objetos ...

Observe com atençãoos nomes dos objetos

de acordo com anomeação que

definimos.

Linha Uses contém bibliotecasnecessárias para este programa, estas

foram automaticamente incluídas peloDelphi 6.0

Clique no ícone Save All, defina o nome daUnit1 para Clientes.pas, após informe o nome

para o projeto – Intro1.dpr

Nome padrão Unit1,porque o arquivo ainda

não foi salvo.

Page 18: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 18

åå Rode/execute o programa pressionando na tecla F9 e clique no botão Mensagem , será mostrada umacaixa de mensagem de texto com a mensagem Meu primeiro - Olá

µµµ

Os 11 passos acima deverão ser seguidos. Se você quer ou não definirnomeação / nomenclatura padrão para os objetos do seu programa ficaao seu critério, posso lhe assegurar que uma boa nomeação lhe poupará

muito tempo.

Delphi utiliza “propriedades”, “eventos” e “componentes”

µµµ

å Propriedades primeira maneiraNa barra de títulos do Delphi, clique em View, clique em Object Inspector ou pressione F11. Através dessajanela que poderemos redefinir as diversas propriedades de qualquer componente do projeto. Perceba queexistem duas abas / guias (Tabs): uma para as propriedades ( properties ) e outra para os eventos ( events).

Propriedades são características básicas de um componente. Cada componente Delphi possui uma série depropriedades com um valor default (padrão). Perceba que no modelo aparecem algumas das propriedadesrelativas a um Form, tais como sua altura, fonte dos textos, estilo, cor, tipo de cursor, etc., todas elas comum valor padrão incluído pelo Delphi.

Defina as seguintes propriedades na aba/guia Properties ( propriedades ) do formulário abaixo: Clique emCaption e ao lado digite Exemplo 1, clique na propriedade Name e digite Exemplo_Frm.

Page 19: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 19

A inicial But_ é para definir o tipo de botão que está em uso, ou seja, do tipo Button. Podemos usar outrostipos de botões, Ex: Bitbtn e SpeedButton = Bit_Mens ou Speed_Mens. Cada programador /desenvolvedor adotará um padrão de nomeação dos objetos, que é importantíssimo para manutenção dosistema.

Insira um componente Label. Clique em Label, posicione o ponteiro do mouse sobre o formulário e clique,será posto um Label no form.

ç Propriedades segunda maneiraNa segunda maneira veremos como definir as propriedades via código. Esta forma é mais trabalhosa, porémo programador deverá saber ou conhecer as várias formas para resolver suas situações. Insira um Button (que está na aba Standard ) , pressione F11, clique na propriedade ( properties ) e escreva ao lado deCaption o texto Mensagem, role barra de rolagem para baixo, clique na propriedade Name e defina o nomeBut_Mens, insira um Label1

Defina a propriedade Caption do botão digitandoMensagem, role para baixo, na propriedade Namedigite But_Mens. Na aba Standard ( barra superiorde componentes ), clique no botão Button, posicioneo ponteiro do mouse sobre o formulário e clique,será posto um Button ( botão ) no formulário comono exemplo ao lado ).

Clique em Label1, pressione F11 ( propriedades ), napropriedade Caption digite O Tempo é Sábio, cliqueem Color e defina a cor clBlue ( cl = Caption, l = label), clique em +Font ( fonte ), Color = clYellow e Sizepara 15, clique em +Style, clique em True em fsBold.

Page 20: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 20

Dê um clique duplo sobre o botão Mensagem, para definir o evento OnClick ( ao clicar executará o evento,a ação ), veja o código abaixo:

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

µ Resumindo, as duas maneiras retornarão o mesmo resultadoJ

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

EVENTOS: Aba ou paleta de eventos ( EVENTOS )

Clique no botão Mensagem, note no lado esquerdoTODAS as propriedades do botão.

Cada botão ( componente ou objeto ) selecionadoterá suas respectibvas PROPRIEDADES.

Cada botão ( componente , ou objeto )selecionado terá seus EVENTOS

específicos.

Page 21: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 21

COMPONENTES: Aba / guia dos componentes Standard

Existem várias paletas / abas / guias com vários componentes. Na aba Standard se encontram oscomponentes 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, cadacomponente possui suas próprias “propriedades” e seus respectivos “eventos”.

R O que são variáveis ?

É um local na memória do computador onde armazenamos temporariamente alguma informação para futurareutilização. Podemos ter diversos tipos de variáveis de memória. O tipo da variável define qual o tipo deinformação que iremos armazenar ( Ex: texto, numérica etc )

Tipos de VariáveisBOOLEAN Tipo lógico que pode assumir somente os valores TRUE ou FALSE e ocupa 1 byte de

memória.

BYTE Tipo numérico inteiro, pode assumir valores numa faixa de 0 a 255, ocupa 1 byte.

CHAR Tipo alfa-numérico, pode armazenar um caractere ASCII, ocupa 1 byte.

COMP Tipo numérico real, pode assumir valores na faixa de -9.2.10-18 a 9.2.10+18 , ocupa 8bytes, pode ter entre 19 e 20 algarismos significativos.

EXTENDED Tipo numérico real, pode assumir valores na faixa de -3,4.10-4932 a +1,1.10+4932, ocupa 10bytes de memória e tem entre 19 e 20 algarismos significativos.

INTEGER Tipo numérico inteiro, pode assumir valores numa faixa de -32768 a +32767, ocupa 2byte de memória.

LONGINT Tipo numérico inteiro, pode assumir valores numa faixa de -2147483648 a+2147483647, ocupa 4 bytes de memória.

Page 22: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 22

REAL Tipo numérico real, pode assumir valores na faixa de -2,9.10-39 a +1,7.10+38, ocupa 6bytes de memória e tem entre 11 e 12 algarismos significativos.

SHORTINT Tipo numérico inteiro, pode assumir valores numa faixa de -128 a +127, ocupa 1byte dememória.

SINGLE Tipo numérico real, pode assumir valores numa faixa de -1,5.10-45 a +3,4.10+38, ocupa 4bytes de memória, e tem de 7 a 8 algarismos significativos.

WORD Tipo numérico inteiro, pode assumir valores numa faixa de 0 a 65535, ocupa 2bytes dememória.

STRING Tipo alfanumérico, possuindo como conteúdo uma cadeia de caracteres. O número debytes ocupados na memória varia de 2 a 256, dependendo da quantidade máxima decaracteres definidos para a string. O primeiro byte contém a quantidade real decaracteres da cadeia.

Dê um clique duplo sobre o botão Button1 e no evento OnClick digite as linhas de código que estão napágina seguinte:

A palavra Imaginação seráarmazenada temporariamente dentro

da variável do tipo Texto.O número 13 será armazenado dentro

da variável do tipo Inteira.

Page 23: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 23

R Mais sobre variáveis

Outro exemplo usando variáveis de memória:

Page 24: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 24

R Constantes Tipadas

Na verdade, constantes tipadas são variáveis inicializadas com valor persistente, que podem ser alteradasnormalmente, como qualquer variável. A única diferença de sintaxe entre constantes tipadas e simples é queo tipo da constante é indicado explicitamente na declaração. Se uma constante tipada for declaradalocalmente, ela não será destruída quando o método for encerrado. Para diferenciar das constantes normais,costuma-se declarar estas com letras de caso variável, como abaixo.

Page 25: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 25

R Begin ... End ( Início ... Fim )Blocos de comandos. Entre um Begin e um End são armazenadas linhas de código.

R If ( se )Condição lógica. “Se” o conteúdo do Edit1 for igual ( = ) ao número “10” será mostrado uma mensagem.

R If ... else ( Se ... Caso contrário )Se o conteúdo do Edit1 um não for igual ao número 10mostra a segunda mensagem

Dê um clique duplo sobre o botão Button1, será aberto o editor decódigos, no evento OnClick ( significa: ao clicar ), serãomostradas as linhas Procedure... e Begin e End, digite códigosempre entre o Begin e End.

Page 26: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 26

R IF

R Como criar descrição com mais de uma linha ?Insira um botão do tipo Button1 , clique no Object Inspector, selecione o formulário Form1, dê cliqueduplo no evento OnCreate e digite o código abaixo:

Quebra linha.

Page 27: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 27

Ou

R Tags

Para cada botão ou dependendo do tipo de componente haverá um tag.

No Tag 10, ao invés de digitar o valor 10,digitei 11 para provocar o erro, veja o

resultado.

Page 28: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 28

R Inc() e Dec()Incrementando variáveis e decremetando.

Defina uma variável inteira no início do programa

R Formatando casas decimais

Variável Valor ( R$ 10,00

Page 29: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 29

R Confirmação ao fechar o formulárioOutra maneira de como pedir confirmação antes de fechar o formulário.

Selecione o formulário, clique na aba Events e selecione o evento OnCloseQuery:

R Criando Função para mostrar o dia da semana

Digite a função ( function ) abaixo:

Ao clicar no Xserá solicitadoconfirmação.

Page 30: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 30

R SenderComo podemos ver o método BitBtn4 tem um ponteiro para o TObject chamado de Sender ( aquele queenvia, remetente, emissor ). Cada evento handler ( manipulador ) terá pelo menos um parâmetro sender.Quando for clicado neste evento ao clicar handler ( BitBtn4Click ) do evento OnClick será chamado. Oparâmetro Sender se refere ao controle que é usado para chamar um método.

Outro exemplo

Observe quecomo está

sendochamado o

mesmoevento.

Page 31: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 31

R Subtraindo horas

R Abrindo e fechando unidade Cd-RomInsira dois botões Bitbtn e no evento OnClick de cada botão digite o código abaixo.

Page 32: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 32

R Variáveis globais

Veremos como transportar variáveis de um programa para outro, para isso teremos dois formulários comdois campos. No primeiro programa definiremos as variáveis Nome e Idade, e nestas serão armazenadosdados para transportar para o formulário 2.

Unit1 ( Programa 1 )

Page 33: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 33

Unit2 ( Programa 2 )

R Mensagem com MessageBox e CaseOutra forma de iusar o MessageBox juntamente com o Case.

Page 34: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 34

R Como definir descrição para os botões ?Quando o ponteiro do mouse estiver posicionado sobre um determinado ícone, será mostrada uma pequenadescrição ou orientação dizendo o que este faz. Clique no formulário, clique no botão Cadastro de Clientes,quando um determinado objeto estiver selecionado serão mostrados pequenos botões pretos em sua volta,indicando que este está selecionado. Clique na aba Properties, selecione a propriedade Hint, no lado direitodesta propriedade digite o seguinte texto: “Será aberto outro formulário”, mais abaixo, na propriedadeShowHint, mude o valor para True, pressione a tecla F9 para rodar o programa, posicione o ponteiro domouse sobre o botão e veja a descrição Será aberto outro formulário.

R Salvando Unit ( programa )

Clique no ícone Save ( Crtl S - Salvar ), digite onome Menu.pas para salvar

o formulário corrente( o menu do projeto )

Quando o ponteirodo mouse estiverparado sobre o

botão será mostradadescrição.

Page 35: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 35

R O que são eventos ?

Eventos são acontecimentos provocados por ações do usuário que ocorrem quando um Form está ativo. Nóspodemos programar respostas a esses estímulos. Propriedades e Eventos estão disponíveis para todos oscomponentes visuais do Delphi. Mas quais são as propriedades e eventos que estarão disponíveis?Naturalmente, isso dependerá do tipo de controle que estamos utilizando.

Uma vez construído um Form, para acessar as propriedades e eventos correspondentes a um determinadocomponente, basta clicar sobre ele. Se o componente for o próprio Form, será só clicar sobre qualquer áreado Form (área pontilhada).

Vamos criar uma situação em nosso projeto para exemplificar o uso dos “eventos”:

Dê um clique duplo no botão Cadastros de Clientes:

Salve o projeto, digite o nome Sis_Madrugadao, pressione F9 para executar / rodar o projeto / programa.

Clique no botão Cadastro deClientes , clique na aba Events

( eventos ), note que foiselecionado o evento OnClick,

dê um clique duplo, será aberto oeditor de códigos do Delphi.

Após clicar no botão Cadastro deClientes será alterada a cor do fundo doformulário. O objetivo deste exemplo é

mostrar como funciona o“evento OnClick”.

Estamos usando o eventoOnClick, ou seja, quando forclicado no botão “Cadastrode Clientes “ mudará a cor

de fundo do formulário.

Page 36: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 36

Observe atentamente a evolução do código fonte.

R Como racionar a digitação do código ?Quando o projeto se torna grande e neste são usados vários componentes, variáveis, procedures etc serádifícil lembrar todos os nomes do objetos, assim sendo, use os recursos adequadamente para racionar seutrabalho. Entre um Begin e o End, buscaremos as propriedades e métodos de um objeto. Mantenha a tecla“Ctrl” pressionada, após tecle na “barra espaçadora”, será aberta uma tela listando as várias propriedades,constantes etc que estarão disponíveis para o objeto selecionado. Para listar, basta digitar as letras iniciais doobjeto que esta no projeto, posicione com o ponteiro do mouse ou setinha do teclado na propriedade que estásendo listada, pressione enter, após digite ponto ( . ), espere alguns segundos, serão listadas maispropriedades, métodos do segundo objeto selecionado, selecione o que desejar e pressione enter, no final dalinha digite ponto e virgula ( ; )

Bibliotecas que foram inseridasautomaticamente pelo Delphi apóster inserido os botões. StdCtrls e

Buttons.

Mantenha pressionada a tecla Ctrl ,após pressione barra espaçadora,serão listadas para serem escolhidasas propriedades ou métodos daquele

respectivo objeto.

Ao clicar no botão Clientes o fundodo formulário será pintado de azul.

Page 37: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 37

Formulário_Menu.Cor := recebe_cor

R Disparando o mesmo eventoExecuta a mensagem que foi definida no botão 1, disparando o mesmo evento nos outro botões.

Digite dois pontos ( : ) e o sinal de igual ( = ),após pressione Ctrl e barra de espaço para

listar as propriedades etc

No final da linha digite ponto e virgula ( ; )

Após digitado ponto ( . ) serão listadas outras aspropriedades ou funções do formulário em uso.

Page 38: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 38

R O que compõe um projeto ?

Um projeto no Delphi é basicamente composto de vários formulários de entrada de dados e relatórios.Quando o projeto é compilado, será gerado um arquivo / programa com a terminação .exe ( executável ), ex:Sis_Aula.exe, e dentro deste estarão todos os formulários, relatórios do sistema..., Clientes, Fornecedores,Transportadoras etc

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

R Quais são os arquivos do seu projeto que devem ser copiados ?

Quando o projeto estiver pronto e desejar instalá-lo em outra máquina proceda da seguinte maneira:

1. Instale o BDE, está no cd Delphi ou crie os discos de instalação que já conterá o BDE.2. Copie o arquivo Sis_Aula ( .exe )3. Copie todas as tabelas que serão utilizadas no projeto.

Se o projeto não possuir tabelas, basta apenas copiar o arquivo sis_aula.exe ( .exe ) J

Módulo 1CLIENTES

clientes.pas

Módulo 2FORNECEDORES

fornecedores.pas

Módulo 3TRANSPORTA-

DORAS

transportadoras.pas

Sis_Aula.exe

MÓDULO PRINCIPAL (menu)

Menu.pas

Project1.dpr

Unit3.pas Unit4.pasUnit2.pas

Unit1.pas

Page 39: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 39

R Arquivos que compõe uma aplicação.

Extensão Definição Função

.dpr Arquivo do ProjetoCódigo fonte em Pascal do arquivo principal do projeto. Lista todos osformulários e units no projeto, e contém código de inicialização daaplicação. Criado quando o projeto é salvo.

.cfg Arquivo do Projeto

Apesar de ter a extensão *.cfg este é um arquivo texto.Guarda diversas opções do compilador. Discutir estas opções está fora doescopo deste curso. Para a maior parte dos casos as opções defaultfuncionam perfeitamente.

.dof Arquivo do ProjetoApesar de ter a extensão *.dof este é um arquivo texto.Guarda diversas opções do projeto. Estas opções você configura usando acaixa de diálogo Project Options que vamos ver mais à frente.

.pas Código fonte da Unit( Object Pascal)

Um arquivo .PAS é gerado por cada formulário que o projeto contém. Seuprojeto pode conter um ou mais arquivos .PAS associados com algumformulário. Contem todas as declarações e procedimentos incluindoeventos de um formulário.

.dfm Arquivo gráfico doformulário

Arquivo binário que contém as propriedades do desenho de umformulário contido em um projeto. Um .DFM é gerado em companhia deum arquivo .PAS para cada formulário do projeto.

.res Arquivo de Recursosdo Compilador

Arquivo binário que contém o ícone, mensagens da aplicação e outrosrecursos usados pelo projeto.

.opt Arquivo de opções doprojeto

Arquivo texto que contém a situação corrente das opções do projeto.Gerado com o primeiro salvamento e atualizado em subsequentesalterações feitas para as opções do projeto.

.~dp Arquivo de Backupdo Projeto

Gerado quando o projeto é salvo pela segunda vez.

.~pa Arquivo de Backupda Unit

Se um .PAS é alterado, este arquivo é gerado.

.~df Backup do Arquivográfico do formulário

Se você abrir um .DFM no editor de código e fizer alguma alteração, estearquivo é gerando quando você salva o arquivo.

.dsk Situação da Área deTrabalho

Este arquivo armazena informações sobre a situação da área de trabalhoespecifica para o projeto em opções de ambiente( Options Environment).

Obs.: .~DF, .~PA , .~DP são arquivos de backup( Menu Options, Enviroment, Guia Editor Display, Caixade Grupo Display and file options, opção Create Backup Files, desativa o seu salvamento). Devido agrande quantidade de arquivos de uma aplicação, cada projeto deve ser montado em um diretório específico.

Arquivos Gerados pela Compilação

Extensão Definição Função

.exe Arquivo compiladoexecutável

Este é um arquivo executável distribuivel de sua aplicação. Este arquivoincorpora todos os arquivos .DCU gerados quando sua aplicação é

compilada. O Arquivo .DCU não é necessário distribuir em sua aplicação..dcu Código objeto da Unit A compilação cria um arquivo .DCU para cada .PAS no projeto.

Obs.: Estes arquivos podem ser apagados para economizar espaço em disco.

" Quando você está namorando uma bela garota, uma hora parece um segundo. Quando você se sentanuma brasa viva, um segundo parece uma hora. Isso é relatividade. – Albert Einstein "

Page 40: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 40

R Cláusulas e bibliotecas de uma unit .

Neste arquivo está escrito o código de criação da aplicação e seus formulários. O arquivo Project temapenas uma seção. Esta seção é formada pelo seguinte código:

Program Define o Projeto.Uses Cláusula que inicia uma lista de outras unidades.Forms É a unidade do Delphi que define a forma e os componentes do aplicativo.In A clausula indica ao compilador onde encontrar o arquivo Unit.Unit1 A unidade que você criou.{$R *.RES} Diretiva compiladora que inclui o arquivo de recursos.

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

Código fonte do arquivo Unit (.PAS)Nesta divisória serão escritos os códigos dos seus respectivos forms (Unit1 = Form1). Aqui serão definidosos códigos de cada procedimento dos componentes que você colocar no form.

Seção UnitDeclara o nome da unit.

Seção UsesContém as units acessadas por este arquivo.

Seção InterfaceNesta seção estão as declarações de constantes, tipos de variáveis, funções e procedures gerais daUnit/Form. As declarações desta seção são visíveis por qualquer Unit. Esta seção é formada pelo seguintecódigo:Interface: Palavra que inicia a seção;Uses: Cláusula que inicia uma lista de outras unidades compiladas (units) em que se baseia:

SysUtils § Utilitários 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 números das mensagens do Windows e tipos de dados das Mensagens.Classes § Elementos de baixo nível do sistema de componentes.Graphics § Elementos gráficos.Controls § Elementos de nível médio do sistema de componentes.Forms § Componentes de forma e componentes invisíveis de aplicativos.

Dialogs § Componentes de diálogo comuns.

Page 41: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 41

Seção TypeDeclara os tipos definidos pelo usuário. Subseções:

Private, declarações privativas da Unit.Public declarações publicas da Unit.

Seção VarDeclara as variáveis privadas utilizadas.

Seção ImplementationContém os corpos das funções e procedures declaradas nas seções Interface e Type. Nesta seção tambémestão definidos todos os procedimentos dos componentes que estão incluídos no Form. As declarações destaseção são visíveis apenas por ela mesma. Esta seção é formada pelo seguinte código:

{$R*.DFM} § Diretiva compiladora que inclui toda a interface, propriedades da forma e componentes doarquivo *.DFM

{$S+} § Diretiva compiladora que ativa verificação de pilha.

Seção uses adicionalServe para declarar Units que ativam esta seção.

InitializationNesta seção, que é opcional, pode ser definido um código para proceder as tarefas de inicialização da Unitquando o programa começa. Ela consiste na palavra reservada initialization seguida por uma ou maisdeclarações para serem executadas em ordem.

R O que são métodos ?

São procedures ou funções embutidas nos componentes e formulários, previamente definidas pelo Delphi.Alguns métodos são descritos a seguir:

• Show § Mostra um formulário;• Hide § Esconde um formulário mais não o descarrega;• Print § Imprime um formulário na impressora;• SetFocus § Estabelece o foco para um formulário ou componente;• BringtoFront § Envia para frente.

Adiante veremos exemplos práticos exemplificando “métodos”

" Grandes almas sempre encontraram forte oposição de mentes medíocres – Albert Einstein "

Page 42: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 42

R O que são componentes ?

São elementos que já estão no Delphi prontos para serem utilizados e o programador definirá suaspropriedades e eventos de acordo com sua necessidade ( o que são propriedades e eventos, veremos adianteJ ). Vamos inserir alguns botões e após verificar a alteração que o Delphi fará no código fonte.

Adicione no formulário corrente trêscomponentes Bitbtn ( aba Additional )

Altere as propriedade Caption para Cadastrode Clientes, que será o texto exibido no botão,

altere a propriedade Name de BitBtn paraBit_Cad_Clientes.

Sugiro Bit_ para identificar o tipo debotão/componente que está sendo usado, como

já falei anteriormente, cada programadoradotará um padrão de nomeação para melhor

identificação dos objetos.Após digitar o Caption com o conteúdo

Cadastro de Clientes, altere a propriedadeWidth para 129, para não truncar o texto do

botão.

Após nomear uma propriedade, o Delphi farátambém a modificação interna do código fonte de

BitBtn1 para Bit_Cad_Clientes.

Abas de componentes.Aba Additional

Para inserir um botão BitBtn:Clique no botão OK e após

clique no formulário.Poderá ser definido um íconepara o botão na propriedade

Glyph.

Page 43: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 43

Eventos: Os programas feitos em Delphi são orientados a eventos. Eventos são ações normalmentegeradas pelo usuário. Ex.: Clicar no mouse ou movê-lo, pressionar uma tecla etc. Os eventos podem sertambém gerados pelo windows. Existem eventos associados ao formulário e a cada componente inseridoneste.

Exemplos:Evento que está ligado formulário, OnCreate, que ocorre quando mostramos o formulário na tela. Aocomponente botão está ligado o evento OnClick, que ocorre quando damos um click com o mouse sobre obotão.

Eventos comuns ao formulário e aos componentes.Alguns eventos ligados tanto ao formulário quanto aos componentes estão listados a seguir.

• OnClick § ocorre quando o usuário clica o objeto.• OndblClick § ocorre quando o usuário da um duplo clique.• OnKeyDown § ocorre quando o usuário pressiona uma tecla enquanto o objeto tem foco.• OnKeyUp § ocorre quando o usuário solta uma tecla enquanto o objeto tem o foco.• OnKeyPress § ocorre quando usuário da um clique numa tecla ANSI.• OnMouseDown§ ocorre quando o usuário pressiona o botão do mouse.• OnMouseUp § ocorre quando o usuário solta o botão do mouse.• OnMouseMove § ocorre quando o usuário move o ponteiro do mouse.

Rotinas que Respondem a EventosCada evento gera uma procedure, aonde você deve inserir as linhas de código que envolve este evento.Por exemplo, o evento OnClick, que é gerado ao clicarmos em um botão chamado Bit_Sair, cria aprocedure:

Onde Tform1 é o objeto Tform que contém o botão Bit_Sair, e Sender é um objeto Tobject querepresenta o componente que deu origem ao evento.Se você quiser inserir uma rotina que trate um determinado evento de um componente, faça o seguinte:

• clique sobre o componente;• no Object Inspector, seleciona a página Events;• dê um duplo clique sobre o evento para o qual quer inserir o código;• entre no editor de código e escreva as linhas de código.

Exemplo:

Obs.: Escreva seu código entre o begin e o end, se desejar retirar o evento e o componente, retire primeiroos eventos do componente removendo somente o código que você digitou, após o componente; o resto dosprocedimentos o DELPHI removerá para você.

" A palavra progresso não terá sentido enquanto houver crianças infelizes – Albert Einstein "

Page 44: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 44

R Como inserir mais formulários no projeto ?

Salve a unidade ( form ) com o nome de Clientes.pas, repita o processo da página anterior criando umformulário para Fornecedores.pas e Transportadoras.pas, também defina as propriedades Caption eName de cada um destes formulários. Até o momento nosso projeto possui “quatro” formulários. PressioneF12 para alternar entre os formulários e o código fonte.

Clique no ícone onde estáapontando o bolão, será

aberto um novo formulário.

Defina as duas propriedadesbásicas do formulário:

Caption e Name.

Caption = Cadastro de ClientesName = Clientes_Frm

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

Cada programador adotará seu padrão denomeação, digitei _Frm no final do

nome para indicar que é um Formulário.

Page 45: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 45

R Como criar um menu ?Criando um menu muito fácil. Insira um formulário e três botões do tipo Bitbtn – veja baixo:

Clique duplo sobre o botão “Cadastro de Clientes”, após clique em File, Use Unit, selecione o formulárioClientes e clique OK. Para abrir todos os formulários arraste o mouse marcando a lista da caixa abaixo eclique OK.

Veja os vários formulários ( telas ) que estão em uso –Menu – Fornecedores – Transportadoras e Clientes

Lista os objetos e usesutilizados no projeto corrente.

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

Page 46: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 46

Repita este processo para os botões Fornecedores e Transportadoras.

Com o ShowModal os controles ( foco ) são transferidos unicamente para tela Clientes, se for clicado nobotão Fornecedores, você ouvirá apenas um bip e não terá acesso.

Com o Show, poderá ser clicado no formulário Menu ou em Clientes.

O Delphi não está conseguindoidentificar o formulário Clientes, paraque isto ocorra é preciso clicar em File( canto superior esquerdo do menu ),clique em Use unit e selecione a unitClientes para incluir no projeto atual.

Agora o formulárioClientes_Frm foi reconhecidopela lista Ctrl + barra espaço.

ShowModal mostrará o formulárioClientes_Frm.

Pode ser usado ShowModal ou Show.

Page 47: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 47

Vamos definir um ícone para o botão “Cadastro de Clientes”

Clique nos três pontinhos para selecionar umícone. Abaixo, será aberta uma tela pedindo

para informar o caminho onde estãoarmazenados os arquivos do tipo .bmp

Clique para mostrar ocaminho onde estão osarquivos do tipo .bmp

Após clicado emAbrir , clique no

botão OK.

Page 48: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 48

R Como definir um ícone para o formulário corrente ?

O ícone será exibido no canto superior esquerdo do formulário.

R Como remover barra de título e bordas do formulário ?É uma maneira de remover a barra de título e bordas do formulário via programação.

Outra maneira de inserir um ícone padrão é apropriedade Kind do componente Bitbtn. Porém,

após selecionado o ícone, o Delphi mudará apropriedade Caption de Fornecedores para Ignore

que é o caption padrão, então digite novamente oCaption Fornecedores.

Íconedefinido.

Clique no formulário corrente, selecione apropriedade Icon do formulário, clique nos trêspontinhos [...], será aberta uma tela, clique nobotão Load, informe o caminho onde estão os

arquivos do tipo ícone ( .ico ), clique em abrir,escolha o arquivo do tipo .ico e clique ok

Com “barra de título.

Sem “barra de título”.

Page 49: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 49

R Qual função do Database Desktop ?

DATABASE DESKTOP 7É um utilitário onde será criado a base de dados (tabelas - nomes dos campos, tamanhosdos campos, índices etc).

IntroduçãoO BDE é um núcleo de Banco de Dados que fornece a capacidade de acesso a banco dedados para os softwares Delphi, Paradox, dBase e C++, oferecendo um grande conjunto decaracterísticas previamente testadas para auxiliar desenvolvedores de aplicações Cliente-Servidor.

Além de fornecer utilitários para acessar bancos de dados de maneira compartilhada, o BDEinclui um conjunto de fontes de dados para acessar bases Paradox, dBase e arquivos texto.Também é possível acessar qualquer banco de dados padrão ODBC ou, através de SQLLinks, acessar diretamente Interbase, Oracle, Sybase e MS-SQL Server.

O BDE também é composto de um conjunto de funções que compõe uma API (Interface paraProgramação de Aplicações) que permite os desenvolvedores acessarem diretamente essesbancos de dados.

"A vida é maravilhosa se não se tem medo dela - Charles Chaplin “

Page 50: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 50

Criação do Banco de DadosPara criar um banco de dados novo, normalmente, é necessário dispor de alguma ferramenta dopróprio banco de dados, como o Access, mas se a base de dados for Paradox, ou dBase, vocêpode usar o Database Desktop, um utilitário que vem com o Delphi e permite a criação dessestipos de bancos de dados.

Database DesktopFornece uma interface simples e completa para configuração, definição e manipulação de tabelasde bancos de dados Paradox e dBase. Além disso na Opção Tools/Alias Manager você podeconfigurar seu banco de dados, como será lembrado logo adiante.

Tabelas ParadoxPara criar tabelas Paradox, siga os passos abaixo. Você deve salvar as tabelas de um mesmo banco de dados namesma pasta, pois o Paradox trata a pasta onde estão 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 opções necessárias na

criação 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 espaço ou o botão 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 farão parte da chave primária, que não pode se repetir e deve ser composta pelos

primeiros campos da tabela

Table PropertiesEm Table Properties você define os vários aspectos de configuração da tabela. Muitas dessas opções podem serimplementadas no Delphi e vários programadores preferem não usá-las no Database Desktop.

Opção DescriçãoValidity Checks Validações para os campos, como obrigatoriedade, valor mínimo e máximo

Table Lookup Indica que o valor atribuído a um determinado campo tem que estar gravado em outra tabelaSecondary Indexes Cria índices secundáriosReferential Integrity Cria integridade referencial, geralmente utilizada em relacionamentos de 1 para N.Password Security Permite a criação de senhas, protegendo a tabela de acesso não autorizado

Table Language Especificar o driver de língua utilizado pela tabela, geralmente é o Pdox ANSI Intl850Dependent Tables Mostra todas as tabela dependentes através da integridade referencial

Tipos de CamposOs principais tipos de campos são mostrados abaixo, mas existem outros além desses. Os tamanhos marcados comasterisco indicam que o campo pode guardar tamanhos maiores que os informados, o que ultrapassar o tamanhoserá guardado em um arquivo externo com a extensão MB.

Tipo Descrição Faixa TamanhoA Alfanumérico 1-255N Numérico ± 10 308

$ MonetárioS Short Integer ± 32767I Long Integer ± 2147483648D DataT Hora@ Data e Hora de modificaçãoM Memo 1-240*G Gráfico 1-240*L Lógico True/False+ Autoincremental 1-2147483648

ConfiguraçãoPara configurar o acesso a um banco de dados, você tem várias opções, criar um Alias, usar ocomponente TDatabase ou os dois juntos.

Page 51: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 51

AliasesUm Alias é um nome lógico, um atalho para um banco de dados. Todo o trabalho do Delphi comum banco de dados pode ser feito baseado no Alias, de forma que para mudar de banco dedados, só é necessário mudar o Alias. Para criar um Alias você pode usar Database Explorer, oBDE Administrator ou o próprio Database Desktop.

Database ExplorerPode aparecer com os nomes Database Explorer ou SQL Explorer. Nele você pode manipular osAliases, navegar pelas estruturas dos bancos de dados, alterar os dados das tabelas e executarcomandos SQL.

Para criar um Alias selecione o item Databases, clique em Object/New, escolha o tipo do bancode 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, finalmentedefina as propriedades do banco de dados na seção Definition, cada banco de dados terá suaspróprias definições.

BDE AdministratorCom o BDE Administrator você pode alterar a configuração da BDE, por exemplo emConfiguration/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. Além disso, vocêpode criar Aliases, como no Database Explorer.

TDatabaseEsse componente permite a manipulação de um banco de dados, através de um Alias da BDE ouda criação de um Alias local, somente visível dentro da aplicação, esse componente tambémpermite o gerenciamento de transações, garantindo uma integridade maior no projeto. Por essas eoutras razões o uso do componente Database é altamente recomendado como opção paracriação de Aliases.

Propriedades DescriçãoAliasName Nome do Alias do banco de dados, usado quando você criar um Alias da BDEConnected Define se a conexão com o banco de dados está ativa

DatabaseName Nome do Alias local a ser usado pelos outros componentes do DelphiDataSetCount Número de DataSets (Tabelas) abertos no banco de dados

DataSets Lista com os DataSets abertosDriverName Driver usado para criar um Alias local, automaticamente cancela a propriedade AliasName

InTransaction Define se o Database está em transaçãoKeepConnection Define se a conexão com o banco de dados será mantida, mesmo sem DataSets abertos

LoginPrompt Define se será mostrado o quadro de login padrão da BDEParams Parâmetros do banco de dados, com itens semelhantes à seção Definition do Database Explorer

TransIsolation Nível de isolamento da transação, define como uma transação irá enxergar outra

Métodos DescriçãoClose Encerra a conexão com o banco de dados, todos os DataSets serão fechados

CloseDataSets Fecha todos os DataSets abertos, mas a conexão não é encerradaCommit Grava alterações feitas durante a transação

Open Abre a conexão com o banco de dadosRollback Anula todas as alterações feitas durante a transação

StartTransaction Inicia uma transaçãoEventos DescriçãoOnLogin Evento usado quando você quiser escrever seu próprio método de conexão com o banco de dados

Page 52: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 52

Para acessar uma base de dados Access, você poderia usar os valores mostrados na descriçãotextual a seguir.

AliasName = 'Clientes'DatabaseName = 'Dados'LoginPrompt = FalseKeepConnection = TrueParams.Strings = ( 'DATABASE NAME=C:\Meus Documentos\Clientes.mdb' 'USER NAME = Fritz' 'OPEN MODE = READ/WRITE' 'LANGDRIVER = intl850' 'PASSWORD = secreto5')

Para ajudar a preencher os parâmetros de um Database, clique duas vezes sobre o componentee clique em Defaults, todos os parâmetros defaults serão apresentados. Para acessar uma baseParadox, use as propriedades abaixo, note que para o Paradox, a única informação realmentesignificante é o Path, a pasta onde estão as tabelas.

AliasName = 'DBDEMOS'DatabaseName = 'Dados'LoginPrompt = FalseKeepConnection = TrueParams.Strings = ('PATH=d:\Borland\Delphi 5\Demos\Data' 'ENABLE BCD = FALSE' 'DEFAULT DRIVER = PARADOX')Após a criação do Alias da BDE ou do Alias local, usando o componente TDatabase, o banco dedados está configurado e pronto para ser usado.

Database Form WizardApós a configuração do banco de dados, a maneira mais rápida, de se fazer uma janela demanutenção de dados é através do Form Wizard no menu Database. Ao chegar no Wizard sãofeitas uma série de perguntas que podem resultar em uma janela simples ou Mestre/Detalhe. Oacesso ao banco de dados pode ser feito através de componentes TTable ou através de SQL,com o componente TQuery, usaremos o componente TTable. Todos os campos selecionadosaparecem na janela permitindo entrada de dados através de componentes do tipo TDBEdit.Cada DBEdit recebe um Label baseado no nome do campo na tabela selecionada. Na Janela éincluído também um componente para permitir a navegação e a manutenção dos dados, umDBNavigator. O componente utilizado para fazer a ligação entre os componentes visuais e oTTable é um TDataSource. Geralmente os componentes TTable e TDataSource são inseridosem DataModules, que são a base para a criação de classes de dados. Sempre Após usar oWizard, lembre-se de mudar os nomes dos componentes, para que fiquem mais claros.

Form Passo a PassoO diagrama abaixo mostra como o Wizard fez a ligação entre os componentes, onde os quadrados são componentese as elipses, propriedades.

DataSet

DatabaseName

TDatabase

TDataSource

TTable

DatabaseName

TDBEdit

DataSource

DB

Para concluir, acompanhe abaixo os passos realizados pelo Wizard e tente você mesmo criar seu próprio 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 método Open do componente Table• No DataSource coloque em DataSet o nome do componente TTable

Page 53: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 53

• No Form, para definir a interface com o usuário, use os componentes de controle de dados que estão na páginaDataControls, 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 também o campo da tabela, na propriedade

DataField

Seguindo esses passos, o Form estará pronto para usar. Mais adiante, veremos uma forma maisrápida de se criar um Form de manutenção, mas o mais importante é compreender os passosmostrados acima, com todos os componentes e propriedades envolvidas. Vamos detalhar agoracada um dos componentes envolvidos nesse processo, para compreendermos melhor o que estáacontecendo.

TDataModuleUm DataModule é como se fosse um Form invisível, onde iremos inserir os componentes deacesso a dados, como o Table e o Datasource. Por serem também classes, os DataModulespermitem a fácil implementação de modelos de objetos, permitindo herança, criação de métodos,dentre outros aspectos. Para inserir um DataModule em um projeto, escolha New DataModule domenu File. Os DataModules não gastam recursos do sistema, servem apenas para conter oscomponentes de acesso a dados e criar, assim, uma classe persistente.

TTableComponente usado para acessar uma tabela em um banco de dados. Esse componente é o maisimportante quando acessamos bases de dados Desktop. Muitas dos itens mostrados abaixo estãodefinidos na classe TDataSet, ancestral do TTable.

Propriedades DescriçãoActive Define se a tabela esta aberta ou fechada.

BOF Informa se está no início da tabela.CanModify Define se a aplicação pode inserir, deletar ou alterar registros.

DatabaseName Nome do banco de dados onde está a tabela, deve ser escolhido um Alias, que pode ser local.EOF Informa se está no fim da tabela.

Exclusive Define se a tabela pode ser compartilhada por outro usuário.FieldCount Número de campos da tabela.

FieldDefs Lista com a Definição dos campos da tabela.Fields Lista de objetos do tipo TField, que representam os campos da tabela.Filter String com uma condição de filtragem.

Filtered Define se a tabela é filtrada.IndexFieldNames Nome dos campo de índice, usados para ordenar os registros da tabela.

IndexName Nome do índice atual, vazia quando o índice for a chave primária.IndexDefs Lista com a definição dos índices.

MasterFields Campos usados no relacionamento com a tabela mestre.MasterSource DataSource da tabela mestre em uma relação Mestre/Detalhe.

Modified Define se o registro atual foi modificado.ReadOnly Define se a tabela é somente para leitura.

RecNo Número do registro atual.RecordCount Número de registros.

State Estado da tabela.TableName Nome da tabela.TableType Tipo da tabela.

Page 54: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 54

Método DescriçãoAddIndex Cria um novo índice, a tabela deve ser exclusiva.

Append Entra em modo de inserção e, ao gravar, o registro será colocado no fim do arquivo.AppendRecord Insere um registro no final do arquivo através de código.

Cancel Cancela as alterações feitas no registro atual.Close Fecha a tabela.

CreateTable Cria uma tabela, depende de FieldDefs e IndexDefs.Delete Exclui o registro corrente.

DeleteIndex Exclui um índice.DeleteTable Exclui a tabela.

DisableControls Desabilita a atualização dos controles visuais.Edit Permite a alteração dos campos do registro atual.

EmptyTable Apaga todos os registro da tabela, para isso a tabela não pode esta sendo compartilhada.EnableControls Habilita os controles visuais.

FieldByName Acessa um campo, do tipo TField, pelo nome.FindKey Procura o registro com os valores exatos aos dos parâmetros nos campos do índice atual.

FindNearest Procura o registro com os valores mais aproximados aos dos parâmetros nos índices.First Move para o primeiro registro.

Insert Entra em modo de inserção de um novo registro na posição atual.InsertRecord Adiciona um novo registro, já com os dados, na posição atual.

IsEmpty Define se a tabela está vazia.Last Move para o último registro.

Locate Procura um registro, usando ou não índices, de acordo com a disponibilidade.LockTable Trava a tabela.

Lookup Procura um registro e retorna valores dos campos deste.MoveBy Move um número específico de registros.

Next Move para o próximo registro.Open Abre a tabela.Post Grava as alterações no registro atual.Prior Move para o primeiro registro.

Refresh Atualiza a tabela com os dados já gravados.RenameTable Renomeia a tabela.

UnlockTable Destrava a tabela.

Evento DescriçãoAfterCancel Após do método Cancel.AfterClose Após o fechamento da tabela.

AfterDelete Após do método Delete.AfterEdit Após do método Edit.

AfterInsert Após do método Insert.AfterOpen Após do método Open.AfterPost Após do método Post.

AfterScroll Após mudar de registro.BeforeCancel Antes do método Cancel.BeforeClose Antes do fechamento da tabela.

BeforeDelete Antes do método Delete.BeforeEdit Antes do método Edit.

BeforeInsert Antes do método Insert.BeforeOpen Antes do método Open.BeforePost Antes do método Post.

BeforeScroll Antes de mudar o registro.OnCalcFields Evento usado para calcular os valores dos campos calculados.

OnDeleteError Quando ocorre um erro ao chamar o método Delete.OnEditError Quando ocorre um erro ao chamar o método Edit.

OnFilterRecord Evento usado com filtragem variável.OnNewRecord Quando a tabela entra em modo de inserção, não deixa Modified igual a True.

OnPostError Quando ocorre um erro ao chamar o método Post.

FiltrosUsando o Filter, você pode filtrar os registro de uma tabela usando uma expressão lógica, comonos exemplos abaixo. Para tornar um filtro ativo, basta colocar Filtered igual a True.

Page 55: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 55

Contudo, se a condição de filtragem for muito variável, é preferível usar um código como omostrado abaixo no evento OnFilterRecord da Table, para fazer uma filtragem dinâmica, com apropriedade Filter vazia e Filtered igual a True.

Ao filtrar uma tabela, a propriedade RecordCount da Table, só mostra o número de registros quesatisfazem ao filtro, como se os outros registros nao existissem.

Alterando RegistrosPara alterar registros em código, colocamos a tabela em modo de edição, alteramos o valor doscampos e gravamos as alterações, se for necessário.

Inserindo RegistrosPara inserir registros em código você pode usar os métodos AppendRecord e InsertRecord, casovocê não precise de algum campo, mesmo assim ele deve ser informado com o valor Null.

Localizando RegistrosPara localizar registros você pode usar vários métodos, mas o melhor deles é o Locate, noexemplo abaixo é feita uma pesquisa exata.

Você também pode fazer uma pesquisa parcial e/ou sem sensitividade de caso usando o terceiroparâmetro, que é um conjunto de opções.

Se você precisar fazer uma pesquisa por mais de um campo, separe os nomes dos campos porponto e vírgula e use a função VarArrayOf para criar um array com os valores que você querprocurar.

Caso os campos pesquisados sejam indexados, a pesquisa será muito mais eficiente, senão serácriado um filtro temporário da BDE para localizar os registros.

IndexaçãoA indexação é usada para ordenar os registros da tabela, para isso você deve escolher oscampos pelos quais você quer ordenar na propriedade IndexFieldNames, inclusive em código,como mostrado abaixo, todos campos devem ser indexados e separados por ponto e vírgula.

Page 56: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 56

Estados da TabelaA propriedade State determina o estado das tabelas, os principais estados são demonstradosabaixo, veja como os métodos mudam o estado.

PostCancelDelete

PostCancelDelete

dsInsert dsBrowse dsEdit

InsertAppend

Edit

Verificando AlteraçõesOnde for necessário a verificação de alterações feitas em uma Tabela, por exemplo no evento OnClose deum Form de manutenção, você pode usar a propriedade Modified, como mostrado no exemplo abaixo.

Valores DefaultCaso você queira especificar valores Default para os campos de uma tabela, use o eventoOnNewRecord, pois nesse evento o registro não é marcado como modificado.

Percorrendo uma TabelaUtilize um código semelhante ao mostrado abaixo para percorrer uma tabela do início ao fim.

Forms Modais de Inclusão/AlteraçãoPara mostrar Forms Modais de inclusão ou alteração de registros utilize comandos como osmostrados abaixo.

Page 57: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 57

Mestre/DetalheNos relacionamentos de 1 para N, uma tabela pode estar ligada a outra em uma relação Mestre/Detalhe, nesse tipode relação os registros da tabela de ordem N são filtrados pelo campo de relacionamento com a tabela de ordem 1.Por exemplo, se o relacionamento de Clientes com Pedidos for mestre/detalhe, só serão acessados em pedidos, osregistros 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 ligação das tabelas, no caso, CodCli

para as duas tabelas

Fields EditorPara criar objetos para os campos de uma tabela clique duas vezes no componente TTable ouescolha Fields Editor no seu menu de contexto, na janela do Fields Editor, clique com o botãodireito do mouse e escolha Add, na janela Add Fields, escolha os campos que você vai quererusar e clique em Ok.

No Fields Editor podemos também remover os campos criados, alterar sua ordem deapresentação e usar suas propriedades e eventos no Object Inspector. Para cada campo é criadoum objeto de um tipo descendente de TField, como TStringField, TIntegerField, TFloatField. Asprincipais propriedades dos objetos TField estão listadas na tabela abaixo.

Se você não criar nenhum objeto TField, todos os campos da tabela estarão disponíveis, mascaso você crie algum, somente os campos que você criar estarão disponíveis.Se você selecionar os campos no Fields Editor e arrastar para o Form, serão criados os controlesvisuais para esses campos, Label, DBEdit e outros, mas antes coloque a descrição dos camposna propriedade DisplayLabel.

TFieldA classe TField é usada como ancestral para todos as classes dos campos. Geralmente iremosusar objetos de classes descendentes de TField, mas em todos eles podemos encontrar os itensmostrados abaixo.

Propriedades DescriçãoAlignment Alinhamento do texto do campo nos controles visuais.

AsBoolean Valor do campo convertido para Boolean.AsCurrency Valor do campo convertido para Currency.

AsDateTime Valor do campo convertido para DataTime.AsFloat Valor do campo convertido para Doublé.

AsInteger Valor do campo convertido para Integer.AsString Valor do campo convertido para string.

AsVariant Valor do campo convertido para Variant.Calculated Indica se o campo é calculado em tempo de execução.CanModify Indica se um campo pode ser modificado.

ConstraintErrorMessage Mensagem de erro se a condição de CustomConstraint não for satisfeita.CustomConstraint Condição de validação do campo.

DataSet DataSet onde está o campo.DataSize Tamanho do campo, em Bytes.

DataType Propriedade do tipo TFieldType, que indica o tipo do campo.DefaultExpression Expressão com valor Default do campo para novos registros.

DisplayLabel Título a ser exibido para o campo.DisplayText Texto exibido nos controles visuais associados ao campo.

DisplayWidth Número de caracteres que deve ser usado para mostrar o campo no controles visuais.EditMask Máscara de edição do campo.FieldKind Propriedade do tipo TFieldKind que indica o tipo do campo, como Calculado ou Lookup.

FieldName Nome do campo na tabela.FieldNo Posição física do campo na tabela.

Index Posição do campo nos controles visuais.IsIndexField Indica se um campo é válido para ser usado como índice.

Page 58: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 58

IsNull Indica se o campo está vazio.KeyFields Campo chave da tabela no relacionamento com LookupDataSet, usado em campos Lookup.

Lookup Indica se um campo é Lookup.LookupCache Define se será usado cache para campos Lookup.

LookupDataSet DataSet onde está definido o valor do campo Lookup.LookupKeyFields Campo chave do relacionamento em LookupDataSet.

LookupResultField Valor do campo, que será mostrado nos controles visuais.ReadOnly Define se um campo é somente para leitura.Required Define se o campo é obrigatório.

Size Tamanho físico do campo.Text Texto de edição do campo.

Value Acesso direto ao valor do campo.Visible Define se um campo é visível.

Estão listadas abaixo algumas classes que realmente iremos manipular no tratamento doscampos de uma tabela, são classes descendentes de TField.

TStringField TBlobField TTimeFieldTSmallintField TIntegerField TBytesFieldTFloatField TWordField TVarBytesFieldTCurrencyField TAutoIncField TGraphicFieldTBooleanField TBCDField TMemoFieldTDateField TDateTimeField

Em alguns desses campos você pode encontrar as propriedades mostradas abaixo, que nãoestão presentes em TField.

Propriedades DescriçãoMaxValue Valor máximo para o campo.MinValue Valor mínimo para campo.

DisplayFormat Formato de apresentação do campo, como ,0.00 % ou ,0.## Km .EditFormat Formato de edição do campo.

Currency Define se um campo é monetário.DisplayValues Usado com campos Boolean, define o texto para True e False, como Sim;Não.

Métodos DescriçãoLoadFromFile Carrega o conteúdo do campo de um arquivo.

SaveToFile Salva o conteúdo do campo para um arquivo.

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

Usando a notação de colchetes. Se você não especificar nenhuma propriedade, é assumida apropriedade Value por padrão.

Através do método FieldByName

Usando a lista Fields do TTable

Conversão de TiposA conversão de tipo de um campo pode ser feita através as propriedades tipo As..., como AsString.

Page 59: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 59

ValidaçãoPara validar os valores de um campo, você pode usar a propriedade CustomConstraint, por exemplo paragarantir que a quantidade de um item seja maior que zero, use em CustomConstraint Quantidade > 0, e emCustomConstraint coloque a mensagem para o usuário caso a condição seja falsa. Outra forma, maisflexível, é usando o evento OnValidate, com um código como abaixo, onde é gerada uma exceção paracancelar a atribuição do valor ao campo.

Formatação PersonalizadaCaso queira fazer uma formatação 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 Casadoe S, Solteiro, no evento OnGetText use um código como o abaixo.

Como controle visual para o usuário escolher o valor do campo, você poderia usar o DBComboBox, comSolteiro e Casado na propriedade Items, e no evento OnGetText do campo o código mostrado abaixo.

Campos CalculadosPara criar campos calculados, clique com o direito no Fields Editor e escolha New Field, no quadroNewField, 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 eventoOnCalcFields do componente TTable, em nenhuma outra parte os valores desses campos podem seralterados. O código do evento OnCalcFields deve ser enxuto, pois este é chamado várias vezes durante aedição de um registro e um procedimento pesado pode comprometer a performance do sistema.

Page 60: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 60

R O que é BDE ?

O Borland Database Engine é o coração do Delphi e suas aplicações com banco de dados usando o mesmodatabase engine usado pelo Paradox e dBase. Paradox e dBase é claro trazem capacidades adicionais alémdo database engine (como o Delphi também o faz), mas isso é longe de dizer que o valor agregado destesrecursos adicionais é maior de 2 % das capacidades - os outros 98% são providos pelo database engine eestão disponíveis para todos os usuários deste engine. O Borland Database Engine (BDE) é uma coleção deDLLs que as aplicações de banco de dados irão fazer chamadas. Cada estação de trabalho que tiver aaplicação de banco de dados instalada deverá ter, também, o BDE instalado ( o Delphi vem com a instalaçãodo BDE para você adicionar a sua aplicação). O BDE permite a você usar tabelas dBase, Paradox ou ODBCem modo multi-usuário. A versão Cliente/Servidor do Delphi também vem com links para servidores debanco de dados como Oracle, Sybase, MS SQL Server, Informix, e InterBase.Arquitetura do Banco de Dados do Delphi

Page 61: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 61

Arquitetura dos Componentes de Banco de Dados

Diagrama de Estados do Dataset

Page 62: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 62

Estados do DataSetEstado Descrição

dsInactive O Dataset esta fechado.

dsBrowse Estado de Espera. O estado default quando um dataset é aberto. Registros pode servisualizados mas não 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.

dsSetKeyHabilita FindKey, GotoKey, and GoToNearest para procurar valores nas tabelas do banco dedados. Estes métodos somente pertencem para o componente TTable. Para TQuery, a procuraé feita com a syntax do SQL.

dsCalcFields Modo quando os OnCalcFields é executado; previne qualquer mudança para outros camposou campos calculados. Raramente é usado explicitamente.

Abrindo e Fechado DataSetsAntes que uma aplicação possa acessar dados através de um dataset, o dataset deve ser aberto. Existem doismeios para abrir o dataset: Ativando a propriedade Active para True, isto pode ser feito através do ObjectInspector ou programavelmente em tempo de execução. Table1.Active := True;

- Chamando o método do Dataset Open em tempo de execução. 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 Métodos de Navegação

Método ou Propriedade DescriçãoMétodo First Move o cursor para a primeira linha em um dataset.Método Last Move o cursor para a ultima linha em um dataset.Método Next Move o cursor para a próxima linha em um dataset.Método Prior Move o cursor linha anterior em um dataset.Propriedade BOF True quando o cursor está no início do dataset, em outro caso é false.Propriedade EOF True quando o cursor está no final do dataset, em outro caso é false.

Exemplo:

Table1.Last; // Move o cursor para o último registro da tabela

Modificando dados no DatasetOs seguintes métodos habilitam uma aplicação para inserir, atualizar, e deletar dados no dataset.

Método Descrição

Append Comfirma qualquer dado pendente e move um registro em branco para o final dodataset, e coloca o dataset em estado de Insert.

Cancel Cancela a operação corrente e coloca o dataset em estado de Browse.Delete Apaga o registro corrente e coloca o dataset em estado de Browse.DeleteTable Apaga uma tabela

Edit Coloca o dataset em estado de edição. Se um dataset já está estado de Edit ou Insert,uma chamada para Edit não tem efeito.

EmptyTable Esvazia uma tabela.Insert Confirma qualquer dado pendente, e coloca o dataset em estado de inserção.

Post Tentativa para confirmar um registro novo ou alterado. Se sucesso, o dataset ecolocado em estado de Browse; se insucesso, o dataset fica no estado corrente.

Refresh Atualiza a visão do banco de dados.

Page 63: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 63

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

å Tools § Database Desktop § File § New § Table § Paradox 7 ( veja o gráfico abaixo) § Ok.

ç Clique em File § New § Table e escolha o driver “Paradox”.

Digite o nome docampo.

Informe o tipo do campo.Pressione na barra de

espaço para ver a lista detipos de campos.

Informe o tamanho docampo.

Tipo de tabela: Driversde melhor performancepara acessar dados sãodBase e Paradox, estes

também oferecem suportepara linguagem SQL.

Page 64: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 64

Paradox é melhor quando...

A aplicação é utilizada com menos de 10 usuários concorrentemente dados eestruturas de dados devem ser facilmente modificados por usuários finais amáquina cliente é proporcionalmente mais potente que a máquina servidora largurade banda da rede satisfatória velocidade e “conveniência” são mais importantes queintegridade baixa disponibilidade de administradores de rede e BD qualificadossomente uma aplicação acessará rotineiramente os dados as aplicações serão asresp. pela manutenção da integridade de dados pequena ou moderada quantidadede dados ( < 100 MB )

InterBase é melhor quando...

A aplicação é utilizada com mais de 10 usuários concorrentemente dados devemser centralizados, mantidos e protegidos a máquina servidora é muito mais potenteque a máquina cliente rede está carregada integridade de dados é crucialdisponibilidade de administradores de rede e BD qualificados várias aplicaçõespoderão acessar os dados o banco será o resp. pela integridade de dadosmoderada a grande quantidade de dados ( > 100 MB )

Fazendo a melhor escolha

Escolher entre Paradox e InterBase pode ter implicação importante para o seuprojeto. Portanto, é essencial saber o que é mais adequado em cada situação.

A maioria presume que uma rede estará envolvida. Se você está implementandoum sistema mono-usuário, o Paradox é usualmente a melhor escolha. O servidorInterBase local pode ser indicado para um sistema mono-usuário, mas sem osaspectos de concorrência, as vantagens básicas do InterBase não estarão sendoutilizadas.

Page 65: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 65

R Tipos de campos do Paradox

Field Name:Informe o nome do campo. Se preferir abrevie o nome, não acentue nomes dos campos.Ex: (Código, Número = Codigo, Numero).

Sugestão’:Ex. Clie_Codigo, Clie_Nome, Clie_Fone, Clie_Fax ... assim será fácil para identificar a tabela eo nome do campo.J

Type:Tipo de campo aceito. Informe a letra do tipo de campo. Para ver tipos pressione na barra de espaço o Delphiabrirá um drop-down, veja abaixo: Ex. A para Ascii ou N para Numérico.

Table PropertiesEm Table Properties você define os vários aspectos de configuração da tabela. Muitas dessas opções podem serimplementadas no Delphi e vários programadores preferem não usá-las no Database Desktop.

Opção DescriçãoValidity Checks Validações para os campos, como obrigatoriedade, valor mínimo e máximo.

Table Lookup Indica que o valor atribuído a um determinado campo tem que estar gravado em outra tabela.Secondary Indexes Cria índices secundários.Referential Integrity Cria integridade referencial, geralmente utilizada em relacionamentos de 1 para N.Password Security Permite a criação de senhas, protegendo a tabela de acesso não autorizado.

Table Language Especificar o driver de língua utilizado pela tabela, geralmente é o Pdox ANSI Intl850.Dependent Tables Mostra todas as tabela dependentes através da integridade referencial.

Alfa ..................è Letras, números, símbolos (*#$ etc)Number ............è Até 15 dígitos$ Money ...........è R$ 100,00 R$ 700,10Short ................è Até 32.767Long Integer ....è até 2.147.483.647# (BCD) ............èFormato decimal código binário – até 15 dígitosDate ..................èDatas válidas de Jan. 1, 9999 até Dez 31, 9999Time .................è Armazena hora.@ ......................è Armazena valores da data e da horaMemo ...............è Para campos de textos enormes. Armazena ate 240 caracteres e este

conteúdo é armazenado em um arquivo com a terminação .MBFormated Memoè Pode formatar as fontes, cores, tamanho etcGraphic ............è Campo pode conter arq. gráficos .BMP, .GIF etcOLE .................è Pode armazenar, sons, vídeos, figuras.Logical .............è Armazena Verdadeiro ou Falso.+- ......................è Auto incrementar. Começa com 1 e segue (não editável)Binary ..............è Armazena na forma binária (geralmente para “sons”Bytes ................è Armazena códigos de barra ou para fitas magnéticas.

Cria índice primário.Basta pressionar uma

vez na barraespaçadora, neste

campo será mostradoum asterisco ( * ). Para

remover pressionarnovamente.

Define otamanho do

campo.

Page 66: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 66

R Como criar uma tabela para armazenar dados ?

å Crie a tabela de dados a seguir. Na barra de títulos do Delphi clique em Tools, clique em DatabaseDesktop, clique em File – New – Table e defina os nomes dos campos como mostra a seguir. Na tabelaserão armazenados dados que serão cadastrados no formulário de entrada de dados.

Salva a tabela: Estearquivo conterá todos osregistros dos Clientes.

Com o utilitário Database Desktop podemoscriar os campos, índices primários, índices

secundários, apagar registros das tabelas, alterarregistros etc

Padrão na nomeação dos campos: Como é umatabela de Clientes definirei as iniciais do nome doscampos de Clie_ , quando estiver fazendo alguma

alteração no programa será mais fácil para chamar oscampos dos Clientes.

Cria chave primária: Paradefinir uma chave primária

( * ) basta pressionar uma vezno asterisco.

Insere campo: Cliqueno campo desejado e

pressione na tecla Insert( ins ).

Apaga campo:Clique no campo

desejado e pressioneCtrl + Del

Mover campo: Cliqueno campo desejado e

arraste-o para cima oupara baixo.

Page 67: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 67

Todos os arquivo do projeto corrente:

Grave o arquivo com o nome de Clientes.pas, antes de confirmar osalvamento do arquivo, crie uma pasta para armazenar somente a(s)

tabela(s) de dados. Clique no ícone “criar nova pasta”, crie uma pastachamada “dados”, grave-a dentro da pasta Delphi Madruga para não

misturar com os arquivos fonte.

Dentro da sub-pastadados estarão todas

as tabelas.

Page 68: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 68

R Criando índice secundário.å Na barra de título do Delphi Tools, clique em Database Desktop, File, Open, Table, Clientes.db, cliqueno ícone Restructure

Criando índice secundário para o campo “nome”

ç Para definir o índice primário,pressione na “barra de espaço”,

quando surgir o asterisco significaque o índice foi definido.

é Criando índicesecundário:

Após clicado emSecondary Indexes, clique

no campo Clie_Nome ,clique na setinha pretaapontando para direita,

clique OK, será aberta umacaixa de texto, digite Inome.

A letra “I” no início docampo significa Índice,

nome, porque o índice serápara o campo nome.

Page 69: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 69

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

R O que é um alias e como criá-lo ? ( maneira básica )Vamos criar um Alias ( atalho ) para acessar as tabelas de uma forma mais prática e rápida. Quando vocêinsere um componente Table ou Query em um formulário deve configurar as propriedades DatabaseNamecom o caminho apontando para o local ( pasta / diretório ) das tabelas e se por alguma razão resolver mudara localização das tabelas, terá que alterar em todas as propriedades DatabaseName de todos os formuláriosque usam esta tabela, com certeza muito mais trabalhosoM

å Vamos criar o alias : Clique Database ­ Explore ­ Object ­ New ­ Standard – ok – digite o nome doAlias = madruga, digite o caminho onde estão as tabelas ( ou tabela = C:\Delphi Madruga\Dados ), paragravar o alias, clique na setinha azul apontando para baixo ( descrição: apply ) e Ok. (± Adianteaprenderemos como criar Alias via programa ).

Crie outro índicesecundário para cidade.

é Grava o Alias

ç Se algum dia precisar alterar o caminho, nãoprecisará alterar mais a propriedade

DatabaseName, basta alterar o caminho ondeesta apontando para a tabela.

Page 70: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 70

Com utilitário SQL Explorer podemos também visualizar mais informações sobre as tabelas:

O Alias Madruga esta apontando para3 tabelas. Se no futuro precisar alterar olocal, basta alterar o Path ( caminho ),

muito mais rápidoJ

Crie alias parasuas aplicações.

Para acessar este recurso, localize no menu da barra de títulos doDelphi, clique na opção Database e clique em Explore será aberta atela abaixo.

Page 71: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 71

Com o SQL Explorer é possível visualizar todos os campos da tabela, campos índices, campos quecompõem os índices, tipo de drive da tabela ( Paradox ) etc.

Mostra a ordem (Order) docampo, tipo (Type) ( alfa,

numérico ), tamanho (Length).

Índices secundários.

Nomes dos campos databela de Clientes.

Page 72: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 72

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

Exemplos de SQL:

SELECT * FROM ClientesListará todos os registros da tabela Clientes.

SELECT * FROM Clientes ORDER BY Clie_Nome DESCListará todos os registros da tabela Clientes e classifica-os em ordem de Clie_Nome Descendente.

SELECT Clie_Nome, Clie_Cidade FROM ClientesListará os campos Clie_Nome e Clie_Cidade da tabela Clientes.

SELECT Clie_Nome, Clie_Cidade FROM Clientes ORDER BY Clie_Nome ASCListará os dois campos ( Clie_Nome e Clie_Cidade ) da tabela Clientes e os classifica em ordem de Clie_Nome emordem 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 código “3” ( ou, Cidade igual a Timbó ).

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

Dados da tabela poderão tambémser filtrados via SQL.

Após digitado a linha SQL cliqueno raio para visualizar o resultado

gerado pela SQL.

Page 73: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 73

R Como criar um formulário simples de entrada de dados ?

å Clique em File – New – Application – clique em Project, clique na opção – Remove from Project, seráaberta uma pequena tela, clique em Unit1 para remover a Unit1, clique Ok e clique Yes para confirmar. Nabarra de ferramentas do Delph clique em Database, clique em FormWizard e siga as telas a seguir passo apasso para criar o formulário de entrada de dados.

Selecione o AliasMadruga e cliquena tabela Clientes

para gerar oformulário de

entreda de dados.

Selecione oscampos para

serem exibidosno formulário.

Page 74: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 74

O formulário está pronto para entrada de dados, possui navegador de registros que faz as operações básicasde inclusão, alteração, consulta e deleção de registros. Para rodar o programa pressione F9.

A disposição doscampos será feitahorizontalmente.Há 3 maneiras:

Horizontal, Verticalou em uma grade de

dados.

Função do Table1: Serve para manipular os dados deuma tabela física em uma base de dados. Esta será

acessada através de um caminho ou alias.

Função do DataSource1: Este faza ligação do componente de acesso

do banco de dados com o devisualização de dados. Ele não é

visual , somente atua comoconduíte para as informações entreo componente Dataset (veremos

adiante) e os componentes devisualização. Salve este formulário

com o nome de Clientes.pas

uAltere aspropriedades Name dos

dois componentes:Table1 para

Clientes_TB eDataSource para

Clientes_DS.

Deixe esta opçãodesativada.

Clique na propriedade Captione digite Cadastro de Clientes,

mais abaixo clique napropriedade Name e digiteClientes_Frm ( nome do

formulário )

v Após renomeado Table1 eDataSource1, pressione F12para abrir a tela de código,mude Table1.Open; para

Clientes_TB.Open;

Page 75: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 75

R Organizando arquivos do projetoOrganizando os arquivos do projeto. É uma forma de copiar ou apagar arquivos de maneira mais rápida etc.

File – New Application – Project – Options – Directories / Conditionals sera mostrada a tela abaixo,preencha os campos de acordo com a tela:

Sistema organizado

Arquivos da pasta Bin, executável ( .exe ) , arquivo de projeto ( .dpr ), compilados ( .dcu )

Aponte o caminhoonde estão os

arquivos do seuprojeto.

Page 76: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 76

Arquivos que estão na pasta frm, arquivo fonte ( .pas ) e .dfm

R Como criar atalho ao pressionar alt + uma letra ?

R Quais as propriedades básicas do formulário de dados ?

Propriedades básicas necessárias que devem sempre ser definidas em um formulário quando trabalhar comdados/tabelas. É importante que o desenvolvedor adote um padrão na nomeação ( nomenclatura ) doscomponentes e mantenha o código fonte bem orgranizado para futuras manutenções. J

å Formulário Defina as propriedades Caption e Name.Propriedade Caption: O conteúdo da propriedade Caption será mostrada no topo do formulário.

Ex: Caption = Cadastro de Clientes.

Propriedade Name: Defina um nome para o formulário. A terminação _FRM significa queeste objeto é um formulário. Se preferir poderá deixar o nome padrãoForm1, porém se o projeto possuir 20 Forms a identificação 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 formulário corrente. Clientes.db.

Atalho: O caracter & diante daletra criará um atalho para ativar obotão Limpa Campos, note que a

letra “L” esta sublinhada paraativar o pressionamento da

combinação Alt + L

Clique em Clie_Nome, clique napropriedade Caption e mude para

apenas Nome

Page 77: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 77

Propriedade Name Defina o nome para o componente Table. Como padrão o nome éTable1, meu padrão é Clientes_TB. Terminação _TB indica que é umtabela Clientes esta usando um componente Table = TB.

é DataSource Defina as propriedades DataSet e Name. Propriedade DataSet Defina a tabela que está sendo usada no formulário corrente, ou seja,

Clientes_TB. ( _TB = Table ). Propriedade Name Como padrão o nome é DataSource1, meu padrão é Clientes_DS ( _DS

= DataSource ).Nomeação Padrão do Delphi.

R SenhaO usuário terá 3 chances, caso não digitar a senha correta nas 3 primeira tentativas o programa fechará.

Page 78: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 78

R Como definir descrições para os botões do navegador ?

Defina descrições para os botões do navegador de dados para facilitar a identificação, quando o mouseestiver parado sobre um botão, será mostrada uma pequena descrição dizendo o que aquele botão faz.

é Após traduzido todas as descrições selecione a propriedade do navegador de dados chamada ShowHint,defina o valor para True ( para mostrar as descrições ).

å Clique no navegador paraselecioná-lo, na propriedade Hint

(...) clique nos três pontinhos,traduza as mesangens que estão

escritas em inglêsJ

ç Digite asdescrições

abaixo.

ç De ... paraè

Page 79: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 79

R Criando relatório simples

Partindo do ponto que você já possui um tabela de dados com registros cadastrados, faremos o relatório paralistar todos os registros.

å File – New – Other – clique na aba Business, clique no o ícone QuickReport Wizard, Ok, clique nobotão Start wizard, informe o alias e o nome da tabela ... veja abaixo.

Veja abaixo, formulário relatório que foi criado pelo New Report Wizard.

ç Clique no formulário do relatório, clique em Properties ( F11 ), clique em Caption e digite ao ladoRelatório de Clientes, clique na propriedade Name e digite QuickRep1, salve o relatório com o nome deRel_Clientes2.pas

Selecioneiapenas 3campos.

Clique na setinha, será aberta umalista de Alias, escolha o alias que

você criou.

Page 80: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 80

é Caso não tenha um formulário insira um novo, para isto clique no ícone Form, insira também um botãodo tipo BitBtn.

è Salve o formulário File – Save as - Tela_Rel_Clientes.pas. Para o formulário 3 ( Form 3 ) enchergar orelatório precisamos abri-lo, clique em File, Use unit e selecione o arquivo Rel_Clientes2

ê Dê um clique duplo sobre o botão Relatório 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 conteúdo proceda da seguinte forma: Cliqueno campo Edit1, clique na aba Events, dê um clique duplo em no evento OnExit e digite o código abaixopara validar o campo. Será obrigatorio a digitação de algo.

Page 81: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 81

2ª forma:Clique no campo Edit1, clique na aba Events, dê um clique duplo no evento OnExit e digite o código aseguir. Será verificado se a digitação é Vectra ou VITARA:

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 código abaixo. Ao tentar gravar o registro e se o conteúdodo campo Nome for branco/vazio, será mostrado uma mensagem de erro, forçando digitação de algo.

R Como adicionar ou remover formulários no projeto ?Para “remover” ou “adicionar” formulários no projeto corrente clique em um dos ícones a seguir:

Remove form. Adiciona form.

Edit1

Page 82: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 82

R Validando campo data antes de gravar registro.

Siga os passos... clique no componente Clientes_TB, clique no botão direito, clique em Fields editor, cliqueno 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 códigomostrado abaixo. Atenção: O registro será validado antes de gravar na tabela.

Verifica na tabela se campo está vazio.

ç

éè

Clique duplo na tabelaClientes_TB, clique no

campo Cli_Data_Nasc edigite os códigos no eventoOnGetText e OnSetText,estão na próxima página.

å

Page 83: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 83

R Como definir máscara no campo telefone ?

Vamos definir algumas mascaras para os campos abaixo:

Antes de formatar campo Nr. Telefônico

Após formatar campo Nr. Telefônico

å Clique duplo sobre o componente Table( Clientes_TB ), clique no campo

Clie_Fone, clique nos três pontinhos ( ... )do EditMask, o Delphi abrirá uma tela paraconfigurar a mascara para o campo corrente.

ç Clique sobre Phone, serámostrado no lado direito oscaracteres que formatarão ocampo Telefone, se precisarbasta adicionar ou remover

os númeors “nove” ou“zeros”, veja abaixo umexemplo como fica um

campo formatado.

Page 84: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 84

R Formatadores de camposUse a propriedade EditMak com os caracteres restritos que estão abaixo para formatar campos. Este recursovalida a entrada do caracter digitado no campo formatado.

Caracter Descrição! Espaços em branco não aparecerão> Todos os caracteres seguintes serão maiúsculos até que apareça o caracter< Todos os caracteres seguintes serão minúsculos até que apareça o caracter\ Indica um caracter literall (L minusculo) Somente caracter alfabéticoL Obrigatoriamente um caracter alfabético (A-Z, a-z)a Somente caracter alfanuméricoA Obrigatoriamente caractere alfanumérico ( A-Z, a-z, 0-9)9 Somente caracter numérico0 Obrigatoriamente caracter numéricoc permite um caracterC Obrigatoriamente um caracter# Permite um caracter numérico ou sinal de mais ou de menos, mas não os requer.: Separador de horas, minutos e segundos/ Separador de dias, meses e anos

R Validando data com Try ... Except ... On EConvertError doClique em um campo Edit, clique na aba Events, dê um clique duplo no evento OnExit e ditie o códigoabaixo para validar a data:

Clique no campo Data que já foi definido uma máscara de data ( veja página anterior ), clique no eventoOnExit e digite o código abaixo. Ao sair do campo data mostrará uma mensagem.

Page 85: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 85

R Detalhes sobre Exceções Try .. Except ... EConvertError

O tratamento de exceção é um mecanismo capaz de dar robustez a uma aplicação, permitindo que os errossejam manipulados de uma maneira consistente e fazendo com que a aplicação possa se recuperar de erros,se possível, ou finalizar a execução quando necessário, sem perda de dados ou recursos. Para que umaaplicação seja segura, seu código necessita reconhecer uma exceção quando esta ocorrer e responderadequadamente a essa exceção. Se não houver tratamento para uma exceção, será exibida uma mensagempadrão descrevendo o erro e todos os processamentos pendentes não serão executados. Uma exceção deveser respondida sempre que houver perigo de perda de dados ou de recursos do sistema.

ExceçõesExceções são classes definidas pelo Delphi para o tratamento de erros. Quando uma exceção é criada, todosos procedimentos pendentes são cancelados e, geralmente é mostrada uma mensagem de erro para o usuário.As mensagens padrão nem sempre são claras, por isso é indicado criar seus próprios blocos protegidos.

Blocos ProtegidosUm bloco protegido é um grupo de comandos com uma seção de tratamento de exceções.

Algumas vezes você pode precisar especificar quais exceções quer tratar, como mostrado abaixo.

Principais ExceçõesO Delphi define muitas exceções, para cada erro existe uma exceção correspondente.Classe DescriçãoException Exceção genérica, usada apenas como ancestral de todas as outras exceçõesEAbort Exceção silenciosa, pode ser gerada pelo procedimento Abort e não mostra nenhuma mensagemEAccessViolation Acesso inválido à memória, geralmente ocorre com objetos não inicializadosEConvertError Erro de conversão de tiposEDivByZero Divisão de inteiro por zeroEInOutError Erro de Entrada ou Saída reportado pelo sistema operacionalEIntOverFlow Resultado de um cálculo inteiro excedeu o limiteEInvalidCast TypeCast inválido com o operador asEInvalidOp Operação inválida com número de ponto flutuanteEOutOfMemory Memória insuficienteEOverflow Resultado de um cálculo com número real excedeu o limiteERangeError Valor excede o limite do tipo inteiro ao qual foi atribuídaEUnderflow Resultado de um cálculo com número real é menor que a faixa válidaEVariantError Erro em operação com variantEZeroDivide Divisão de real por zeroEDatabaseError Erro genérico de banco de dados, geralmente não é usado diretamenteEDBEngineError Erro da BDE, descende de EDatabaseError e traz dados que podem identificar o erro

Page 86: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 86

Blocos de FinalizaçãoBlocos de finalização são executados sempre, haja ou não uma exceção. Geralmente os blocosde finalização são usados para liberar recursos.

Você pode usar blocos de proteção e finalização aninhados.

Geração de Exceções

Você pode provocar uma exceção usando a cláusula raise.

Também é possível criar seus próprios tipos de exceções.

Se você quiser que uma exceção continue ativa, mesmo depois de tratada, use a cláusula raise dentro dobloco de tratamento da exceção. Geralmente isso é feito com exceções aninhadas.

Page 87: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 87

Erros de Bancos de DadosA exceção EDBEngineError permite a identificação de erros de bancos de dados gerados pela BDE.

Note que a variável E, que vai identificar o erro, só precisa ser declarada no bloco de tratamento da exceção.No help você pode consultar outras propriedades de EDBEngineError que podem ser importantes.Você também pode usar os eventos de erro do componente Table, sem precisar de blocos de tratamento.

Alguns códigos de erro da BDE estão listados abaixo. Todas as constantes e funções relacionadas à API daBDE no Delphi 3 estão na Unit BDE, que deve ser adicionada à cláusula uses. No BDE API Help você podeencontrar referência sobre as funções nativas da BDE, como também alguns exemplos em Delphi.

Constante DescriçãoDBIERR_KEYVIOL Violação de chave primáriaDBIERR_MAXVALERR Valor máximo excedidoDBIERR_FORIEGNKEYERR Erro de chave externa, como em integridade referencialDBIERR_LOCKED Registro travadoDBIERR_FILELOCKED Arquivo travadoDBIERR_NETMULTIPLE Mais de um diretório usado como NetFileDirDBIERR_MINVALERR Campo com valor mais baixo que valor mínimoDBIERR_REQDERR Campo obrigatório faltandoDBIERR_LOOKUPTABLEERR Erro em tabela Lookup

Se você quiser mais informações a respeito do erro pode usar o procedimento DBIGetErrorContext, comona função mostrada abaixo que retorna determinadas informações sobre o erro.

Page 88: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 88

R Inserindo registros em uma tabelaInsira 4 edits e um botão Bitbtn, ao clicar neste botão será gravado os quatro campos:

Tela abaixo está em modo de projeto:

Tela abaixo mostra programa em execução.

A única função doDBgrid neste exemplo éapenas mostrar todos osregistros cadastrados.

Page 89: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 89

R Gravando campo dataGravando o campo data usando Try ... Except para controlar a operação.

É utilizada a estrutura Try ... Except para controlar a operação, se alguma coisa não funcionar o blocoexcept é executado mostrando a mensagem de erro. O Edit prepara o registro para a alteração, o comandoPost grava esta alteração.

R Como forçar digitação somente de letras ?Valida o conteúdo digitado no campo Edit1, ou seja, serão aceitas somente “letras”, tente digitar algumnúmero. Clique na aba Events e no evento OnKeyPress digite as linhas de código abaixo:

R Como forçar digitação somente de números ?Valida o conteúdo digitado no campo Edit1, ou seja, serão aceitos somente “números e os caracteres “-” ,“+“ e “backspace”, tente digitar alguma letra. Clique na aba Events e no evento OnKeyPress digite aslinhas de código abaixo:

Page 90: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 90

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 próximo 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 próximo campo Edit3.

Segunda maneira:

Neste código programaremos ao pressionar “enter”, “setinha para cima”, “setinha para baixo”, algumaspessoas preferem usar estas teclas para navegar nos campos ao invés do mouse, então esta é a solução.

Selecionaremos todos campos, mantenha a tecla Shift pressionada e com o mouse clique no campo Edit1,Edit2 e Edit3, após clique na aba Events, dê um clique duplo no evento OnKeyDown e digite:

Page 91: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 91

R Como mudar cores do editor de código fonte do Delphi ?

Na barra de título do Delphi clique em Tools, Editor Options e clique na aba “color”, selecione porexemplo Comment , clique na cor vermelha, desta forma quando houver algum comentário no programaserá exibido em vermelho.

Exemplo:

Desfaz ações após ter salvo a unit.

È possívelconfigurar códigofonte com váriascombinações de

cores.

Page 92: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 92

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

É possível ter acesso mais rapidamente a um objeto ou componente através do Object Inspector, clique nodrop-down, serão listados todos os objetos em uso do projeto corrente, após clique no objeto desejado oponteiro (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 próprios códigos trechos de códigosProgramando o editor de códigos. Quando programamos varias procedures ou blocos de códigos sãoconstantemente repetidos, uma maneira de poupar a edição destes códigos e programar o Editor de códigos.

Na barra de títulos do Delphi clique em ( Delphi 6 )è Tools – Editor Options.( Delphi 7 ) è Tools - Editor Options, clique na aba Source Options, clique no botão Edit CodeTemplates

Add: Adiciona novos códigos.

Edit: Edita / altera código.

Delete: Apaga trecho decódigo adicionado.

Após clicar no botão Add serámostrada a tela ao lado:

Page 93: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 93

Agora vamos invocar o código de dentro do editor de códigos do Delphi. Para ativar a listagem do códigoque foi inserida clique a combinação Ctrl J ( control jota ), pressione a letra M , visto que o código foigravado com a inicial M de Mensagem.

Após clicado em Mensagem1 será inserida a linha na posição do cursor:

É mais pratico editar o arquivo Delphi32.dci que se encontra no caminho abaixo:C:\Arquivos de programas\Borland\Delphi6\BinAbra este arquivo e digite os códigos que você mais utilizará, e para invocar pression Ctrl J

Digite um exemplo ou asintaxe da função que mostra

a mensagem e clique OK.

Pressione

Ctrl Jpara listar seus códigos.

Coloquei as linhasseparadoras paramelhor localizar /

visualizar os várioscódigos.

Page 94: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 94

R Como forçar gravação do registro antes fechar o formulário ?

Se alterar o registro corrente, ao fechar o formulário será mostrada uma caixa de mensagem pedindoonfirmação para gravação deste registro.

Primeira maneira: Clique no formulário corrente, clique na aba Events, dê um clique duplo no eventoOnClose e digite o código abaixo:

Segunda maneira: Digite o código abaixo no evento OnClose ( veja exemplo acima )

Quando clicar no X para fechar oformulário será mostrada uma caixa

de diálogo pedindo confirmação.

O campo Nome Cliente foi alterado, ao clicar no Xpara fechar o formulário será solicitado confirmação, se

é ou não para gravar alteração.

Page 95: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 95

R Como pular de campo ao pressionar enter ?

Ao pressionar a tecla ENTER posicionará o ponteiro ( cursor ) no próximo campo.

å Clique no campo EditClie ( primeiro campo deste formulário ).

ç Clique na aba Events, clique duplo no evento OnKeyDown e digite a linha de código abaixo:If Key = Vk_Return then Perform(Wm_NextDlgCtl,0,0);

é Veja abaixo código completo:

è Programaremos o pressionamento da tecla “enter” para todos os campos da tabela. Selecione todos oscampos, 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 código abaixo:

ê Outra forma: Clique na aba Events, dê um clique duplo no evento OnKeyDown e digite o código abaixo:

Note que todos os campos estãoselecionados para usar o mesmo evento.

Note o evento :OnKeyPress

Note o evento :OnKeyDown

Page 96: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 96

R Como limpar todos o campos edits ?

Insira um botão Bitbtn, dê um clique duplo neste botão e digite o código abaixo:

1ª maneira:

2ª maneira

Para limpar um único campo digite a linha abaixo:

R Ativa / Desativa botão Iniciar do WindowsTeste realizado no Windows XP. Após executar o programa ( F9 ) clique no botão iniciar do Widnows estenão funcionará.

Page 97: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 97

R Como abrir/criar formulário dinamicamente ?Carrega formulário para memória mais rapidamente, se o seu projeto possuir muitos formulários a seremabertos, esta é a maneira adequada.

å Crie 4 ( quatro ) formulários.

ç Com o projeto aberto, clique em Project – Options, selecione o formulário desejado para criá-lodinamicamente, clique na setinha que esta apontando para o lado direito, após clicado na setinha oformulário será passado / transferido para o lado direito ( Clientes_Frm ) e clique OK para finalizar.

Page 98: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 98

é No formulário do Menu_Frm, dê um clique duplo no botãoo Clientes_Bit e no evento OnClick digite ocódigo abaixo:

R Como procurar um registro no mesmo campo por código ou nome ?

No campo “Localiza por Código ou Nome” será possível procurar por “código” ou “nome”. Clique noEdit1, clique na aba Events, clique no evento OnChange e digite o código abaixo. Para esta situaçãousaremos Try ... Except ... end

Digite o código abaixo no evento OnChange do campo de pesquisa ( Edit1 )

Como fazer índice secundário, volte parapágina 49

Nome do índice secundário: Iempresa

Page 99: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 99

R Como navegar nos registros usando teclas de função ( F1, F2 ) ?Usaremos as teclas de função para navegar nos registros.

å Selecione o formulário corrente, na propriedade KeyPreview defina o valor para True.

ç Selecione o formulário, no evento OnKeyDown do form digite o código abaixo, neste exemplo estouusando a tabela de Vendedores.

R Como instalar Quick Report do Delphi 6 no Delphi 7O Delphi 7 usa componentes Rave para criar relatórios, se preferir usar o Quick Report do Delphi 6 siga ospasso abaixo:

å Feche todos os projetos abertos.ç Abra o menu Component na Barra de Menus.é Selecione a opção Install Packages.è Na caixa de diálogo que se abre, selecione o botão Addê Abra o diretório \bin (a localização padrão é c:\Arquivos de Programas\Borland\Delphi7\bin).ë Selecione o arquivo dclqrt70.bpl.í Clique em Abrir.ì De volta à janela Project Options, clique no botão OK.

F1 = registro anterior. F7 = edita registro.F2 = próximo registro. F8 = grava.F3 = primeiro registro. F9 = cancela.F4 = último registro. ESC = sai programa.F5 = insere registro. F10 = e-mail.F6 = apaga registro. F11 = calculadora.

Page 100: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 100

R Memória Total e LivreMostra quantidade de memória total e a quantidade livre.

R Formatando valores e calculando percentualInsira dois Edits e um botão Bitbtn, no evento OnClick digite o código abaixo:

Digite o valor 100 e 10

Posicione o ponteiro do mousesobre a palavra FloatToStr epressione F1 ( ajuda ), veja asopções de formatações, cliqueem Example e clique no botão

Exibir.

Page 101: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 101

R Como excluir TODOS registros da tabela ?

Insira um botão do tipo Bitbtn, dê um clique duplo sobre este botão, clique na aba Events, clique no eventoOnClick e digite o código abaixo:

R Validando campo com Try ... ExceptUsando Try ... Execpt

Page 102: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 102

“ INFORMAÇÕES BÁSICAS NECESSÁRIAS “........................................................................................ 2É difícil programar ?..................................................................................................................................... 2O que é um programa ?................................................................................................................................. 2O que é um programador de computador ?.................................................................................................... 2O que é um programa fonte ?........................................................................................................................ 2Quando meu programa está pronto, o que venderei ? .................................................................................... 2O que é um sistema ?.................................................................................................................................... 2R Como criar um programa ou sistema em Delphi? ..................................................................................... 3R Origem do nome Delphi = Delfos............................................................................................................. 3R Tela padrão do Delphi 6.0 ........................................................................................................................ 4R Tela padrão do Delphi 7.0 ........................................................................................................................ 5R Tela padrão do Delphi 2005 ..................................................................................................................... 6R Introdução ao Delphi 6 / 7 ...................................................................................................................... 14å Propriedades – primeira maneira ............................................................................................................ 18ç Propriedades – segunda maneira............................................................................................................. 19PROPRIEDADES: Aba / paleta / guia das propriedades ( properties ) ........................................................ 20EVENTOS: Aba ou paleta de eventos ( EVENTOS ).................................................................................. 20COMPONENTES: Aba / guia dos componentes “Standard”....................................................................... 21R O que são variáveis ?.............................................................................................................................. 21R Mais sobre variáveis............................................................................................................................... 23R Constantes Tipadas ................................................................................................................................ 24R Begin ... End ( Início ... Fim ) ............................................................................................................. 25R If ( se ) ............................................................................................................................................... 25R If ... else ( Se ... Caso contrário )......................................................................................................... 25R IF ........................................................................................................................................................... 26R Como criar descrição com mais de uma linha ? ..................................................................................... 26R Tags ....................................................................................................................................................... 27R Inc() e Dec()........................................................................................................................................... 28R Formatando casas decimais ................................................................................................................... 28R Confirmação ao fechar o formulário ....................................................................................................... 29R Criando Função para mostrar o dia da semana ........................................................................................ 29R Sender.................................................................................................................................................... 30R Subtraindo horas .................................................................................................................................... 31R Abrindo e fechando unidade Cd-Rom..................................................................................................... 31R Variáveis globais.................................................................................................................................... 32R Mensagem com MessageBox e Case ...................................................................................................... 33R Como definir “descrição” para os botões ? ............................................................................................. 34R Salvando Unit ( programa ) .................................................................................................................... 34R O que são eventos ?................................................................................................................................ 35R Como racionar a digitação do código ?................................................................................................... 36R Disparando o mesmo evento................................................................................................................... 37R O que compõe um projeto ?.................................................................................................................... 38R Quais são os arquivos do seu projeto que devem ser copiados ?.............................................................. 38R Arquivos que compõe uma aplicação. .................................................................................................... 39Arquivos Gerados pela Compilação ............................................................................................................ 39

Page 103: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 103

R Cláusulas e bibliotecas de uma “unit”..................................................................................................... 40Código fonte do arquivo Unit (.PAS).......................................................................................................... 40Seção Unit.................................................................................................................................................. 40Seção Uses ................................................................................................................................................. 40Seção Interface .......................................................................................................................................... 40Seção Type ................................................................................................................................................. 41Seção Var ................................................................................................................................................... 41Seção Implementation................................................................................................................................. 41R O que são métodos ? ............................................................................................................................. 41R O que são “componentes” ?.................................................................................................................... 42Eventos comuns ao formulário e aos componentes...................................................................................... 43Rotinas que Respondem a Eventos ............................................................................................................. 43R Como inserir “mais formulários” no projeto ? ........................................................................................ 44R Como criar um menu ?........................................................................................................................... 45R Como definir um ícone para o formulário corrente ?............................................................................... 48R Como remover “barra de título e bordas” do formulário ?....................................................................... 48R Qual função do Database Desktop ? ....................................................................................................... 49DATABASE DESKTOP 7 ......................................................................................................................... 49É um utilitário onde será criado a base de dados (tabelas - nomes dos campos, tamanhos dos campos, índicesetc). ............................................................................................................................................................ 49Introdução .............................................................................................................................................. 49Criação do Banco de Dados........................................................................................................................ 50Database Desktop ....................................................................................................................................... 50Tabelas Paradox ......................................................................................................................................... 50Table Properties.......................................................................................................................................... 50Tipos de Campos........................................................................................................................................ 50Configuração.............................................................................................................................................. 50Aliases........................................................................................................................................................ 51Database Explorer ...................................................................................................................................... 51BDE Administrator..................................................................................................................................... 51TDatabase .................................................................................................................................................. 51Database Form Wizard ............................................................................................................................... 52Form Passo a Passo .................................................................................................................................... 52TDataModule ............................................................................................................................................. 53TTable........................................................................................................................................................ 53Filtros......................................................................................................................................................... 54Alterando Registros .................................................................................................................................... 55Inserindo Registros..................................................................................................................................... 55Localizando Registros ................................................................................................................................ 55Indexação ................................................................................................................................................... 55Estados da Tabela ....................................................................................................................................... 56Verificando Alterações ............................................................................................................................... 56Valores Default .......................................................................................................................................... 56Percorrendo uma Tabela ............................................................................................................................. 56Forms Modais de Inclusão/Alteração .......................................................................................................... 56Mestre/Detalhe ........................................................................................................................................... 57Fields Editor ............................................................................................................................................... 57TField......................................................................................................................................................... 57Conversão de Tipos .................................................................................................................................... 58Validação ................................................................................................................................................... 59Formatação Personalizada .......................................................................................................................... 59Campos Calculados .................................................................................................................................... 59R O que é BDE ? ...................................................................................................................................... 60Arquitetura dos Componentes de Banco de Dados...................................................................................... 61

Page 104: Modulo1a Delphi Aplicado

Delphi Aplicado - by Jurandir A. Pellin ( e-mail: [email protected] ) 104

Diagrama de Estados do Dataset ................................................................................................................. 61Estados do DataSet ..................................................................................................................................... 62Abrindo e Fechado DataSets....................................................................................................................... 62Navegando no Dataset § Propriedades e Métodos de Navegação ................................................................ 62Modificando dados no Dataset.................................................................................................................... 62R Tipos, tamanhos dos campos, driver... da tabela ..................................................................................... 63R Tipos de campos do Paradox.................................................................................................................. 65Field Name:................................................................................................................................................ 65Type:.......................................................................................................................................................... 65Table Properties.......................................................................................................................................... 65R Como criar uma tabela para armazenar dados ? ..................................................................................... 66R Criando índice secundário. ..................................................................................................................... 68R O que é um “alias” e como criá-lo ? ( maneira básica ) .......................................................................... 69Exemplos de SQL:...................................................................................................................................... 72R Como criar um formulário simples de entrada de dados ?....................................................................... 73R Organizando arquivos do projeto............................................................................................................ 75R Como criar atalho ao pressionar “alt” + “uma letra” ? ............................................................................ 76R Quais as propriedades básicas do formulário de dados ? ......................................................................... 76R Senha ..................................................................................................................................................... 77R Como definir descrições para os botões do navegador ? ......................................................................... 78R Criando relatório simples ....................................................................................................................... 79R Como adicionar ou remover formulários no projeto ?............................................................................. 81R Validando campo “data” antes de gravar registro.................................................................................... 82R Como definir máscara no campo “ telefone “ ? ....................................................................................... 83R Formatadores de campos ........................................................................................................................ 84R Detalhes sobre “Exceções” – Try .. Except ... EConvertError ................................................................. 85Exceções .................................................................................................................................................... 85Blocos Protegidos....................................................................................................................................... 85Principais Exceções .................................................................................................................................... 85Blocos de Finalização ................................................................................................................................. 86Geração de Exceções .................................................................................................................................. 86Erros de Bancos de Dados .......................................................................................................................... 87R Inserindo registros em uma tabela .......................................................................................................... 88R Gravando campo data............................................................................................................................. 89R Como forçar digitação somente de “letras” ? .......................................................................................... 89R Como forçar digitação somente de “números” ? ..................................................................................... 89R Como navegar nos campos com “setinhas baixo/cima ou enter” ? .......................................................... 90R Como mudar cores do editor de código fonte do Delphi ?....................................................................... 91R Para que serve o Object inspector ? ( inspetor de objetos )...................................................................... 92R Definindo seus próprios códigos – trechos de códigos ............................................................................ 92R Como forçar gravação do registro antes fechar o formulário ? ................................................................ 94R Como pular de campo ao pressionar enter ?............................................................................................ 95R Como limpar todos o campos “edits” ?.................................................................................................. 96R Ativa / Desativa botão Iniciar do Windows ............................................................................................ 96R Como abrir/criar formulário dinamicamente ? ....................................................................................... 97R Como procurar um registro no mesmo campo por “código” ou “nome” ? ............................................... 98R Como navegar nos registros usando teclas de função ( F1, F2 ) ?............................................................ 99R Como instalar Quick Report do Delphi 6 no Delphi 7............................................................................. 99R Memória Total e Livre ......................................................................................................................... 100R Formatando valores e calculando percentual......................................................................................... 100R Como excluir TODOS registros da tabela ? .......................................................................................... 101R Validando campo com Try ... Except.................................................................................................... 101