SlideShare uma empresa Scribd logo
1 de 104
Baixar para ler offline
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 
Componentes. 
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. 
Form1 é o nome 
do formulário 
padrão atribuído 
pelo Delphi. 
Aba/paleta de 
propriedades. 
Paleta de 
eventos. 
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 
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 
 Pressione F9 para “ rodar / executar “ o programa e ver seu resultado. 
botão Mensagem. 
uma mensagem. 
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 
foram automaticamente incluídas pelo 
Observe com atenção 
os nomes dos objetos 
de acordo com a 
Nome padrão Unit1, 
porque o arquivo ainda 
não foi salvo. 
• Salve unidade ( Unit1 - formulário ) e o projeto. 
nomeação que 
definimos. 
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 6.0 
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. 
R Salvando Unit ( programa ) 
Quando o ponteiro 
do mouse estiver 
parado sobre o 
botão será mostrada 
descrição. 
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”: 
Dê um clique duplo no botão Cadastros de Clientes: 
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. 
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 
Unit1.pas 
MÓDULO PRINCIPAL (menu) 
Módulo 1 
CLIENTES 
clientes.pas 
Sis_Aula.exe 
Menu.pas 
Módulo 2 
FORNECEDORES 
fornecedores.pas 
Módulo 3 
TRANSPORTA-DORAS 
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 
.dpr Arquivo do Projeto 
Código fonte em Pascal do arquivo principal do projeto. Lista todos os 
formulários e units no projeto, e contém código de inicialização da 
aplicação. Criado quando o projeto é salvo. 
.cfg Arquivo do Projeto 
Apesar de ter a extensão *.cfg este é um arquivo texto. 
Guarda diversas opções do compilador. Discutir estas opções está fora do 
escopo deste curso. Para a maior parte dos casos as opções default 
funcionam perfeitamente. 
.dof Arquivo do Projeto 
Apesar de ter a extensão *.dof este é um arquivo texto. 
Guarda diversas opções do projeto. Estas opções você configura usando a 
caixa de diálogo Project Options que vamos ver mais à frente. 
.pas Código fonte da Unit 
( Object Pascal) 
Um arquivo .PAS é gerado por cada formulário que o projeto contém. Seu 
projeto pode conter um ou mais arquivos .PAS associados com algum 
formulário. Contem todas as declarações e procedimentos incluindo 
eventos de um formulário. 
.dfm Arquivo gráfico do 
formulário 
Arquivo binário que contém as propriedades do desenho de um 
formulário contido em um projeto. Um .DFM é gerado em companhia de 
um arquivo .PAS para cada formulário do projeto. 
.res Arquivo de Recursos 
do Compilador 
Arquivo binário que contém o ícone, mensagens da aplicação e outros 
recursos usados pelo projeto. 
.opt Arquivo de opções do 
projeto 
Arquivo texto que contém a situação corrente das opções do projeto. 
Gerado com o primeiro salvamento e atualizado em subsequentes 
alterações feitas para as opções do projeto. 
.~dp Arquivo de Backup 
do Projeto 
Gerado quando o projeto é salvo pela segunda vez. 
.~pa Arquivo de Backup 
da Unit 
Se um .PAS é alterado, este arquivo é gerado. 
.~df Backup do Arquivo 
gráfico do formulário 
Se você abrir um .DFM no editor de código e fizer alguma alteração, este 
arquivo é gerando quando você salva o arquivo. 
.dsk Situação da Área de 
Trabalho 
Este arquivo armazena informações sobre a situação da área de 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 
.exe Arquivo compilado 
executável 
Este é um arquivo executável distribuivel de sua aplicação. Este arquivo 
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
Veja os vários formulários ( telas ) que estão em uso – 
Menu – Fornecedores – Transportadoras e Clientes 
Lista os objetos e uses 
utilizados no projeto corrente. 
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 
Pode ser usado ShowModal ou Show. 
Repita este processo para os botões Fornecedores e Transportadoras. 
Clientes_Frm. 
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. 
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. 
Ícone 
definido. 
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 
N Numérico ± 10 308 
$ 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 DocumentosClientes.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:BorlandDelphi 5DemosData' '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. 
DataSet 
TDatabase 
DatabaseName 
TDataSource 
TTable 
DatabaseName 
TDBEdit 
DataSource 
DB 
Para concluir, acompanhe abaixo os passos realizados pelo Wizard e tente você mesmo criar seu próprio Form. 
• Inclua um novo DataModule 
• Adicione ao DataModule um Table e um DataSource 
• No Table Coloque em DatabaseName o nome do Alias criado pela propriedade DatabaseName do Database e 
em TableName, o nome da tabela 
• No evento OnCreate do DataModule, chame o método Open do componente Table 
• No DataSource coloque em DataSet o nome do componente TTable 
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 
Cancel 
Delete 
Insert 
Append 
dsInsert dsBrowse dsEdit 
Post 
Cancel 
Delete 
Edit 
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. 
dsBrowse Estado de Espera. O estado default quando um dataset é aberto. Registros pode ser 
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. 
dsSetKey 
Habilita FindKey, GotoKey, and GoToNearest para procurar valores nas tabelas do banco de 
dados. Estes métodos somente pertencem para o componente TTable. Para TQuery, a procura 
é feita com a syntax do SQL. 
dsCalcFields Modo quando os OnCalcFields é executado; previne qualquer mudança para outros campos 
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 
Append Comfirma qualquer dado pendente e move um registro em branco para o final do 
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 
Edit Coloca o dataset em estado de edição. Se um dataset já está estado de Edit ou Insert, 
uma chamada para Edit não tem efeito. 
EmptyTable Esvazia uma tabela. 
Insert Confirma qualquer dado pendente, e coloca o dataset em estado de inserção. 
Post Tentativa para confirmar um registro novo ou alterado. Se sucesso, o dataset e 
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 tipo do campo. 
Pressione na barra de 
espaço para ver a lista de 
tipos de campos. 
Informe o tamanho do 
campo. 
 Clique em File § New § Table e escolha o driver “Paradox”. 
