Você está na página 1de 104

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 “

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


INFORMAÇÕES BÁSICAS NECESSÁRIAS

É difícil programar ?
Todos podemos, porém precisamos querer . Nem todas as pessoas possuem a tendência e
serem 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 de
forma 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 que
comer... Um programa tornará suas rotinas de trabalho mais práticas. O programador
ordenará 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 caso
Dlephi, de lógica, análize e estruturamento - basicamente. Todos somos programadores , todos
os dias temos rotinas que devem ser cumpridas com uma determinada seqüência lógica. O
programador de computador digita linhas de código para criar um programa. Ex: Cadastrar
clientes, transportadoras etc

O que é um programa fonte ?


Programa é o código fonte digitado/criado pelo programador. O código fonte fica sempre em
poder do seu criador o programador . Não é comum vender o programa fonte ( o segredo do seu
negó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 para
folha 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 ) que
trabalham para esta empresa.

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

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


Π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 Delphi
juntamente com uma determinada lógica dizendo para o programa fazer alguma determinada
tarefa.
• Compile ( Ctrl F9 ). O processo de compilação é deve ser realizado para converter o código
fonte ( seu segredo de programador ) de forma que o computador possa interpretá-lo e
carregá-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ém
programou 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 considerar
desenvolvedores, 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 sagrada
localizada nas encostas do Monte Parnasso, onde Apolo possuía um templo e ditava oráculos pela
boca de Pitia. Escavações realizadas, desde o final do século passado, levaram à descoberta dos
templos de Apolo e de Atena, tesouros, obras de arte e estátuas que fazem de Delfos um dos
mais 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."
Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 3
R Tela padrão do Delphi 6.0

Form1 é o nome
Componentes.
do formulário
Aba/paleta de padrão atribuído
propriedades. pelo Delphi.

Paleta de
eventos.

Após ter aberto o Delphi será


mostrado um Formulário
padrão, object inspector, aba
das propriedades e eventos.

Para alternar entre o editor de


código fonte, pressione F12,
para voltar para o formulário
pressione F12. Para alternar
para as propriedades e eventos
pressione F11.

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


R Tela padrão do Delphi 7.0

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


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

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


"Disponível no mercado desde 1995, quando foi lançada sua primeira versão, o novo Delphi 2005 chega ao
mercado com recursos inovadores e implementações significativas para maior produtividade no
desenvolvimento para Microsoft Windows tanto na plataforma Win32 quanto .Net, e com otimizações dos
investimentos 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 codinome
Diamondback. O ambiente Rapid Application Development (RAD) para aplicações Windows e .NET
combina suporte a Win32, .NET, Delphi e C# em um único ambiente. Seus novos recursos melhoram
significativamente a produtividade do desenvolvedor de aplicações e da equipe de desenvolvimento, e se
integra às soluções de Gerenciamento do Ciclo Completo de Desenvolvimento da Aplicação (Application
Lifecycle Management - ALM) da Borland.

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

Suportando diversas linguagens e SDKs Win32 e .NET, o Delphi 2005 traz muitos aprimoramentos
inovadores como produtividade do desenvolvedor e da equipe, como code refactoring, teste unitário e o novo
framework 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 Windows
existentes, ao mesmo tempo explorando novas oportunidades.

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

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

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

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


Ÿ Integra soluções ALM plenamente, sendo projetado para oferecer aos desenvolvedores uma visão das
diversas fases do ciclo de desenvolvimento da aplicação com a integração de StarTeam e Optimizeit. A
integração do StarTeam visa simplificar o gerenciamento de recursos de código-fonte e aprimorar a
comunicação da equipe, enquanto a inclusão do Optimizeit Profiler para .NET ajuda a automatizar o teste
unitá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 Model
Driven Architecture (MDA) rápida e de classe empresarial para .NET com o objetivo de acelerar o
desenvolvimento, aprimorar a qualidade e aumentar a capacidade de manutenção de aplicações mais
complexas. ECO II é uma solução completa para esquematizar e criar objetos automaticamente e fornece
cache de objeto .NET altamente escalável com capacidades avançadas de objeto, persistência, versão e
traduções.

Ÿ Delphi 2005 simplifica e acelera o desenvolvimento em Windows, incluindo muitos recursos com uma IDE
inovadora para ajudar a aprimorar a experiência adiquirida do desenvolvedor, aumentando sua
produtividade e otimizando todo o processo. Os recursos abrangem code refactoring avançado, Help
Insights e Error Insights, SyncEdit, Gerenciamento de Histórico e novos aperfeiçoamentos na linguagem
Delphi. Além disso, um facilitador para ADO.NET foi projetado para acelerar e simplificar cada aspecto do
desenvolvimento 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 da
plataforma 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 ambiente
para acomodar tais objetivos.

Pré-requisitos para instalar o Delphi 2005

• .NET Framework 1.1


• .NET Framework SDK 1.1
• .Visual J# .NET 1.1 Redistributable
• Microsoft XML Core Services ( MSXML ) 4.0 SP2
• Internet Explorer 6 SP1

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


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

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

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


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 para
Maximizar e o sinal de MENOS para minimizar

Exemplo 1

Exemplo 2

Exemplo 3

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


File – New – VCL Forms Application Delphi for Win32

Vamos inserir um botão do tipo TBitBtn

Clique no componente e
arraste-o para formulário.

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


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

Arquivo gerados pelo Dephi 2005.

Programa pronto.

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


Outro exemplo:

Resultado:

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


R Introdução ao Delphi 6 / 7
Vamos 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 um
formulário com nome Form1.

• Insira um
componente Button no
formulário ( Form1 ).
O botão que esta na
aba Standard.

Ž Após inserido botão do tipo


( Button ), dê um clique duplo sobre
Button1, será aberta uma tela para
definir o evento ( clique ) deste botão,
ou seja, ao clicar no botão será
mostrada a mensagem
Meu primeiro - Olá

O que é um Evento ?: É uma ação


que será executada. Neste exemplo,
ao clicar no botão OK ( no evento
OnClick ) será mostrada uma
mensagem.

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


Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 14
O que é um EVENTO ?
Agora definiremos o evento OnClick do
botão Mensagem.

Os programas feitos em Delphi são


orientados a eventos. Eventos são ações
normalmente geradas pelo usuário.
Existem eventos associados ao formulário
e cada componente inserido neste. Neste
exemplo, programamos o evento
OnClick do botão do tipo Button, ou
seja, ao clicar no botão será mostrada
uma mensagem.

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

Após clicar no
botão Button1
mostrará
mensagem.

• Selecione o formulário, clique no Object Inspector (no drop down ), veja o gráfico abaixo, clique em
Form1.

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

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


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

’ Role para baixo, na propriedade Name


está 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 Frm
indica que é um Formulário.
A nomeação é importantíssima para
facilitar a manutenção do seu sistema.

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

O que é uma PROPRIEDADE ?


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

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


” Veja abaixo como esta o programa fonte.
Linha Uses contém bibliotecas
necessárias para este programa, estas
Nome padrão Unit1, foram automaticamente incluídas pelo
porque o arquivo ainda Delphi 6.0
não foi salvo.

