Professional Documents
Culture Documents
Desde que a primeira verso do Delphi foi lanada, em 1995, esta ferramenta tem se mostrado como a melhor
escolha no desenvolvimento para Windows. Numa relao com outros ambientes de programao, podemos dizer
que o Delphi tem o poder do C++, e a facilidade do Visual Basic.
A principal vantagem do Delphi est na linguagem usada, Object Pascal, que uma evoluo do Pascal padro. O
Pascal surgiu no final dos anos 60 e, at hoje, usada como uma das primeiras linguagens de programao para
estudantes de computao.
Em 1984, a Borland lanou o Turbo Pascal, que se firmou como o melhor compilador de Pascal do mercado e, a
partir de ento, passou a incluir novos recursos nesta linguagem, como Units e Objetos, at a ascenso do Windows,
quando foi lanado o Turbo Pascal for Windows e, depois, o Borland Pascal, cuja linguagem considerada a primeira
verso da Object Pascal.
Na sua atual verso, usada pelo Delphi, a Object Pascal uma linguagem poderosa, slida e respeitada, sem perder
sua peculiar facilidade.
No Delphi, a criao de aplicativos comea com a montagem de componentes em janelas, como se fosse um
programa grfico, o usurio tambm pode utilizar componentes desenvolvidos por terceiros ou criar seus prprios
componentes.
O Delphi vem com todas as ferramentas necessrias para a criao de bancos de dados dBase e Paradox, alm de
uma verso do Interbase, permitindo a criao de aplicativos com banco de dados sem a necessidade de aquisio
de outro programa. O Delphi tambm tem acesso a bases de dados como Foxpro, Access, InFormix, SYBASE,
Oracle, SQL Server e DB2, alm de qualquer outro banco de dados para Windows compatvel com ODBC.
Delphi Aplicado
difcil programar ?
Todos podemos, porm precisamos querer . Nem todas as pessoas possuem a tendncia e
serem programadores, contudo programar com Delphi super fcil e voc tambm conseguir. J
O que um programa ?
So ordens em forma de cdigo da linguagem Delphi dadas ao computador para que ele realize de
forma estruturada e lgica o que lhe for pedido. Ex: Voc trabalha, certo ? , ganha um salrio
, paga seus fornecedores ( supermercado, restaurante etc ) , se no pag-los no ter o que
comer... Um programa tornar suas rotinas de trabalho mais prticas. O programador
ordenar ao programa fazer determinadas tarefas em determinada seqncia lgica. uma
definio sintetizada.
O que um sistema ?
Um sistema composto de vrios programas ou arquivos. Minha empresa possui um sistema para
folha de pagamento . Neste sistema existem vrios outros mdulos ( programas ) que interagem
entre si e as vezes so transparentes para o usurio. Ex: Uma empresa tem um diretor (
programa_mestre.exe ), e este possui vrios funcionrios ( mdulos, programas ) que
trabalham para esta empresa.
A religio sem a cincia cega, a cincia sem a religio intil Albert Einstein
Delphi Aplicado
Aba/paleta de
propriedades.
Form1 o nome
do formulrio
padro atribudo
pelo Delphi.
Componentes.
Paleta de
eventos.
Delphi Aplicado
Delphi Aplicado
Delphi Aplicado
"Disponvel no mercado desde 1995, quando foi lanada sua primeira verso, o novo Delphi 2005 chega ao
mercado com recursos inovadores e implementaes significativas para maior produtividade no
desenvolvimento para Microsoft Windows tanto na plataforma Win32 quanto .Net, e com otimizaes dos
investimentos em software.
Esta nova verso permite o desenvolvimento em Delphi ou C#, para Win32 ou .NET em um nico ambiente,
com Gerenciamento do Ciclo Completo de Desenvolvimento da Aplicao presente.
A Borland Software anuncia globalmente o Borland Delphi 2005, at ento conhecido pelo codinome
Diamondback. O ambiente Rapid Application Development (RAD) para aplicaes Windows e .NET
combina suporte a Win32, .NET, Delphi e C# em um nico ambiente. Seus novos recursos melhoram
significativamente a produtividade do desenvolvedor de aplicaes e da equipe de desenvolvimento, e se
integra s solues de Gerenciamento do Ciclo Completo de Desenvolvimento da Aplicao (Application
Lifecycle Management - ALM) da Borland.
"O Delphi 2005 o mais importante upgrade do Delphi em anos e o sistema de desenvolvimento IDE e
ALM Windows mais completos existentes no mercado hoje, afirma George Paolini, vice-presidente e
gerente geral de ferramentas de desenvolvimento da Borland. "Ele est diretamente alinhado com a viso da
Borland para Produo Otimizada de Software, ajudando as equipes de desenvolvimento a aprimorar a
previsibilidade e o sucesso de projetos de software para que eles sejam fornecidos no prazo, dentro do
oramento e com o valor mximo para os negcios."
Suportando diversas linguagens e SDKs Win32 e .NET, o Delphi 2005 traz muitos aprimoramentos
inovadores como produtividade do desenvolvedor e da equipe, como code refactoring, teste unitrio e o novo
framework de aplicao de negcios empresariais baseado no modelo ECO II (Enterprise Core Objects) para
.NET. Tambm permite que equipes de desenvolvimento mantenham e usufruam de aplicaes Windows
existentes, ao mesmo tempo explorando novas oportunidades.
"A Borland entende a presso sobre as equipes de desenvolvimento Windows de hoje para suportar
aplicaes existentes e, simultaneamente, evoluir com novas tecnologias, tudo no contexto de ciclos de
fornecimento mais curtos e recursos reduzidos", declarou Michael Swindell, diretor de gerenciamento de
produto para ferramentas de desenvolvimento da Borland. "O Delphi 2005 oferece as capacidades que os
desenvolvedores precisam para acelerar o processo de desenvolvimento e manuteno de aplicaes
Windows existentes e da prxima gerao."
Alguns dos aprimoramentos mais significativos do Delphi 2005 so relacionadas abiaxo, permitindo-nos
uma melhor compreeno deste revolucionrio produto.
Suporta mulltiplas linguagens e SDKs Windows. Suportando desenvolvimento em Delphi e C#, possibilita
desenvolvimento Win32 e .NET nativo a partir da mesma ferramenta e da mesma linguagem (Delphi).
Tambm suporta ASP.NET, ADO.NET, VCL.NET e VCL para Win32.
Delphi Aplicado
Integra solues ALM plenamente, sendo projetado para oferecer aos desenvolvedores uma viso das
diversas fases do ciclo de desenvolvimento da aplicao com a integrao de StarTeam e Optimizeit. A
integrao do StarTeam visa simplificar o gerenciamento de recursos de cdigo-fonte e aprimorar a
comunicao da equipe, enquanto a incluso do Optimizeit Profiler para .NET ajuda a automatizar o teste
unitrio e melhorar a qualidade e o desempenho gerais da aplicao.
Implementa desenvolvimento MDA profissional, com ECO II do Delphi 2005 teremos uma soluo Model
Driven Architecture (MDA) rpida e de classe empresarial para .NET com o objetivo de acelerar o
desenvolvimento, aprimorar a qualidade e aumentar a capacidade de manuteno de aplicaes mais
complexas. ECO II uma soluo completa para esquematizar e criar objetos automaticamente e fornece
cache de objeto .NET altamente escalvel com capacidades avanadas de objeto, persistncia, verso e
tradues.
Delphi 2005 simplifica e acelera o desenvolvimento em Windows, incluindo muitos recursos com uma IDE
inovadora para ajudar a aprimorar a experincia adiquirida do desenvolvedor, aumentando sua
produtividade e otimizando todo o processo. Os recursos abrangem code refactoring avanado, Help
Insights e Error Insights, SyncEdit, Gerenciamento de Histrico e novos aperfeioamentos na linguagem
Delphi. Alm disso, um facilitador para ADO.NET foi projetado para acelerar e simplificar cada aspecto do
desenvolvimento de aplicaes .NET conectadas a bancos de dados com Delphi ou C#.
transparente, o compromisso da Borland em disponibilizar uma ferramenta, que integre todo o legado da
plataforma Win32, avanando substancialmente no sentido do desenvolvimento para .Net framework. Isto
um fator tranquilizador para quem necessite tomar deciso de desenvolver ou no para .Net neste momento,
no necessitando com isso ter que se manter numa verso do produto defazada com o tempo. Delphi 2005,
consegue com destreza, solucionar problemas no tocante a questes tcnicas, fornecendo um nico ambiente
para acomodar tais objetivos.
Pr-requisitos para instalar o Delphi 2005
Delphi Aplicado
Vamos criar nosso primeiro programa, clique em File New VCL Forms Application Delphi for
Win32
Delphi Aplicado
para
Exemplo 1
Exemplo 2
Exemplo 3
Delphi Aplicado
10
Clique no componente e
arraste-o para formulrio.
Delphi Aplicado
11
Programa pronto.
Delphi Aplicado
12
Outro exemplo:
Resultado:
Delphi Aplicado
13
R Introduo ao Delphi 6 / 7
Vamos criar um formulrio, por um boto e ao clicar neste boto mostar uma mensagem.
Abra o Delphi 6.0, ser mostrada a tela abaixo. ( File New Application ). padro ser aberto um
formulrio com nome Form1.
Insira um
componente Button no
formulrio ( Form1 ).
O boto que esta na
aba Standard.
Delphi Aplicado
14
O que um EVENTO ?
Agora definiremos o evento OnClick do
boto Mensagem.
Os programas feitos em Delphi so
orientados a eventos. Eventos so aes
normalmente geradas pelo usurio.
Existem eventos associados ao formulrio
e cada componente inserido neste. Neste
exemplo, programamos o evento
OnClick do boto do tipo Button, ou
seja, ao clicar no boto ser mostrada
uma mensagem.
Pressione F9 para rodar / executar o programa e ver seu resultado.
Aps clicar no
boto Button1
mostrar
mensagem.
Selecione o formulrio, clique no Object Inspector (no drop down ), veja o grfico abaixo, clique em
Form1.
" Existem duas coisas infinitas: o Universo e a tolice dos homens Albert Einstein "
Delphi Aplicado
15
Clique em Form1, ao lado, na propriedade Caption, onde mostra Form1 digite, por exemplo, Cadastro
de Clientes. Veja no exemplo abaixo a mudana, ao invs de Form1 mostra Cadastro de Clientes.
Clique no boto, na propriedade Caption digite Mensagem, role para baixo, na propriedade Name
digite But_Mens ( But para indicar que o boto do tipo Button e Mens a abreviao de Mensagem ).
O que uma PROPRIEDADE ?
Propriedades so caractersticas bsicas de um
componente. Cada componente Delphi possui
uma srie de propriedades com um valor default
(padro).
Perceba que no modelo aparecem algumas das
propriedades relativas a um Form, tais como
sua altura, fonte dos textos, estilo, cor, tipo de
cursor, etc., todas elas com um valor padro
includo pelo Delphi.
Delphi Aplicado
16
Veja abaixo cdigo fonte completo ... observe nomes dos objetos ...
Delphi Aplicado
17
Rode/execute o programa pressionando na tecla F9 e clique no boto Mensagem , ser mostrada uma
caixa de mensagem de texto com a mensagem Meu primeiro - Ol
Propriedades
primeira maneira
Na barra de ttulos do Delphi, clique em View, clique em Object Inspector ou pressione F11. Atravs dessa
janela que poderemos redefinir as diversas propriedades de qualquer componente do projeto. Perceba que
existem duas abas / guias (Tabs): uma para as propriedades ( properties ) e outra para os eventos ( events
).
Propriedades so caractersticas bsicas de um componente. Cada componente Delphi possui uma srie de
propriedades com um valor default (padro). Perceba que no modelo aparecem algumas das propriedades
relativas a um Form, tais como sua altura, fonte dos textos, estilo, cor, tipo de cursor, etc., todas elas com
um valor padro includo pelo Delphi.
Defina as seguintes propriedades na aba/guia Properties ( propriedades ) do formulrio abaixo: Clique em
Caption e ao lado digite Exemplo 1, clique na propriedade Name e digite Exemplo_Frm.
Delphi Aplicado
18
Insira um componente Label. Clique em Label, posicione o ponteiro do mouse sobre o formulrio e clique,
ser posto um Label no form.
Clique em Label1, pressione F11 ( propriedades ), na
propriedade Caption digite O Tempo Sbio, clique
em Color e defina a cor clBlue ( cl = Caption, l = label
), clique em +Font ( fonte ), Color = clYellow e Size
para 15, clique em +Style, clique em True em fsBold.
Propriedades
segunda maneira
Na segunda maneira veremos como definir as propriedades via cdigo. Esta forma mais trabalhosa, porm
o programador dever saber ou conhecer as vrias formas para resolver suas situaes. Insira um Button (
que est na aba Standard ) , pressione F11, clique na propriedade ( properties ) e escreva ao lado de
Caption o texto Mensagem, role barra de rolagem para baixo, clique na propriedade Name e defina o nome
But_Mens, insira um Label1
Delphi Aplicado
19
D um clique duplo sobre o boto Mensagem, para definir o evento OnClick ( ao clicar executar o evento,
a ao ), veja o cdigo abaixo:
Delphi Aplicado
20
Clique na aba Additional e note os respectivos componentes que pertencem a esta aba. Lembre-se, cada
componente possui suas prprias propriedades e seus respectivos eventos.
R O que so variveis ?
um local na memria do computador onde armazenamos temporariamente alguma informao para futura
reutilizao. Podemos ter diversos tipos de variveis de memria. O tipo da varivel define qual o tipo de
informao que iremos armazenar ( Ex: texto, numrica etc )
Tipos de Variveis
BOOLEAN
Tipo lgico que pode assumir somente os valores TRUE ou FALSE e ocupa 1 byte de
memria.
BYTE
Tipo numrico inteiro, pode assumir valores numa faixa de 0 a 255, ocupa 1 byte.
CHAR
COMP
Tipo numrico real, pode assumir valores na faixa de -9.2.10 -18 a 9.2.10+18 , ocupa 8
bytes, pode ter entre 19 e 20 algarismos significativos.
EXTENDED Tipo numrico real, pode assumir valores na faixa de -3,4.10-4932 a +1,1.10 +4932, ocupa 10
bytes de memria e tem entre 19 e 20 algarismos significativos.
INTEGER
Tipo numrico inteiro, pode assumir valores numa faixa de -32768 a +32767, ocupa 2
byte de memria.
LONGINT
Delphi Aplicado
21
REAL
Tipo numrico real, pode assumir valores na faixa de -2,9.10-39 a +1,7.10 +38, ocupa 6
bytes de memria e tem entre 11 e 12 algarismos significativos.
SHORTINT
Tipo numrico inteiro, pode assumir valores numa faixa de -128 a +127, ocupa 1byte de
memria.
SINGLE
Tipo numrico real, pode assumir valores numa faixa de -1,5.10-45 a +3,4.10+38, ocupa 4
bytes de memria, e tem de 7 a 8 algarismos significativos.
WORD
Tipo numrico inteiro, pode assumir valores numa faixa de 0 a 65535, ocupa 2bytes de
memria.
STRING
D um clique duplo sobre o boto Button1 e no evento OnClick digite as linhas de cdigo que esto na
pgina seguinte:
A palavra Imaginao ser
armazenada temporariamente dentro
da varivel do tipo Texto.
O nmero 13 ser armazenado dentro
da varivel do tipo Inteira.
Delphi Aplicado
22
Delphi Aplicado
23
R Constantes Tipadas
Na verdade, constantes tipadas so variveis inicializadas com valor persistente, que podem ser alteradas
normalmente, como qualquer varivel. A nica diferena de sintaxe entre constantes tipadas e simples que
o tipo da constante indicado explicitamente na declarao. Se uma constante tipada for declarada
localmente, ela no ser destruda quando o mtodo for encerrado. Para diferenciar das constantes normais,
costuma-se declarar estas com letras de caso varivel, como abaixo.
Delphi Aplicado
24
R If
( se )
Condio lgica. Se o contedo do Edit1 for igual ( = ) ao nmero 10 ser mostrado uma mensagem.
R If ... else
Delphi Aplicado
25
R IF
Quebra linha.
Delphi Aplicado
26
Ou
R Tags
Para cada boto ou dependendo do tipo de componente haver um tag.
No Tag 10, ao invs de digitar o valor 10,
digitei 11 para provocar o erro, veja o
resultado.
Delphi Aplicado
27
R Inc() e Dec()
Incrementando variveis e decremetando.
Delphi Aplicado
28
Ao clicar no X
ser solicitado
confirmao.
Delphi Aplicado
29
R Sender
Como podemos ver o mtodo BitBtn4 tem um ponteiro para o TObject chamado de Sender ( aquele que
envia, remetente, emissor ). Cada evento handler ( manipulador ) ter pelo menos um parmetro sender.
Quando for clicado neste evento ao clicar handler ( BitBtn4Click ) do evento OnClick ser chamado. O
parmetro Sender se refere ao controle que usado para chamar um mtodo.
Outro exemplo
Observe que
como est
sendo
chamado o
mesmo
evento.
Delphi Aplicado
30
R Subtraindo horas
Delphi Aplicado
31
R Variveis globais
Veremos como transportar variveis de um programa para outro, para isso teremos dois formulrios com
dois campos. No primeiro programa definiremos as variveis Nome e Idade, e nestas sero armazenados
dados para transportar para o formulrio 2.
Unit1 ( Programa 1 )
Delphi Aplicado
32
Unit2 ( Programa 2 )
Delphi Aplicado
33
Quando o ponteiro
do mouse estiver
parado sobre o
boto ser mostrada
descrio.
Delphi Aplicado
34
R O que so eventos ?
Eventos so acontecimentos provocados por aes do usurio que ocorrem quando um Form est ativo. Ns
podemos programar respostas a esses estmulos. Propriedades e Eventos esto disponveis para todos os
componentes visuais do Delphi. Mas quais so as propriedades e eventos que estaro disponveis?
Naturalmente, isso depender do tipo de controle que estamos utilizando.
Uma vez construdo um Form, para acessar as propriedades e eventos correspondentes a um determinado
componente, basta clicar sobre ele. Se o componente for o prprio Form, ser s clicar sobre qualquer rea
do Form (rea pontilhada).
Vamos criar uma situao em nosso projeto para exemplificar o uso dos eventos:
Salve o projeto, digite o nome Sis_Madrugadao, pressione F9 para executar / rodar o projeto / programa.
Aps clicar no boto Cadastro de
Clientes ser alterada a cor do fundo do
formulrio. O objetivo deste exemplo
mostrar como funciona o
evento OnClick.
Delphi Aplicado
35
Delphi Aplicado
36
Formulrio_Menu.Cor := recebe_cor
Delphi Aplicado
37
Sis_Aula.exe
Unit1.pas
Mdulo 1
Mdulo 3
Mdulo 2
CLIENTES
FORNECEDORES
TRANSPORTADORAS
clientes.pas
fornecedores.pas
transportadoras.pas
Unit2.pas
Unit3.pas
Unit4.pas
38
.dpr
.cfg
.dof
.pas
.dfm
.res
.opt
.~dp
.~pa
.~df
.dsk
Definio
Funo
Obs.: .~DF, .~PA , .~DP so arquivos de backup( Menu Options, Enviroment, Guia Editor Display, Caixa
de Grupo Display and file options, opo Create Backup Files, desativa o seu salvamento).
Devido
a
grande quantidade de arquivos de uma aplicao, cada projeto deve ser montado em um diretrio especfico.
.exe
.dcu
Definio
Funo
Obs.: Estes arquivos podem ser apagados para economizar espao em disco.
" Quando voc est namorando uma bela garota, uma hora parece um segundo. Quando voc se senta
numa brasa viva, um segundo parece uma hora. Isso relatividade. Albert Einstein "
Delphi Aplicado
39
Define o Projeto.
Clusula que inicia uma lista de outras unidades.
a unidade do Delphi que define a forma e os componentes do aplicativo.
A clausula indica ao compilador onde encontrar o arquivo Unit.
A unidade que voc criou.
Diretiva compiladora que inclui o arquivo de recursos.
Nesta divisria sero escritos os cdigos dos seus respectivos forms (Unit1 = Form1). Aqui sero definidos
os cdigos de cada procedimento dos componentes que voc colocar no form.
Seo Unit
Declara o nome da unit.
Seo Uses
Contm as units acessadas por este arquivo.
Seo Interface
Nesta seo esto as declaraes de constantes, tipos de variveis, funes e procedures gerais da
Unit/Form. As declaraes desta seo so visveis por qualquer Unit. Esta seo formada pelo seguinte
cdigo:
Interface: Palavra que inicia a seo;
Uses: Clusula que inicia uma lista de outras unidades compiladas (units) em que se baseia:
SysUtils Utilitrios do sistema (strings, data/hora, gerar arquivos).
WinProcs Acesso a GDI, USER e KERNEL do Windows.
Wintypes Tipos de dados e valores constantes.
Messages Constantes com os nmeros das mensagens do Windows e tipos de dados das Mensagens.
Classes
Elementos de baixo nvel do sistema de componentes.
Graphics Elementos grficos.
Controls Elementos de nvel mdio do sistema de componentes.
Forms
Componentes de forma e componentes invisveis de aplicativos.
Dialogs
Componentes de dilogo comuns.
Delphi Aplicado
40
Seo Type
Declara os tipos definidos pelo usurio. Subsees:
Private, declaraes privativas da Unit.
Public declaraes publicas da Unit.
Seo Var
Declara as variveis privadas utilizadas.
Seo Implementation
Contm os corpos das funes e procedures declaradas nas sees Interface e Type. Nesta seo tambm
esto definidos todos os procedimentos dos componentes que esto includos no Form. As declaraes desta
seo so visveis apenas por ela mesma. Esta seo formada pelo seguinte cdigo:
{$R*.DFM} Diretiva compiladora que inclui toda a interface, propriedades da forma e
arquivo *.DFM
componentes do
R O que so mtodos ?
So procedures ou funes embutidas nos componentes e formulrios, previamente definidas pelo Delphi.
Alguns mtodos so descritos a seguir:
Show
Hide
Print
SetFocus
BringtoFront
Mostra um formulrio;
Esconde um formulrio mais no o descarrega;
Imprime um formulrio na impressora;
Estabelece o foco para um formulrio ou componente;
Envia para frente.
" Grandes almas sempre encontraram forte oposio de mentes medocres Albert Einstein "
Delphi Aplicado
41
R O que so componentes ?
So elementos que j esto no Delphi prontos para serem utilizados e o programador definir suas
propriedades e eventos de acordo com sua necessidade ( o que so propriedades e eventos, veremos adiante
J ). Vamos inserir alguns botes e aps verificar a alterao que o Delphi far no cdigo fonte.
Abas de componentes.
Aba Additional
Para inserir um boto BitBtn:
Clique no boto OK e aps
clique no formulrio.
Poder ser definido um cone
para o boto na propriedade
Glyph.
Delphi Aplicado
42
Onde Tform1 o objeto Tform que contm o boto Bit_Sair, e Sender um objeto Tobject que
representa o componente que deu origem ao evento.
Se voc quiser inserir uma rotina que trate um determinado evento de um componente, faa o seguinte:
clique sobre o componente;
no Object Inspector, seleciona a pgina Events;
d um duplo clique sobre o evento para o qual quer inserir o cdigo;
entre no editor de cdigo e escreva as linhas de cdigo.
Exemplo:
Obs.: Escreva seu cdigo entre o begin e o end, se desejar retirar o evento e o componente, retire primeiro
os eventos do componente removendo somente o cdigo que voc digitou, aps o componente; o resto dos
procedimentos o DELPHI remover para voc.
" A palavra progresso no ter sentido enquanto houver crianas infelizes Albert Einstein "
Delphi Aplicado
43
Salve a unidade ( form ) com o nome de Clientes.pas, repita o processo da pgina anterior criando um
formulrio para Fornecedores.pas e Transportadoras.pas, tambm defina as propriedades Caption e
Name de cada um destes formulrios. At o momento nosso projeto possui quatro formulrios. Pressione
F12 para alternar entre os formulrios e o cdigo fonte.
Delphi Aplicado
44
Clique duplo sobre o boto Cadastro de Clientes, aps clique em File, Use Unit, selecione o formulrio
Clientes e clique OK. Para abrir todos os formulrios arraste o mouse marcando a lista da caixa abaixo e
clique OK.
Delphi Aplicado
45
Agora o formulrio
Clientes_Frm foi reconhecido
pela lista Ctrl + barra espao.
Com o ShowModal os controles ( foco ) so transferidos unicamente para tela Clientes, se for clicado no
boto Fornecedores, voc ouvir apenas um bip e no ter acesso.
Com o Show, poder ser clicado no formulrio Menu ou em Clientes.
Delphi Aplicado
46
Aps clicado em
Abrir , clique no
boto OK.
Delphi Aplicado
47
cone
definido.
Clique no formulrio corrente, selecione a
propriedade Icon do formulrio, clique nos trs
pontinhos [...], ser aberta uma tela, clique no
boto Load, informe o caminho onde esto os
arquivos do tipo cone ( .ico ), clique em abrir,
escolha o arquivo do tipo .ico e clique ok
Delphi Aplicado
48
DATABASE DESKTOP 7
um utilitrio onde ser criado a base de dados (tabelas - nomes dos campos, tamanhos
dos campos, ndices etc).
Introduo
O BDE um ncleo de Banco de Dados que fornece a capacidade de acesso a banco de
dados para os softwares Delphi, Paradox, dBase e C++, oferecendo um grande conjunto de
caractersticas previamente testadas para auxiliar desenvolvedores de aplicaes ClienteServidor.
Alm de fornecer utilitrios para acessar bancos de dados de maneira compartilhada, o BDE
inclui um conjunto de fontes de dados para acessar bases Paradox, dBase e arquivos texto.
Tambm possvel acessar qualquer banco de dados padro ODBC ou, atravs de SQL
Links, acessar diretamente Interbase, Oracle, Sybase e MS-SQL Server.
O BDE tambm composto de um conjunto de funes que compe uma API (Interface para
Programao de Aplicaes) que permite os desenvolvedores acessarem diretamente esses
bancos de dados.
"A vida maravilhosa se no se tem medo dela - Charles Chaplin
Delphi Aplicado
49
Para criar um banco de dados novo, normalmente, necessrio dispor de alguma ferramenta do
prprio banco de dados, como o Access, mas se a base de dados for Paradox, ou dBase, voc
pode usar o Database Desktop, um utilitrio que vem com o Delphi e permite a criao desses
tipos de bancos de dados.
Database Desktop
Fornece uma interface simples e completa para configurao, definio e manipulao de tabelas
de bancos de dados Paradox e dBase. Alm disso na Opo Tools/Alias Manager voc pode
configurar seu banco de dados, como ser lembrado logo adiante.
Tabelas Paradox
Para criar tabelas Paradox, siga os passos abaixo. Voc deve salvar as tabelas de um mesmo banco de dados na
mesma pasta, pois o Paradox trata a pasta onde esto as tabelas como sendo o banco de dados.
Clique em File/New/Table
Escolha o tipo da nova tabela, Paradox 7
Aparece uma janela para que voc defina a estrutura de campos, ndices e demais opes necessrias na
criao da tabela
Em Field Name, voc escolhe o nome do campo, com at 25 caracteres
Em Type, o Tipo do campo, com a barra de espao ou o boto direito do mouse voc pode escolher o tipo a
partir de uma lista
Size o tamanho do campo, usado somente em alguns tipos de campos
Key especifica os campos que faro parte da chave primria, que no pode se repetir e deve ser composta pelos
primeiros campos da tabela
Table Properties
Em Table Properties voc define os vrios aspectos de configurao da tabela. Muitas dessas opes podem ser
implementadas no Delphi e vrios programadores preferem no us-las no Database Desktop.
Opo
Validity Checks
Table Lookup
Secondary Indexes
Referential Integrity
Password Security
Table Language
Dependent Tables
Descrio
Validaes para os campos, como obrigatoriedade, valor mnimo e mximo
Indica que o valor atribudo a um determinado campo tem que estar gravado em outra tabela
Cria ndices secundrios
Cria integridade referencial, geralmente utilizada em relacionamentos de 1 para N.
Permite a criao de senhas, protegendo a tabela de acesso no autorizado
Especificar o driver de lngua utilizado pela tabela, geralmente o Pdox ANSI Intl850
Mostra todas as tabela dependentes atravs da integridade referencial
Tipos de Campos
Os principais tipos de campos so mostrados abaixo, mas existem outros alm desses. Os tamanhos marcados com
asterisco indicam que o campo pode guardar tamanhos maiores que os informados, o que ultrapassar o tamanho
ser guardado em um arquivo externo com a extenso MB.
Tipo
A
N
$
S
I
D
T
@
M
G
L
+
Descrio
Alfanumrico
Numrico
Monetrio
Short Integer
Long Integer
Data
Hora
Data e Hora de modificao
Memo
Grfico
Lgico
Autoincremental
Faixa
10
Tamanho
1-255
308
32767
2147483648
1-240*
1-240*
True/False
1-2147483648
Configurao
Para configurar o acesso a um banco de dados, voc tem vrias opes, criar um Alias, usar o
componente TDatabase ou os dois juntos.
Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com )
50
Aliases
Um Alias um nome lgico, um atalho para um banco de dados. Todo o trabalho do Delphi com
um banco de dados pode ser feito baseado no Alias, de forma que para mudar de banco de
dados, s necessrio mudar o Alias. Para criar um Alias voc pode usar Database Explorer, o
BDE Administrator ou o prprio Database Desktop.
Database Explorer
Pode aparecer com os nomes Database Explorer ou SQL Explorer. Nele voc pode manipular os
Aliases, navegar pelas estruturas dos bancos de dados, alterar os dados das tabelas e executar
comandos SQL.
Para criar um Alias selecione o item Databases, clique em Object/New, escolha o tipo do banco
de dados, ou Standard para dBase, Paradox e arquivos texto, depois digite um nome do Alias,
esse nome ser usado pelo Delphi quando voc quiser acessar o banco de dados, finalmente
defina as propriedades do banco de dados na seo Definition, cada banco de dados ter suas
prprias definies.
BDE Administrator
Com o BDE Administrator voc pode alterar a configurao da BDE, por exemplo em
Configuration/System/Init voc tem a propriedade Local Share que deve ser setada para True,
quando voc quiser que a base de dados seja compartilhada em uma rede. Alm disso, voc
pode criar Aliases, como no Database Explorer.
TDatabase
Descrio
Nome do Alias do banco de dados, usado quando voc criar um Alias da BDE
Define se a conexo com o banco de dados est ativa
Nome do Alias local a ser usado pelos outros componentes do Delphi
Nmero de DataSets (Tabelas) abertos no banco de dados
Lista com os DataSets abertos
Driver usado para criar um Alias local, automaticamente cancela a propriedade AliasName
Define se o Database est em transao
Define se a conexo com o banco de dados ser mantida, mesmo sem DataSets abertos
Define se ser mostrado o quadro de login padro da BDE
Parmetros do banco de dados, com itens semelhantes seo Definition do Database Explorer
Nvel de isolamento da transao, define como uma transao ir enxergar outra
Descrio
Encerra a conexo com o banco de dados, todos os DataSets sero fechados
Fecha todos os DataSets abertos, mas a conexo no encerrada
Grava alteraes feitas durante a transao
Abre a conexo com o banco de dados
Anula todas as alteraes feitas durante a transao
Inicia uma transao
Descrio
Evento usado quando voc quiser escrever seu prprio mtodo de conexo com o banco de dados
Delphi Aplicado
51
Para acessar uma base de dados Access, voc poderia usar os valores mostrados na descrio
textual a seguir.
AliasName
DatabaseName
LoginPrompt
KeepConnection
Params.Strings
'USER NAME
'LANGDRIVER
= 'Clientes'
= 'Dados'
= False
= True
= ( 'DATABASE NAME=C:\Meus Documentos\Clientes.mdb'
= Fritz' 'OPEN MODE = READ/WRITE'
= intl850' 'PASSWORD = secreto5')
Para ajudar a preencher os parmetros de um Database, clique duas vezes sobre o componente
e clique em Defaults, todos os parmetros defaults sero apresentados. Para acessar uma base
Paradox, use as propriedades abaixo, note que para o Paradox, a nica informao realmente
significante o Path, a pasta onde esto as tabelas.
AliasName
DatabaseName
LoginPrompt
KeepConnection
Params.Strings
= 'DBDEMOS'
= 'Dados'
= False
= True
= ('PATH=d:\Borland\Delphi 5\Demos\Data' 'ENABLE BCD = FALSE'
'DEFAULT DRIVER = PARADOX')
Aps a criao do Alias da BDE ou do Alias local, usando o componente TDatabase, o banco de
dados est configurado e pronto para ser usado.
Database Form Wizard
Aps a configurao do banco de dados, a maneira mais rpida, de se fazer uma janela de
manuteno de dados atravs do Form Wizard no menu Database. Ao chegar no Wizard so
feitas uma srie de perguntas que podem resultar em uma janela simples ou Mestre/Detalhe. O
acesso ao banco de dados pode ser feito atravs de componentes TTable ou atravs de SQL,
com o componente TQuery, usaremos o componente TTable. Todos os campos selecionados
aparecem na janela permitindo entrada de dados atravs de componentes do tipo TDBEdit.
Cada DBEdit recebe um Label baseado no nome do campo na tabela selecionada. Na Janela
includo tambm um componente para permitir a navegao e a manuteno dos dados, um
DBNavigator. O componente utilizado para fazer a ligao entre os componentes visuais e o
TTable um TDataSource. Geralmente os componentes TTable e TDataSource so inseridos
em DataModules, que so a base para a criao de classes de dados. Sempre Aps usar o
Wizard, lembre-se de mudar os nomes dos componentes, para que fiquem mais claros.
DB
TDatabase
TTable
DatabaseName
DatabaseName
DataSet
TDataSource
TDBEdit
DataSource
Para concluir, acompanhe abaixo os passos realizados pelo Wizard e tente voc mesmo criar seu prprio Form.
No Table Coloque em DatabaseName o nome do Alias criado pela propriedade DatabaseName do Database e
em TableName, o nome da tabela
Delphi Aplicado
52
No Form, para definir a interface com o usurio, use os componentes de controle de dados que esto na pgina
DataControls, basicamente DBEdit e DBNavigator
Para poder acessar os dados, coloque a Unit onde est o DataModule no uses da Unit do Form
Em todos os componentes DataControls, escolha na propriedade DataSource, o componente DataSource criado
no DataModule
Em alguns controles, como no DBEdit, deve ser especificado tambm o campo da tabela, na propriedade
DataField
Seguindo esses passos, o Form estar pronto para usar. Mais adiante, veremos uma forma mais
rpida de se criar um Form de manuteno, mas o mais importante compreender os passos
mostrados acima, com todos os componentes e propriedades envolvidas. Vamos detalhar agora
cada um dos componentes envolvidos nesse processo, para compreendermos melhor o que est
acontecendo.
TDataModule
Componente usado para acessar uma tabela em um banco de dados. Esse componente o mais
importante quando acessamos bases de dados Desktop. Muitas dos itens mostrados abaixo esto
definidos na classe TDataSet, ancestral do TTable.
Propriedades
Active
BOF
CanModify
DatabaseName
EOF
Exclusive
FieldCount
FieldDefs
Fields
Filter
Filtered
IndexFieldNames
IndexName
IndexDefs
MasterFields
MasterSource
Modified
ReadOnly
RecNo
RecordCount
State
TableName
TableType
Descrio
Define se a tabela esta aberta ou fechada.
Informa se est no incio da tabela.
Define se a aplicao pode inserir, deletar ou alterar registros.
Nome do banco de dados onde est a tabela, deve ser escolhido um Alias, que pode ser local.
Informa se est no fim da tabela.
Define se a tabela pode ser compartilhada por outro usurio.
Nmero de campos da tabela.
Lista com a Definio dos campos da tabela.
Lista de objetos do tipo TField, que representam os campos da tabela.
String com uma condio de filtragem.
Define se a tabela filtrada.
Nome dos campo de ndice, usados para ordenar os registros da tabela.
Nome do ndice atual, vazia quando o ndice for a chave primria.
Lista com a definio dos ndices.
Campos usados no relacionamento com a tabela mestre.
DataSource da tabela mestre em uma relao Mestre/Detalhe.
Define se o registro atual foi modificado.
Define se a tabela somente para leitura.
Nmero do registro atual.
Nmero de registros.
Estado da tabela.
Nome da tabela.
Tipo da tabela.
Delphi Aplicado
53
Mtodo
AddIndex
Append
AppendRecord
Cancel
Close
CreateTable
Delete
DeleteIndex
DeleteTable
DisableControls
Edit
EmptyTable
EnableControls
FieldByName
FindKey
FindNearest
First
Insert
InsertRecord
IsEmpty
Last
Locate
LockTable
Lookup
MoveBy
Next
Open
Post
Prior
Refresh
RenameTable
UnlockTable
Descrio
Cria um novo ndice, a tabela deve ser exclusiva.
Entra em modo de insero e, ao gravar, o registro ser colocado no fim do arquivo.
Insere um registro no final do arquivo atravs de cdigo.
Cancela as alteraes feitas no registro atual.
Fecha a tabela.
Cria uma tabela, depende de FieldDefs e IndexDefs.
Exclui o registro corrente.
Exclui um ndice.
Exclui a tabela.
Desabilita a atualizao dos controles visuais.
Permite a alterao dos campos do registro atual.
Apaga todos os registro da tabela, para isso a tabela no pode esta sendo compartilhada.
Habilita os controles visuais.
Acessa um campo, do tipo TField, pelo nome.
Procura o registro com os valores exatos aos dos parmetros nos campos do ndice atual.
Procura o registro com os valores mais aproximados aos dos parmetros nos ndices.
Move para o primeiro registro.
Entra em modo de insero de um novo registro na posio atual.
Adiciona um novo registro, j com os dados, na posio atual.
Define se a tabela est vazia.
Move para o ltimo registro.
Procura um registro, usando ou no ndices, de acordo com a disponibilidade.
Trava a tabela.
Procura um registro e retorna valores dos campos deste.
Move um nmero especfico de registros.
Move para o prximo registro.
Abre a tabela.
Grava as alteraes no registro atual.
Move para o primeiro registro.
Atualiza a tabela com os dados j gravados.
Renomeia a tabela.
Destrava a tabela.
Evento
AfterCancel
AfterClose
AfterDelete
AfterEdit
AfterInsert
AfterOpen
AfterPost
AfterScroll
BeforeCancel
BeforeClose
BeforeDelete
BeforeEdit
BeforeInsert
BeforeOpen
BeforePost
BeforeScroll
OnCalcFields
OnDeleteError
OnEditError
OnFilterRecord
OnNewRecord
OnPostError
Descrio
Aps do mtodo Cancel.
Aps o fechamento da tabela.
Aps do mtodo Delete.
Aps do mtodo Edit.
Aps do mtodo Insert.
Aps do mtodo Open.
Aps do mtodo Post.
Aps mudar de registro.
Antes do mtodo Cancel.
Antes do fechamento da tabela.
Antes do mtodo Delete.
Antes do mtodo Edit.
Antes do mtodo Insert.
Antes do mtodo Open.
Antes do mtodo Post.
Antes de mudar o registro.
Evento usado para calcular os valores dos campos calculados.
Quando ocorre um erro ao chamar o mtodo Delete.
Quando ocorre um erro ao chamar o mtodo Edit.
Evento usado com filtragem varivel.
Quando a tabela entra em modo de insero, no deixa Modified igual a True.
Quando ocorre um erro ao chamar o mtodo Post.
Filtros
Usando o Filter, voc pode filtrar os registro de uma tabela usando uma expresso lgica, como
nos exemplos abaixo. Para tornar um filtro ativo, basta colocar Filtered igual a True.
Delphi Aplicado
54
Contudo, se a condio de filtragem for muito varivel, prefervel usar um cdigo como o
mostrado abaixo no evento OnFilterRecord da Table, para fazer uma filtragem dinmica, com a
propriedade Filter vazia e Filtered igual a True.
Ao filtrar uma tabela, a propriedade RecordCount da Table, s mostra o nmero de registros que
satisfazem ao filtro, como se os outros registros nao existissem.
Alterando Registros
Para alterar registros em cdigo, colocamos a tabela em modo de edio, alteramos o valor dos
campos e gravamos as alteraes, se for necessrio.
Inserindo Registros
Para inserir registros em cdigo voc pode usar os mtodos AppendRecord e InsertRecord, caso
voc no precise de algum campo, mesmo assim ele deve ser informado com o valor Null.
Localizando Registros
Para localizar registros voc pode usar vrios mtodos, mas o melhor deles o Locate, no
exemplo abaixo feita uma pesquisa exata.
Voc tambm pode fazer uma pesquisa parcial e/ou sem sensitividade de caso usando o terceiro
parmetro, que um conjunto de opes.
Se voc precisar fazer uma pesquisa por mais de um campo, separe os nomes dos campos por
ponto e vrgula e use a funo VarArrayOf para criar um array com os valores que voc quer
procurar.
Caso os campos pesquisados sejam indexados, a pesquisa ser muito mais eficiente, seno ser
criado um filtro temporrio da BDE para localizar os registros.
Indexao
A indexao usada para ordenar os registros da tabela, para isso voc deve escolher os
campos pelos quais voc quer ordenar na propriedade IndexFieldNames, inclusive em cdigo,
como mostrado abaixo, todos campos devem ser indexados e separados por ponto e vrgula.
Delphi Aplicado
55
Estados da Tabela
A propriedade State determina o estado das tabelas, os principais estados so demonstrados
abaixo, veja como os mtodos mudam o estado.
Post
Cancel
Delete
Insert
Append
dsInsert
dsBrowse
Post
Cancel
Delete
dsEdit
Edit
Verificando Alteraes
Onde for necessrio a verificao de alteraes feitas em uma Tabela, por exemplo no evento OnClose de
um Form de manuteno, voc pode usar a propriedade Modified, como mostrado no exemplo abaixo.
Valores Default
Caso voc queira especificar valores Default para os campos de uma tabela, use o evento
OnNewRecord, pois nesse evento o registro no marcado como modificado.
Delphi Aplicado
56
Mestre/Detalhe
Nos relacionamentos de 1 para N, uma tabela pode estar ligada a outra em uma relao Mestre/Detalhe, nesse tipo
de relao os registros da tabela de ordem N so filtrados pelo campo de relacionamento com a tabela de ordem 1.
Por exemplo, se o relacionamento de Clientes com Pedidos for mestre/detalhe, s sero acessados em pedidos, os
registros cujo campo CodCli seja igual ao CodCli da tabela de Clientes.
Para fazer esse tipo de relacionamento, siga os passos abaixo.
Em MasterFields, chame o Fields Links Designer e escolha os campos de ligao das tabelas, no caso, CodCli
para as duas tabelas
Fields Editor
Para criar objetos para os campos de uma tabela clique duas vezes no componente TTable ou
escolha Fields Editor no seu menu de contexto, na janela do Fields Editor, clique com o boto
direito do mouse e escolha Add, na janela Add Fields, escolha os campos que voc vai querer
usar e clique em Ok.
No Fields Editor podemos tambm remover os campos criados, alterar sua ordem de
apresentao e usar suas propriedades e eventos no Object Inspector. Para cada campo criado
um objeto de um tipo descendente de TField, como TStringField, TIntegerField, TFloatField. As
principais propriedades dos objetos TField esto listadas na tabela abaixo.
Se voc no criar nenhum objeto TField, todos os campos da tabela estaro disponveis, mas
caso voc crie algum, somente os campos que voc criar estaro disponveis.
Se voc selecionar os campos no Fields Editor e arrastar para o Form, sero criados os controles
visuais para esses campos, Label, DBEdit e outros, mas antes coloque a descrio dos campos
na propriedade DisplayLabel.
TField
A classe TField usada como ancestral para todos as classes dos campos. Geralmente iremos
usar objetos de classes descendentes de TField, mas em todos eles podemos encontrar os itens
mostrados abaixo.
Propriedades
Alignment
AsBoolean
AsCurrency
AsDateTime
AsFloat
AsInteger
AsString
AsVariant
Calculated
CanModify
ConstraintErrorMessage
CustomConstraint
DataSet
DataSize
DataType
DefaultExpression
DisplayLabel
DisplayText
DisplayWidth
EditMask
FieldKind
FieldName
FieldNo
Index
IsIndexField
Delphi Aplicado
Descrio
Alinhamento do texto do campo nos controles visuais.
Valor do campo convertido para Boolean.
Valor do campo convertido para Currency.
Valor do campo convertido para DataTime.
Valor do campo convertido para Doubl.
Valor do campo convertido para Integer.
Valor do campo convertido para string.
Valor do campo convertido para Variant.
Indica se o campo calculado em tempo de execuo.
Indica se um campo pode ser modificado.
Mensagem de erro se a condio de CustomConstraint no for satisfeita.
Condio de validao do campo.
DataSet onde est o campo.
Tamanho do campo, em Bytes.
Propriedade do tipo TFieldType, que indica o tipo do campo.
Expresso com valor Default do campo para novos registros.
Ttulo a ser exibido para o campo.
Texto exibido nos controles visuais associados ao campo.
Nmero de caracteres que deve ser usado para mostrar o campo no controles visuais.
Mscara de edio do campo.
Propriedade do tipo TFieldKind que indica o tipo do campo, como Calculado ou Lookup.
Nome do campo na tabela.
Posio fsica do campo na tabela.
Posio do campo nos controles visuais.
Indica se um campo vlido para ser usado como ndice.
57
IsNull
KeyFields
Lookup
LookupCache
LookupDataSet
LookupKeyFields
LookupResultField
ReadOnly
Required
Size
Text
Value
Visible
Esto listadas abaixo algumas classes que realmente iremos manipular no tratamento dos
campos de uma tabela, so classes descendentes de TField.
TStringField
TSmallintField
TFloatField
TCurrencyField
TBooleanField
TDateField
TBlobField
TIntegerField
TWordField
TAutoIncField
TBCDField
TDateTimeField
TTimeField
TBytesField
TVarBytesField
TGraphicField
TMemoField
Em alguns desses campos voc pode encontrar as propriedades mostradas abaixo, que no
esto presentes em TField.
Propriedades
MaxValue
MinValue
DisplayFormat
EditFormat
Currency
DisplayValues
Mtodos
LoadFromFile
SaveToFile
Descrio
Valor mximo para o campo.
Valor mnimo para campo.
Formato de apresentao do campo, como ,0.00 % ou ,0.## Km .
Formato de edio do campo.
Define se um campo monetrio.
Usado com campos Boolean, define o texto para True e False, como Sim;No.
Descrio
Carrega o contedo do campo de um arquivo.
Salva o contedo do campo para um arquivo.
Para acessar os campo de uma tabela, existem vrias abordagens, como mostrado abaixo..
Usando o objeto TField ligado ao campo.
Converso de Tipos
A converso de tipo de um campo pode ser feita atravs as propriedades tipo As..., como AsString.
Delphi Aplicado
58
Validao
Para validar os valores de um campo, voc pode usar a propriedade CustomConstraint, por exemplo para
garantir que a quantidade de um item seja maior que zero, use em CustomConstraint Quantidade > 0, e em
CustomConstraint coloque a mensagem para o usurio caso a condio seja falsa. Outra forma, mais
flexvel, usando o evento OnValidate, com um cdigo como abaixo, onde gerada uma exceo para
cancelar a atribuio do valor ao campo.
Formatao Personalizada
Caso queira fazer uma formatao personalizada do campo, pode usar os eventos OnGetText e OnSetText.
Por exemplo, se tiver um campo Estado, e quiser que quando o valor do campo for C fosse mostrado Casado
e S, Solteiro, no evento OnGetText use um cdigo como o abaixo.
Como controle visual para o usurio escolher o valor do campo, voc poderia usar o DBComboBox, com
Solteiro e Casado na propriedade Items, e no evento OnGetText do campo o cdigo mostrado abaixo.
Campos Calculados
Para criar campos calculados, clique com o direito no Fields Editor e escolha New Field, no quadro
NewField, digite o nome do campo, o nome do objeto ser automaticamente informado, o tipo do campo,
seu tamanho e escolha Calculated em Field type. Para colocar um valor nesse campo usaremos o evento
OnCalcFields do componente TTable, em nenhuma outra parte os valores desses campos podem ser
alterados. O cdigo do evento OnCalcFields deve ser enxuto, pois este chamado vrias vezes durante a
edio de um registro e um procedimento pesado pode comprometer a performance do sistema.
Delphi Aplicado
59
R O que BDE ?
O Borland Database Engine o corao do Delphi e suas aplicaes com banco de dados usando o mesmo
database engine usado pelo Paradox e dBase. Paradox e dBase claro trazem capacidades adicionais alm
do database engine (como o Delphi tambm o faz), mas isso longe de dizer que o valor agregado destes
recursos adicionais maior de 2 % das capacidades - os outros 98% so providos pelo database engine e
esto disponveis para todos os usurios deste engine. O Borland Database Engine (BDE) uma coleo de
DLLs que as aplicaes de banco de dados iro fazer chamadas. Cada estao de trabalho que tiver a
aplicao de banco de dados instalada dever ter, tambm, o BDE instalado ( o Delphi vem com a instalao
do BDE para voc adicionar a sua aplicao). O BDE permite a voc usar tabelas dBase, Paradox ou ODBC
em modo multi-usurio. A verso Cliente/Servidor do Delphi tambm vem com links para servidores de
banco de dados como Oracle, Sybase, MS SQL Server, Informix, e InterBase.
Arquitetura do Banco de Dados do Delphi
Delphi Aplicado
60
Delphi Aplicado
61
Estados do DataSet
Estado Descrio
dsInactive O Dataset esta fechado.
Estado de Espera. O estado default quando um dataset aberto. Registros pode ser
dsBrowse
visualizados mas no mudados ou inseridos.
dsEdit Habilita o a linha corrente para ser editada.
dsInsert Habilita uma nova linha para ser inserida. Uma chamada para o Post inserir a nova linha.
Habilita FindKey, GotoKey, and GoToNearest para procurar valores nas tabelas do banco de
dsSetKey dados. Estes mtodos somente pertencem para o componente TTable. Para TQuery, a procura
feita com a syntax do SQL.
Modo quando os OnCalcFields executado; previne qualquer mudana para outros campos
dsCalcFields
ou campos calculados. Raramente usado explicitamente.
Descrio
Move o cursor para a primeira linha em um dataset.
Move o cursor para a ultima linha em um dataset.
Move o cursor para a prxima linha em um dataset.
Move o cursor linha anterior em um dataset.
True quando o cursor est no incio do dataset, em outro caso false.
True quando o cursor est no final do dataset, em outro caso false.
Exemplo:
Table1.Last; // Move o cursor para o ltimo registro da tabela
62
Digite o nome do
campo.
Informe o tipo do campo.
Pressione na barra de
espao para ver a lista de
tipos de campos.
Informe o tamanho do
campo.
Delphi Aplicado
63
Delphi Aplicado
64
Define o
tamanho do
campo.
novamente.
Field Name:
Informe o nome do campo. Se preferir abrevie o nome, no acentue nomes dos campos.
Ex: (Cdigo, Nmero = Codigo, Numero).
Sugesto:Ex. Clie_Codigo, Clie_Nome, Clie_Fone, Clie_Fax ... assim ser fcil para identificar a tabela e
o nome do campo. J
Type:
Tipo de campo aceito. Informe a letra do tipo de campo. Para ver tipos pressione na barra de espao o Delphi
abrir um drop-down, veja abaixo: Ex. A para Ascii ou N para Numrico.
Table Properties
Em Table Properties voc define os vrios aspectos de configurao da tabela. Muitas dessas opes podem ser
implementadas no Delphi e vrios programadores preferem no us-las no Database Desktop.
Opo
Validity Checks
Table Lookup
Secondary Indexes
Referential Integrity
Password Security
Table Language
Dependent Tables
Descrio
Validaes para os campos, como obrigatoriedade, valor mnimo e mximo.
Indica que o valor atribudo a um determinado campo tem que estar gravado em outra tabela.
Cria ndices secundrios.
Cria integridade referencial, geralmente utilizada em relacionamentos de 1 para N.
Permite a criao de senhas, protegendo a tabela de acesso no autorizado.
Especificar o driver de lngua utilizado pela tabela, geralmente o Pdox ANSI Intl850.
Mostra todas as tabela dependentes atravs da integridade referencial.
Delphi Aplicado
65
Delphi Aplicado
66
Dentro da sub-pasta
dados estaro todas
as tabelas.
Delphi Aplicado
67
Criando ndice
secundrio:
Aps clicado em
Secondary Indexes, clique
no campo Clie_Nome ,
clique na setinha preta
apontando para direita,
clique OK, ser aberta uma
caixa de texto, digite Inome.
A letra I no incio do
campo significa ndice,
nome, porque o ndice ser
para o campo nome.
Delphi Aplicado
68
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.
Grava o Alias
Delphi Aplicado
69
Com utilitrio SQL Explorer podemos tambm visualizar mais informaes sobre as tabelas:
Para acessar este recurso, localize no menu da barra de ttulos do
Delphi, clique na opo Database e clique em Explore ser aberta a
tela abaixo.
Delphi Aplicado
70
Com o SQL Explorer possvel visualizar todos os campos da tabela, campos ndices, campos que
compem os ndices, tipo de drive da tabela ( Paradox ) etc.
Delphi Aplicado
71
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
Listar os campos ( Clie_Nome e Clie_Cidade ) da tabela Clientes que possua o cdigo 3 ( ou, Cidade igual a Timb ).
Delphi Aplicado
72
Selecione o Alias
Madruga e clique
na tabela Clientes
para gerar o
formulrio de
entreda de dados.
Selecione os
campos para
serem exibidos
no formulrio.
Delphi Aplicado
73
A disposio dos
campos ser feita
horizontalmente.
H 3 maneiras:
Horizontal, Vertical
ou em uma grade de
dados.
O formulrio est pronto para entrada de dados, possui navegador de registros que faz as operaes bsicas
de incluso, alterao, consulta e deleo de registros. Para rodar o programa pressione F9.
uAltere as
propriedades Name dos
dois componentes:
Table1 para
Clientes_TB e
DataSource para
Clientes_DS.
74
Aponte o caminho
onde esto os
arquivos do seu
projeto.
Sistema organizado
Arquivos da pasta Bin, executvel ( .exe ) , arquivo de projeto ( .dpr ), compilados ( .dcu )
Delphi Aplicado
75
Formulrio
Propriedade Caption:
Propriedade Name:
Table
Delphi Aplicado
76
Propriedade Name
DataSource
Propriedade DataSet
Propriedade Name
R Senha
O usurio ter 3 chances, caso no digitar a senha correta nas 3 primeira tentativas o programa fechar.
Delphi Aplicado
77
Digite as
descries
abaixo.
De ... para
Aps traduzido todas as descries selecione a propriedade do navegador de dados chamada ShowHint,
defina o valor para True ( para mostrar as descries ).
Delphi Aplicado
78
Selecionei
apenas 3
campos.
Veja abaixo, formulrio relatrio que foi criado pelo New Report Wizard.
Clique no formulrio do relatrio, clique em Properties ( F11 ), clique em Caption e digite ao lado
Relatrio de Clientes, clique na propriedade Name e digite QuickRep1, salve o relatrio com o nome de
Rel_Clientes2.pas
Delphi Aplicado
79
Caso no tenha um formulrio insira um novo, para isto clique no cone Form, insira tambm um boto
do tipo BitBtn.
Delphi Aplicado
80
2 forma:
Clique no campo Edit1, clique na aba Events, d um clique duplo no evento OnExit e digite o cdigo a
seguir. Ser verificado se a digitao Vectra ou VITARA:
Edit1
3 forma:
3 forma:
Neste caso estamos usando uma tabela de dados. Clique no componente Table1, clique na aba Events, d
um clique duplo no evento BeforePost, digite o cdigo abaixo. Ao tentar gravar o registro e se o contedo
do campo Nome for branco/vazio, ser mostrado uma mensagem de erro, forando digitao de algo.
Adiciona form.
Delphi Aplicado
Remove form.
81
Clique no compenente Clientes_TB, clique no evento BeforePost ( antes de gravar ) e digite o cdigo
mostrado abaixo. Ateno: O registro ser validado antes de gravar na tabela.
Delphi Aplicado
82
telefone
Delphi Aplicado
83
R Formatadores de campos
Use a propriedade EditMak com os caracteres restritos que esto abaixo para formatar campos. Este recurso
valida a entrada do caracter digitado no campo formatado.
Caracter
!
>
<
\
l (L minusculo)
L
a
A
9
0
c
C
#
:
/
Descrio
Espaos em branco no aparecero
Todos os caracteres seguintes sero maisculos at que aparea o caracter
Todos os caracteres seguintes sero minsculos at que aparea o caracter
Indica um caracter literal
Somente caracter alfabtico
Obrigatoriamente um caracter alfabtico (A-Z, a-z)
Somente caracter alfanumrico
Obrigatoriamente caractere alfanumrico ( A-Z, a-z, 0-9)
Somente caracter numrico
Obrigatoriamente caracter numrico
permite um caracter
Obrigatoriamente um caracter
Permite um caracter numrico ou sinal de mais ou de menos, mas no os requer.
Separador de horas, minutos e segundos
Separador de dias, meses e anos
Clique no campo Data que j foi definido uma mscara de data ( veja pgina anterior ), clique no evento
OnExit e digite o cdigo abaixo. Ao sair do campo data mostrar uma mensagem.
Delphi Aplicado
84
O tratamento de exceo um mecanismo capaz de dar robustez a uma aplicao, permitindo que os erros
sejam manipulados de uma maneira consistente e fazendo com que a aplicao possa se recuperar de erros,
se possvel, ou finalizar a execuo quando necessrio, sem perda de dados ou recursos. Para que uma
aplicao seja segura, seu cdigo necessita reconhecer uma exceo quando esta ocorrer e responder
adequadamente a essa exceo. Se no houver tratamento para uma exceo, ser exibida uma mensagem
padro descrevendo o erro e todos os processamentos pendentes no sero executados. Uma exceo deve
ser respondida sempre que houver perigo de perda de dados ou de recursos do sistema.
Excees
Excees so classes definidas pelo Delphi para o tratamento de erros. Quando uma exceo criada, todos
os procedimentos pendentes so cancelados e, geralmente mostrada uma mensagem de erro para o usurio.
As mensagens padro nem sempre so claras, por isso indicado criar seus prprios blocos protegidos.
Blocos Protegidos
Algumas vezes voc pode precisar especificar quais excees quer tratar, como mostrado abaixo.
Principais Excees
O Delphi define muitas excees, para cada erro existe uma exceo correspondente.
Classe
Exception
EAbort
EAccessViolation
EConvertError
EDivByZero
EInOutError
EIntOverFlow
EInvalidCast
EInvalidOp
EOutOfMemory
EOverflow
ERangeError
EUnderflow
EVariantError
EZeroDivide
EDatabaseError
EDBEngineError
Descrio
Exceo genrica, usada apenas como ancestral de todas as outras excees
Exceo silenciosa, pode ser gerada pelo procedimento Abort e no mostra nenhuma mensagem
Acesso invlido memria, geralmente ocorre com objetos no inicializados
Erro de converso de tipos
Diviso de inteiro por zero
Erro de Entrada ou Sada reportado pelo sistema operacional
Resultado de um clculo inteiro excedeu o limite
TypeCast invlido com o operador as
Operao invlida com nmero de ponto flutuante
Memria insuficiente
Resultado de um clculo com nmero real excedeu o limite
Valor excede o limite do tipo inteiro ao qual foi atribuda
Resultado de um clculo com nmero real menor que a faixa vlida
Erro em operao com variant
Diviso de real por zero
Erro genrico de banco de dados, geralmente no usado diretamente
Erro da BDE, descende de EDatabaseError e traz dados que podem identificar o erro
Delphi Aplicado
85
Blocos de Finalizao
Gerao de Excees
Se voc quiser que uma exceo continue ativa, mesmo depois de tratada, use a clusula raise dentro do
bloco de tratamento da exceo. Geralmente isso feito com excees aninhadas.
Delphi Aplicado
86
A exceo EDBEngineError permite a identificao de erros de bancos de dados gerados pela BDE.
Note que a varivel E, que vai identificar o erro, s precisa ser declarada no bloco de tratamento da exceo.
No help voc pode consultar outras propriedades de EDBEngineError que podem ser importantes.
Voc tambm pode usar os eventos de erro do componente Table, sem precisar de blocos de tratamento.
Alguns cdigos de erro da BDE esto listados abaixo. Todas as constantes e funes relacionadas API da
BDE no Delphi 3 esto na Unit BDE, que deve ser adicionada clusula uses. No BDE API Help voc pode
encontrar referncia sobre as funes nativas da BDE, como tambm alguns exemplos em Delphi.
Constante
DBIERR_KEYVIOL
DBIERR_MAXVALERR
DBIERR_FORIEGNKEYERR
DBIERR_LOCKED
DBIERR_FILELOCKED
DBIERR_NETMULTIPLE
DBIERR_MINVALERR
DBIERR_REQDERR
DBIERR_LOOKUPTABLEERR
Descrio
Violao de chave primria
Valor mximo excedido
Erro de chave externa, como em integridade referencial
Registro travado
Arquivo travado
Mais de um diretrio usado como NetFileDir
Campo com valor mais baixo que valor mnimo
Campo obrigatrio faltando
Erro em tabela Lookup
Se voc quiser mais informaes a respeito do erro pode usar o procedimento DBIGetErrorContext, como
na funo mostrada abaixo que retorna determinadas informaes sobre o erro.
Delphi Aplicado
87
A nica funo do
DBgrid neste exemplo
apenas mostrar todos os
registros cadastrados.
Delphi Aplicado
88
utilizada a estrutura Try ... Except para controlar a operao, se alguma coisa no funcionar o bloco
except executado mostrando a mensagem de erro. O Edit prepara o registro para a alterao, o comando
Post grava esta alterao.
Delphi Aplicado
89
Quando estiver no campo Edit1 e pressionar enter o pular para o prximo campo Edit2.
Clique no campo Edit2, clique na aba Events, d um clique duplo em OnKeyPress e digite:
Quando estiver no campo Edit2 e pressionar enter o pular para o prximo campo Edit3.
Segunda maneira:
Neste cdigo programaremos ao pressionar enter, setinha para cima, setinha para baixo, algumas
pessoas preferem usar estas teclas para navegar nos campos ao invs do mouse, ento esta a soluo.
Selecionaremos todos campos, mantenha a tecla Shift pressionada e com o mouse clique no campo Edit1,
Edit2 e Edit3, aps clique na aba Events, d um clique duplo no evento OnKeyDown e digite:
Delphi Aplicado
90
possvel
configurar cdigo
fonte com vrias
combinaes de
cores.
Exemplo:
Delphi Aplicado
91
trechos de cdigos
Delphi Aplicado
92
Digite um exemplo ou a
sintaxe da funo que mostra
a mensagem e clique OK.
Agora vamos invocar o cdigo de dentro do editor de cdigos do Delphi. Para ativar a listagem do cdigo
que foi inserida clique a combinao Ctrl J ( control jota ), pressione a letra M , visto que o cdigo foi
gravado com a inicial M de Mensagem.
Pressione
Ctrl J
para listar seus cdigos.
Delphi Aplicado
93
Segunda maneira: Digite o cdigo abaixo no evento OnClose ( veja exemplo acima )
Delphi Aplicado
94
Programaremos o pressionamento da tecla enter para todos os campos da tabela. Selecione todos os
campos, matenha a tecla Shift pressionada e clique nos quatro campos, pressione F11, clique na aba Events,
d um clique duplo no evento OnKeyDown e digite o cdigo abaixo:
Note o evento :
OnKeyDown
Note o evento :
OnKeyPress
Delphi Aplicado
95
edits ?
Insira um boto Bitbtn, d um clique duplo neste boto e digite o cdigo abaixo:
1 maneira:
2 maneira
Para limpar um nico campo digite a linha abaixo:
Delphi Aplicado
96
Com o projeto aberto, clique em Project Options, selecione o formulrio desejado para cri-lo
dinamicamente, clique na setinha que esta apontando para o lado direito, aps clicado na setinha o
formulrio ser passado / transferido para o lado direito ( Clientes_Frm ) e clique OK para finalizar.
Delphi Aplicado
97
Delphi Aplicado
98
F1 = registro anterior.
F2 = prximo registro.
F3 = primeiro registro.
F4 = ltimo registro.
F5 = insere registro.
F6 = apaga registro.
F7 = edita registro.
F8 = grava.
F9 = cancela.
ESC = sai programa.
F10 = e-mail.
F11 = calculadora.
99
Delphi Aplicado
100
Delphi Aplicado
101
103
Delphi Aplicado
104