Tipo de tabela: Drivers 
de melhor performance 
para acessar dados 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 
remover pressionar 
novamente. 
Define o 
tamanho do 
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. 
Cria chave primária: Para 
definir uma chave primária 
( * ) basta pressionar uma vez 
no asterisco. 
Insere campo: Clique 
no campo desejado e 
pressione na tecla Insert 
( ins ). 
Apaga campo: 
Clique no campo 
desejado e pressione 
Ctrl + Del 
Salva a tabela: Este 
arquivo conterá todos os 
registros dos Clientes. 
Mover campo: Clique 
no campo desejado e 
arraste-o para cima ou 
para baixo. 
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 
Todos os arquivo do projeto corrente: 
misturar com os arquivos fonte. 
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 
Criando índice secundário para o campo “nome” 
 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: 
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 MadrugaDados ), para 
gravar o alias, clique na setinha azul apontando para baixo ( descrição: apply ) e Ok. (± Adiante 
aprenderemos como criar Alias via programa ). 
Ž Grava o Alias 
 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. 
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 ClientesWHERE 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. 
v Após renomeado Table1 e 
DataSource1, pressione F12 
para abrir a tela de código, 
mude Table1.Open; para 
Clientes_TB.Open; 
Função do Table1: Serve para manipular os dados de 
uma tabela física em uma base de dados. Esta será 
acessada através de um caminho ou alias. 
uAltere as 
propriedades Name dos 
dois componentes: 
Table1 para 
Clientes_TB e 
DataSource para 
Clientes_DS. 
Função do DataSource1: Este faz 
a ligação do componente de acesso 
do banco de dados com o de 
visualização de dados. Ele não é 
visual , somente atua como 
conduíte para as informações entre 
o componente Dataset (veremos 
adiante) e os componentes de 
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: 
Sistema organizado 
Aponte o caminho 
onde estão os 
arquivos do seu 
projeto. 
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 
Selecionei 
apenas 3 
campos. 
Veja abaixo, formulário relatório que foi criado pelo New Report Wizard. 
você criou. 
 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: 
3ª forma: 
Edit1 
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
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin
Delphi aplicado by jurandir pellin

Mais conteúdo relacionado

Mais procurados

Tutorial: Criando extensões para o OpenOffice
Tutorial: Criando extensões para o OpenOfficeTutorial: Criando extensões para o OpenOffice
Tutorial: Criando extensões para o OpenOfficeWilliam Colen
 
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...Édipo Souza
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Ryan Padilha
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelRyan Padilha
 
Introdução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráficaIntrodução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráficaArtur Barreto
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Alexandre Tarifa
 