Observe com atenção


os nomes dos objetos
de acordo com a
nomeação que
definimos.

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

Clique no ícone Save All, defina o nome da


Unit1 para Clientes.pas, após informe o nome
para o projeto – Intro1.dpr

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

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


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

µµµ

Os 11 passos acima deverão ser seguidos. Se você quer ou não definir


nomeação / nomenclatura padrão para os objetos do seu programa fica
ao seu critério, posso lhe assegurar que uma boa nomeação lhe poupará
muito tempo.

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

µµµ

ΠPropriedades primeira maneira


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

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

Defina as seguintes propriedades na aba/guia Properties ( propriedades ) do formulário abaixo: Clique em


Caption e ao lado digite Exemplo 1, clique na propriedade Name e digite Exemplo_Frm.

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


Defina a propriedade Caption do botão digitando
Mensagem, role para baixo, na propriedade Name
digite But_Mens. Na aba Standard ( barra superior
de componentes ), clique no botão Button, posicione
o ponteiro do mouse sobre o formulário e clique,
será posto um Button ( botão ) no formulário como
no exemplo ao lado ).

A inicial But_ é para definir o tipo de botão que está em uso, ou seja, do tipo Button. Podemos usar outros
tipos 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 do
sistema.

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

Clique em Label1, pressione F11 ( propriedades ), na


propriedade Caption digite O Tempo é Sábio, clique
em Color e defina a cor clBlue ( cl = Caption, l = label
), clique em +Font ( fonte ), Color = clYellow e Size
para 15, clique em +Style, clique em True em fsBold.

• Propriedades segunda maneira


Na segunda maneira veremos como definir as propriedades via código. Esta forma é mais trabalhosa, porém
o 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 de
Caption o texto Mensagem, role barra de rolagem para baixo, clique na propriedade Name e defina o nome
But_Mens, insira um Label1

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


Dê um clique duplo sobre o 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 resultado J

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

Clique no botão Mensagem, note no lado esquerdo


TODAS as propriedades do botão.
Cada botão ( componente ou objeto ) selecionado
terá suas respectibvas PROPRIEDADES.

EVENTOS: Aba ou paleta de eventos ( EVENTOS )

Cada botão ( componente , ou objeto )


selecionado terá seus EVENTOS
específicos.

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


COMPONENTES: Aba / guia dos componentes Standard
Existem várias paletas / abas / guias com vários componentes. Na aba Standard se encontram os
componentes mais comuns. Note que o componente Button está na aba Standard.

Clique na aba Additional e note os respectivos componentes que pertencem a esta aba. Lembre-se, cada
componente possui suas 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 futura
reutilização. Podemos ter diversos tipos de variáveis de memória. O tipo da variável define qual o tipo de
informação que iremos armazenar ( Ex: texto, numérica etc )

Tipos de Variáveis
BOOLEAN 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 8
bytes, 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 10
bytes 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 2
byte de memória.
LONGINT Tipo numérico inteiro, pode assumir valores numa faixa de -2147483648 a
+2147483647, ocupa 4 bytes de memória.

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


REAL Tipo numérico real, pode assumir valores na faixa de -2,9.10-39 a +1,7.10 +38, ocupa 6
bytes 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 de
memória.
SINGLE Tipo numérico real, pode assumir valores numa faixa de -1,5.10-45 a +3,4.10+38, ocupa 4
bytes 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 de
memória.
STRING Tipo alfanumérico, possuindo como conteúdo uma cadeia de caracteres. O número de
bytes ocupados na memória varia de 2 a 256, dependendo da quantidade máxima de
caracteres definidos para a string. O primeiro byte contém a quantidade real de
caracteres da cadeia.

Dê um clique duplo sobre o botão Button1 e no evento OnClick digite as linhas de código que estão na
pá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.

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


R Mais sobre variáveis

Outro exemplo usando variáveis de memória:

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


R Constantes Tipadas
Na verdade, constantes tipadas são variáveis inicializadas com valor persistente, que podem ser alteradas
normalmente, como qualquer variável. A única diferença de sintaxe entre constantes tipadas e simples é que
o tipo da constante é indicado explicitamente na declaração. Se uma constante tipada for declarada
localmente, 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.

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


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

Dê um clique duplo sobre o botão Button1, será aberto o editor de


códigos, no evento OnClick ( significa: ao clicar ), serão
mostradas as linhas Procedure... e Begin e End, digite código
sempre entre o Begin e End.

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 10
mostra a segunda mensagem

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


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ê clique
duplo no evento OnCreate e digite o código abaixo:

Quebra linha.

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


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.

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


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

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


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

Ao clicar no X
será solicitado
confirmação.

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:

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


R Sender
Como podemos ver o método BitBtn4 tem um ponteiro para o TObject chamado de Sender ( aquele que
envia, 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. O
parâmetro Sender se refere ao controle que é usado para chamar um método.

Outro exemplo

Observe que
como está
sendo
chamado o
mesmo
evento.

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


R Subtraindo horas

R Abrindo e fechando unidade Cd-Rom


Insira dois botões Bitbtn e no evento OnClick de cada botão digite o código abaixo.

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


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

Unit1 ( Programa 1 )

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


Unit2 ( Programa 2 )

R Mensagem com MessageBox e Case


Outra forma de iusar o MessageBox juntamente com o Case.

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


R Como definir descrição para os botões ?
Quando o ponteiro do mouse estiver posicionado sobre um determinado ícone, será mostrada uma pequena
descriçã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 direito
desta propriedade digite o seguinte texto: “Será aberto outro formulário”, mais abaixo, na propriedade
ShowHint, mude o valor para True, pressione a tecla F9 para rodar o programa, posicione o ponteiro do
mouse sobre o botão e veja a descrição Será aberto outro formulário.

Quando o ponteiro
do mouse estiver
parado sobre o
botão será mostrada
descrição.

R Salvando Unit ( programa )

Clique no ícone Save


( Crtl S - Salvar ), digite o
nome Menu.pas para salvar
o formulário corrente
( o menu do projeto )

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


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ós
podemos programar respostas a esses estímulos. Propriedades e Eventos estão disponíveis para todos os
componentes 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 determinado
componente, basta clicar sobre ele. Se o componente for o próprio Form, será só clicar sobre qualquer área
do Form (área pontilhada).

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

Clique no botão Cadastro de


Clientes , clique na aba Events
( eventos ), note que foi
selecionado o evento OnClick,
dê um clique duplo, será aberto o
editor de códigos do Delphi.

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


Estamos usando o evento
OnClick, ou seja, quando for
clicado no botão “Cadastro
de Clientes “ mudará a cor
de fundo do formulário.

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

Após clicar no botão Cadastro de


Clientes será alterada a cor do fundo do
formulário. O objetivo deste exemplo é
mostrar como funciona o
“evento OnClick”.

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


Observe atentamente a evolução do código fonte. Bibliotecas que foram inseridas
automaticamente pelo Delphi após
ter inserido os botões. StdCtrls e
Buttons.

Ao clicar no botão Clientes o fundo


do formulário será pintado de azul.

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 seu
trabalho. 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 do
objeto 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 mais
propriedades, métodos do segundo objeto selecionado, selecione o que desejar e pressione enter, no final da
linha digite ponto e virgula ( ; )

Mantenha pressionada a tecla Ctrl ,


após pressione barra espaçadora,
serão listadas para serem escolhidas
as propriedades ou métodos daquele
respectivo objeto.

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


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

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

Formulário_Menu.Cor := recebe_cor

R Disparando o mesmo evento


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

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


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
Project1.dpr
Sis_Aula.exe

Unit1.pas

MÓDULO PRINCIPAL (menu)


Menu.pas

Módulo 1 Módulo 2 Módulo 3


CLIENTES FORNECEDORES TRANSPORTA-
DORAS

clientes.pas fornecedores.pas transportadoras.pas

Unit2.pas Unit3.pas Unit4.pas

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

R Quais 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

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


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

Extensão Definição Função


Código fonte em Pascal do arquivo principal do projeto. Lista todos os
.dpr Arquivo do Projeto formulários e units no projeto, e contém código de inicialização da
aplicação. Criado quando o projeto é salvo.
Apesar de ter a extensão *.cfg este é um arquivo texto.
Guarda diversas opções do compilador. Discutir estas opções está fora do
.cfg Arquivo do Projeto
escopo deste curso. Para a maior parte dos casos as opções default
funcionam perfeitamente.
Apesar de ter a extensão *.dof este é um arquivo texto.
.dof Arquivo do Projeto Guarda diversas opções do projeto. Estas opções você configura usando a
caixa de diálogo Project Options que vamos ver mais à frente.
Um arquivo .PAS é gerado por cada formulário que o projeto contém. Seu
Código fonte da Unit projeto pode conter um ou mais arquivos .PAS associados com algum
.pas ( Object Pascal) formulário. Contem todas as declarações e procedimentos incluindo
eventos de um formulário.
Arquivo binário que contém as propriedades do desenho de um
Arquivo gráfico do
.dfm formulário
formulário contido em um projeto. Um .DFM é gerado em companhia de
um arquivo .PAS para cada formulário do projeto.
Arquivo de Recursos Arquivo binário que contém o ícone, mensagens da aplicação e outros
.res do Compilador recursos usados pelo projeto.
Arquivo texto que contém a situação corrente das opções do projeto.
Arquivo de opções do
.opt projeto
Gerado com o primeiro salvamento e atualizado em subsequentes
alterações feitas para as opções do projeto.
Arquivo de Backup Gerado quando o projeto é salvo pela segunda vez.
.~dp do Projeto
Arquivo de Backup Se um .PAS é alterado, este arquivo é gerado.
.~pa da Unit
Backup do Arquivo Se você abrir um .DFM no editor de código e fizer alguma alteração, este
.~df gráfico do formulário arquivo é gerando quando você salva o arquivo.
Situação da Área de Este arquivo armazena informações sobre a situação da área de trabalho
.dsk Trabalho especifica 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, Caixa
de Grupo Display and file options, opção Create Backup Files, desativa o seu salvamento). Devido a
grande 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


Este é um arquivo executável distribuivel de sua aplicação. Este arquivo
Arquivo compilado
.exe executável
incorpora 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 senta
numa brasa viva, um segundo parece uma hora. Isso é relatividade. – Albert Einstein "

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


R 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 tem
apenas 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 definidos
os códigos de cada procedimento dos componentes que você colocar no form.

Seção Unit
Declara o nome da unit.

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

Seção Interface
Nesta seção estão as declarações de constantes, tipos de variáveis, funções e procedures gerais da
Unit/Form. As declarações desta seção são visíveis por qualquer Unit. Esta seção é formada pelo seguinte
có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.
Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 40
Seção Type
Declara os tipos definidos pelo usuário. Subseções:

Private, declarações privativas da Unit.


Public declarações publicas da Unit.

Seção Var
Declara as variáveis privadas utilizadas.

Seção Implementation
Contém os corpos das funções e procedures declaradas nas seções Interface e Type. Nesta seção também
estão definidos todos os procedimentos dos componentes que estão incluídos no Form. As declarações desta
seçã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 do
arquivo *.DFM

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

Seção uses adicional


Serve para declarar Units que ativam esta seção.

Initialization
Nesta seção, que é opcional, pode ser definido um código para proceder as tarefas de inicialização da Unit
quando o programa começa. Ela consiste na palavra reservada initialization seguida por uma ou mais
declaraçõ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 "

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


R O que são componentes ?
São elementos que já estão no Delphi prontos para serem utilizados e o programador definirá suas
propriedades e eventos de acordo com sua necessidade ( o que são propriedades e eventos, veremos adiante
J ). Vamos inserir alguns botões e após verificar a alteração que o Delphi fará no código fonte.
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 ícone
para o botão na propriedade
Glyph.

Adicione no formulário corrente três


componentes Bitbtn ( aba Additional )
Altere as propriedade Caption para Cadastro
de Clientes, que será o texto exibido no botão,
altere a propriedade Name de BitBtn para
Bit_Cad_Clientes.

Sugiro Bit_ para identificar o tipo de


botão/componente que está sendo usado, como
já falei anteriormente, cada programador
adotará 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 propriedade
Width 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.

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


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

Exemplos:
Evento que está ligado formulário, OnCreate, que ocorre quando mostramos o formulário na tela. Ao
componente botão está ligado o evento OnClick, que ocorre quando damos um click com o mouse sobre o
botã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 Eventos


Cada 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 a
procedure:

Onde Tform1 é o objeto Tform que contém o botão Bit_Sair, e Sender é um objeto Tobject que
representa o componente que deu origem ao evento.
Se você quiser inserir uma rotina que trate um determinado evento de um componente, 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 primeiro
os eventos do componente removendo somente o código que você digitou, após o componente; o resto dos
procedimentos o DELPHI removerá para você.

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

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


R Como inserir mais formulários no projeto ?

Clique no ícone onde está


apontando o bolão, será
aberto um novo formulário.

Defina as duas propriedades


básicas do formulário:
Caption e Name.

Caption = Cadastro de Clientes


Name = Clientes_Frm

Cada programador adotará seu padrão de


nomeação, digitei _Frm no final do
nome para indicar que é um Formulário.

Insira um componente Label ( aba Standard )


e na propriedade Caption digite Clientes.

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

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


Lista os objetos e uses Veja os vários formulários ( telas ) que estão em uso –
utilizados no projeto corrente. Menu – Fornecedores – Transportadoras e Clientes

Clique duplo sobre Label1, o cursor será


imediatamente posicionado no objeto.

R Como criar um menu ?


Criando um menu muito 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ário
Clientes e clique OK. Para abrir todos os formulários arraste o mouse marcando a lista da caixa abaixo e
clique OK.

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


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

Agora o formulário
Clientes_Frm foi reconhecido
pela lista Ctrl + barra espaço.

ShowModal mostrará o formulário


Clientes_Frm.
Pode ser usado ShowModal ou Show.

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 no
botã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.

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


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ão
armazenados os arquivos do tipo .bmp