Instalar e configurar o cobol45 no dos
Instalar e configurar o cobol45 no dosInstalar e configurar o cobol45 no dos
Instalar e configurar o cobol45 no dosParalafakyou Mens
 
Enterprise Architect - Sparx Systems
Enterprise Architect - Sparx Systems Enterprise Architect - Sparx Systems
Enterprise Architect - Sparx Systems Saldit Software
 
Lazarus tutor exerc_db_faq_-_v16
Lazarus tutor exerc_db_faq_-_v16Lazarus tutor exerc_db_faq_-_v16
Lazarus tutor exerc_db_faq_-_v16Alex Rodrigues
 
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveisSeminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveisRogério Moraes de Carvalho
 
Construindo aplicações com netbeans
Construindo aplicações com netbeansConstruindo aplicações com netbeans
Construindo aplicações com netbeansSliedesharessbarbosa
 
Tutorial oracle forms builder
Tutorial oracle forms builderTutorial oracle forms builder
Tutorial oracle forms builderValdinho Pereira
 
Internacionalizando um aplicativo BlackBerry API
Internacionalizando um aplicativo BlackBerry APIInternacionalizando um aplicativo BlackBerry API
Internacionalizando um aplicativo BlackBerry APIRicardo Ogliari
 
Grupo de estudos AS3 - Introdução ao ActionScript 3.0
Grupo de estudos AS3 - Introdução ao ActionScript 3.0Grupo de estudos AS3 - Introdução ao ActionScript 3.0
Grupo de estudos AS3 - Introdução ao ActionScript 3.0Fábio Flatschart
 

Mais procurados (20)

Tutorial: Criando extensões para o OpenOffice
Tutorial: Criando extensões para o OpenOfficeTutorial: Criando extensões para o OpenOffice
Tutorial: Criando extensões para o OpenOffice
 
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
 
Introdução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráficaIntrodução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráfica
 
Microsoft .NET Framework
Microsoft .NET FrameworkMicrosoft .NET Framework
Microsoft .NET Framework
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
 
Instalar e configurar o cobol45 no dos
Instalar e configurar o cobol45 no dosInstalar e configurar o cobol45 no dos
Instalar e configurar o cobol45 no dos
 
Enterprise Architect - Sparx Systems
Enterprise Architect - Sparx Systems Enterprise Architect - Sparx Systems
Enterprise Architect - Sparx Systems
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Apostila visual basic
Apostila visual basicApostila visual basic
Apostila visual basic
 
Lazarus tutor exerc_db_faq_-_v16
Lazarus tutor exerc_db_faq_-_v16Lazarus tutor exerc_db_faq_-_v16
Lazarus tutor exerc_db_faq_-_v16
 
Apostila de C# & Asp.Net
Apostila de C# & Asp.NetApostila de C# & Asp.Net
Apostila de C# & Asp.Net
 
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveisSeminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
 
Construindo aplicações com netbeans
Construindo aplicações com netbeansConstruindo aplicações com netbeans
Construindo aplicações com netbeans
 
Faq visual class
Faq visual classFaq visual class
Faq visual class
 
Tutorial oracle forms builder
Tutorial oracle forms builderTutorial oracle forms builder
Tutorial oracle forms builder
 
Introdução C#
Introdução C#Introdução C#
Introdução C#
 
Internacionalizando um aplicativo BlackBerry API
Internacionalizando um aplicativo BlackBerry APIInternacionalizando um aplicativo BlackBerry API
Internacionalizando um aplicativo BlackBerry API
 
Grupo de estudos AS3 - Introdução ao ActionScript 3.0
Grupo de estudos AS3 - Introdução ao ActionScript 3.0Grupo de estudos AS3 - Introdução ao ActionScript 3.0
Grupo de estudos AS3 - Introdução ao ActionScript 3.0
 

Semelhante a Delphi aplicado by jurandir pellin

introduçao ao sistema linguagem C
introduçao ao sistema linguagem Cintroduçao ao sistema linguagem C
introduçao ao sistema linguagem CEstudante
 
Curso De Programação Em DelPhi
Curso De Programação Em DelPhiCurso De Programação Em DelPhi
Curso De Programação Em DelPhiMikeNandes
 
Delphi Essentials - Palestra
Delphi Essentials - PalestraDelphi Essentials - Palestra
Delphi Essentials - PalestraWecsley Fey
 