Clique para mostrar o


caminho onde estão os
arquivos do tipo .bmp

Após clicado em
Abrir , clique no
botão OK.

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


Outra maneira de inserir um ícone padrão é a
propriedade Kind do componente Bitbtn. Porém,
após selecionado o ícone, o Delphi mudará a
propriedade Caption de Fornecedores para Ignore
que é o caption padrão, então digite novamente o
Caption Fornecedores.

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


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

Ícone
definido.

Clique no formulário corrente, selecione a


propriedade Icon do formulário, clique nos três
pontinhos [...], será aberta uma tela, clique no
botã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

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.

Sem “barra de título”.

Com “barra de título.

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


R Qual função do Database Desktop ?

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

Introdução
O BDE é um núcleo de Banco de Dados que fornece a capacidade de acesso a banco de
dados para os softwares Delphi, Paradox, dBase e C++, oferecendo um grande conjunto de
caracterí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 BDE
inclui 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 SQL
Links, 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 para
Programação de Aplicações) que permite os desenvolvedores acessarem diretamente esses
bancos de dados.

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

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


Criação do Banco de Dados
Para criar um banco de dados novo, normalmente, é necessário dispor de alguma ferramenta do
pró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 desses
tipos de bancos de dados.

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

Tabelas Paradox
Para criar tabelas Paradox, siga os passos abaixo. Você deve salvar as tabelas de um mesmo banco de dados na
mesma pasta, pois o Paradox trata a pasta onde 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 Properties
Em Table Properties você define os vários aspectos de configuração da tabela. Muitas dessas opções podem ser
implementadas no Delphi e vários programadores preferem não usá-las no Database Desktop.

Opção Descrição
Validity 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

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

Tipo Descrição Faixa Tamanho


A Alfanumérico 1-255
308
N Numérico ± 10
$ Monetário
S Short Integer ± 32767
I Long Integer ± 2147483648
D Data
T Hora
@ Data e Hora de modificação
M Memo 1-240*
G Gráfico 1-240*
L Lógico True/False
+ Autoincremental 1-2147483648
Configuração
Para configurar o acesso a um banco de dados, você tem várias opções, criar um Alias, usar o
componente TDatabase ou os dois juntos.
Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 50
Aliases
Um Alias é um nome lógico, um atalho para um banco de dados. Todo o trabalho do Delphi com
um banco de dados pode ser feito baseado no Alias, de forma que para mudar de banco de
dados, só é necessário mudar o Alias. Para criar um Alias você pode usar Database Explorer, o
BDE Administrator ou o próprio Database Desktop.

Database Explorer
Pode aparecer com os nomes Database Explorer ou SQL Explorer. Nele você pode manipular os
Aliases, navegar pelas estruturas dos bancos de dados, alterar os dados das tabelas e executar
comandos SQL.

Para criar um Alias selecione o item Databases, clique em Object/New, escolha o tipo do banco
de dados, ou Standard para dBase, Paradox e arquivos texto, depois digite um nome do Alias,
esse nome será usado pelo Delphi quando você quiser acessar o banco de dados, finalmente
defina as propriedades do banco de dados na seção Definition, cada banco de dados terá suas
próprias definições.

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

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

Propriedades Descrição
AliasName Nome do Alias do banco de dados, usado quando você criar um Alias da BDE
Connected Define se a conexão com o banco de dados está ativa
DatabaseName Nome do Alias local a ser usado pelos outros componentes do Delphi
DataSetCount Número de DataSets (Tabelas) abertos no banco de dados
DataSets Lista com os DataSets abertos
DriverName Driver usado para criar um Alias local, automaticamente cancela a propriedade AliasName
InTransaction Define se o Database está em transação
KeepConnection 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 BDE
Params 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ção
Close 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 é encerrada
Commit Grava alterações feitas durante a transação
Open Abre a conexão com o banco de dados
Rollback Anula todas as alterações feitas durante a transação
StartTransaction Inicia uma transação
Eventos Descrição
OnLogin Evento usado quando você quiser escrever seu próprio método de conexão com o banco de dados

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


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

AliasName = 'Clientes'
DatabaseName = 'Dados'
LoginPrompt = False
KeepConnection = True
Params.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 componente
e clique em Defaults, todos os parâmetros defaults serão apresentados. Para acessar uma base
Paradox, use as propriedades abaixo, note que para o Paradox, a única informação realmente
significante é o Path, a pasta onde estão as tabelas.

AliasName = 'DBDEMOS'
DatabaseName = 'Dados'
LoginPrompt = False
KeepConnection = True
Params.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 de
dados está configurado e pronto para ser usado.

Database Form Wizard


Após a configuração do banco de dados, a maneira mais rápida, de se fazer uma janela de
manutenção de dados é através do Form Wizard no menu Database. Ao chegar no Wizard são
feitas uma série de perguntas que podem resultar em uma janela simples ou Mestre/Detalhe. O
acesso 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 selecionados
aparecem 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, um
DBNavigator. O componente utilizado para fazer a ligação entre os componentes visuais e o
TTable é um TDataSource. Geralmente os componentes TTable e TDataSource são inseridos
em DataModules, que são a base para a criação de classes de dados. Sempre Após usar o
Wizard, lembre-se de mudar os nomes dos componentes, para que fiquem mais claros.

Form Passo a Passo


O diagrama abaixo mostra como o Wizard fez a ligação entre os componentes, onde os quadrados são componentes
e as elipses, propriedades.

TDatabase TTable DataSet TDBEdit


DB

DatabaseName DatabaseName TDataSource DataSource

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
Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 52
• No Form, para definir a interface com o usuário, use os componentes de controle de dados que estão na página
DataControls, basicamente DBEdit e DBNavigator
• Para poder acessar os dados, coloque a Unit onde está o DataModule no uses da Unit do Form
• Em todos os componentes DataControls, escolha na propriedade DataSource, o componente DataSource criado
no DataModule
• Em alguns controles, como no DBEdit, deve ser especificado também o campo da tabela, na propriedade
DataField

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

TDataModule
Um DataModule é como se fosse um Form invisível, onde iremos inserir os componentes de
acesso a dados, como o Table e o Datasource. Por serem também classes, os DataModules
permitem 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 do
menu File. Os DataModules não gastam recursos do sistema, servem apenas para conter os
componentes de acesso a dados e criar, assim, uma classe persistente.

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

Propriedades Descrição
Active 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.

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


Método Descrição
AddIndex 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ção
AfterCancel 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.

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

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


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

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

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

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

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

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

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

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ção
A indexação é usada para ordenar os registros da tabela, para isso você deve escolher os
campos 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.

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


Estados da Tabela
A propriedade State determina o estado das tabelas, os principais estados são demonstrados
abaixo, veja como os métodos mudam o estado.
Post
Insert Cancel
Append Delete
dsInsert dsBrowse dsEdit

Post Edit
Cancel
Delete

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

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

Percorrendo uma Tabela


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

Forms Modais de Inclusão/Alteração


Para mostrar Forms Modais de inclusão ou alteração de registros utilize comandos como os
mostrados abaixo.

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


Mestre/Detalhe
Nos relacionamentos de 1 para N, uma tabela pode estar ligada a outra em uma relação Mestre/Detalhe, nesse tipo
de 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, os
registros cujo campo CodCli seja igual ao CodCli da tabela de Clientes.
Para fazer esse tipo de relacionamento, siga os passos abaixo.
• No uses da Unit detalhe, Pedidos, inclua a Unit da tabela mestre, Clientes
• Na Table detalhe, Pedidos, Coloque em MasterSource o DataSource da tabela mestre, Clientes
• Em MasterFields, chame o Fields Links Designer e escolha os campos de ligação das tabelas, no caso, CodCli
para as duas tabelas

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

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

Se você não criar nenhum objeto TField, todos os campos da tabela estarão disponíveis, mas
caso 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 controles
visuais para esses campos, Label, DBEdit e outros, mas antes coloque a descrição dos campos
na propriedade DisplayLabel.

TField
A classe TField é usada como ancestral para todos as classes dos campos. Geralmente iremos
usar objetos de classes descendentes de TField, mas em todos eles podemos encontrar os itens
mostrados abaixo.

Propriedades Descrição
Alignment 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.
Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 57
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 dos
campos de uma tabela, são classes descendentes de TField.
TStringField TBlobField TTimeField
TSmallintField TIntegerField TBytesField
TFloatField TWordField TVarBytesField
TCurrencyField TAutoIncField TGraphicField
TBooleanField TBCDField TMemoField
TDateField TDateTimeField

Em alguns desses campos você pode encontrar as propriedades mostradas abaixo, que não
estão presentes em TField.
Propriedades Descrição
MaxValue 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ção
LoadFromFile 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 a


propriedade Value por padrão.

Através do método FieldByName

Usando a lista Fields do TTable

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

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


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

Formatação Personalizada
Caso 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 Casado
e 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, com
Solteiro e Casado na propriedade Items, e no evento OnGetText do campo o código mostrado abaixo.

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

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


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

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


Arquitetura dos Componentes de Banco de Dados

Diagrama de Estados do Dataset

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


Estados do DataSet
Estado Descrição
dsInactive O Dataset esta fechado.
Estado de Espera. O estado default quando um dataset é aberto. Registros pode ser
dsBrowse
visualizados 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.
Habilita FindKey, GotoKey, and GoToNearest para procurar valores nas tabelas do banco de
dsSetKey dados. Estes métodos somente pertencem para o componente TTable. Para TQuery, a procura
é feita com a syntax do SQL.
Modo quando os OnCalcFields é executado; previne qualquer mudança para outros campos
dsCalcFields
ou campos calculados. Raramente é usado explicitamente.

Abrindo e Fechado DataSets


Antes que uma aplicação possa acessar dados através de um dataset, o dataset deve ser aberto. Existem dois
meios para abrir o dataset: Ativando a propriedade Active para True, isto pode ser feito através do Object
Inspector 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ção


Mé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 Dataset


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

Método Descrição
Comfirma qualquer dado pendente e move um registro em branco para o final do
Append
dataset, 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
Coloca o dataset em estado de edição. Se um dataset já está estado de Edit ou Insert,
Edit
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.
Tentativa para confirmar um registro novo ou alterado. Se sucesso, o dataset e
Post
colocado em estado de Browse; se insucesso, o dataset fica no estado corrente.
Refresh Atualiza a visão do banco de dados.

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


R Tipos, tamanhos dos campos, driver... da tabela
Œ Tools § Database Desktop § File § New § Table § Paradox 7 ( veja o gráfico abaixo) § Ok.

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

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

Tipo de tabela: Drivers


de melhor performance
para acessar dados são
dBase e Paradox, estes
também oferecem suporte
para linguagem SQL.

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


Paradox é melhor quando...

A aplicação é utilizada com menos de 10 usuários concorrentemente dados e


estruturas de dados devem ser facilmente modificados por usuários finais a
máquina cliente é proporcionalmente mais potente que a máquina servidora largura
de banda da rede satisfatória velocidade e “conveniência” são mais importantes que
integridade baixa disponibilidade de administradores de rede e BD qualificados
somente uma aplicação acessará rotineiramente os dados as aplicações serão as
resp. pela manutenção da integridade de dados pequena ou moderada quantidade
de dados ( < 100 MB )

InterBase é melhor quando...

A aplicação é utilizada com mais de 10 usuários concorrentemente dados devem


ser centralizados, mantidos e protegidos a máquina servidora é muito mais potente
que a máquina cliente rede está carregada integridade de dados é crucial
disponibilidade de administradores de rede e BD qualificados várias aplicações
poderão acessar os dados o banco será o resp. pela integridade de dados
moderada a grande quantidade de dados ( > 100 MB )

Fazendo a melhor escolha

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

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

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


R Tipos de campos do Paradox
Cria índice primário.
Basta pressionar uma
vez na barra
espaçadora, neste
campo será mostrado
um asterisco ( * ). Para
Define o remover pressionar
tamanho do novamente.
campo.
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 e
o nome do campo. J

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