Gt 10 FCSI- ambiente de desenvolvimento
Gt 10  FCSI- ambiente de desenvolvimentoGt 10  FCSI- ambiente de desenvolvimento
Gt 10 FCSI- ambiente de desenvolvimentoMax_Antonelli
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPAdler Medrado
 
DC2012 - Delphi XE2 iOS App + DataSnap + Arduino
DC2012 - Delphi XE2 iOS App + DataSnap + ArduinoDC2012 - Delphi XE2 iOS App + DataSnap + Arduino
DC2012 - Delphi XE2 iOS App + DataSnap + ArduinoVic Fernandes
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#tdc-globalcode
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endMario Guedes
 

Semelhante a Delphi aplicado by jurandir pellin (20)

EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGOEVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
 
introduçao ao sistema linguagem C
introduçao ao sistema linguagem Cintroduçao ao sistema linguagem C
introduçao ao sistema linguagem C
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programação
 
Curso De Programação Em DelPhi
Curso De Programação Em DelPhiCurso De Programação Em DelPhi
Curso De Programação Em DelPhi
 
Delphi Essentials - Palestra
Delphi Essentials - PalestraDelphi Essentials - Palestra
Delphi Essentials - Palestra
 
Isc aula 7
Isc   aula 7Isc   aula 7
Isc aula 7
 
Seminário: Delphi
Seminário: DelphiSeminário: Delphi
Seminário: Delphi
 
Delphi Prism 2011
Delphi Prism 2011Delphi Prism 2011
Delphi Prism 2011
 
Gt 10 FCSI- ambiente de desenvolvimento
Gt 10  FCSI- ambiente de desenvolvimentoGt 10  FCSI- ambiente de desenvolvimento
Gt 10 FCSI- ambiente de desenvolvimento
 
Programação aula001
Programação aula001Programação aula001
Programação aula001
 
Object pascal
Object pascalObject pascal
Object pascal
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHP
 
Aula 1a.ppt
Aula 1a.pptAula 1a.ppt
Aula 1a.ppt
 
Fundamentos Java - 01
Fundamentos Java - 01Fundamentos Java - 01
Fundamentos Java - 01
 
Code Masters
Code MastersCode Masters
Code Masters
 
DC2012 - Delphi XE2 iOS App + DataSnap + Arduino
DC2012 - Delphi XE2 iOS App + DataSnap + ArduinoDC2012 - Delphi XE2 iOS App + DataSnap + Arduino
DC2012 - Delphi XE2 iOS App + DataSnap + Arduino
 
Poder do Delphi
Poder do Delphi Poder do Delphi
Poder do Delphi
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
 
Gt 10 fcsi
Gt 10   fcsiGt 10   fcsi
Gt 10 fcsi
 