Alfa .................. è Letras, números, símbolos (*#$ etc)


Number ............ è Até 15 dígitos
$ Money ........... è R$ 100,00 R$ 700,10
Short ................ è Até 32.767
Long Integer .... è até 2.147.483.647
# (BCD) ............ èFormato decimal código binário – até 15 dígitos
Date .................. èDatas válidas de Jan. 1, 9999 até Dez 31, 9999
Time ................. è Armazena hora.
@ ...................... è Armazena valores da data e da hora
Memo ............... è Para campos de textos enormes. Armazena ate 240 caracteres e este
conteúdo é armazenado em um arquivo com a terminação .MB
Formated Memo è Pode formatar as fontes, cores, tamanho etc
Graphic ............ è Campo pode conter arq. gráficos .BMP, .GIF etc
OLE ................. è 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.

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

Opção Descrição
Validity 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.

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


R Como criar uma tabela para armazenar dados ?
Œ Crie a tabela de dados a seguir. Na barra de títulos do Delphi clique em Tools, clique em Database
Desktop, clique em File – New – Table e defina os nomes dos campos como mostra a seguir. Na tabela
serão armazenados dados que serão cadastrados no formulário de entrada de dados.

Com o utilitário Database Desktop podemos


criar os campos, índices primários, índices
secundários, apagar registros das tabelas, alterar
registros etc

Padrão na nomeação dos campos: Como é uma


tabela de Clientes definirei as iniciais do nome dos
campos de Clie_ , quando estiver fazendo alguma
alteração no programa será mais fácil para chamar os
campos dos Clientes.

Mover campo: Clique Cria chave primária: Para


no campo desejado e definir uma chave primária
arraste-o para cima ou ( * ) basta pressionar uma vez
para baixo. no asterisco.

Insere campo: Clique


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

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

Salva a tabela: Este


arquivo conterá todos os
registros dos Clientes.

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


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

Todos os arquivo do projeto corrente:

Dentro da sub-pasta
dados estarão todas
as tabelas.

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


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

• Para definir o índice primário,


pressione na “barra de espaço”,
quando surgir o asterisco significa
que o índice foi definido.

Ž Criando índice
secundário:
Criando índice secundário para o campo “nome” Após clicado em
Secondary Indexes, clique
no campo Clie_Nome ,
clique na setinha preta
apontando para direita,
clique OK, será aberta uma
caixa de texto, digite Inome.

A letra “I” no início do


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

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


Crie outro índice
secundário para cidade.

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

R O que é um alias e como criá-lo ? ( maneira 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 DatabaseName
com o caminho apontando para o local ( pasta / diretório ) das tabelas e se por alguma razão resolver mudar
a localização das tabelas, terá que alterar em todas as propriedades DatabaseName de todos os formulários
que usam esta tabela, com certeza muito mais trabalhoso M

ΠVamos criar o alias : Clique Database - Explore - Object - New - Standard Рok Рdigite o nome do
Alias = madruga, digite o caminho onde estão as tabelas ( ou tabela = C:\Delphi Madruga\Dados ), para
gravar o alias, clique na setinha azul apontando para baixo ( descrição: apply ) e Ok. (± Adiante
aprenderemos como criar Alias via programa ).

• Se algum dia precisar alterar o caminho, não


precisará alterar mais a propriedade
DatabaseName, basta alterar o caminho onde
esta apontando para a tabela.

Ž Grava o Alias

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


Com utilitário SQL Explorer podemos também visualizar mais informações sobre as tabelas:
Para acessar este recurso, localize no menu da barra de títulos do
Delphi, clique na opção Database e clique em Explore será aberta a
tela abaixo.

O Alias Madruga esta apontando para


3 tabelas. Se no futuro precisar alterar o
local, basta alterar o Path ( caminho ),
muito mais rápido J

Crie alias para


suas aplicações.

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


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

Nomes dos campos da


tabela de Clientes.

Índices secundários.

Mostra a ordem (Order) do


campo, tipo (Type) ( alfa,
numérico ), tamanho (Length).

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


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

Na aba Data pode-se cadastrar, alterar,


apagar e navegar nos registros.

Dados da tabela poderão também


ser filtrados via SQL.
Após digitado a linha SQL clique
no raio para visualizar o resultado
gerado pela SQL.

Exemplos de SQL:
SELECT * FROM Clientes
Listará todos os registros da tabela Clientes.

SELECT * FROM Clientes ORDER BY Clie_Nome DESC


Listará todos os registros da tabela Clientes e classifica-os em ordem de Clie_Nome Descendente.

SELECT Clie_Nome, Clie_Cidade FROM Clientes


Listará os campos Clie_Nome e Clie_Cidade da tabela Clientes.

SELECT Clie_Nome, Clie_Cidade FROM Clientes ORDER BY Clie_Nome ASC


Listará os dois campos ( Clie_Nome e Clie_Cidade ) da tabela Clientes e os classifica em ordem de Clie_Nome em
ordem ascendente ( ASC ou DESC ).

SELECT Clie_Nome, Clie_Cidade FROM Clientes WHERE Clie_Codigo = 3 ( ou, Clie_Cidade = “Timbó” )
Listará os campos ( Clie_Nome e Clie_Cidade ) da tabela Clientes que possua o código “3” ( ou, Cidade igual a Timbó ).

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


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. Na
barra de ferramentas do Delph clique em Database, clique em FormWizard e siga as telas a seguir passo a
passo para criar o formulário de entrada de dados.

Selecione o Alias
Madruga e clique
na tabela Clientes
para gerar o
formulário de
entreda de dados.

Selecione os
campos para
serem exibidos
no formulário.

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


A disposição dos
campos será feita
horizontalmente.
Há 3 maneiras:
Horizontal, Vertical
ou em uma grade de
dados.

Deixe esta opção


desativada.

Clique na propriedade Caption


e digite Cadastro de Clientes,
mais abaixo clique na
propriedade Name e digite
Clientes_Frm ( nome do
formulário )

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

uAltere as
propriedades Name dos
dois componentes:
Table1 para
Clientes_TB e
DataSource para
Clientes_DS.

v Após renomeado Table1 e Função do DataSource1: Este faz


DataSource1, pressione F12 a ligação do componente de acesso
para abrir a tela de código, do banco de dados com o de
mude Table1.Open; para visualização de dados. Ele não é
Clientes_TB.Open; visual , somente atua como
conduíte para as informações entre
Função do Table1: Serve para manipular os dados de o componente Dataset (veremos
uma tabela física em uma base de dados. Esta será adiante) e os componentes de
acessada através de um caminho ou alias. visualização. Salve este formulário
com o nome de Clientes.pas

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


R Organizando arquivos do projeto
Organizando 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:

Aponte o caminho
onde estão os
arquivos do seu
projeto.

Sistema organizado

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

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


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

R Como criar atalho ao pressionar alt + uma letra ?


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

Atalho: O caracter & diante da


letra criará um atalho para ativar o
botão Limpa Campos, note que a
letra “L” esta sublinhada para
ativar o pressionamento da
combinação Alt + L

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 com
dados/tabelas. É importante que o desenvolvedor adote um padrão na nomeação ( nomenclatura ) dos
componentes 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 que
este objeto é um formulário. Se preferir poderá deixar o nome padrão
Form1, 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.

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


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 é um
tabela 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 Senha
O usuário terá 3 chances, caso não digitar a senha correta nas 3 primeira tentativas o programa fechará.

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


R Como definir 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 mouse
estiver parado sobre um botão, será mostrada uma pequena descrição dizendo o que aquele botão faz.

ΠClique no navegador para


selecioná-lo, na propriedade Hint
(...) clique nos três pontinhos,
traduza as mesangens que estão
escritas em inglês J

• Digite as
descrições
abaixo.

ç De ... para è

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

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


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

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

Clique na setinha, será aberta uma


lista de Alias, escolha o alias que
você criou.

Selecionei
apenas 3
campos.

Veja abaixo, 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 lado
Relatório de Clientes, clique na propriedade Name e digite QuickRep1, salve o relatório com o nome de
Rel_Clientes2.pas

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


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

• Salve o formulário File – Save as - Tela_Rel_Clientes.pas. Para o formulário 3 ( Form 3 ) enchergar o


relató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: Clique
no campo Edit1, clique na aba Events, dê um clique duplo em no evento OnExit e digite o código abaixo
para validar o campo. Será obrigatorio a digitação de algo.

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


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

3ª forma:

3ª forma:
Neste caso estamos usando uma tabela de dados. Clique no componente Table1, clique na aba Events, dê
um clique duplo no evento BeforePost, digite o código abaixo. Ao tentar gravar o registro e se o conteúdo
do 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:

Adiciona form. Remove form.

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


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

Ž

Clique no compenente Clientes_TB, clique no evento BeforePost ( antes de gravar ) e digite o código
mostrado abaixo. Atenção: O registro será validado antes de gravar na tabela.

Verifica na tabela se campo está vazio.

Clique duplo na tabela


Clientes_TB, clique no
campo Cli_Data_Nasc e
digite os códigos no evento
OnGetText e OnSetText,
estão na próxima página.

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


R Como definir máscara no campo telefone ?
Vamos definir algumas mascaras para os campos abaixo:

Π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 para
configurar a mascara para o campo corrente.

• Clique sobre Phone, será


mostrado no lado direito os
caracteres que formatarão o
campo Telefone, se precisar
basta adicionar ou remover
os númeors “nove” ou
“zeros”, veja abaixo um
exemplo como fica um
campo formatado.

Antes de formatar campo Nr. Telefônico

Após formatar campo Nr. Telefônico

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


R Formatadores de campos
Use a propriedade EditMak com os caracteres restritos que estão abaixo para formatar campos. Este recurso
valida 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 literal
l (L minusculo) Somente caracter alfabético
L Obrigatoriamente um caracter alfabético (A-Z, a-z)
a Somente caracter alfanumérico
A Obrigatoriamente caractere alfanumérico ( A-Z, a-z, 0-9)
9 Somente caracter numérico
0 Obrigatoriamente caracter numérico
c permite um caracter
C 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 do


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

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

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


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 erros
sejam 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 uma
aplicação seja segura, seu código necessita reconhecer uma exceção quando esta ocorrer e responder
adequadamente a essa exceção. Se não houver tratamento para uma exceção, será exibida uma mensagem
padrão descrevendo o erro e todos os processamentos pendentes não serão executados. Uma exceção deve
ser respondida sempre que houver perigo de perda de dados ou de recursos do sistema.

Exceções
Exceções são classes definidas pelo Delphi para o tratamento de erros. Quando uma exceção é criada, todos
os 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 Protegidos
Um 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ções
O Delphi define muitas exceções, para cada erro existe uma exceção correspondente.
Classe Descrição
Exception Exceção genérica, usada apenas como ancestral de todas as outras exceções
EAbort Exceção silenciosa, pode ser gerada pelo procedimento Abort e não mostra nenhuma mensagem
EAccessViolation Acesso inválido à memória, geralmente ocorre com objetos não inicializados
EConvertError Erro de conversão de tipos
EDivByZero Divisão de inteiro por zero
EInOutError Erro de Entrada ou Saída reportado pelo sistema operacional
EIntOverFlow Resultado de um cálculo inteiro excedeu o limite
EInvalidCast TypeCast inválido com o operador as
EInvalidOp Operação inválida com número de ponto flutuante
EOutOfMemory Memória insuficiente
EOverflow Resultado de um cálculo com número real excedeu o limite
ERangeError Valor excede o limite do tipo inteiro ao qual foi atribuída
EUnderflow Resultado de um cálculo com número real é menor que a faixa válida
EVariantError Erro em operação com variant
EZeroDivide Divisão de real por zero
EDatabaseError Erro genérico de banco de dados, geralmente não é usado diretamente
EDBEngineError Erro da BDE, descende de EDatabaseError e traz dados que podem identificar o erro

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


Blocos de Finalização
Blocos de finalização são executados sempre, haja ou não uma exceção. Geralmente os blocos
de 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 do
bloco de tratamento da exceção. Geralmente isso é feito com exceções aninhadas.

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


Erros de Bancos de Dados
A 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 da
BDE no Delphi 3 estão na Unit BDE, que deve ser adicionada à cláusula uses. No BDE API Help você pode
encontrar referência sobre as funções nativas da BDE, como também alguns exemplos em Delphi.

Constante Descrição
DBIERR_KEYVIOL Violação de chave primária
DBIERR_MAXVALERR Valor máximo excedido
DBIERR_FORIEGNKEYERR Erro de chave externa, como em integridade referencial
DBIERR_LOCKED Registro travado
DBIERR_FILELOCKED Arquivo travado
DBIERR_NETMULTIPLE Mais de um diretório usado como NetFileDir
DBIERR_MINVALERR Campo com valor mais baixo que valor mínimo
DBIERR_REQDERR Campo obrigatório faltando
DBIERR_LOOKUPTABLEERR Erro em tabela Lookup

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

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


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

Tela abaixo está em modo de projeto:

A única função do
DBgrid neste exemplo é
apenas mostrar todos os
registros cadastrados.

Tela abaixo mostra programa em execução.

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


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

É utilizada a estrutura Try ... Except para controlar a operação, se alguma coisa não funcionar o bloco
except é executado mostrando a mensagem de erro. O Edit prepara o registro para a alteração, o comando
Post 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 algum
nú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 as
linhas de código abaixo:

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


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

Primeira maneira:

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

Quando estiver no campo Edit1 e pressionar “enter” o pulará para o 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”, algumas
pessoas 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:

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


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 por
exemplo Comment , clique na cor vermelha, desta forma quando houver algum comentário no programa
será exibido em vermelho.

È possível
configurar código
fonte com várias
combinações de
cores.

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

Exemplo:

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


R Para que serve o Object inspector ? ( inspetor de objetos )
É possível ter acesso mais rapidamente a um objeto ou componente através do Object Inspector, clique no
drop-down, serão listados todos os objetos em uso do projeto corrente, após clique no objeto desejado o
ponteiro (cursor) será posicionado no objeto selecionado. O “ Object Inspector - Inspetor de Objetos ”
serve como um “atalho” para chegar mais rapidamente em algum objeto.

R Definindo seus próprios códigos trechos de códigos


Programando o editor de códigos. Quando programamos varias procedures ou blocos de códigos são
constantemente 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 Code
Templates

Add: Adiciona novos códigos.

Edit: Edita / altera código.

Delete: Apaga trecho de


código adicionado.

Após clicar no botão Add será


mostrada a tela ao lado:

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


Digite um exemplo ou a
sintaxe da função que mostra
a mensagem e clique OK.

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

Pressione
Ctrl J
para listar seus códigos.

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\Bin
Abra este arquivo e digite os códigos que você mais utilizará, e para invocar pression Ctrl J

Coloquei as linhas
separadoras para
melhor localizar /
visualizar os vários
códigos.

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


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 pedindo
onfirmação para gravação deste registro.
Quando clicar no X para fechar o
formulário será mostrada uma caixa
de diálogo pedindo confirmação.

O campo Nome Cliente foi alterado, ao clicar no X


para fechar o formulário será solicitado confirmação, se
é ou não para gravar alteração.

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

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

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


R Como pular de campo ao pressionar enter ?

Ao pressionar a tecla ENTER posicionará o ponteiro ( cursor ) no 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 os
campos, matenha a tecla Shift pressionada e clique nos quatro campos, pressione F11, clique na aba Events,
dê um clique duplo no evento OnKeyDown e digite o código abaixo:

Note que todos os campos estão


selecionados para usar o mesmo evento.

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

Note o evento :
OnKeyDown

Note o evento :
OnKeyPress

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


R Como limpar todos o campos edits ?

Insira um 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 Windows


Teste realizado no Windows XP. Após executar o programa ( F9 ) clique no botão iniciar do Widnows este
não funcionará.

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


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

Œ Crie 4 ( quatro ) formulários.

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

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


Ž No formulário do Menu_Frm, dê um clique duplo no botãoo Clientes_Bit e no evento OnClick digite o
có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 no
Edit1, clique na aba Events, clique no evento OnChange e digite o código abaixo. Para esta situação
usaremos Try ... Except ... end
Como fazer índice secundário, volte para
página 49
Nome do índice secundário: Iempresa

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

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


R Como navegar nos registros usando teclas de 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 estou
usando a tabela de Vendedores.

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.

R Como instalar Quick Report do Delphi 6 no Delphi 7


O Delphi 7 usa componentes Rave para criar relatórios, se preferir usar o Quick Report do Delphi 6 siga os
passo abaixo:

ΠFeche todos os projetos abertos.


• Abra o menu Component na Barra de Menus.
Ž Selecione a 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.
Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 99
R Memória Total e Livre
Mostra quantidade de memória total e a quantidade livre.

R Formatando valores e calculando percentual


Insira 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 mouse


sobre a palavra FloatToStr e
pressione F1 ( ajuda ), veja as
opções de formatações, clique
em Example e clique no botão
Exibir.

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


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 evento
OnClick e digite o código abaixo:

R Validando campo com Try ... Except


Usando Try ... Execpt

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


“ INFORMAÇÕES BÁSICAS NECESSÁRIAS “........................................................................................ 2
É difícil programar ?..................................................................................................................................... 2
O que é um programa ?................................................................................................................................. 2
O que é um programador de computador ?.................................................................................................... 2
O que é um programa fonte ?........................................................................................................................ 2
Quando meu programa está pronto, o que venderei ? .................................................................................... 2
O que é um sistema ?.................................................................................................................................... 2
R Como criar um programa ou sistema em Delphi? ..................................................................................... 3
R Origem do nome Delphi = Delfos............................................................................................................. 3
R Tela padrão do Delphi 6.0 ........................................................................................................................ 4
R Tela padrão do Delphi 7.0 ........................................................................................................................ 5
R Tela padrão do Delphi 2005 ..................................................................................................................... 6
R Introdução ao Delphi 6 / 7 ...................................................................................................................... 14
ΠPropriedades Рprimeira maneira ............................................................................................................ 18
• Propriedades – segunda maneira............................................................................................................. 19
PROPRIEDADES: Aba / paleta / guia das propriedades ( properties ) ........................................................ 20
EVENTOS: Aba ou paleta de eventos ( EVENTOS ).................................................................................. 20
COMPONENTES: Aba / guia dos componentes “Standard”....................................................................... 21
R O que são variáveis ?.............................................................................................................................. 21
R Mais sobre variáveis............................................................................................................................... 23
R Constantes Tipadas ................................................................................................................................ 24
R Begin ... End ( Início ... Fim ) ............................................................................................................. 25
R If ( se ) ............................................................................................................................................... 25
R If ... else ( Se ... Caso contrário )......................................................................................................... 25
R IF ........................................................................................................................................................... 26
R Como criar descrição com mais de uma linha ? ..................................................................................... 26
R Tags ....................................................................................................................................................... 27
R Inc() e Dec()........................................................................................................................................... 28
R Formatando casas decimais ................................................................................................................... 28
R Confirmação ao fechar o formulário ....................................................................................................... 29
R Criando Função para mostrar o dia da semana ........................................................................................ 29
R Sender.................................................................................................................................................... 30
R Subtraindo horas .................................................................................................................................... 31
R Abrindo e fechando unidade Cd-Rom..................................................................................................... 31
R Variáveis globais.................................................................................................................................... 32
R Mensagem com MessageBox e Case ...................................................................................................... 33
R Como definir “descrição” para os botões ? ............................................................................................. 34
R Salvando Unit ( programa ) .................................................................................................................... 34
R O que são eventos ?................................................................................................................................ 35
R Como racionar a digitação do código ?................................................................................................... 36
R Disparando o mesmo evento................................................................................................................... 37
R O que compõe um projeto ?.................................................................................................................... 38
R Quais são os arquivos do seu projeto que devem ser copiados ?.............................................................. 38
R Arquivos que compõe uma aplicação. .................................................................................................... 39
Arquivos Gerados pela Compilação ............................................................................................................ 39
Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 102
R Cláusulas e bibliotecas de uma “unit”..................................................................................................... 40
Código fonte do arquivo Unit (.PAS).......................................................................................................... 40
Seção Unit.................................................................................................................................................. 40
Seção Uses ................................................................................................................................................. 40
Seção Interface.......................................................................................................................................... 40
Seção Type ................................................................................................................................................. 41
Seção Var ................................................................................................................................................... 41
Seção Implementation................................................................................................................................. 41
R O que são métodos ? ............................................................................................................................. 41
R O que são “componentes” ?.................................................................................................................... 42
Eventos comuns ao formulário e aos componentes...................................................................................... 43
Rotinas que Respondem a Eventos ............................................................................................................. 43
R Como inserir “mais formulários” no projeto ? ........................................................................................ 44
R Como criar um menu ?........................................................................................................................... 45
R Como definir um ícone para o formulário corrente ?............................................................................... 48
R Como remover “barra de título e bordas” do formulário ?....................................................................... 48
R Qual função do Database Desktop ? ....................................................................................................... 49
DATABASE DESKTOP 7 ......................................................................................................................... 49
É um utilitário onde será criado a base de dados (tabelas - nomes dos campos, tamanhos dos campos, índices
etc). ............................................................................................................................................................ 49
Introdução .............................................................................................................................................. 49
Criação do Banco de Dados........................................................................................................................ 50
Database Desktop ....................................................................................................................................... 50
Tabelas Paradox ......................................................................................................................................... 50
Table Properties.......................................................................................................................................... 50
Tipos de Campos ........................................................................................................................................ 50
Configuração .............................................................................................................................................. 50
Aliases........................................................................................................................................................ 51
Database Explorer ...................................................................................................................................... 51
BDE Administrator..................................................................................................................................... 51
TDatabase .................................................................................................................................................. 51
Database Form Wizard ............................................................................................................................... 52
Form Passo a Passo .................................................................................................................................... 52
TDataModule ............................................................................................................................................. 53
TTable........................................................................................................................................................ 53
Filtros......................................................................................................................................................... 54
Alterando Registros .................................................................................................................................... 55
Inserindo Registros..................................................................................................................................... 55
Localizando Registros ................................................................................................................................ 55
Indexação ................................................................................................................................................... 55
Estados da Tabela ....................................................................................................................................... 56
Verificando Alterações ............................................................................................................................... 56
Valores Default .......................................................................................................................................... 56
Percorrendo uma Tabela ............................................................................................................................. 56
Forms Modais de Inclusão/Alteração .......................................................................................................... 56
Mestre/Detalhe ........................................................................................................................................... 57
Fields Editor ............................................................................................................................................... 57
TField......................................................................................................................................................... 57
Conversão de Tipos .................................................................................................................................... 58
Validação ................................................................................................................................................... 59
Formatação Personalizada .......................................................................................................................... 59
Campos Calculados .................................................................................................................................... 59
R O que é BDE ? ...................................................................................................................................... 60
Arquitetura dos Componentes de Banco de Dados ...................................................................................... 61

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


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

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

Você também pode gostar