Delphi aplicado by jurandir pellin

  • 1. O obejtivo deste material é ser “ práticio” e “objetivo “ Exemplos desta apostila estão baseados no Delphi 6 e 7 Desde que a primeira versão do Delphi foi lançada, em 1995, esta ferramenta tem se mostrado como a melhor escolha no desenvolvimento para Windows. Numa relação com outros ambientes de programação, podemos dizer que o Delphi tem o poder do C++, e a facilidade do Visual Basic. A principal vantagem do Delphi está na linguagem usada, Object Pascal, que é uma evolução do Pascal padrão. O Pascal surgiu no final dos anos 60 e, até hoje, é usada como uma das primeiras linguagens de programação para estudantes de computação. Em 1984, a Borland lançou o Turbo Pascal, que se firmou como o melhor compilador de Pascal do mercado e, a partir de então, passou a incluir novos recursos nesta linguagem, como Units e Objetos, até a ascensão do Windows, quando foi lançado o Turbo Pascal for Windows e, depois, o Borland Pascal, cuja linguagem é considerada a primeira versão da Object Pascal. Na sua atual versão, usada pelo Delphi, a Object Pascal é uma linguagem poderosa, sólida e respeitada, sem perder sua peculiar facilidade. No Delphi, a criação de aplicativos começa com a montagem de componentes em janelas, como se fosse um programa gráfico, o usuário também pode utilizar componentes desenvolvidos por terceiros ou criar seus próprios componentes. O Delphi vem com todas as ferramentas necessárias para a criação de bancos de dados dBase e Paradox, além de uma versão do Interbase, permitindo a criação de aplicativos com banco de dados sem a necessidade de aquisição de outro programa. O Delphi também tem acesso a bases de dados como Foxpro, Access, InFormix, SYBASE, Oracle, SQL Server e DB2, além de qualquer outro banco de dados para Windows compatível com ODBC. “ A imaginação é mais importante que o conhecimento – Albert Einstein “ Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 1
  • 2. ³ 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
  • 3. Œ Adquira o software Delphi J  Instale o Delphi no seu computador J R Como criar um programa ou sistema em Delphi? Œ Digite o código do programador que é composto por ordens escritas com a linguagem 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
  • 4. R Tela padrão do Delphi 6.0 Componentes. 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. Form1 é o nome do formulário padrão atribuído pelo Delphi. Aba/paleta de propriedades. Paleta de eventos. Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 4
  • 5. R Tela padrão do Delphi 7.0 Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 5
  • 6. 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
  • 7. 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
  • 8. Ÿ 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
  • 9. Ao abrir o Delphi 2005 você verá um tela como esta abaixo: Vamos criar nosso primeiro programa, clique em File – New – VCL Forms Application – Delphi for Win32 Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 9
  • 10. Editor código fonte do Delphi 2005: Para melhor manipular ou navegar no código fonte, no Delphi 2005 foi adicionado o sinal de MAIS 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
  • 11. 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
  • 12. 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
  • 13. Outro exemplo: Resultado: Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 13
  • 14. 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
  • 15. O que é um EVENTO ? Agora definiremos o evento OnClick do 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  Pressione F9 para “ rodar / executar “ o programa e ver seu resultado. botão Mensagem. uma mensagem. 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
  • 16. ‘ 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
  • 17. ” Veja abaixo como esta o programa fonte. Linha Uses contém bibliotecas necessárias para este programa, estas foram automaticamente incluídas pelo Observe com atenção os nomes dos objetos de acordo com a Nome padrão Unit1, porque o arquivo ainda não foi salvo. • Salve unidade ( Unit1 - formulário ) e o projeto. nomeação que definimos. 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 6.0 Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 17
  • 18. ŒŒ 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
  • 19. 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
  • 20. Dê um clique duplo sobre o botão Mensagem, para definir o evento OnClick ( ao clicar executará o evento, a ação ), veja o código abaixo: Execute o programa pressionando F9, clique no botão Mensagem e veja o resultado. µ Resumindo, as duas maneiras retornarão o mesmo 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. R IF R Como criar descrição com mais de uma linha ? Insira um botão do tipo Button1 , clique no Object Inspector, selecione o formulário Form1, dê 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
  • 27. Ou R Tags Para cada botão ou dependendo do tipo de componente haverá um tag. No Tag 10, ao invés de digitar o valor 10, digitei 11 para provocar o erro, veja o resultado. Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 27
  • 28. R Inc() e Dec() Incrementando variáveis e decremetando. Defina uma variável inteira no início do programa R Formatando casas decimais Variável Valor ( R$ 10,00 Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 28
  • 29. 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
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. 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
  • 34. 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. R Salvando Unit ( programa ) Quando o ponteiro do mouse estiver parado sobre o botão será mostrada descrição. 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
  • 35. R O que são eventos ? Eventos são acontecimentos provocados por ações do usuário que ocorrem quando um Form está ativo. Nó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”: Dê um clique duplo no botão Cadastros de Clientes: 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. 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
  • 36. 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
  • 37. 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
  • 38. R O que compõe um projeto ? Um projeto no Delphi é basicamente composto de vários formulários de entrada de dados e relatórios. Quando o projeto é compilado, será gerado um arquivo / programa com a terminação .exe ( executável ), ex: Sis_Aula.exe, e dentro deste estarão todos os formulários, relatórios do sistema..., Clientes, Fornecedores, Transportadoras etc Project1.dpr Unit1.pas MÓDULO PRINCIPAL (menu) Módulo 1 CLIENTES clientes.pas Sis_Aula.exe Menu.pas Módulo 2 FORNECEDORES fornecedores.pas Módulo 3 TRANSPORTA-DORAS 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
  • 39. R Arquivos que compõe uma aplicação. Extensão Definição Função .dpr Arquivo do Projeto Código fonte em Pascal do arquivo principal do projeto. Lista todos os formulários e units no projeto, e contém código de inicialização da aplicação. Criado quando o projeto é salvo. .cfg Arquivo do Projeto Apesar de ter a extensão *.cfg este é um arquivo texto. Guarda diversas opções do compilador. Discutir estas opções está fora do escopo deste curso. Para a maior parte dos casos as opções default funcionam perfeitamente. .dof Arquivo do Projeto Apesar de ter a extensão *.dof este é um arquivo texto. Guarda diversas opções do projeto. Estas opções você configura usando a caixa de diálogo Project Options que vamos ver mais à frente. .pas Código fonte da Unit ( Object Pascal) Um arquivo .PAS é gerado por cada formulário que o projeto contém. Seu projeto pode conter um ou mais arquivos .PAS associados com algum formulário. Contem todas as declarações e procedimentos incluindo eventos de um formulário. .dfm Arquivo gráfico do formulário Arquivo binário que contém as propriedades do desenho de um formulário contido em um projeto. Um .DFM é gerado em companhia de um arquivo .PAS para cada formulário do projeto. .res Arquivo de Recursos do Compilador Arquivo binário que contém o ícone, mensagens da aplicação e outros recursos usados pelo projeto. .opt Arquivo de opções do projeto Arquivo texto que contém a situação corrente das opções do projeto. Gerado com o primeiro salvamento e atualizado em subsequentes alterações feitas para as opções do projeto. .~dp Arquivo de Backup do Projeto Gerado quando o projeto é salvo pela segunda vez. .~pa Arquivo de Backup da Unit Se um .PAS é alterado, este arquivo é gerado. .~df Backup do Arquivo gráfico do formulário Se você abrir um .DFM no editor de código e fizer alguma alteração, este arquivo é gerando quando você salva o arquivo. .dsk Situação da Área de Trabalho Este arquivo armazena informações sobre a situação da área de 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 .exe Arquivo compilado executável Este é um arquivo executável distribuivel de sua aplicação. Este arquivo 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
  • 40. R Cláusulas e bibliotecas de uma ³unit´. Neste arquivo está escrito o código de criação da aplicação e seus formulários. O arquivo Project 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
  • 41. 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
  • 42. 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
  • 43. 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
  • 44. 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
  • 45. Veja os vários formulários ( telas ) que estão em uso – Menu – Fornecedores – Transportadoras e Clientes Lista os objetos e uses utilizados no projeto corrente. 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
  • 46. 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 Pode ser usado ShowModal ou Show. Repita este processo para os botões Fornecedores e Transportadoras. Clientes_Frm. 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
  • 47. Vamos definir um ícone para o botão “Cadastro de Clientes” Clique nos três pontinhos para selecionar um ícone. Abaixo, será aberta uma tela pedindo para informar o caminho onde estã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
  • 48. 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. 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. Ícone definido. Sem “barra de título”. Com “barra de título. Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 48
  • 49. R Qual função do Database Desktop ? DATABASE DESKTOP 7 É um utilitário onde será criado a base de dados (tabelas - nomes dos campos, 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
  • 50. 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 N Numérico ± 10 308 $ 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
  • 51. 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
  • 52. 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 DocumentosClientes.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:BorlandDelphi 5DemosData' '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. DataSet TDatabase DatabaseName TDataSource TTable DatabaseName TDBEdit DataSource DB Para concluir, acompanhe abaixo os passos realizados pelo Wizard e tente você mesmo criar seu próprio Form. • Inclua um novo DataModule • Adicione ao DataModule um Table e um DataSource • No Table Coloque em DatabaseName o nome do Alias criado pela propriedade DatabaseName do Database e em TableName, o nome da tabela • No evento OnCreate do DataModule, chame o método Open do componente Table • No DataSource coloque em DataSet o nome do componente TTable Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 52
  • 53. • 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
  • 54. 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
  • 55. 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
  • 56. 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 Cancel Delete Insert Append dsInsert dsBrowse dsEdit Post Cancel Delete Edit 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
  • 57. 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
  • 58. IsNull Indica se o campo está vazio. KeyFields Campo chave da tabela no relacionamento com LookupDataSet, usado em campos Lookup. Lookup Indica se um campo é Lookup. LookupCache Define se será usado cache para campos Lookup. LookupDataSet DataSet onde está definido o valor do campo Lookup. LookupKeyFields Campo chave do relacionamento em LookupDataSet. LookupResultField Valor do campo, que será mostrado nos controles visuais. ReadOnly Define se um campo é somente para leitura. Required Define se o campo é obrigatório. Size Tamanho físico do campo. Text Texto de edição do campo. Value Acesso direto ao valor do campo. Visible Define se um campo é visível. Estão listadas abaixo algumas classes que realmente iremos manipular no tratamento 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
  • 59. 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
  • 60. 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
  • 61. Arquitetura dos Componentes de Banco de Dados Diagrama de Estados do Dataset Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 61
  • 62. Estados do DataSet Estado Descrição dsInactive O Dataset esta fechado. dsBrowse Estado de Espera. O estado default quando um dataset é aberto. Registros pode ser 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. dsSetKey Habilita FindKey, GotoKey, and GoToNearest para procurar valores nas tabelas do banco de dados. Estes métodos somente pertencem para o componente TTable. Para TQuery, a procura é feita com a syntax do SQL. dsCalcFields Modo quando os OnCalcFields é executado; previne qualquer mudança para outros campos 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 Append Comfirma qualquer dado pendente e move um registro em branco para o final do 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 Edit Coloca o dataset em estado de edição. Se um dataset já está estado de Edit ou Insert, uma chamada para Edit não tem efeito. EmptyTable Esvazia uma tabela. Insert Confirma qualquer dado pendente, e coloca o dataset em estado de inserção. Post Tentativa para confirmar um registro novo ou alterado. Se sucesso, o dataset e 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
  • 63. 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 tipo do campo. Pressione na barra de espaço para ver a lista de tipos de campos. Informe o tamanho do campo.  Clique em File § New § Table e escolha o driver “Paradox”. Tipo de tabela: Drivers de melhor performance para acessar dados 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
  • 64. 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
  • 65. 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 remover pressionar novamente. Define o tamanho do 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
  • 66. R Como criar uma tabela para armazenar dados ? Œ Crie a tabela de dados a seguir. Na barra de títulos do Delphi clique em Tools, clique em 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. Cria chave primária: Para definir uma chave primária ( * ) basta pressionar uma vez no asterisco. Insere campo: Clique no campo desejado e pressione na tecla Insert ( ins ). Apaga campo: Clique no campo desejado e pressione Ctrl + Del Salva a tabela: Este arquivo conterá todos os registros dos Clientes. Mover campo: Clique no campo desejado e arraste-o para cima ou para baixo. Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 66
  • 67. 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 Todos os arquivo do projeto corrente: misturar com os arquivos fonte. Dentro da sub-pasta dados estarão todas as tabelas. Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 67
  • 68. 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 Criando índice secundário para o campo “nome”  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: 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
  • 69. 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 MadrugaDados ), para gravar o alias, clique na setinha azul apontando para baixo ( descrição: apply ) e Ok. (± Adiante aprenderemos como criar Alias via programa ). Ž Grava o Alias  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. Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 69
  • 70. 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
  • 71. 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
  • 72. 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 ClientesWHERE 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
  • 73. R Como criar um formulário simples de entrada de dados ? Œ Clique em File – New – Application – clique em Project, clique na opção – Remove from Project, será aberta uma pequena tela, clique em Unit1 para remover a Unit1, clique Ok e clique Yes para confirmar. 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
  • 74. 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. v Após renomeado Table1 e DataSource1, pressione F12 para abrir a tela de código, mude Table1.Open; para Clientes_TB.Open; Função do Table1: Serve para manipular os dados de uma tabela física em uma base de dados. Esta será acessada através de um caminho ou alias. uAltere as propriedades Name dos dois componentes: Table1 para Clientes_TB e DataSource para Clientes_DS. Função do DataSource1: Este faz a ligação do componente de acesso do banco de dados com o de visualização de dados. Ele não é visual , somente atua como conduíte para as informações entre o componente Dataset (veremos adiante) e os componentes de visualização. Salve este formulário com o nome de Clientes.pas Delphi Aplicado - by Jurandir A. Pellin ( e-mail: delphiewb@gmail.com ) 74
  • 75. 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: Sistema organizado Aponte o caminho onde estão os arquivos do seu projeto. 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
  • 76. 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
  • 77. Propriedade Name Defina o nome para o componente Table. Como padrão o nome é Table1, meu padrão é Clientes_TB. Terminação _TB indica que é 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
  • 78. R Como definir descrições para os botões do navegador ? Defina descrições para os botões do navegador de dados para facilitar a identificação, quando o 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
  • 79. 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 Selecionei apenas 3 campos. Veja abaixo, formulário relatório que foi criado pelo New Report Wizard. você criou.  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
  • 80. Ž 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
  • 81. 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: 3ª forma: Edit1 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