Você está na página 1de 61

UNIVERSIDADE DE SO PAULO

Instituto de Cincias Matemticas e de Computao


ISSN - 0103-2585

3URJUDPDom
omR
R'
' H O SK L
DSRLDQGR
RDF
DFR
RQVWUXomRG
RGHH
DSOLFDWLYRV
VG
GH
H%
%DVHV
VG
GH
H'
'DGR
GRVV

Enzo Seraphim
Renata Pontin de Mattos Fortes

Notas Didticas n0 42

So Carlos, dezembro de 1999

Programao Delphi apoiando aplicativos de Bases de Dados

ndice
1

INTRODUO ............................................................................................................................................ 4
1.1 PRINCIPAIS CARACTERSTICAS DO DELPHI.................................................................................................. 4
1.2 CARACTERSTICAS DO DELPHI CLIENT/SERVER.......................................................................................... 5

O AMBIENTE DELPHI .............................................................................................................................. 5


2.1
2.2
2.3
2.4
2.5

FUNDAMENTOS DE OBJECT PASCAL............................................................................................... 11


3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13
3.14
3.15
3.16
3.17
3.18
3.19
3.20
3.21
3.22
3.23

NOMENCLATURA ...................................................................................................................................... 28
PROPRIEDADES ......................................................................................................................................... 28
EVENTOS................................................................................................................................................... 29
MTODOS ................................................................................................................................................. 30
JANELAS ................................................................................................................................................... 30
COMPONENTES PADRO ........................................................................................................................... 31
CAIXAS DE DILOGO ................................................................................................................................ 35
MENUS...................................................................................................................................................... 35
CLASSES NO VISUAIS ............................................................................................................................. 36

BANCOS DE DADOS ................................................................................................................................ 38


5.1
5.2
5.3
5.4
5.5

CONCEITOS DE PROGRAMAO ORIENTADA A OBJETOS .......................................................................... 11


VARIVEIS ................................................................................................................................................ 11
ATRIBUTOS ............................................................................................................................................... 12
ENCAPSULAMENTO ................................................................................................................................... 12
CLASSES ................................................................................................................................................... 12
OBJETOS ................................................................................................................................................... 13
LITERAIS ................................................................................................................................................... 13
CONSTANTES ............................................................................................................................................ 13
INSTRUES.............................................................................................................................................. 13
COMENTRIOS...................................................................................................................................... 14
TIPOS DE DADOS PADRO .................................................................................................................... 14
CONVERSES DE TIPO .......................................................................................................................... 17
EXPRESSES ......................................................................................................................................... 18
OPERADORES ........................................................................................................................................ 18
ESTRUTURAS DE DECISO .................................................................................................................... 19
ESTRUTURAS DE REPETIO ................................................................................................................ 19
TIPOS DEFINIDOS PELO USURIO.......................................................................................................... 20
PROCEDIMENTOS, FUNES E MTODOS.............................................................................................. 22
WITH .................................................................................................................................................... 23
SELF ..................................................................................................................................................... 23
CRIANDO E DESTRUINDO OBJETOS ...................................................................................................... 23
RTTI .................................................................................................................................................... 24
EXCEES ............................................................................................................................................ 24

BIBLIOTECA DE CLASSES.................................................................................................................... 28
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9

COMO FORMADA UMA APLICAO EM DELPHI ........................................................................................ 5


CDIGO FONTE DO ARQUIVO PROJECT(.DPR)............................................................................................. 7
CDIGO FONTE DO ARQUIVO UNIT (.PAS) .................................................................................................. 7
ARQUIVOS GERADOS PELA COMPILAO ................................................................................................... 9
AMBIENTE DE PROGRAMAO.................................................................................................................... 9

CONCEITOS IMPORTANTES ........................................................................................................................ 38


BORLAND DATABASE ENGINE .................................................................................................................. 38
ARQUITETURA DE ACESSO ........................................................................................................................ 38
DATA ACCESS ........................................................................................................................................... 39
DATA CONTROLS ...................................................................................................................................... 50

RELATRIOS ........................................................................................................................................... 54

Programao Delphi apoiando aplicativos de Bases de Dados

6.1
6.2
6.3
6.4
7

IMPRESSO DE TEXTO............................................................................................................................... 54
IMPRESSO GRFICA ................................................................................................................................ 54
IMPRESSO COM O REPORTSMITH ............................................................................................................ 55
IMPRESSO COM O QUICKREPORT ............................................................................................................ 55

CONCLUSO ............................................................................................................................................ 58

Programao Delphi apoiando aplicativos de Bases de Dados

INTRODUO

A disciplina de Laboratrio de Base de Dados ministrada aos alunos de cursos de Computao visa
proporcionar o desenvolvimento de aplicaes prticas utilizando sistemas de gerenciamento de bases
de dados relacionais e ferramentas de apoio. Alm disso, como disciplina optativa, ela proporciona a
consolidao da teoria apresentada na disciplina de Banco de Dados que seu pr-requisito.
Para tanto, aulas expositivas seguidas de demonstrao prtica em laboratrio tm sido
adotadas como metodologia do ensino. Os exerccios so ento elaborados em aulas de laboratrio
assistidas.
Nesse contexto, este conjunto de notas didticas se destina a viabilizar um suporte para a
utilizao de Delphi como ferramenta de apoio para as prticas necessrias de disciplinas que em seu
contedo programtico, contam com o desenvolvimento de aplicativos de Bases de Dados tendo por
front-end a programao em Delphi. Este material foi em grande parte coletado de informaes
disponveis na World-Wide Web.
Desde que a primeira verso do Delphi foi lanada, em 1995, tem se mostrado muito atrativo
para o desenvolvimento em ambiente operacional Windows. Numa relao com outros ambientes de
programao, podemos dizer que o Delphi possui muitos dos recursos poderosos do C++ e a facilidade
do Visual Basic.
A principal vantagem do Delphi est na linguagem usada, Object Pascal, que uma evoluo
do Pascal padro. O Pascal surgiu no final dos anos 60 e, at hoje, usada como uma das primeiras
linguagens de programao para estudantes de computao. Em 1984, a Borland lanou o Turbo
Pascal, que se firmou como um bom compilador de Pascal para o mercado e, a partir de ento, passou
a incluir novos recursos nesta linguagem, como Units e Objetos, at a ascenso do Windows, quando
foi lanado o Turbo Pascal for Windows. Depois surgiu o Borland Pascal, cuja linguagem
considerada a primeira verso da Object Pascal. Na sua verso atual, usada pelo Delphi, a Object
Pascal uma linguagem slida e respeitada, sem perder sua peculiar facilidade.
No Delphi, a criao de aplicativos comea com a montagem de componentes em janelas,
como se fosse um programa grfico, o usurio tambm pode utilizar de componentes desenvolvidos
por terceiros ou criar seus prprios componentes.
O Delphi vem com todas as ferramentas necessrias para a criao de bancos de dados dBase e
Paradox, alm de uma verso do Interbase, permitindo a criao de aplicativos com banco de dados
sem a necessidade de aquisio de outro programa. O Delphi tambm tem acesso a bases de dados
como Foxpro, Access, Informix, SYBASE, Oracle, SQL Server e DB2, alm de qualquer outro banco
de dados para Windows compatvel com ODBC.
Atualmente, podem ser encontradas as seguintes verses de Delphi:
Delphi Standard para estudantes, sem classes para armazenamento de estruturas de dados.
Delphi Professional com classes para armazenamento de estruturas de dados, mas sem suporte
a arquitetura cliente/servidor.
Delphi Client/Server Suite verso completa com fontes dos componentes.
1.1

Principais Caractersticas do Delphi


Construtor Visual de Interface com o Usurio - o IDE (Interface Development Environment)
permite criar visualmente aplicaes Client/Server de forma rpida atravs da seleo de
componentes na paleta.
Arquitetura Baseada em Componentes - os componentes asseguram que as aplicaes Delphi
sejam robustas, reutilizveis e de fcil manuteno. Com facilidade de criao de componentes
nativos, alm de controles ActiveX, inclusive com disponibilidade do cdigo fonte dos
componentes padro
Compilador de Cdigo Nativo de Alta Performance - compilador/otimizador de cdigo mais
rpido do mercado, gerando executveis rpidos e puros, sem run-time
4

Programao Delphi apoiando aplicativos de Bases de Dados

1.2

Tow-Way Tools - a capacidade de alternar entre um form e seu cdigo permite aos
desenvolvedores trabalhar tanto na edio de texto como no modo de design visual atravs de total
sincronizao do cdigo fonte com a representao visual.
Biblioteca de Componentes Visuais - a biblioteca de componentes visuais (VCL-Visual
Component Library) consiste de objetos reutilizveis incluindo objetos padro de interface com o
usurio, gerenciamento de dados, grficos e multimidia, gerenciamento de arquivos e quadros de
dialogo padro. A Client/Server edition inclui o cdigo fonte do Visual Component Library.
Arquitetura Aberta - a arquitetura do IDE permite adicionar componentes e ferramentas
personalizadas e de terceiros.
Linguagem Orientada a Objetos - o Delphi utiliza o Object Pascal, que oferece a facilidade de
programao em 4GL de alto nvel com a performance e poderio de um 3GL. Fluxo de
programao baseado em eventos. Suporte a manipulao de excees, que permite criar
aplicaes mais robustas e com maior segurana.
Suporte Tecnologia do Windows - o Delphi compatvel com a tendncia da tecnologia
Windows, incluindo suporte a OLE 2.0,DDE, DCOM, VBXs e ODBC.
Depurador Grfico - o Debugger permite encontrar e eliminar "bugs" em seu cdigo.
Edio Estilo Brief - o Editor permite a utilizao de um conjunto de smbolos para expresses.
Consulte Brief Regular Expressions no Help on-line.
Ambiente Personalizvel - a opo de menu Environment Options permite personalizar seu
ambiente para o mximo de produtividade.
Object Browser - o Object Browser permite a visualizao da hierarquia dos objetos na visual
component library.
Gerenciador de Projetos - o Project Manager oferece uma visualizao de todos os forms e units
de um determinado projeto e oferece um mecanismo conveniente para gerenciar projetos.
Experts - Uma variedade de Experts o guia atravs do desenvolvimento de tipos padres de
forms. Por exemplo, o Database form expert auxilia-o na construo de forms que exibam dados
em bancos de dados locais ou remotos.
Gerador de Relatrios - o ReportSmith oferece a mais avanada ferramenta de gerao de
relatrios para desenvolvedores que precisem criar relatrios que acessem grandes volumes de
dados, com utilizao de componentes nativos.
Caractersticas do Delphi Client/Server

O Delphi Client/Server Edition inclui todas as caractersticas do Delphi Professional e as seguintes


caractersticas especficas ao ambiente Client/ Server:

Conectividade de Alta Performance - os SQL Links oferecem acesso de alta performance aos
drives nativos, conectando com bancos de dados populares, incluindo Oracle, Sybase,Informix, e
InterBase.
Suporte a Team Development - Intersolv PVCS permite que grupos de desenvolvedores
trabalhem juntos com cdigos fonte integrados, check-in, check-out e gerenciamento de controle
de verso.
Construtor Visual de Query - o Visual Query Builder oferece uma ferramenta visual para criar
facilmente queries sofisticadas e gerar automaticamente o cdigo SQL correspondente.
Objetos Distribudos - capacidade de criao de aplicaes multi-tier, com objetos distribudos
com Corba.

O AMBIENTE Delphi

2.1

Como formada uma Aplicao em Delphi


5

Programao Delphi apoiando aplicativos de Bases de Dados

Quando o desenvolvedor abre um projeto no Delphi, j lhe mostrada uma UNIT com vrias linhas de
cdigo. Este texto tem como objetivo explicar um pouco da estrutura que ele usa.
Um projeto Delphi tem, inicialmente, duas divises: uma UNIT, que associada a um Form, e
outra Project, que engloba todos os FORM e UNITs da aplicao. Em Delphi temos: o Project, os
Forms e as Units. Para todo Form temos pelo menos uma UNIT (Cdigo do Form), mas temos UNITs
sem Form (cdigos de procedures, funes, etc). A figura a seguir ilustra a formao de uma aplicao
Delphi e o Quadro 1 lista as extenses dos arquivos gerados no desenvolvimento de aplicativos em
Delphi.
TESTE

.EXE

.DPR

FORM 1

FORM 2

FORM N

.DCU

.DCU

.DCU

FORM 1

FORM 2

.DFM

UNIT 1

.DFM

.PAS

Extenso
Arquivo
.DPR

.PAS

.DFM

.OPT

.RES

FORM N

.DFM

UNIT 2

.PAS

UNIT N

.PAS

ROTINAS

.PAS

Quadro 1. Arquivos Gerados no desenvolvimento em Delphi


Definio
Funo
Arquivo do Projeto

Cdigo fonte em Pascal do arquivo principal do


projeto. Lista todos os formulrios e units no
projeto, e contm cdigo de inicializao da
aplicao. Criado quando o projeto salvo.
Cdigo fonte da Unit (Object Um arquivo .PAS gerado por cada formulrio
Pascal)
que o projeto contm. Seu projeto pode conter um
ou mais arquivos .PAS associados com algum
formulrio. Contem todas as declaraes e
procedimentos incluindo eventos de um formulrio.
Arquivo grfico do
Arquivo binrio que contm as propriedades do
formulrio
desenho de um formulrio contido em um projeto.
Um .DFM gerado em companhia de um arquivo
.PAS para cada formulrio do projeto.
Arquivo de opes do
Arquivo texto que contm a situao corrente das
projeto
opes do projeto. Gerado com o primeiro
salvamento e atualizado em subseqentes
alteraes feitas para as opes do projeto.
Arquivo de Recursos do
Arquivo binrio que contm o cone, mensagens
Compilador
da aplicao e outros recursos usados pelo
projeto.

Programao Delphi apoiando aplicativos de Bases de Dados

.~DP
.~PA
.~DF
.DSK

Arquivo de Backup do
Projeto
Arquivo de Backup da Unit
Backup do Arquivo grfico
do formulrio
Situao da rea de
Trabalho

Gerado quando o projeto salvo pela segunda


vez.
Se um .PAS alterado, este arquivo gerado.
Se voc abrir um .DFM no editor de cdigo e fizer
alguma alterao, este arquivo gerando quando
voc salva o arquivo.
Este arquivo armazena informaes sobre a
situao da rea de trabalho especifica para o
projeto em opes de ambiente (Options
Environment).

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

2.2

Cdigo fonte do arquivo Project(.DPR)

Neste arquivo est descrito o cdigo de criao da aplicao e de seus formulrios. O arquivo Project
tem apenas uma seo. Esta seo formada pelo seguinte cdigo:
PROGRAM - Define o Projeto;
USES - Clusula 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.
Quando se abre um projeto novo, o Project possuir o seguinte contedo:
program Project1;
uses
Forms,
Unit1 in 'UNIT1.PAS' {Form1};
{$R *.RES}
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

2.3

Cdigo fonte do arquivo Unit (.PAS)

Nesta diviso so escritos os cdigos dos seus respectivos forms (Unit1 = Form1). Assim, so
definidos os cdigos de cada procedimento dos componentes que voc colocar no Form.
Seo Unit - declara o nome da UNIT.
Seo Uses - contm as UNITS acessadas por este arquivo.
Seo Interface - nesta seo esto as declaraes de constantes, tipos de variveis, funes e
procedures gerais da Unit/Form. As declaraes desta seo so visveis por qualquer Unit. Esta
seo formada pelo seguinte cdigo:
INTERFACE - palavra que inicia a seo;
USES - clusula que inicia uma lista de outras unidades compiladas (units) em que se basea:
SysUtils = utilitrios do sistema (strings, data/hora, gerar arquivos)
7

Programao Delphi apoiando aplicativos de Bases de Dados

WinProcs = acesso a GDI, USER e KERNEL do Windows


Wintypes= tipos de dados e valores constantes
Messages=constantes com os nmeros das mensagens do Windows e tipos de dados
das Mensagens
Classes=elementos de baixo nvel do sistema de componentes
Graphics=elementos grficos
Controls=elementos de nvel mdio do sistema de componentes
Forms=componentes de forma e componentes invisveis de aplicativos
Dialogs=componentes de dilogo comuns
Seo Type - declara os tipos definidos pelo usurio. Subsees: Private, declaraes privativas
da Unit. Public declaraes publicas da Unit.
Seo Var - declara as variveis privadas utilizadas.
Seo Implementation - contm os corpos (cdigos que implementam) das funes e procedures
declaradas nas sees Interface e Type. Nesta seo tambm esto definidos todos os
procedimentos dos componentes que esto includos no Form. As declaraes desta seo so
visveis apenas por ela mesma. Esta seo formada pelo seguinte cdigo:
{$R*.DFM} - Diretiva compiladora que inclui toda a interface, propriedades da forma e
componentes do arquivo *.DFM
{$S+} - Diretiva compiladora que ativa verificao de pilha.
Seo uses adicional - serve para declarar Units que ativam esta.
Inicialization - nesta seo, que opcional, pode ser definido um cdigo para proceder as tarefas
de inicializao da Unit quando o programa comea. Ela consiste na palavra reservada
inicialization seguida por uma ou mais declaraes para serem executadas em ordem.
Quando se abre um projeto novo, a Unit possuir o seguinte contedo:

unit Unit1;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{Uses Adicional}
{Initialization}
end.

Programao Delphi apoiando aplicativos de Bases de Dados

2.4

Arquivos Gerados pela Compilao

Extenso Arquivo
.EXE

Definio

Funo

Arquivo compilado
executvel

.DCU

Cdigo objeto da Unit

Este um arquivo executvel distribuivel de sua aplicao.


Este arquivo incorpora todos os arquivos .DCU gerados
quando sua aplicao compilada. O Arquivo .DCU no
necessrio distribuir em sua aplicao.
A compilao cria um arquivo .DCU para cada .PAS no
projeto.

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

2.5

Ambiente de Programao
Janela Principal - a janela principal do Delphi composta pela barra de menus, barra de
ferramentas e paleta de componentes. Para personalizar a barra de ferramentas, basta clicar em
Properties no menu de contexto. Na paleta de componentes esto os controles usados nas
aplicaes, agrupados em guias por categorias.
Object Inspector - no Object Inspector podemos manipular, em tempo de projeto, as propriedades
e eventos dos componentes. Voc tambm pode selecionar um componente usando o Seletor de
Objetos, no topo do Object Inspector.
Propriedades - so as caractersticas de um componente. Para mudar uma propriedade, selecione
o componente no Form Designer ou no Object Selector, localize a propriedade, na guia Properties
e mude o valor na coluna direita. A edio de propriedades pode ser simples, por lista suspensa,
caixa de dialogo ou com propriedades aninhadas.
Eventos - numa definio inicial, eventos podem ser vistos como chamadas a mtodos em
resposta a determinadas mensagens do Windows. Para criar um mtodo para um evento, selecione
o componente e clique duas vezes na coluna direita do evento na guia Events do Object
Inspector, o Delphi faz todas as declaraes necessrias e mostra o mtodo pronto para ser
programado no Editor de Cdigo. Para que um evento chame um mtodo j definido, em vez de
clicar duas vezes na coluna direita do evento, voc deve usar a lista suspensa.
Form Designer - o Form Designer onde so desenhados os Forms das aplicaes, com a
insero de componentes. No menu de contexto do Form, voc pode clicar em View as Text para
editar a descrio textual do Form e de seus componentes no Editor de Cdigo, essas informaes
so gravadas em um arquivo binrio com a extenso DFM, para voltar ao modo de exibio
normal, escolha View as Form no menu de contexto do Editor de Cdigo.
Manipulando Componentes
Incluir: Selecionar o componente na paleta e clicar no Form Designer.
Redimensionar: Clicar no componente e arrastar as alas de borda. Podemos usar
SHIFT+SETAS para redimensionar o componente fora da grade de alinhamento do Form.
Mover: Arrastar o componente. Podem ser usadas tambm operaes de recortar, copiar e
colar, alm de CTRL+SETAS para mover o componente para fora da grade de
alinhamento do Form.
Selecionar: Segurar SHIFT para selecionar vrios componentes individuais e CTRL para
escolher uma rea retangular do Form e selecionar todos os componentes nesta rea.
Alinhamento: Para alinhar componentes selecione-os e escolha View / Alignment Palette.
Menu de Contexto: Bring To Front / Send To Back, para trazer o componente para frente
ou enviar para trs, Tab Order para mudar a ordem de tabulao, alm de Align To Grid,
para alinhar os componentes selecionados Grade do Form Designer.
Editor de Cdigo - para escrever o cdigo, usamos o Editor de Cdigo do Delphi. Para cada Form
criado um cdigo, que gravado em arquivos chamados Units. Nesses arquivos definida a
classe do Form e seus mtodos de eventos. Para alternar entre o Form e sua Unit podemos clicar

Programao Delphi apoiando aplicativos de Bases de Dados

em Toggle Form/Unit no menu View, ou no boto corresponde da Barra de Ferrramentas. Para


cada Form aberto criado um Form Designer e uma nova guia no Editor de Cdigo.
Configurao do Ambiente - grande parte das opes de configurao do ambiente podem ser
acessadas atravs do item Environment Options do menu Tools. A maioria das opes desse
dilogo so bastante claras e atravs delas podemos definir, desde as opes do Form Designer,
at o Editor de Cdigo e o caminho das Livrarias. No menu Tools, podemos escolher tambm
Configure Tools, para permitir abrir aplicaes externas a partir do ambiente do Delphi, como o
Image Editor e o Database Desktop.
Project Manager - para ajudar no gerenciamento de projetos, podemos usar o Project Manager
pelo menu View. O Project Manager lista as Units, os Forms existentes nessas Units e o path, se a
Unit no estiver na pasta do projeto. Atravs dos botes do Project Manager voc pode adicionar,
excluir e visualizar Units e Forms que compem o projeto.
Project Options - atravs do item Options, do menu Project, podemos escolher diversos aspectos
de um projeto.
Forms - nessa pgina, podemos definir o Form principal da aplicao e a os Forms que sero
criados automaticamente. Se um Form no for criado automaticamente, voc ter que instanciar
esse Form explicitamente.
Application - nessa pgina podemos definir o ttulo, o arquivo help e o cone da aplicao.
Compiler - usamos essa pgina para definir as opes de compilao, para o projeto atual. Essas
opes iro interferir diretamente no executvel gerado.
Linker - essa pgina muito pouco usada, mas somente atravs dela podem modificar a memria
exigida por uma aplicao.
Directories/Conditionals - pode-se especificar pastas de sada para os arquivos gerados na
compilao do projeto e opes de compilao condicional.
Version Information - informaes da verso do executvel.
Packages - Nesta pgina voc pode especificar parte do cdigo para ser includo em Packages,
fora do executvel, permitindo compartilhamento de componentes entre vrias aplicaes Delphi.
Gerenciamento de Projetos - segue uma descrio das mais importantes opes de menu para o
gerenciamento de projetos, algumas dessas opes tem um boto correspondente na barra de
ferramentas.
File
Abre um dilogo com novos itens que podem ser adicionados ao projeto
New
Abrir projetos, pode abrir tambm Units, Forms e texto no editor de cdigo
Open
Salva
o arquivo aberto no editor de cdigo
Save
Salva o projeto com outro nome ou local
Save Project As
Faz com que a Unit atual possa usar outra Unit do projeto
Use Unit
Adiciona uma Unit em disco ao projeto
Add to Project
Remove
from Remove uma Unit do projeto
Project
View
Mostra o gerenciador de projeto
Project Manager
Mostra o cdigo do projeto
Project Source
Mostra
o Object Inspector
Object Inspector
Alterna entre o Form e a Unit
Toggle Form/Unit
Mostra
o cdigo fonte de uma Unit ou do Projeto a partir de uma lista
Units
Seleciona
um Form a partir de uma lista
Forms
Project
Compila o projeto
Compile
Opes do projeto, como cone do executvel, nome da aplicao e opes de compilao
Options
Run
Compila e executa o projeto
Run
10

Programao Delphi apoiando aplicativos de Bases de Dados

Ajuda - o sistema de ajuda do Delphi a referncia mais completa, seguida pelos manuais do
usurio cedidos com o sistema. Se quiser ajuda sobre um componente, selecione-o e aperte F1, o
mesmo pode ser feito com propriedades e eventos, no Object Inpector e comandos, no editor de
cdigo.

FUNDAMENTOS DE Object Pascal

3.1

Conceitos de Programao Orientada a Objetos

Antes de partir para a linguagem propriamente dita, devemos considerar, de forma prtica, alguns
conceitos bsicos de Programao Orientada a Objetos.
Classe: definio de tipo dos objetos, modelo de objeto.
Objeto: instncia de classe, varivel cujo tipo uma classe.
Atributos: variveis de instncia que so os dados de um objeto.
Mtodos: funes e procedimentos de um objeto.
Propriedades: apelido usado para evitar o acesso direto aos atributos de um objeto, onde podemos
especificar mtodos que sero usados para ler e atribuir seus valores a esses atributos.
Mensagens: chamada de mtodos, leitura e atribuio de propriedades.
Encapsulamento: conjunto de tcnicas usadas para limitar o acesso aos atributos e mtodos internos
de um objeto.
Herana: possibilidade de criar uma classe descendente de outra, aproveitando seus mtodos,
atributos e propriedades.
Ancestral: super classe ou classe de base, a partir da qual outras classes podem ser criadas.
Descendente: subclasse.
Hierarquia de Classes: conjunto de classes ancestrais e descendentes, geralmente representadas em
uma rvore hierrquica.
Polimorfismo: capacidade de redefinir mtodos e propriedades de uma classe em seus descendentes.

3.2

Variveis

No Delphi, toda varivel tem que ser declarada antes de ser utilizada. As declaraes podem ser feitas
aps a palavra reservada var, onde so indicados o nome e o tipo da varivel. Os nomes de variveis
no podem ter acentos, espaos ou caracteres especiais como &, $ ou % e o primeiro caractere de um
nome de varivel tem que ser uma letra ou um sublinhado. O Delphi ignora o caso das letras.
Variveis Globais
As variveis abaixo so globais, declaradas da Interface da Unit. Podem ser acessadas por qualquer
Unit usuria.
var
I: Integer;
Usuario: string;
A, B, Soma: Double;
Ok: Boolean;

Variveis Locais
As variveis abaixo so locais ao mtodo, ou seja, elas s existem dentro do mtodo, no podem ser
acessadas de fora, mesmo que seja na mesma Unit. Na verdade essas variveis so criadas quando o
mtodo chamado e destrudo quando ele encerrado, seu valor no persistente.

11

Programao Delphi apoiando aplicativos de Bases de Dados


procedure TFrmExemplo.BtnTrocarClick(Sender: TObject);
var
Aux: string;
begin
Aux := EdtA.Text;
EdtA.Text := EdtB.Text;
EdtB.Text := Aux;
end;

3.3

Atributos

Os atributos so variveis de instncia. Para declarar um atributo em uma classe basta definir o
identificador e o tipo do atributo na declarao da classe, feita na seo type da Interface da Unit,
como abaixo.
type
TFrmSomar = class(TForm)
private
{ Private declarations }
A, B: Double;
public
{ Public declarations }
Soma: Double;
end;

3.4

Encapsulamento

Os principais nveis de visibilidade dos atributos e mtodos de uma classe so mostrados abaixo.
Nvel

Visibilidade
Os itens declarados nesse nvel s podem ser acessados na mesma unit.
Nesse nvel, qualquer unit usuria poder acessar o item.
Os itens s podero ser acessados em outra unit se for em uma classe descendente
o nvel default, igual ao Public, mas define propriedades e eventos usados em
tempo de projeto.

Private
Public
Protected
Published

3.5

Classes

Classes so tipos de objetos, uma classe declarada na clusula type da seo interface e os mtodos
so definidos na seo implementation. Examine o cdigo de um Form para identificar os elementos
de sua classe.
interface
type
TFrmSomar = class(TForm)
EdtA: TEdit;
EdtB: TEdit;
BtnSoma: TButton;
procedure BtnSomaClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
procedure TFrmSoma.BtnSomaClick(Sender: TObject);
begin
ShowMessage(EdtA.Text + EditB.Text);
end;

12

Programao Delphi apoiando aplicativos de Bases de Dados

3.6

Objetos

Um Objeto tratado como uma varivel cujo tipo uma classe. A declarao de objetos igual
declarao de uma varivel simples, tendo no lugar do tipo a classe do objeto.
var
FrmSomar: TFrmSomar;

3.7

Literais

Valores literais so valores usados em atribuies e expresses. Cada tipo tem uma sintaxe diferente.
Tipo

Inteiro
Inteiro Hexadecimal
Real
Caractere
String

3.8

Definio
Seqncia de dgitos decimais (0 a 9), sinalizados ou no
Seqncia de dgitos hexadecimais (0 a F), precedidos por um sifro ($)
Igual ao tipo Inteiro, mas pode usar separador decimal e notao cientfica
Letra entre apstrofos ou o caracter # seguido de um nmero inteiro entre 0 e 255 (ASCII)
Seqncia de caracteres delimitados por apstrofos

Constantes

So declaradas na seo const, podem ser usadas como variveis, mas no podem ser alteradas.
Geralmente o nome das constantes escrito em letras maisculas e na declarao dessas constantes
no indicado o tipo.
const
G = 3.94851265E-19;
NUM_CHARS = '0123456789';
CR = #13;
SPACE = ' ';
MAX_VALUE = $FFFFFFFF;

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

3.9

Instrues

Os programas so compostos por instrues, que so linhas de cdigo executvel. Exemplos de


instrues simples so atribuies, mensagens entre objetos, chamadas de procedimentos, funes e
mtodos, como mostradas abaixo. As instrues podem ser divididas em vrias linhas, o que indica o
fim de uma instruo o ponto e vrgula no final. Quando uma instruo quebrada, costuma-se dar
dois espaos antes das prximas linhas, para melhorar a leitura do cdigo.
Caption := 'Gabba Gabba Hey!';
Form2.ShowModal;
Application.MessageBox('Voc executou uma operao ilegal, o programa ser
finalizado.', 'Falha geral', MB_ICONERROR);

13

Programao Delphi apoiando aplicativos de Bases de Dados

possvel se usar vrias instrues agrupadas em uma instruo composta, como se fosse uma s
instruo. Uma instruo composta delimitada pelas palavras reservadas begin e end. Toda instruo,
simples ou composta, terminada com um ponto-e-vrgula.
if CheckBox1.Checked then
begin
ShowMessage('O CheckBox ser desmarcado.');
CheckBox1.Checked := False;
end;

Estilo de Codificao
As instrues e todo o cdigo de uma Unit devem ser distribudos para facilitar o mximo a leitura.
Para isso, podemos usar a indentao, geralmente de dois espaos para indicar os nveis de cdigo.
Procure criar um estilo prprio, que melhor se molde sua realidade. Se for desenvolver em grupo,
melhor que todos usem o mesmo estilo para evitar confuses.

3.10

Comentrios

Existem trs estilos de comentrio no Delphi, como mostrado abaixo.


(* Comentrio do Pascal Padro *)
{ Comentrio do Turbo Pascal }
// Comentrio de linha do C++

Cuidado com as diretivas de compilao, pois elas so delimitadas por chaves e podem ser
confundidas com comentrios. A diretiva de compilao mostrada abaixo includa em todas as Units
de Forms.
{$R*.DFM}

3.11

Tipos de Dados Padro

O Delphi trata vrios tipos de dados padro, segue uma descrio sucinta desses tipos.
Tipos Inteiros
So tipos numricos exatos, sem casas decimais. O tipo Integer o tipo inteiro padro.
Tipo

Tamanho em Bytes

Valor Mnimo

Valor Mximo

ShortInt
SmallInt
Longint
Byte
Word
Integer
Cardinal

1
2
4
1
2
4
4

-128
-32768
-2147483648
0
0
-2147483648
0

127
32767
2147483647
255
65535
2147483647
2147483647

Tipos Reais
So tipos numricos com casas decimais. O tipo Double o tipo real padro.
Tipo

Tamanho em Bytes

Valor Mnimo

Valor Mximo

Dgitos Significativos

Real
Single
Double
Extended
Comp
Currency

6
4
8
10
8
8

10-39
10-45
10-324
10-4932
-1018
-1012

1038
1038
10308
104932
1018
1012

11-12
7-8
15-16
19-20
19-20
19-20

Tipos Texto
Os tipos texto podem operar com caracteres simples ou grupos de caracteres. O tipo texto padro o
tipo string.
14

Programao Delphi apoiando aplicativos de Bases de Dados


Tipo

Descrio
Um nico caractere ASCII
Texto alocado dinamicamente, pode ser limitado a 255 caracteres conforme configurao
String terminada em nulo (#0), usada geralmente nas funes da API do Windows

Char
String
PChar

O operador + pode ser usado para concatenar strings e voc pode usar uma varivel do tipo string
como uma lista de caracteres.
ShowMessage('5 letra do ttulo da janela: ' + Caption[5]);
Label1.Text := '2 letra do Edit: ' + Edit1.Text[2];

Existem vrias funes de manipulao de strings, veja algumas das mais importantes mostradas
abaixo.
Funo

AnsiCompareText
AnsiLowerCase
AnsiUpperCase
Copy
Delete
Insert
Length
Pos
Trim
TrimLeft
TrimRight
Format

Descrio
Compara 2 strings sem sensitividade de maisculas/minsculas
Converte todas as letras de uma string para minsculas
Converte todas as letras de uma string para maisculas
Retorna parte de uma string
Apaga parte de uma string
Insere uma string em outra
Nmero de caracteres de uma string
Posio de uma string em outra
Remove todos os espaos de uma string
Remove os espaos esquerda de uma string
Remove os espaos direita de uma string
Formata uma string com uma srie de argumentos de vrios tipos

Por exemplo, para comparar o texto de dois Edits, poderamos usar a funo AnsiCompareText.
if AnsiCompareText(EdtA.Text, EdtB.Text) = 0 then
ShowMessage('O texto dos dois Edits so iguais.');

A funo Format especialmente til na formatao de strings, veja alguns exemplos.


ShowMessage(Format('O nmero %d a parte inteira do nmero %f.', [10, 10.5]));
ShowMessage(Format('Este texto%sfoi formatado%susando o caractere #%d.', [#13, #13,
13]));
ShowMessage(Format('O preo do livro %s %m.', ['Como Programar em Delphi',
50.7]));

Um detalhe que deve ser observado que as propriedades dos objetos no podem ser usadas
como variveis em funes. Veja a declarao do procedimento Delete no help.
procedure Delete(var S: string; Index, Count:Integer);

Digamos que voc deseje apagar as 5 primeiras letras de um Edit, como a string do Delete
varivel, no poderia usar o cdigo abaixo.
Delete(Edit1.Text, 1, 5);

Para voc poder fazer a operao desejada, teria que usar uma varivel como varivel auxiliar.
var
S: string;
begin
S := Edit1.Text;
Delete(S, 1, 5);
Edit1.Text := S;
end;

Tipos Ordinais
Tipos ordinais so tipos que tem uma seqncia incremental, ou seja, voc sempre pode dizer qual o
prximo valor ou qual o valor anterior a um determinado valor desses tipos. So tipos ordinais o Char,
15

Programao Delphi apoiando aplicativos de Bases de Dados

os tipos inteiros, o Boolean e os tipos enumerados. Algumas rotinas para ordinais so mostradas
abaixo.
Funo

Descrio

Dec
Inc
Odd
Pred
Succ
Ord
Low
High

Decrementa varivel ordinal


Incrementa varivel ordinal
Testa se um ordinal mpar
Predecessor do ordinal
Sucessor do ordinal
Ordem de um valor na faixa de valores de um tipo ordinal
Valor mais baixo na faixa de valores
Valor mais alto na faixa de valores

Por exemplo, use o cdigo abaixo no evento OnKeyPress de um Edit e veja o resultado.
Inc(Key);

Boolean
Variveis do tipo Boolean podem receber os valores lgicos True ou False, verdadeiro ou falso. Uma
varivel Boolean ocupa 1 byte de memria.

TDateTime
O tipo TDateTime guarda data e hora em uma estrutura interna igual ao tipo Double, onde a parte
inteira o nmero de dias desde 31/12/1899 e a parte decimal guarda a hora, minuto, segundo e
milissegundo. As datas podem ser somadas ou subtradas normalmente.
Existem vrias rotinas de manipulao de datas e horas, usadas com o tipo TDateTime, veja
algumas a seguir.
Rotina

Descrio

Date

Retorna a data do sistema

Now
Time

Retorna a data e hora do sistema


Retorna a hora do sistema

DayOfWeek

Retorna o dia da semana de uma data especificada

DecodeDate
DecodeTime

Decodifica um valor TDateTime em Words de dia, ms e ano


Decodifica um valor TDateTime em Words de hora, minuto, segundo e
milissegundos
Retorna um TDateTime a partir de Words de dia, ms e ano
Retorna um TDateTime a partir de Words de hora, minuto, segundo e
milissegundos

EncodeDate
EncodeTime

No help de cada uma das funes acima voc vai encontrar alguns exemplos, veja os colocados
abaixo.
if DayOfWeek(Date) = 1 then
ShowMessage('Hoje Domingo, p de cachimbo!')
else
ShowMessage('Hoje no Domingo, p de cachimbo!');
var
A, M, D: Word;
begin
DecodeDate(Date, A, M, D);
ShowMessage(Format('Dia %.2d do ms %.2d de %d.', [D, M, A]));
end;

16

Programao Delphi apoiando aplicativos de Bases de Dados

Variant
Tipo genrico, que pode atribuir e receber valores de qualquer outro tipo. Evite usar variveis do tipo
Variant, pois o uso dessas variveis pode prejudicar o desempenho do programa, alm de diminuir a
legibilidade do cdigo fonte e a integridade do executvel, veja o trecho de cdigo abaixo e note como
esse tipo de varivel tem um comportamento estranho.
var
V1, V2, V3: Variant;
begin
V1 := True;
V2 := 1234.5678;
V3 := Date;
ShowMessage(V1 + V2 + V3);
end;

3.12

Converses de Tipo

Freqentemente voc vai precisar converter um tipo de dado em outro, como um nmero em uma
string. Para essas converses voc pode usar duas tcnicas, o TypeCasting e as rotinas de converso de
tipos.

TypeCasting - uma converso direta de tipo, usando o identificador do tipo destino como se
fosse uma funo. Como o Delphi no faz nenhuma verificao se a converso vlida, voc deve
tomar um certo cuidado ao usar um TypeCast para no criar programas instveis.
var
I: Integer;
C: Char;
B: Boolean;
begin
I := Integer('A');
C := Char(48);
B := Boolean(0);
Application.MessageBox(PChar('Linguagem de Programao' + #13 + 'Delphi 3'),
'SENAC',
MB_ICONEXCLAMATION);
end;

Rotinas de Converso
As principais rotinas de converso esto listadas na tabela abaixo. Caso voc tente usar uma dessas
rotinas em uma converso invlida, pode ser gerada uma exceo.
Rotina

Chr
StrToInt
IntToStr
StrToIntDef
IntToHex
Round
Trunc
StrToFloat
FloatToStr
FormatFloat
DateToStr
StrToDate
TimeToStr
StrToTime
DateTimeToStr
StrToDateTime
FormatDateTime

Descrio
Byte em Char
String em Integer
Integer em String
String em Integer, com um valor default caso haja erro
Nmero em String Hexadecimal
Arredonda um nmero real em um Integer
Trunca um nmero real em um Integer
String em Real
Real em string
Nmero real em string usando uma string de formato
TDateTime em string de data, de acordo com as opes do Painel de Controle
String de data em TDateTime
TDateTime em Strind de Hora
String de hora em TDateTime
TDateTime em string de data e hora
String de data e hora em TDateTime
TDateTime em string usando uma string de formato

17

Programao Delphi apoiando aplicativos de Bases de Dados


Qualquer tipo em outro usando argumentos do tipo Variant
Variante em qualquer tipo
String em nmero, real ou inteiro
Nmero, real ou inteiro, em String

VarCast
VarAsType
Val
Str

Veja alguns exemplos de como usar essas rotinas. Converso de dados uma operao muito
comum na programao em Object Pascal, seeria interessante dar uma olhada no help de cada uma das
funes acima.
var
I: Integer;
D: Double;
S1, S2: string;
begin
D := 10.5;
I := Trunc(D);
S1 := FloatToStr(D);
S2 := IntToStr(I);
ShowMessage(S1 + #13 + S2);
end;
var
A, B, Soma: Bouble;
begin
A := StrToFloat(EdtA.Text);
B := StrToFloat(EdtB.Text);
Soma := A + B;
ShowMessage(Format('%f + %f = %f', [A, B, Soma]);
end;

3.13

Expresses

Uma expresso qualquer combinao de operadores, variveis, constantes, valores literais e


chamadas de funes que resultem em um valor de determinado tipo. Uma expresso usada sempre
que precisamos de um valor que possa ser obtido por uma expresso. Alguns exemplos so
apresentados a seguir.

A + 12 * C
Date - 4
StrToInt(Edit1.Text + Edit2.Text)
StrToDate(Edit2.Text) - StrToDate(Edit1.Text)
12 * A / 100
A < B

3.14

Operadores

Os operadores so usados em expresses e a ordem em que as expresses so executadas depende da


precedncia desses operadores. Veja abaixo a lista de operadores em ordem descendente de
precedncia.
Operadores Unrios
Endereo
No booleano ou bit voltado para no
Operadores Multiplicativos e de direo de Bit
Multiplicao ou interseo de conjuntos
*
Diviso de Real
/
Diviso de Inteiro
div
Resto de diviso de Inteiros
mod
TypeCast seguro quanto ao tipo (RTTI)
as

@
not

18

Programao Delphi apoiando aplicativos de Bases de Dados


E booleano ou bit voltado para e
Deslocamento de bits esquerda
Deslocamento de bits direita

and
shl
shr
Operadores Aditivos

Adio ou unio de conjuntos


Subtrao ou diferena de conjuntos
Ou booleano ou bit voltado para ou
Ou exclusivo booleano ou bit voltado para ou exclusivo

+
or
xor
Operadores Relacionais

Igual
Diferente
Menor
Maoir
Menor ou igual
Maior ou igual
Pertinncia a conjuntos
Compatibilidade de tipos (RTTI)

=
<>
<
>
<=
>=
in
is

Para forar uma expresso de menor precedncia a ser executada antes, voc pode usar os
parnteses, como mostrado abaixo.
(5 - 2) * 3;
(A > B) and (A < C)

Para fazer potenciao, use a funo Power, abaixo temos que A igual a A elevado a 4.
A := Power(A, 4);

3.15

Estruturas de Deciso

If - uma estrutura de deciso usada para realizar instrues em determinadas condies. O if


considerado uma s instruo, por isso, s encontramos o ponto-e-vrgula no final. O else opcional.
if Opn.Execute then
Img.Picture.LoadFromFile(Opn.FileName);
if Nota < 5 then
ShowMessage('Reprovado')
else
ShowMessage('Aprovado');

Case - permite que o fluxo da execuo seja desviado em funo de vrias condies de acordo com o
valor do argumento, que tem que ser ordinal, caso o valor do argumento no corresponda a nenhum
dos valores listados, podemos incluir um else.
case Ch of
' ': ShowMessage('Espao');
'0'..'9': ShowMessage('Dgito');
'+', '-', '*', '/': ShowMessage('Operador');
else
ShowMessage('Caractere especial');
end;
case
0:
1:
2:
end;

3.16

CbbBorda.ItemIndex of
BorderStyle := bsDialog;
BorderStyle := bsSingle;
BorderStyle := bsSizeable;

Estruturas de Repetio

While - executa uma instruo at que uma condio deixe de ser verdadeira.
19

Programao Delphi apoiando aplicativos de Bases de Dados


I := 10;
while I >= 0 do
begin
ShowMessage(IntToStr(I));
Dec(I);
end;

For - executa uma instruo um nmero determinado de vezes, incrementando uma varivel de
controle automaticamente a cada iterao. Caso seja preciso que a contagem seja decremental, pode-se
usar downto em vez de to.
for I := 1 to ComponentCount do
ShowMessage('O ' + IntToStr(I) + ' Componente ' + Components[I 1].Name);
for I := Length(Edit1.Text) downto 1 do
ShowMessage(Edit1.Text[I]);

Repeat - executa instrues at que uma condio seja verdadeira.


I := 1;
repeat
S := InputBox('Acesso', 'Digite a senha', '');
Inc(I);
if I > 3 then
Halt;
until S = 'fluminense';

Quebras de Lao - em qualquer um dos laos mostrados podemos usar o procedimento Break para
cancelar a repetio e sair do lao, podemos tambm forar a prxima iterao com o procedimento
Continue.
I := 1;
while true do
begin
Inc(I);
if I < 10000000 then
Continue;
ShowMessage('Chegamos a dez milhes');
Break;
end;

3.17

Tipos Definidos pelo Usurio

O usurio tambm pode declarar tipos no definidos pelo Delphi. Essas declaraes so feitas na seo
type, da interface ou implementation, sendo que na implementation esses tipos no podero ser usados
em outras Units. Mas, de fato, dificilmente voc ter que definir tipos, a no ser classes, pois os tipos
padro do Delphi so o bastante para a maioria das aplicaes.

Strings Limitadas - caso se deseje limitar o nmero de caracteres que uma string pode receber,
podemos criar um tipo de string limitada.
TNome = string[40];
TEstado = string[2];

Tipo Sub-Faixa - um subconjunto de um tipo ordinal e possui as mesmas propriedades do tipo


original.
TMaiusculas = 'A'..'Z';
TMes = 1..12;

20

Programao Delphi apoiando aplicativos de Bases de Dados

Enumeraes - define uma seqncia de identificadores como valores vlidos para o tipo. A cada
elemento da lista de identificadores associado internamente um nmero inteiro, iniciando pelo
nmero 0, por isso so chamados de tipos enumerados.
TBorderIcon = (biSystemMenu, biMinimize, biMaximize, biHelp);
TDiaSemana = (Seg, Ter, Qua, Qui, Sex, Sab, Dom);

Ponteiros - armazenam endereos de memria, todas as classes em Object Pascal so


implementadas como ponteiros:
TIntPtr: ^Integer;
Quanto desejo o ponteiro de um outro objeto:
TIntPtr := @Tvarnum;
Quanto desejo manipular o objeto e no o ponteiro:
showmessage ( IntToStr ( TIntPtr^ ) );

Records - o tipo record uma forma de criar uma nica estrutura com valores de diferentes tipos de
dados. Cada um dos dados de um record chamado de campo.
TData = record
Ano: Integer;
Mes: TMes;
Dia: Byte;
end;
var
Festa: TData;
begin
Festa.Ano := 1997;
Festa.Mes := Mai;
Festa.Dia := 8;
end;

Arrays - Fornecem uma forma de criar variveis que contenham mltiplos valores, como em uma
lista ou tabela, cujos elementos so do mesmo tipo. A seguir, alguns exemplos de arrays de dimenses
variadas.
TTempDia = array [1..24] of Integer;
TTempMes = array [1..31, 1..24] of Integer;
TTempAno = array [1..12, 1..31, 1..24] of Integer;
var
TD: TTempDia;
I: Integer;
begin
for I := 1 to 24 do
TD[I] := StrToIntDef(InputBox('Temperaturas', 'Digite a temperatura na
hora '
+ IntToStr(I), ''), 30);
end;

Um array pode ser definido como constante tipada, onde todos os seus elementos devem ser
inicializados.
FAT: array[1..7] of Integer = (1, 2, 6, 24, 120, 720, 5040);

O tipo dos elementos de um array pode ser qualquer um, voc pode ter uma array de objetos, de
conjuntos, de qualquer tipo que quiser, at mesmo um array de arrays.
TTempMes = array [1..31] of TTempDia;
TBtnList = array [1..10] of TButton;

Sets - So conjuntos de dados de um mesmo tipo, sem ordem, como os conjuntos matemticos.
Conjuntos podem conter apenas valores ordinais, o menor que um elemento pode assumir zero e o
maior, 255.
TBorderIcons = set of BorderIcon;

21

Programao Delphi apoiando aplicativos de Bases de Dados


BorderIcons := [biSystemMenu, biMinimize];
if MesAtual in [Jul, Jan, Fev] then
ShowMessage('Frias');

Os conjuntos podem ser definidos como constantes ou constantes tipadas, como abaixo.
DIG_HEXA = ['0'..'9', 'A'..'Z', 'a'..'z'];
DIG_HEXA: set of Char = ['0'..'9', 'A'..'Z', 'a'..'z'];

3.18

Procedimentos, Funes e Mtodos

As aes de um objeto devem ser definidas como mtodos. Quando a ao no pertence a um objeto,
como uma transformao de tipo, essa ao deve ser implementada em forma de procedimentos e/ou
funes.

Procedimentos
So sub-rotinas, que realizam uma tarefa e no retornam um valor. A declarao de um procedimento
feita na seo interface e a definio, na seo implementation. Ao chamar o identificador do
procedimento, com os parmetros necessrios, esse procedimento ser executado. Veja abaixo o
exemplo de uma unit com a implementao um procedimento.
unit Tools;
interface
procedure ErrorMsg(const Msg: string);
implementation
uses Forms, Windows;
procedure ErrorMsg(const Msg: string);
begin
Application.MessageBox(PChar(Msg), 'Operao invlida', MB_ICONERROR);
end;
end.

Funes
So muito semelhantes com procedimentos; a nica diferena que as funes retornam um valor. O
tipo do valor de retorno deve ser informado no cabealho da funo. Na implementao da funo
deve-se atribuir o valor de retorno palavra reservada Result ou ao identificador da funo. Pode-se
ento usar a funo em expresses, atribuies, como parmetros para outras funes, em qualquer
lugar onde o seu valor possa ser usado.
function Average(A, B: Double): Double;
begin
Result := (A + B) / 2;
end;

Mtodos
So funes ou procedimentos que pertencem a alguma classe, passando a fazer parte de qualquer
objeto dessa classe. Na implementao de um mtodo precisamos indicar qual a classe qual ele
pertence. Para chamar um mtodo em algum lugar no pertencente sua classe, como procedimentos,
funes ou mtodos de outras classes, deve ser indicado o objeto que deve executar o mtodo. Os
mtodos usam os mesmos nveis de encapsulamento dos atributos.
type
TFrmMsg = class(TForm)
LblMsg: TLabel;
BtnOk: TButton;
BtnCancelar: TButton;
ImgMsg: TImage;
public

22

Programao Delphi apoiando aplicativos de Bases de Dados


procedure ShowMsg(const Msg: string);
end;
procedure TFormMsg.ShowMsg(const Msg: string);
begin
LblMsg.Caption := Msg;
ShowModal;
end;

Parmetros
Existem trs tipos de passagem de parmetros, que devem ser indicados na declarao da funo ou
procedimento. Parmetros de tipos diferentes de vem ser separados por ponto e vrgula.
function MultiStr(const S: string;

N: Double; var Erro: Integer): string;

Quando no indicado o tipo de passagem, passado o valor do parmetro, como constante.


Ao usar a palavra-chave var no enviado o valor do parmetro, mas a referncia a ele, tornando
possvel mudar o valor do parmetro no cdigo do procedimento.
Como alternativa voc pode passar um parmetro por referncia constante, para isso use a palavra
const antes da declarao do parmetro.

3.19 With
Usado para facilitar o acesso s propriedades e mtodos de um objeto.
with Edt do
begin
CharCase := ecUpperCase;
MaxLenght := 10;
PasswordChar := '*';
Text := 'Brasil';
end;

3.20

Self

Self usado quando se quer referenciar a instncia atual da classe. Se voc precisar referenciar a
instncia atual de uma classe, prefervel usar Self em vez de usar o identificador de um Objeto, isso
faz com que o cdigo continue funcionando para as demais instncias da classe e em seus
descendentes.

3.21 Criando e Destruindo Objetos


Antes de tudo, voc deve declarar o objeto, se quiser referenci-lo. Para cri-lo, use o mtodo Create,
que um mtodo de classe. Para voc usar um mtodo de classe, referencie a classe, no o Objeto,
como mostrado a seguir.

var
Btn: TBitBtn;
begin
Btn := TBitBtn.Create(Self);
With Btn do
begin
Parent := Self;
Kind := bkClose;
Caption := '&Sair';
Left := Self.ClientWidth - Width - 8;
Top := Self.ClientHeight - Height - 8;
end;
end;

23

Programao Delphi apoiando aplicativos de Bases de Dados

Porm, se voc no precisar referenciar o Objeto, poderia criar uma instncia sem referncia.
with TBitBtn.Create(Self) do
begin
Parent := Self;
Kind := bkClose;
Caption := '&Sair';
Left := Self.ClientWidth - Width - 8;
Top := Self.ClientHeight - Height - 8;
end;

Para destruir um objeto, use o mtodo Free. Para Forms, recomendado usar o Release, para
que todos os eventos sejam chamados. O parmetro do mtodo Create usado apenas em
Componentes, para identificar o componente dono. Ao criar Forms, poderamos usar o Objeto
Application.
FrmSobre := TFrmSobre.Create(Application);
FrmSobre.ShowModal;
FrmSobre.Release;

Para criar objetos no componentes, voc no precisa de nenhum parmetro no mtodo Create.
var
Lst: TStringList;
begin
Lst := TStringList.Create;
Lst.Add('Al, Teresinha!');
Lst.Add('Uhh uhh...');
Lst.SaveToFile('Teresinha.txt');
Lst.Free;
end;

3.22

RTTI

Run Time Type Information a informao de tipo dos objetos em tempo de execuo. O operador is
usado para fazer comparaes e o operador as usado para fazer um TypeCast seguro com objetos.
for I := 0 to ComponentCount - 1 do
if Components[I] is TEdit then
TEdit(Components[I]).Clear;
(Sender as TEdit).Color := clYellow;

3.23

Excees

O tratamento de exceo um mecanismo capaz de dar robustez a uma aplicao, permitindo que os
erros sejam manipulados de uma maneira consistente e fazendo com que a aplicao possa se
recuperar de erros, se possvel, ou finalizar a execuo quando necessrio, sem perda de dados ou
recursos.
Para que uma aplicao seja segura, seu cdigo necessita reconhecer uma exceo quando esta
ocorrer e responder adequadamente a essa exceo. Se no houver tratamento para uma exceo, ser
exibida uma mensagem padro descrevendo o erro e todos os processamentos pendentes no sero
executados. Uma exceo deve ser respondida sempre que houver perigo de perda de dados ou de
recursos do sistema.
Excees so classes definidas pelo Delphi para o tratamento de erros. Quando uma exceo
criada, todos os procedimentos pendentes so cancelados e, geralmente mostrada uma mensagem de
erro para o usurio. As mensagens padro nem sempre so claras, por isso indicado criar seus
prprios blocos protegidos.

24

Programao Delphi apoiando aplicativos de Bases de Dados

Blocos Protegidos
Um bloco protegido um grupo de comandos com uma seo de tratamento de excees.
try
A := StrToFloat(EdtA.Text);
B := StrToFloat(EdtB.Text);
ShowMessage(Format('%f / %f = %f', [A, B, A + B]));
except
ShowMessage('Nmeros invlidos.');
end;

Algumas vezes voc pode precisar especificar quais excees quer tratar, como mostrado abaixo.
try
Soma := StrToFloat(EdtSoma.Text);
NumAlunos := StrToInt(EdtNum.Text);
ShowMessage(Format('Mdia igual a %f.', [Soma / NumAlunos]));
except
on EConvertError do
ShowMessage('Valor invlido para soma ou nmero de alunos.');
on EZeroDivide do
ShowMessage('O nmero de alunos tem que ser maior que zero.');
else
ShowMessage('Erro na operao, verifique os valores digitados.');
end;

Principais Excees
O Delphi define muitas excees, para cada erro existe uma exceo correspondente.
Classe
Exception
EAbort
EAccessViolation
EConvertError
EDivByZero
EInOutError
EIntOverFlow
EInvalidCast
EInvalidOp
EOutOfMemory
EOverflow
ERangeError
EUnderflow
EVariantError
EZeroDivide
EDatabaseError
EDBEngineError

Descrio
Exceo genrica, usada apenas como ancestral de todas as outras excees.
Exceo silenciosa pode ser gerada pelo procedimento Abort e no mostra nenhuma mensagem.
Acesso invlido memria, geralmente ocorre com objetos no inicializados.
Erro de converso de tipos.
Diviso de inteiro por zero.
Erro de Entrada ou de Sada reportado pelo sistema operacional.
Resultado de um clculo inteiro excedeu o limite.
TypeCast invlido com o operador as.
Operao invlida com nmero de ponto flutuante.
Memria insuficiente.
O resultado de um clculo, com nmero real, excedeu o limite.
Valor excede o limite do tipo inteiro ao qual foi atribuda.
O resultado de um clculo, com nmero real, menor que a faixa vlida.
Erro em operao com variant.
Diviso de real por zero.
Erro genrico de banco de dados, geralmente no usado diretamente.
Erro da BDE, descende de EDatabaseError e traz dados que podem identificar o erro.

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

FrmSobre := TFrmSobre.Create(Application);
try
FrmSobre.Img.LoadFromFile('Delphi.bmp');
FrmSobre.ShowModal;
finally
FrmSobre.Release;
end;

25

Programao Delphi apoiando aplicativos de Bases de Dados

Voc pode usar blocos de proteo e finalizao aninhados


FrmOptions := TFrmOptions.Create(Application);
try
FrmOptions.ShowModal;
try
Tbl.Edit;
TblValor.AsString := EdtValor.Text;
except
on EDBEngineError do
ShowMessage('Alterao no permitida.');
on EConvertError do
ShowMessage('Valor invlido.');
end;
finally
FrmOptions.Release;
end;

Gerao de Excees
Voc pode provocar uma exceo usando a clusula raise.
raise EDatabaseError.Create('Erro ao alterar registro.');

Tambm possvel criar seus prprios tipos de excees.


type
EInvalidUser = class (Exception);
raise EInvalidUser.Create('Voc no tem acesso a essa operao.');

Se voc quiser que uma exceo continue ativa, mesmo depois de tratada, use a clusula raise
dentro do bloco de tratamento da exceo. Geralmente isso feito com excees aninhadas.
try
Tbl.Edit;
TblContador.Value := TblContador.Value + 1;
Tbl.Post;
except
ShowMessage('Erro ao alterar contador.');
raise;
end;

Erros de Bancos de Dados


A exceo EDBEngineError permite a identificao de erros de bancos de dados gerados pela BDE
(Borland Database Engine).
try
TblCli.Post;
except
on E: EDBEngineError do
if E.Errors[0].ErrorCode = DBIERR_KEYVIOL then
ShowMessage('Cliente j cadastrado.');
end;

Note que a varivel E, que vai identificar o erro, s precisa ser declarada no bloco de
tratamento da exceo. No help voc pode consultar outras propriedades de EDBEngineError que
podem ser importantes.
Voc tambm pode usar os eventos de erro do componente Table, sem precisar de blocos de
tratamento.
procedure TFrmCadCli.TblCliPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
if(E is EDBEngineError) then
with EDBEngineError(E) do

26

Programao Delphi apoiando aplicativos de Bases de Dados


case Errors[0].ErrorCode of
DBIERR_KEYVIOL: ShowMessage('Cliente j cadastrado.');
DBIERR_REQDERR: ShowMessage('Campo obrigatrio no preenchido.');
end
else
ShowMessage('Erro no banco de dados:' + #13#13 + E.Message);
Action := daAbort;
end;

Alguns cdigos de erro da BDE esto listados abaixo. Todas as constantes e funes
relacionadas API da BDE no Delphi 3 esto na Unit BDE, que deve ser adicionada clusula uses.
No BDE API Help voc pode encontrar referncia sobre as funes nativas da BDE, como tambm
alguns exemplos em Delphi.
Constante
DBIERR_KEYVIOL
DBIERR_MAXVALERR
DBIERR_FORIEGNKEYERR
DBIERR_LOCKED
DBIERR_FILELOCKED
DBIERR_NETMULTIPLE
DBIERR_MINVALERR
DBIERR_REQDERR
DBIERR_LOOKUPTABLEERR

Descrio
Violao de chave primria
Valor mximo excedido
Erro de chave externa, como em integridade referencial
Registro travado
Arquivo travado
Mais de um diretrio usado como NetFileDir
Campo com valor mais baixo que valor mnimo
Campo obrigatrio faltando
Erro em tabela Lookup

Se voc quiser mais informaes a respeito do erro pode usar o procedimento


DBIGetErrorContext, como na funo mostrada abaixo que retorna determinadas informaes sobre o
erro.
function GetErrorInfo(Context: SmallInt): string;
begin
SetLength(Result, DBIMAXMSGLEN + 1);
try
DbiGetErrorContext(Context, PChar(Result));
SetLength(Result, StrLen(PChar(Result)));
except
Result := '';
end;
end;

No evento OnEditError, usado no exemplo abaixo, se ocorrer um erro ao tentar alterar um


registro, podemos identificar o usurio da rede que est alterando esse registro usando a funo criada
anteriormente.
if Pos('locked', E.Message) > 0 then
ShowMessage('Usurio ''' + GetErrorInfo(ecUSERNAME) + ''' est alterando o
registro.');

Note que foi usada uma outra tcnica de identificao do erro, usando a prpria mensagem de
erro e no o cdigo, como mostrado anteriormente. Voc pode usar a funo criada acima mandando
como parmetro os valores mostrados abaixo, que podem ser encontrados no help da BDE.
Constante
ecTABLENAME
EcFIELDNAME
EcUSERNAME
EcFILENAME
EcINDEXNAME
EcDIRNAME
EcKEYNAME
EcALIAS
EcDRIVENAME

Descrio
Nome da Tabela
Nome do campo
Nome do usurio, muito usado para identificar qual usurio travou o registro
Nome do arquivo
Nome do ndice
Pasta
Chave primria
Alias
Drive

27

Programao Delphi apoiando aplicativos de Bases de Dados


EcNATIVECODE
EcNATIVEMSG
EcLINENUMBER

Cdigo de erro nativo


Mensagem de erro nativa
Nmero da linha, usado em instrues SQL

Para desenvolver um sistema genrico de tratamento de erros, considere a opo de criar esse
tratamento em um DataModule genrico para ser usado como ancestral por todos os DataModules do
sistema, utilizando a herana visual.
Se o nico problema for traduzir as mensagens, localize os arquivos CONSTS.INT e
DBCONSTS.INT e crie uma nova Unit de definio de strings com uma estrutura semelhante a
mostrada abaixo e juntando todas as definies das constantes das duas Units devidamente traduzidas.
Depois, basta usar essa Unit em seus projetos que as novas mensagens iro sobrepor s anteriores.
unit NewConsts;
interface
resourcestring
SAssignError = 'No possvel atribuir %s a %s';
SFCreateError = 'No possvel criar arquivo %s';
SFOpenError = 'No possvel abrir arquivo %s';
SInvalidFieldSize = 'Tamanho de campo invlido';
SInvalidFieldRegistration = 'Registro de campo invlido';
SUnknownFieldType = 'Campo ''%s'' tem um tipo desconhecido';
implementation
end.

Uma outra opo seria criar um mtodo para o evento OnException do objeto Application,
esse mtodo seria chamado sempre que houvesse uma exceo em qualquer parte do sistema.

BIBLIOTECA DE CLASSES

4.1

Nomenclatura

Para nomear os componentes podemos usar uma conveno muito usada, onde as primeiras letras,
minsculas, identificam o tipo do componente e o restante identifica a funo deste, assim, btnSair,
seria o boto de sair.
Se a funo do componente for um nome composto esse nome deve ser escrito com os
primeiros nomes abreviados e com letras de caso varivel, como em btnRelVendas, que seria o boto
do relatrio de vendas ou btnRelVenProduto, que seria o boto do relatrio de vendas por produto.

4.2

Propriedades

As propriedades so caractersticas dos componentes, como foi mostrado anteriormente. Para alterar
propriedades em cdigo use a sintaxe de ponto, como mostrado a seguir.

Tipos de Propriedade

Tipo String

Button1.Caption := 'Fechar';
Label1.Caption := Edit1.Text + '/' + Edit2.Text;

Tipo Numrico

Button2.Height := Button2.Height * 2;
Width := Button1.Width + Button2.Width + 12;

Tipo Enumerado

BorderStyle := bsDialog;

28

Programao Delphi apoiando aplicativos de Bases de Dados


Panel1.Color := clWindow;

Propriedades Aninhadas de Classe

Memo1.Lines.Text := 'E agora, Jos?';


Label1.Font.Color := clBlue;

Propriedades Aninhadas de Conjunto

BorderIcons := [biSystemMenu, biMaximize];


Label1.Font.Style := [fsBold, fsItalic];

Propriedades Comuns
Propriedade

Align
Canvas
Caption
Color
ComponentCount
Components
Ctl3D
Enabled
Font
Height
HelpContext
Hint
Left
Name
PopupMenu
ShowHint
TabOrder
TabStop
Tag
Top
Visible
Width

4.3

Descrio
Determina o alinhamento do componente
Superfcie de desenho, do tipo TCanvas, onde pode se desenhar a imagem do componente
Legenda do componente (& indica tecla de atalho para alguns componentes)
Cor do componente
O nmero de componentes possudos
Matriz de componentes possudos
Define a aparncia 3D do componente
Define se o componente est ativo, se pode ser usado
Fonte utilizada no componente
Altura
Nmero utilizado para chamar o Help on-line
String utilizada em dicas instantneas
Posio esquerda
Nome do componente
Menu de contexto do componente
Define se o Hint ser mostrado
A ordem de tabulao do componente, usada quando o usurio tecla TAB
Indica se o componente ser selecionado quando o usurio teclar TAB
Propriedade no utilizada pelo Delphi, que pode ser usada como propriedade personalizada.
Posio superior
Define se o componente est visvel
Largura

Eventos

Os Eventos acontecem em resposta a uma ao do usurio ou do prprio sistema, ao programar um


mtodo de evento, devemos levar em considerao que este s ser executados quando o evento
acontecer. Uma das tarefas mais importantes na programao baseada em eventos determinar quais
eventos sero usados e qual a ordem desses eventos, por exemplo, quando o usurio clicar em um
boto, qual evento acontecer primeiro, OnEnter, OnMouseDown ou OnClick?
Os eventos podem ser compartilhados entre componentes, dessa Forma, voc pode ter um
boto na barra de ferramentas que faz a mesma coisa que uma opo de menu. Para isso, basta
escolher o evento na lista em vez de clicar duas vezes no Object Inspector.
Podemos tambm mudar os mtodos de evento em cdigo, pois os eventos tambm so
propriedades e podem ser usados como tal. Voc pode atribuir um evento de outro componente ou
diretamente o nome do mtodo, como mostrado abaixo.
Button1.OnClick := Edit1.OnExit;
Button2.OnClick := Edit2Click;

Eventos Comuns
Evento

OnChange
OnClick
OnDblClick

Descrio
O contedo do componente alterado
O componente acionado
Duplo-clique no componente

29

Programao Delphi apoiando aplicativos de Bases de Dados


O componente recebe o foco
O componente perde o foco
Tecla pressionada
Uma tecla pressionada e solta
Tecla solta

OnEnter
OnExit
OnKeyDown
OnKeyPress
OnKeyUp

4.4

Mtodos

Os mtodos realizam aes definidas pelo componente, veja os exemplos abaixo e atente para os
parmetros passados. Note que podemos chamar os mtodos de evento como qualquer outro mtodo e
que os mtodos de evento pertencem ao Form, no aos componentes.
Edit1.Clear;
Form2.Show;
Close;
ScaleBy(110, 100);
Button1.ScrollBy(10, 10);
Button1.OnClick(Sender);
Button1Click(Self);
Form2.Button1Click(Sender);

Mtodos Comuns
Mtodo

Create
Free
Show
Hide
SetFocus
Focused
BringToFront
SendToBack
ScrollBy
ScaleBy
SetBounds

4.5

Descrio
Cria um novo Objeto de uma Classe
Destri um Objeto e libera a memria ocupada por ele
Torna o componente visvel
Torna o componente invisvel
Coloca o foco no componente
Determina se o componente tem o foco
Coloca o componente na frente dos outros
Coloca o componente atrs dos outros
Move o componente
Gradua o componente em determina escala
Muda a posio e o tamanho do componente

Janelas

Todo aplicativo Windows composto por janelas, que so o elemento bsico no desenvolvimento
Delphi, sobre o qual um aplicativo construdo. O tipo TForm usado no Delphi como classe base
para todas as janelas, veja abaixo algumas propriedades, eventos e mtodos dessa classe.
Propriedade

Active
ActiveControl
AutoScroll
BorderIcons
BorderStyle
FormStyle
Icon
Menu
Position
WindowMenu
WindowState
Evento

OnCreate
OnDestroy
OnShow
OnCloseQuery

Descrio
Indica se o Form est ativo
Determina o controle que receber o foco por default
Adiciona barras de rolagem automaticamente, quando necessrio
Define quais cones de controle sero visveis, quais botes vo aparecer na barra de
ttulo
Estilo da borda do Form
Tipo de Form, normal, MDI pai, MDI filho ou sempre visvel
cone do Form
Indica qual o menu do Form
Permite controlar a posio e tamanho do Form na exibio
Automatiza o item de menu Window (MDI)
Estado do Form, maximizada, minimizada ou normal
Descrio
Quando o Form instanciado
Quando o Form liberado da memria
Exatamente antes de mostrar o Form
chamada para validar se o Form pode ser fechado

30

Programao Delphi apoiando aplicativos de Bases de Dados

OnClose
OnActivate
OnDeactivate
OnResize
Mtodo

Cascade
Tile
ArrangeIcons
ShowModal
Show
Close
Previous
Next

4.6

Quando o Form fechado


Quando o Form recebe o foco
Quando o Form perde o foco
Quando o Form muda de tamanho
Descrio
Organiza as Forms filhos em cascata (MDI)
Organiza as Forms filhos lado a lado (MDI)
Organiza os cones dos Forms Filhos minimizados (MDI)
Ativa o Form modal, que o usurio tem que fechar para poder continuar a usar a aplicao
Mostra o Form
Fecha o Form
Ativa o Form anterior (MDI)
Ativa a prximo Form (MDI)

Componentes Padro

Tbutton - Componente boto padro do Windows, utilizado para executar aes.


Propriedade

Cancel
Default
ModalResult
Mtodo
Click

Descrio
Dispara o evento OnClick do boto quando a tecla ESC pressionada em qualquer
controle
Dispara o evento OnClick do boto quando a tecla ENTER pressionada em qualquer
controle
Associa o boto a opo de fechamento de um Form modal
Descrio
Ativa o evento OnClick do boto

TbitBtn - Boto especializado, com Bitmap.


Propriedade

Glyph
LayOut
Margin
Spacing
Kind

Descrio
Bitmap exibido pelo boto
Posio do Bitmap no Boto
Indica o espao entre a borda do boto e o Bitmap
Indica o espao entre o Bitmap e o texto do boto
Seleciona um tipo padro para o boto, mudando vrias propriedades, como Glyph e
ModalResult

TspeedButton - Boto com Bitmap, normalmente utilizado em barras de ferramentas.


Propriedade

Down
GroupIndex
AllowAllUp
Flat

Descrio
Estado do boto (Pressionado ou no)
Indica quais botes pertencero ao mesmo grupo
Permite que todos os botes de um grupo possam ficar no pressionados
Define se a borda do boto deve aparecer apenas quando ele for apontado

Tlabel - Utilizado para exibir rtulos


Propriedade

Alignment
AutoSize
WordWrap
Transparent
FocusControl
ShowAccelChar

Descrio
Alinhamento do texto no componente
Define se o tamanho do componente ser automaticamente ajustado ao tamanho do
Caption
Retorno automtico de linha
Define se o componente ser transparente
Componente que receber o foco quando a tecla de atalho do Caption (&) for pressionada
Indica se o caractere & ser usado para definir tecla de atalho

31

Programao Delphi apoiando aplicativos de Bases de Dados

Tedit - Utilizado para entrada de texto em uma nica linha.


Propriedade

Text
AutoSelect
MaxLength
CharCase
PasswordChar
ReadOnly

Descrio
Texto do componente
Indica se o texto ser ou no selecionado quando o componente receber o foco
Nmero mximo de caracteres permitidos
Define se as letras aparecero em maisculo, minsculo ou normal
Caractere utilizado para esconder o texto digitado (Senhas)
Define se ser permitido alterar o texto

Mtodo
Clear
ClearSelection

Descrio
Limpa o contedo do componente
Limpa o texto selecionado no componente

TmaskEdit - Permite entrada de dados texto em uma linha, utilizando uma mscara de edio.
Possui todas as propriedades do componente TEdit.
Propriedade

EditMask

Descrio
Mscara de edio

Mscaras - uma mscara composta por trs partes, a primeira parte a mscara propriamente dita,
a segunda parte indica se os caracteres literais sero salvos e a terceira parte indica qual o caractere
utilizado para representar os espaos a serem digitados no texto.
Estes so os caracteres especiais que podem compor a mscara de edio:
Caractere

!
>
<
\
l
L
a
A
9
0
c
C
#
:
/

Descrio
Espaos em branco no sero considerados no texto
Todos os caracteres seguintes sero maisculos at que aparea o caractere <
Todos os caracteres seguintes sero minsculos at que aparea o caractere >
Indica um caractere literal
Somente caractere alfabtico
Obrigatoriamente um caractere alfabtico
Somente caractere alfanumrico
Obrigatoriamente caractere alfanumrico
Somente caractere numrico
Obrigatoriamente caractere numrico
Permite um caractere
Obrigatoriamente um caractere
Permite um caractere numrico ou sinal de mais ou de menos, mas no os requer.
Separador de horas, minutos e segundos
Separador de dias, meses e anos

Tmemo - Permite entrada de dados texto em mltiplas linhas. Contm propriedades e mtodos do
TEdit.
Propriedade

Lines
WantReturns
WantTabs
ScrollBar

Descrio
Propriedade do tipo TStrings que armazena as linhas de texto do componente
Define se a tecla ENTER ser tratada como quebra de linha
Define se a tecla TAB ser tratada como espao de tabulao
Define as barras de rolagem

Tstrings - Muitos componentes, como o TMemo, possuem propriedades do Tipo TStrings, essa
classe permite armazenar e manipular uma lista de Strings. Toda propriedade do tipo TStrings permite
acesso indexado aos itens da lista.
Propriedade

Count
Text
Mtodo

Descrio
Nmero de strings
Contedo do memo na Forma de uma nica string
Descrio

32

Programao Delphi apoiando aplicativos de Bases de Dados

Add
Insert
Move
Delete
Clear
IndexOf
LoadFromFile
SaveToFile

Adiciona uma nova string no final da lista


Insere uma nova string numa posio especificada
Move uma string de um lugar para outro
Apaga uma string
Apaga toda a lista
Retorna o ndice do item e - 1 caso no encontre
Carrega texto de um arquivo
Salva texto para um arquivo

TcheckBox - Utilizado para obter informaes de checagem.


Propriedade

AllowGrayed
Checked
State

Descrio
Determina se o checkbox ter trs possibilidades de estado
Determina se o checkbox est marcado
Estado atual do checkbox

TradioButton - Usado em grupo, pode ser utilizado para obter inFormaes lgicas mutuamente
exclusivas, mas recomendado usar o RadioGroup em vez de RadioButtons.

TradioGroup - Componente que agrupa e controla RadioButtons automaticamente.


Propriedade

Columns
Items
ItemIndex

Descrio
Nmero de colunas de RadioButtons
Lista de strings com os itens do RadioGroup, cada item da lista
RadioButton
Item selecionado, iniciando em 0

representa um

Tpanel - Componente Container utilizado para agrupar componentes em um painel.


Propriedade

BevelInner
BevelOuter
BevelWidth
BorderStyle
BorderWidth

Descrio
Estilo da moldura interna do painel
Estilo da moldura externa do painel
Largura das molduras
Estilo da Borda
Largura da borda, distncia entre as molduras interna e externa

TscrollBox - Container com barras de rolagem automticas.


TgroupBox - Componente container com um ttulo e borda 3D.
Tbevel - Moldura ou linha com aparncia 3D.
Propriedade

Shape
Style

Descrio
Tipo de moldura a ser desenhada
Define alto ou baixo relevo para a linha

TlistBox - Utilizado para exibir opes em uma lista.


Propriedade

Columns
MultiSelect
ExtendedSelect
IntegralHeight
Items
ItemIndex
Selected

Descrio
Nmero de colunas de texto da lista
Define se ser permitida a seleo de mltiplos itens
Define se a seleo poder ser estendida pelo uso das teclas Shift e Ctrl
Define se os itens podero aparecer parcialmente ou somente por completo
Lista de strings com os itens da lista
ndice do item selecionado, comeando em 0
De acordo com o ndice indica se um item em particular esta selecionado

33

Programao Delphi apoiando aplicativos de Bases de Dados

SelCount
Sorted

Indica quantos itens esto selecionado


Define se os itens aparecero ordenados

TcomboBox - Caixa combinada com lista suspensa.


Propriedade

Items
DropDownCount
Style

Descrio
Lista de strings com os itens da lista
Nmero de itens visveis da lista suspensa
Estilo do ComboBox, os principais estilos so csDropDown, csDropDownList,
csSimple

Timage - componente usado para exibir figuras.


Propriedade

Center
Picture
Stretch

Descrio
Determina de a figura ser centralizada no componente
Figura a exibida, pode ser BMP, ICO, WMF ou EMF
Define se o tamanho da figura deve ser ajustada ao do componente

Tpicture - classe usada para guardar cones, Bitmaps, meta arquivos do Windows ou grficos
definidos pelo usurio.
Mtodo

LoadFromFile
SaveToFile

Descrio
Carrega figura de um arquivo
Salva figura para um arquivo

TpageControl - usado para criar controles com mltiplas pginas, que podem ser manipuladas, em
tempo de projeto, atravs do menu de contexto. Cada pgina criada um objeto do tipo TTabSheet.
Propriedade

ActivePage
MultiLine
TabHeigth
TabWidth
Evento

OnChange
OnChanging
Mtodo

FindNextPage
SelectNextPage

Descrio
Pgina ativa
Define mltiplas linhas de guias de pginas
Altura das guias
Largura das guias
Descrio
Aps uma mudana de pgina
Permite a validao de uma mudana de pgina
Descrio
Retorna a prxima pgina
Seleciona a prxima pgina

TtabSheet - pgina de um PageControl.


Propriedade
PageIndex
TabVisible

Descrio
Ordem da pgina
Define se a aba da pgina visvel

Tshape - grfico de uma Forma geomtrica.


Propriedade

Brush
Pen
Shape

Descrio
Preenchimento da figura, objeto do tipo TBrush
Tipo da linha, objeto do tipo TPen
Forma geomtrica

Ttimer - permite a execuo de um evento a cada intervalo de tempo.


Propriedade

Interval
Evento

OnTimer

Descrio
Tempo em milissegundos quando o componente ir disparar o evento OnTimer
Descrio
Chamado a cada ciclo de tempo determinado em Interval

34

Programao Delphi apoiando aplicativos de Bases de Dados

TstatusBar - utilizado para criar barras de status para exibir inFormaes.


Propriedade

SimplePanel
SimpleText
SizeGrip
Panels

Descrio
Indica se haver apenas um panel
Texto exibido caso SimplePanel seja True
Define se a ala de redimensionamento padro deve ser mostrada
Propriedade do tipo TStatusPanels, com os painis do StatusBar

TstatusPanels - lista de panels de um StatusBar.


Propriedade

Count
Items

Descrio
Nmero de panels
Lista de panels, cada panel um objeto do tipo TStatusPanel

Mtodo

Descrio

Add

Adiciona um novo panel lista

TstatusPanel- panel de um StatusBar.


Propriedade

Text
Width
Bevel
Alignment

4.7

Descrio
Texto do panel
Largura em pixels
Moldura do panel
Alinhamento do texto de um panel

Caixas de Dilogo

Grupo de caixas de dilogo comuns do Windows.


Mtodo

Descrio
Mostra a caixa de dilogo e retorna True caso o usurio clique em Ok

Execute

TOpenDialog / TsaveDialog - caixas de dilogo para abrir e salvar arquivos.


Propriedade

FileName
DefaultExt
Filter
FilterIndex
InitialDir
Title
Options

Descrio
Nome do arquivo
Extenso padro para os arquivos
Filtro, com os tipos de arquivos que sero abertos ou salvos
ndice do filtro default
Pasta inicial
Ttulo da janela
Define caractersticas gerais do dilogo

TfontDialog - caixa de dilogo de escolha de fonte.


Propriedade

Device
MinFontSize
MaxFontSize
Options
Evento

OnApply

4.8

Descrio
Define se deve utilizar fontes para tela, impressora ou ambos
Tamanho mnimo da fonte
Tamanho mximo da fonte
Define caractersticas das fontes
Descrio
Ocorre aps o usurio pressionar o boto Aplicar, antes da janela fechar

Menus

No Delphi os menus sero desenhados no Menu Designer, que pode ser acessado no menu de contexto
de qualquer componente de menu.

35

Programao Delphi apoiando aplicativos de Bases de Dados

TmainMenu - menu principal de um Form.


Propriedade

Items

Descrio
Itens de menu, essa propriedade guarda todas as alteraes feitas no Menu Designer

TpopUpMenu - Menu de contexto de um componente. Cada componente tem uma propriedade


PopUpMenu, que indica seu menu de contexto.

TmenuItem - item de menu.


Propriedade

Checked
GroupIndex
RadioGroup
ShortCut

4.9

Descrio
Indica se o item est marcado ou no
ndice do grupo do item, semelhante ao SpeedButton
Indica se o item pode ser mutuamente exclusivo com outros itens do mesmo grupo
Tecla de atalho do item

Classes No Visuais

Tapplication - todo programa tem um objeto global nomeado Application, do tipo TApplication,
esse objeto representa a aplicao para o Windows.
Propriedade

ExeName
MainForm
Hint
Title
HelpFile
Evento

OnHint
OnException
OnHelp
Mtodo

MessageBox
Run
Terminate

Descrio
Caminho e nome do arquivo executvel
Form principal da aplicao
Hint recebido pela aplicao
Ttulo da aplicao
Caminho e nome do arquivo help
Descrio
Quando um hint recebido pela aplicao
Quando ocorre uma exceo
Quando acontece uma solicitao de help
Descrio
Apresenta um quadro de mensagem
Executa a aplicao
Finaliza a aplicao normalmente

Quadros de Mensagem - o mtodo Application.MessageBox mostra quadros de mensagem com


chamadas a funes da API do Windows. Os flags de mensagem mais usados e os valores de retorno
desse mtodo so mostrados abaixo.
Flag

MB_ABORTRETRYIGNORE
MB_ICONERROR
MB_ICONEXCLAMATION
MB_ICONINFORMATION
MB_ICONQUESTION
MB_OK
MB_OKCANCEL
MB_RETRYCANCEL
MB_SYSTEMMODAL
MB_YESNO
MB_YESNOCANCEL
Valor de Retorno

IDABORT
IDCANCEL
IDIGNORE

Item Mostrado
Botes de Abortar, Repetir e Ignorar
cone de erro
cone com ponto de exclamao
cone com letra i, usada para mostrar inFormaes
cone de pergunta
Boto de Ok
Botes de Ok e Cancelar
Botes de Repetir e Cancelar
O Windows s poder ser usado quando o quadro for fechado
Botes de Sim e No
Botes de Sim, No e Cancelar
Boto Escolhido
Abortar
Cancelar
Ignorar

36

Programao Delphi apoiando aplicativos de Bases de Dados

IDNO
IDOK
IDRETRY
IDYES

No
Ok
Repetir
Sim

Esses quadros so usados quando se deseja uma resposta simples do usurio, principalmente
numa confirmao ou pergunta para o usurio, como o cdigo abaixo, usado no evento OnCloseQuery
do Form principal.
if Application.MessageBox('Deseja fechar a aplicao?', 'Sair do sistema',
MB_ICONQUESTION +
MB_YESNO) = IDNO then
CanClose := False;

Tscreen - o Delphi automaticamente cria a varivel Screen do tipo Tscreen, essa varivel guarda
caractersticas do vdeo, como mostrado abaixo.
Propriedade

ActiveForm
FormCount
Cursor
Forms
Fonts
PixelsPerInch
Height
Width

Descrio
Form com o foco
Nmero de Forms no vdeo
Cursor do mouse
Lista dos Forms disponveis
Lista de Fontes de tela disponveis
Nmero de pixels por polegada da Fonte usada pelo sistema
Altura da tela em pixels
Largura da tela em pixels

Tprinter - na Unit Printers declarado um objeto do tipo TPrinter nomeado Printer que encapsula
toda a interface de impresso do Windows e pode ser usado para imprimir diretamente, sem usar
componentes de relatrio, como o QuickReport.
Propriedade

Canvas
Printers
Orientation
PageHeight
PageWidth
PageNumber
Mtodo

BeginDoc
EndDoc
Abort

Descrio
Superfcie de desenho, do tipo TCanvas, onde ser desenhada a imagem a ser impressa
Lista de impressoras instaladas
Retrato ou Paisagem
Altura da pgina
Largura da pgina
Pgina atual
Descrio
Inicia o processo de desenho
Finaliza o processo de desenho e envia a imagem do Canvas para a impressora
Aborta a impresso

Tcanvas - um objeto da classe TCanvas uma superfcie de desenho, onde podem ser usados vrios
mtodos de plotagem grfica. Todos os controles visveis possuem uma propriedade Canvas, do tipo
TCanvas, que geralmente usada nos Forms e no objeto Printer.
Propriedade

Brush
Pen
Font
Mtodo

TextOut
Ellipse
Polygon
Rectangle

Descrio
Padro de preenchimento, propriedade do tipo TBrush
Estilo de linha, propriedade do tipo TPen
Fonte usada nas plotagens de texto
Descrio
Desenha texto na superfcie
Desenha uma elipse
Desenha um polgono
Desenha um retngulo

37

Programao Delphi apoiando aplicativos de Bases de Dados

Tlist - estrutura de dados polimrfica que pode gerenciar uma lista de objetos de qualquer classe e
possui mtodos semelhantes aos de TStrings.

TstringList - lista de strings descendente de TStrings usada para manter listas de strings
independentes de qualquer componente.

Tregistry - interface com a API de manipulao do Registry do Windows, banco de dados de


configurao do sistema.

BANCOS DE DADOS

5.1

Conceitos Importantes

O gerenciamento de bancos de dados essencial para o desenvolvimento comercial, em particular para


sistemas de informao que possuem grande volume de informaes para serem proessadas. Para se
criar um banco de dados eficiente necessrio o conhecimento prvio de modelagem de bancos de
dados relacionais. Conceitos como banco de dados, tabelas, campos, registros, ndices, chaves,
relacionamentos, normalizao, dentre outros so pr-requisitos bsicos para o desenvolvimento desse
contedo.

5.2

Borland Database Engine

A BDE (Borland Database Engine) fornece a capacidade de acesso padronizado a banco de dados
para Delphi, C++ Builder e outros ambientes de programao da Borland, oferecendo um grande
conjunto de funes para auxiliar no desenvolvimento de aplicaes Desktop e Cliente/Servidor.
Os controladores da BDE podem ser usados para acessar bases de dados dBase, Paradox,
Access, FoxPro, Interbase, Oracle, Sybase e MS-SQL Server, DB2, Informix, alm de um controlador
de acesso a arquivos texto. Voc tambm pode utilizar fontes de dados ODBC, podendo acessar
qualquer base de dados compatvel.
As funes que compe uma API da BDE so usadas internamente pelos componentes de
acesso a dados do Delphi e muito raramente voc teria que us-las diretamente, mas isso totalmente
possvel. A referncia completa das funes da BDE, com exemplos em Delphi, est no BDE API
Help na pasta do Delphi no Menu Iniciar.
Para configurar o acesso a um banco de dados, voc tem vrias opes, criar um Alias, usar o
componente TDatabase ou os dois juntos.

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

5.3

Arquitetura de Acesso

A acesso e manipulao de um banco de dados por um programa Delphi realizada como mostrado a
seguir, note que a aplicao no acessa os dados diretamente, mas usa sempre a BDE.

38

Programao Delphi apoiando aplicativos de Bases de Dados

Assim, para uma aplicao de bancos de dados funcionar, preciso que a BDE esteja instalada
na mquina, no bastando apenas o arquivo executvel.

5.4

Data Access

Controles usados para fazer conexo com banco de dados.

Componente

Utilidade

TDataBase

Instala uma conexo permanente com um banco de dados, especialmente um banco


de dados remoto requerendo um login do usurio e uma senha.
uma Unit que pode ser conter as classes TTable e TQuery para evitar repeties
destes componentes dentro da aplicao.
Recupera dados de um tabela de banco de dados via o BDE e abastece ele para um
ou mais componentes de controle de dados atravs do componente TDataSource.
Envia dados recebidos de um componente para uma banco de dados via o BDE.
Usa estruturas em SQL para recuperar dados de uma tabela de banco de dados via o
BDE, e abastece ele para um ou mais componentes de controle de dados atravs de
um TDataSouce, ou usa estruturas em SQL para enviar dados de um componente
para um banco de dados via o BDE.
Acoplado ao TQuery e oferece 3 strings para comando SQL (insero, alterao e
deleo.
Habilita uma aplicao para acessar procedimentos armazenados em um servidor.
Envia dados recebidos de um componente para um banco de dados via o BDE.
Configuraes do BDE no instante em que foi aberto o aplicativo.
Copia a estrutura de uma tabela ou seus dados. Pode ser usado para mover tabelas
inteiras de uma formato de banco de dados para outro.

TDataModule
TTable
TQuery

TUpdateSQL
TStoreProc
TSession
TBatchMove

Tdatabase esse componente permite a manipulao de um banco de dados, atravs de um Alias


da BDE ou a criao de um Alias local, somente visvel dentro da aplicao, esse componente tambm
permite o gerenciamento de transaes, garantindo uma integridade maior no projeto. Por essas e
outras razes o uso do componente Database altamente recomendado como opo para criao de
Aliases.
Propriedades

AliasName
Connected
DatabaseName
DataSetCount
DataSets
DriverName
InTransaction
KeepConnection
LoginPrompt
Params

Descrio
Nome do Alias do banco de dados, usado quando voc criar um Alias da BDE
Define se a conexo com o banco de dados est ativa
Nome do Alias local a ser usado pelos outros componentes do Delphi
Nmero de DataSets (Tabelas) abertos no banco de dados
Lista com os DataSets abertos
Driver usado para criar um Alias local, automaticamente cancela a propriedade AliasName
Define se o Database est em transao
Define se a conexo com o banco de dados ser mantida, mesmo sem DataSets abertos
Define se ser mostrado o quadro de login padro da BDE
Parmetros do banco de dados, com itens semelhantes seo Definition do Database

39

Programao Delphi apoiando aplicativos de Bases de Dados

TransIsolation
Mtodos

Close
CloseDataSets
Commit
Open
Rollback
StartTransaction
Eventos

OnLogin

Explorer
Nvel de isolamento da transao, define como uma transao ir enxergar outra
Descrio
Encerra a conexo com o banco de dados, todos os DataSets sero fechados
Fecha todos os DataSets abertos, mas a conexo no encerrada
Grava alteraes feitas durante a transao
Abre a conexo com o banco de dados
Anula todas as alteraes feitas durante a transao
Inicia uma transao
Descrio
Evento usado quando voc quiser escrever seu prprio mtodo de conexo com o banco de
dados

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

Para ajudar a preencher os parmetros de um Database, clique duas vezes sobre o componente
e clique em Defaults, todos os parmetros defaults sero apresentados.
Para acessar uma base Paradox, use as propriedades abaixo, note que para o Paradox, a nica
informao realmente significante o Path, a pasta onde esto as tabelas.
AliasName = 'DBDEMOS'
DatabaseName = 'Dados'
LoginPrompt = False
KeepConnection = True
Params.Strings = (
'PATH=d:\Borland\Delphi 3\Demos\Data'
'ENABLE BCD=FALSE'
'DEFAULT DRIVER=PARADOX')

Aps a criao do Alias da BDE ou do Alias local, usando o componente TDatabase, o banco
de dados est configurado e pronto para ser usado.

TdataModule - um DataModule como se fosse um Form invisvel, onde iremos inserir os


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

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

Active
BOF
CanModify

Descrio
Define se a tabela esta aberta ou fechada
Informa se est no incio da tabela
Define se a aplicao pode inserir, deletar ou alterar registros

40

Programao Delphi apoiando aplicativos de Bases de Dados

DatabaseName
EOF
Exclusive
FieldCount
FieldDefs
Fields
Filter
Filtered
IndexFieldNames
IndexName
IndexDefs
MasterFields
MasterSource
Modified
ReadOnly
RecNo
RecordCount
State
TableName
TableType
Mtodo

AddIndex
Append
AppendRecord
Cancel
Close
CreateTable
Delete
DeleteIndex
DeleteTable
DisableControls
Edit
EmptyTable
EnableControls
FieldByName
FindKey
FindNearest
First
Insert
InsertRecord
IsEmpty
Last
Locate
LockTable
Lookup
MoveBy
Next
Open
Post
Prior
Refresh
RenameTable
UnlockTable
Evento

AfterCancel

Nome do banco de dados onde est a tabela, deve ser escolhido um Alias, que pode ser local
Informa se est no fim da tabela
Define se a tabela pode ser compartilhada por outro usurio
Nmero de campos da tabela
Lista com a Definio dos campos da tabela
Lista de objetos do tipo TField, que representam os campos da tabela
String com uma condio de filtragem
Define se a tabela filtrada
Nome dos campo de ndice, usados para ordenar os registros da tabela
Nome do ndice atual, vazia quando o ndice for a chave primria
Lista com a definio dos ndices
Campos usados no relacionamento com a tabela mestre
DataSource da tabela mestre em uma relao Mestre/Detalhe
Define se o registro atual foi modificado
Define se a tabela somente para leitura
Nmero do registro atual
Nmero de registros
Estado da tabela
Nome da tabela
Tipo da tabela
Descrio
Cria um novo ndice, a tabela deve ser exclusiva
Entra em modo de insero e, ao gravar, o registro ser colocado no fim do arquivo
Insere um registro no final do arquivo atravs de cdigo
Cancela as alteraes feitas no registro atual
Fecha a tabela
Cria uma tabela, depende de FieldDefs e IndexDefs
Exclui o registro corrente
Exclui um ndice
Exclui a tabela
Desabilita a atualizao dos controles visuais
Permite a alterao dos campos do registro atual
Apaga todos os registro da tabela, para isso a tabela no pode esta sendo compartilhada
Habilita os controles visuais
Acessa um campo, do tipo TField, pelo nome
Procura o registro com os valores exatos aos dos parmetros nos campos do ndice atual
Procura o registro com os valores mais aproximados aos dos parmetros nos ndices
Move para o primeiro registro
Entra em modo de insero de um novo registro na posio atual
Adiciona um novo registro, j com os dados, na posio atual
Define se a tabela est vazia
Move para o ltimo registro
Procura um registro, usando ou no ndices, de acordo com a disponibilidade
Trava a tabela
Procura um registro e retorna valores dos campos deste
Move um nmero especfico de registros
Move para o prximo registro
Abre a tabela
Grava as alteraes no registro atual
Move para o primeiro registro
Atualiza a tabela com os dados j gravados
Renomeia a tabela
Destrava a tabela
Descrio
Aps do mtodo Cancel

41

Programao Delphi apoiando aplicativos de Bases de Dados

AfterClose
AfterDelete
AfterEdit
AfterInsert
AfterOpen
AfterPost
AfterScroll
BeforeCancel
BeforeClose
BeforeDelete
BeforeEdit
BeforeInsert
BeforeOpen
BeforePost
BeforeScroll
OnCalcFields
OnDeleteError
OnEditError
OnFilterRecord
OnNewRecord
OnPostError

Aps o fechamento da tabela


Aps do mtodo Delete
Aps do mtodo Edit
Aps do mtodo Insert
Aps do mtodo Open
Aps do mtodo Post
Aps mudar de registro
Antes do mtodo Cancel
Antes do fechamento da tabela
Antes do mtodo Delete
Antes do mtodo Edit
Antes do mtodo Insert
Antes do mtodo Open
Antes do mtodo Post
Antes de mudar o registro
Evento usado para calcular os valores dos campos calculados
Quando ocorre um erro ao chamar o mtodo Delete
Quando ocorre um erro ao chamar o mtodo Edit
Evento usado com filtragem varivel
Quando a tabela entra em modo de insero, no deixa Modified igual a True
Quando ocorre um erro ao chamar o mtodo Post

Usando DataSets - as classes de componentes TTable e TQuery so descendentes de TDataset


atravs do TDBDataSet. Esta classe de componente herda uma parte de propriedades, mtodos e
eventos. Os estados do DataSet:
Estado

Descrio

dsInactive
dsBrowse

O Dataset esta fechado.


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

dsEdit
dsInsert
dsSetKey
dsCalcFields

Abrindo e Fechado DataSets - antes que uma aplicao possa acessar dados atravs de um
dataset, o dataset deve ser aberto. Existem dois meios para abrir o dataset:
Ativando a propriedade Active para True, isto pode ser feito atravs do Object Inspector ou
programavelmente em tempo de execuo.
Table1.Active := True;

Chamando o mtodo do Dataset Open em tempo de execuo.


Table1.open;

Para fechar o processo e semelhante s muda o a propriedade para False e o evento para
Close;
Lendo Valores do Campo - existem algumas maneiras de ler dados de um dataset:
Edit1.text := Table1Nome_Clie.asstring;
Edit1.text := Table1.Fields[1].asstring;
Edit1.text := Table1.FieldByName(Nome_Clie).asstring;

42

Programao Delphi apoiando aplicativos de Bases de Dados

Para associar outros tipos de campos que no texto a uma caixa de edio (que s aceita
valores do tipo string), devemos utilizar propriedades de converso do componente TField:
AsBoolean, AsDataTime, AsFloat (Real), AsInteger, AsString.
Para atribuir valores para o dataset o procedimento o mesmo s que no sentido inverso,
desde que que a tabela esteja em modo de edio ou insero.
Inserindo Registros - para inserir registros em cdigo voc pode usar os mtodos AppendRecord e
InsertRecord, caso voc no precise de algum campo, mesmo assim ele deve ser informado com o
valor Null.
Table1.AppendRecord([Null, EdtDescricao.Text, EdtPreco.Text]);

Outra forma de inserir um registro:


Table1.Insert;
Table1Data.Value := Date;
Table1Hora.Value := Time;
Table1.Post;

Alterando Registros - para alterar registros em cdigo, colocamos a tabela em modo de edio,
alteramos o valor dos campos e gravamos as alteraes, se for necessrio.
Table1.Edit;
Table1Data.Value := Date;
Table1Hora.Value := Time;
Table1.Post;

Verificando Alteraes - onde for necessrio a verificao de alteraes feitas em uma Tabela, por
exemplo no evento OnClose de um Form de manuteno, voc pode usar a propriedade Modified,
como mostrado no exemplo abaixo.
if Table1.Modified then
if Application.MessageBox('Gravar alteraes?', 'Dados Alterados',
MB_ICONQUESTION + MB_YESNO) = IDYES then
Table1.Post
else
Table1.Cancel;

Valores Default - caso voc queira especificar valores Default para os campos de uma tabela, use o
evento OnNewRecord, pois nesse evento o registro no marcado como modificado.
Table1Data.Value := Date;

Marcando Dados - os mtodos para marcar so


GetBookmark - Pega a posio do registro e coloca em uma varivel do tipo TBookmark;
GotoBookmark - Leva o apontador para uma variavel do tipo TBookmark;
FreeBookmark - Desaloca uma variavel do tipo TBookmark;
procedure DoSomething;
var
Marca: TBookmark;
begin
Marca := Table1.GetBookmark; {Marca a posio}
Table1.DisableControls; {Desabilita o controle de dados}
try
Table1.First;
while not Table1.EOF do
begin
{Faz alguma coisa}
Table1.Next;
end;

43

Programao Delphi apoiando aplicativos de Bases de Dados


finally
Table1.GotoBookmark(Marca);
Table1.EnableControls;
Table1.FreeBookmark(Marca); {Desaloca a variavel}
end;
end;

Indexao - a indexao usada para ordenar os registros da tabela.


Mtodo

Descrio

GetIndexNames

Retorna uma lista de nomes disponiveis de ndeces para uma tabela do banco de
dados.
Nmero de Campos do ndice.
Vetor de nomes de campos usados no ndice
Para usar o ndice primrio de uma tabela Paradox.
Para muda o ndice para qualquer campo.

IndexFieldCount
IndexFields
IndexName
IndexFieldNames

As propriedades IndexName e IndexFieldNames so mutualmente exclusivas. Colocando uma


propriedade, limpa o valor da outra.
Para ordenar voc deve escolher os campos pelos quais voc quer ordenar na propriedade
IndexFieldNames, inclusive em cdigo, como mostrado abaixo, todos campos devem ser indexados e
separados por ponto e vrgula.
Table1.IndexFieldNames := 'Nomcli';
Table1.IndexFieldNames := 'Data, Vendedor';

Percorrendo uma Tabela - utilize um cdigo semelhante ao mostrado abaixo para percorrer uma
tabela do incio ao fim.
Table1.DisableControls;
Total := 0;
Table1.First;
while not Table1.EOF do
begin
Total := Total + Table1Valor.Value;
Table1.Next;
end;
Table1.EnableControls;

Procurando dados em uma Tabela - os mtodos GoToKey e GoToNearest habilita uma


aplicao para procurar uma chave em uma tabela. SetKey coloca a tabela em modo de procura. No
estado SetKey, atribui-se valores para a procura em um campo indexado. GoToKey ento move o
cursor para a primeira linha da tabela que encontrou este valor. Como GoToKey uma funo ela
retorna True ou False se teve sucesso na procura. O GoToNearest uma funo que leva para o valor
mais parecido encontrado.
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.SetKey; {Primeiro campo a chave}
Table1.Fields[0].AsString := Edit1.Text; (* Table1.Fieldbyname(Cidade)
:= Edit1.Text *)
Table1.GoToKey;
end;

Todo procedimento acima pode ser substitudo usando a funo Find


procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.FindKey([Edit1.text]);
end;

Exemplo de outra forma de procura em uma tabela.


44

Programao Delphi apoiando aplicativos de Bases de Dados


procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.SetKey; {Primeiro campo a chave}
Table1.Fieldbyname(Cidade) := Edit1.Text;
Table1.GoToKey;
end;

Procura em um indce secundrio.


procedure TForm1.Button1Click (Sender: TObject);
begin
Table1.indexname := Nome_Clie;
Table1.open;
Table1.setkey;
Table1Nome_clie.asstring := Edit1.text;
Table1.gotonearest;
end;

Procura em um indce primrio ou secundrio.


procedure TForm1.Button1Click (Sender: TObject);
begin
Table1.indexfieldnames := Codi_Clie;
Table1.open;
Table1.setkey;
Table1Nome_clie.asstring := Edit1.text;
Table1.gotonearest;
end;

Localizando Registros - para localizar registros voc pode usar vrios mtodos, mas o melhor
deles o Locate, no exemplo abaixo feita uma pesquisa exata.
if not Table1.Locate('CodCli', Edt.Text, []) then
ShowMessage('Cliente no encontrado.');

Voc tambm pode fazer uma pesquisa parcial e/ou sem sensitividade de caso usando o
terceiro parmetro, que um conjunto de opes.
Table1.Locate('Nome', Edt.Text, [loPartialKey, loCaseInsensitive]);

Se voc precisar fazer uma pesquisa por mais de um campo, separe os nomes dos campos por
ponto e vrgula e use a funo VarArrayOf para criar um array com os valores que voc quer procurar.
if not Table1.Locate('Vendedor;Data', VarArrayOf([EdtVendedor.Text, EdtData.Text]),
[loCaseInsensitive]) then
ShowMessage('O vendedor no realizou nenhuma venda nessa data');

Caso os campos pesquisados sejam indexados, a pesquisa ser muito mais eficiente, seno ser
criado um filtro temporrio da BDE para localizar os registros
Filtros - usando o Filter, voc pode filtrar os registro de uma tabela usando uma expresso lgica,
como nos exemplos abaixo. Para tornar um filtro ativo, basta colocar Filtered igual a True.
Table1.filter := 'Data = '20/04/1998''
Table1.filter := (Data = '20/04/1998') AND (Vendedor = 'Gilherme Augusto da
Fonseca')
Table1.filter := (Nome > 'A') AND (Nome < 'B')

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

Programao Delphi apoiando aplicativos de Bases de Dados


Accept := TblData.Value = Date;

Ao filtrar uma tabela, a propriedade RecordCount da Table, s mostra o nmero de registros


que satisfazem ao filtro, como se os outros registros nao existissem.
Voc tambm pode filtar registros de uma tabela atravs de mtodos especficos:
SetRangeStart: Estabelece o limite inicial do filtro.
SetRangeEnd: Estabelece o limite final do filtro.
ApplyRange: Aplica o filtro tabela.
CancelRange: Cancela o filtro aplicado tabela.
KeyExclusive: Exclui a chame do indce setado.
Table1.SetRangeStart;
Table1.FieldByName(Codigo):=100;(*Table1Codigo.asinteger := 100 *)
Table1.KeyExclusive := False;
Table1.SetRangeEnd;
Table1.FieldByName(Codigo):=200;(*Table1Codigo.asinteger := 200 *)
Table1. KeyExclusive := True;
Table1.ApplyRange;

Obter um filtro dos registros de clientes com cdigo entre 100 e 199.
Sincronizando Tabelas - o mtodo GotoCurrent um mtodo que sincroniza dois componentes
table ligados a uma mesma tabela em um banco de dados e usando o mesmo indce.
Table1.GotoCurrent(Table2);

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

Alignment
AsBoolean
AsCurrency
AsDateTime
AsFloat
AsInteger
AsString
AsVariant
Calculated
CanModify
ConstraintErrorMessage
CustomConstraint
DataSet
DataSize
DataType
DefaultExpression
DisplayLabel
DisplayText
DisplayWidth
EditMask
FieldKind
FieldName
FieldNo
Index
IsIndexField

Descrio
Alinhamento do texto do campo nos controles visuais
Valor do campo convertido para Boolean
Valor do campo convertido para Currency
Valor do campo convertido para DataTime
Valor do campo convertido para Double
Valor do campo convertido para Integer
Valor do campo convertido para string
Valor do campo convertido para Variant
Indica se o campo calculado em tempo de execuo
Indica se um campo pode ser modificado
Mensagem de erro se a condio de CustomConstraint no for satisfeita
Condio de validao do campo
DataSet onde est o campo
Tamanho do campo, em Bytes
Propriedade do tipo TFieldType, que indica o tipo do campo
Expresso com valor Default do campo para novos registros
Ttulo a ser exibido para o campo
Texto exibido nos controles visuais associados ao campo
Nmero de caracteres que deve ser usado para mostrar o campo no controles visuais
Mscara de edio do campo
Propriedade do tipo TFieldKind que indica o tipo do campo, como Calculado ou Lookup
Nome do campo na tabela
Posio fsica do campo na tabela
Posio do campo nos controles visuais
Indica se um campo vlido para ser usado como ndice

46

Programao Delphi apoiando aplicativos de Bases de Dados

IsNull
KeyFields
Lookup
LookupCache
LookupDataSet
LookupKeyFields
LookupResultField
ReadOnly
Required
Size
Text
Value
Visible
Eventos
OnChange
OnSetText
OnGetText
OnValidate
Mtodo
Assign
FocusControl
Clear

Indica se o campo est vazio


Campo chave da tabela no relacionamento com LookupDataSet, usado em campos
Lookup
Indica se um campo Lookup
Define se ser usado cache para campos Lookup
DataSet onde est definido o valor do campo Lookup
Campo chave do relacionamento em LookupDataSet
Valor do campo, que ser mostrado nos controles visuais
Define se um campo somente para leitura
Define se o campo obrigatrio
Tamanho fsico do campo
Texto de edio do campo
Acesso direto ao valor do campo
Define se um campo visvel
Descrio
Chamado quando o valor do campo mudado
Chamado pelos controles visuais para atribuir o texto digitado pelo usurio ao campo
Chamado para formatar o texto de exibio do campo
Validao do valor atribudo ao campo, caso o valor no seja vlido, gere uma exceo
Descrio
Atribui um valor de um campo a outro, inclusive nulo
Seta o foco para o controle visual ligado ao campo nos Forms
Limpa o contedo do campo

Esto listadas abaixo algumas classes que realmente iremos manipular no tratamento dos
campos de uma tabela, so classes descendentes de TField.
TStringField
TSmallintField
TFloatField
TCurrencyField
TBooleanField
TDateField

TBlobField
TIntegerField
TWordField
TAutoIncField
TBCDField
TDateTimeField

TTimeField
TBytesField
TVarBytesField
TGraphicField
TMemoField

Em alguns desses campos voc pode encontrar as propriedades mostradas abaixo, que no
esto presentes em TField.
Propriedades

MaxValue
MinValue
DisplayFormat
EditFormat
Currency
DisplayValues
Mtodos

LoadFromFile
SaveToFile

Descrio
Valor mximo para o campo
Valor mnimo para campo
Formato de apresentao do campo, como ,0.00 % ou ,0.## Km
Formato de edio do campo
Define se um campo monetrio
Usado com campos Boolean, define o texto para True e False, como Sim;No
Descrio
Carrega o contedo do campo de um arquivo
Salva o contedo do campo para um arquivo

Fields Editor - para criar objetos para os campos de uma tabela clique duas vezes no componente
TTable ou escolha Fields Editor no seu menu de contexto, na janela do Fields Editor, clique com o
boto direito do mouse e escolha Add, na janela Add Fields, escolha os campos que voc vai querer
usar e clique em Ok.
No Fields Editor podemos tambm remover os campos criados, alterar sua ordem de
apresentao e usar suas propriedades e eventos no Object Inspector. Para cada campo criado um
objeto de um tipo descendente de TField, como TStringField, TIntegerField, TFloatField. As
principais propriedades dos objetos TField esto listadas na tabela abaixo.
47

Programao Delphi apoiando aplicativos de Bases de Dados

Se voc no criar nenhum objeto TField, todos os campos da tabela estaro disponveis, mas
caso voc crie algum, somente os campos que voc criar estaro disponveis.
Se voc selecionar os campos no Fields Editor e arrastar para o Form, sero criados os controles
visuais para esses campos, Label, DBEdit e outros, mas antes coloque a descrio dos campos na
propriedade DisplayLabel.
Converso de Tipos - a converso de tipo de um campo pode ser feita atravs as propriedades tipo
As..., como AsString.
Table1.AsString := EdtData.Text;

Validao - para validar os valores de um campo, voc pode usar a propriedade CustomConstraint,
por exemplo para garantir que a quantidade de um item seja maior que zero, use em CustomConstraint
Quantidade > 0, e em CustomConstraint coloque a mensagem para o usurio caso a condio seja
falsa. Outra forma, mais flexvel, usando o evento OnValidate, com um cdigo como abaixo, onde
gerada uma exceo para cancelar a atribuio do valor ao campo.
if Table1Quantidade.Value <= 0 then
raise Exception.Create('Quantidade deve ser maior que zero.');

Formatao Personalizada - caso queira fazer uma formatao personalizada do campo, pode
usar os eventos OnGetText e OnSetText. Por exemplo, se tiver um campo Estado, e quiser que quando
o valor do campo for C fosse mostrado Casado e S, Solteiro, no evento OnGetText use um cdigo
como o abaixo.
if TblEstado.Value = 'C' then
Text := 'Casado'
else if TblEstado.Value = 'S' then
Text := 'Solteiro';

Como controle visual para o usurio escolher o valor do campo, voc poderia usar o
DBComboBox, com Solteiro e Casado na propriedade Items, e no evento OnGetText do campo o
cdigo mostrado abaixo.
if Text = 'Casado' then
TblEstado.Value := 'C'
else if Text := 'Solteiro' then
TblEstado.Value = 'S';

Campos Calculados - para criar campos calculados, clique com o direito no Fields Editor e escolha
New Field, no quadro NewField, digite o nome do campo, o nome do objeto ser automaticamente
informado, o tipo do campo, seu tamanho e escolha Calculated em Field type.
Para colocar um valor nesse campo usaremos o evento OnCalcFields do componente TTable,
em nenhuma outra parte os valores desses campos podem ser alterados.
O cdigo do evento OnCalcFields deve ser enxuto, pois este chamado vrias vezes durante a
edio de um registro e um procedimento pesado pode comprometer a performance do sistema.
procedure TDtmAluno.TblCalcFields(DataSet: TDataSet);
begin
if TblFaltas.Value > DtmTurma.TblMaxFaltas.Value then
TblSituacao.Value := 'Evadido'
else if TblNota.Value >= 7 then
TblSituacao.Value := 'Aprovado'
else
TblSituacao.Value := 'Retido'
end;

48

Programao Delphi apoiando aplicativos de Bases de Dados

Campos Lookup - para fazer um relacionamento, s vezes precisamos criar um campo de descrio,
por exemplo em uma biblioteca, na tabela de emprstimos, temos o cdigo do Livro, mas gostaramos
de mostrar o Ttulo, esses campos so chamados de campos Lookup.
Para criar um campo Lookup, siga os passos abaixo, tomando como exemplo o caso do livro no
emprstimo.
1. Abra o Fields Editor do Table desejado, Emprstimos
2. Clique com o direito e escolha New Field
3. No quadro New Field, escolha as propriedades do campo como descrito em campos calculados,
mas em Field type, escolha Lookup
4. Em Key Fields escolha o campo da tabela que faz parte do relacionamento, CodLivro
5. DataSet a tabela onde est a descrio, Livros
6. Em Lookup Keys, escolha o campo de DataSet que faz parte do relacionamento, CodLivro
7. Finalmente, escolha em Result field o campo de DataSet que vai ser mostrado para o usurio,
Ttulo
Essas opes correspondem a algumas propriedades do objeto TField gerado, que podem ser
alteradas no Object Inspector, KeyFields, LookupDataSet, LookupKeyFields, LookupDataSet e
LookupResultField.
Quando esses campo so exibidos em um DBGrid, por padro criado um boto de lookup que
mostrar os valores da outra tabela uma lista. Para colocar esses campos em um Form, devemos usar o
DBLookupComboBox, apenas com as propriedades padro, DataSource e DataField, onde deve ser
escolhido o campo Lookup, quando voc arrastar o campo para o Form isso ser feito
automaticamente.
TdataSource - componente usado para fazer a ligao entre um DataSet e os componentes visuais.
Propriedade

AutoEdit
DataSet
Evento
OnDataChange
OnStateChange
OnUpdateData

Descrio
Define se a tabela entrar em modo de edio assim que o usurio digitar novos valores nos
controles
DataSet ao qual o TDataSource faz referncia
Descrio
Ocorre quando o DataSet alterado, ao mudar de registro ou mudar os valores dos campos
Ocorre quando o estado do DataSet alterado
Ocorre antes de uma atualizao

Tquery -componente usado para enviar um comando SQL para um banco de dados ou uma instruo
SELECT. Muitas dos itens mostrados abaixo esto definidos na classe TDataSet, ancestral do TTable.
Propriedades

Active
BOF
DatabaseName
EOF
FieldCount
FieldDefs
Fields

Filter
Filtered
IndexFieldNames
IndexName
IndexDefs
Param
RecNo
RecordCount
SQL
State

Descrio
Define se a instruo SQL ser executada ou no. Usado somente para instrues SELECT.
Informa se est no incio da tabela
Nome do banco de dados onde est a tabela, deve ser escolhido um Alias, que pode ser local
Informa se est no fim da tabela
Nmero de campos da tabela
Lista com a Definio dos campos da tabela
Lista de objetos do tipo TField, que representam os campos da tabela
String com uma condio de filtragem
Define se a tabela filtrada
Nome dos campo de ndice, usados para ordenar os registros da tabela
Nome do ndice atual, vazia quando o ndice for a chave primria
Lista com a definio dos ndices
Lista de objetos do tipo TParam, que representam parmentros dentro de uma instruo SQL
Nmero do registro atual
Nmero de registros
Define a instruo SQL que ser enviada para o Gerenciador
Estado da tabela

49

Programao Delphi apoiando aplicativos de Bases de Dados

UpdateObject
Mtodo

Close
ExecSQL
FieldByName
FindKey
FindNearest
First
IsEmpty
ParamByName
Last
Locate
Lookup
MoveBy
Next
Open
Post
Prior
Refresh
Evento

AfterCancel
AfterClose
AfterOpen
AfterScroll
BeforeClose
BeforeDelete
BeforeOpen
BeforeScroll
OnCalcFields
OnFilterRecord

Define um objeto UpdateSQL ser utilizado


Descrio
Fecha instruo SQL. Usado somente para instrues SELECT.
Executa um comando SQL. Usado para todas as instrues SQL menos SELECT.
Acessa um campo, do tipo TField, pelo nome
Procura o registro com os valores exatos aos dos parmetros nos campos do ndice atual
Procura o registro com os valores mais aproximados aos dos parmetros nos ndices
Move para o primeiro registro
Define se a tabela est vazia
Acessa um parmetro, do tipo TParam, pelo nome
Move para o ltimo registro
Procura um registro, usando ou no ndices, de acordo com a disponibilidade
Procura um registro e retorna valores dos campos deste
Move um nmero especfico de registros
Move para o prximo registro
Executa um comando SQL. Usado somente para instrues SELECT.
Grava as alteraes no registro atual
Move para o primeiro registro
Atualiza a tabela com os dados j gravados
Descrio
Aps do mtodo Cancel
Aps o fechamento da tabela
Aps do mtodo Open
Aps mudar de registro
Antes do fechamento da tabela
Antes do mtodo Delete
Antes do mtodo Open
Antes de mudar o registro
Evento usado para calcular os valores dos campos calculados
Evento usado com filtragem varivel

Tparam - lista de parmentros para uma instruo SQL. Um parmetro como uma varivel na
instruo SQL. Para definir um parmentro na instruo SQL basta colocar dois pontos ( : ) antes da
varivel.
Query1.SQL := 'Select * from Autor where id_autor = :pid_autor';
Query1.ParamByName( 'pid_autor' ).asinteger := 10;
Query1.Open;

TUpdateSQL - define 3 instrues SQL para um componente Query.


Propriedades

InsertSQL
DeleteSQL
ModifySQL
Mtodo
ExecSQL

5.5

Descrio
Define a instruo SQL para inserir registros
Define a instruo SQL para apagar registros
Define a instruo SQL para alterar registros
Descrio
Executa um comando SQL. No parmentro (ukModify, ukInsert, ukDelete) defini qual
instruo ser usada

Data Controls

Controles usados na interface com o usurio. Todos esses componentes tem uma propriedade
DataSource, que deve ter o DataSource do Table ao qual esto ligados.

50

Programao Delphi apoiando aplicativos de Bases de Dados

Componente
TDBGrid

TDBNavigator

TDBText
TDBEdit
TDBCheckBox
TDBRadioGroup
TDBMemo
TDBRichEdit
TDBImage
TDBListBox
TDBComboBox
TDBLookupList
TDBLookupCombo
TDBChart

Utilidade
Grade padro de controle de dados que possibilita visualizar e editar dados de forma
tabular, semelhante a uma planilha; faz uso extensivo das propriedades do TField
(estabelecidos no Editor de Campos(Fields Editor)) para determinar a visibilidade de uma
coluna, formato da visualizao, ordem, etc.
Botes de navegao para controle de dados que move o apontador do registro corrente de
uma tabela para o posterior ou anterior, inicia insero ou modo de edio; confirma novos
ou modificaes de registros; cancela o modo de edio; e refresca(refaz) a tela para
recuperar dados atualizados.
Rtulo de controle de dados que pode mostrar um campo corrente do registro ativo.
Caixa de edio de controle de dados que pode mostrar ou editar um campo corrente do
registro ativo.
Caixa de verificao de controle de dados que pode mostrar ou editar dados lgico de
uma campo corrente do registro ativo.
Grupos de radio de controle de dados com botes de rdio que pode mostrar ou setar
valores de colunas.
Caixa memo de controle de dados que pode mostrar ou editar dados textos BLOB do
registro corrente ativo.
Caixa Rich Edit de controle de dados que pode mostrar ou editar dados textos BLOB do
registro corrente ativo no formato (.RTF).
Caixa de Imagem de controle de dados que pode mostrar, cortar ou colar imagens BLOB do
registro corrente ativo.
Caixa de Lista de controle de dados que pode mostrar valores da coluna de uma tabela.
Caixa de Lista mvel de controle de dados que pode mostrar ou editar valores da coluna de
uma tabela.
Caixa de Lista de controle de dados que mostrar valores mapeados atravs de outra tabela
em tempo de compilao.
Caixa de Combo de controle de dados que mostrar valores mapeados atravs de outra
tabela em tempo de compilao.
Usado para criar grficos partir de DataSet

TDBGrid - este componente permite mostrar/editar os registros de um arquivo na forma de tabela. A


vantagem deste tipo de sada de dados que possivel ver vrios registros ao mesmo tempo. Mostra
os registros de uma tabela em forma de grade, cada coluna um campo e cada registro, uma linha.
Propriedades

Columns
DataSource
Fields
Options
SelectedField
SelectedIndex
SelectedRows
TitleFont
FixedColor
Eventos

OnCellClick
OnColEnter
OnColExit
OnColumnMoved
OnDrawDataCell
OnEditButtonClick
OnTitleClick

Descrio
Lista do tipo TDBGridColumns, com as colunas da Grid, cada item da lista do tipo
TColumn
Componente DataSource que o controle est ligado
Lista de objetos TField mostrados nas colunas
Set com as opes da Grid, como ConfirmDelete, MultiSelect, ColumnResize
Campo da coluna selecionada
ndice da coluna selecionada
Lista do tipo TBookmarkList, com os registros selecionados em uma Grid com MultiSelect
Fonte do ttulo das colunas
Cor Fixa, usada nas colunas e indicadores
Descrio
Ao clicar em uma clula da Grid
Quando uma clula de alguma coluna da Grid recebe o foco
Quando uma clula de alguma coluna da Grid perde o foco
Quando o usurio mover uma coluna
Evento usado para personalizar a forma de desenhar os dados que so apresentados na
Grid
Ao clicar no boto de edio de uma clula, mostrado pela propriedade ButtonStyle da
coluna
Ao clicar no ttulo das colunas

51

Programao Delphi apoiando aplicativos de Bases de Dados

Tcolumn - item de uma lista TDBGridColumns, usada na propriedade Columns da Grid, objetos
desse tipo representam uma coluna da Grid. s vezes as propriedades definidas para o campo
sobrepem as propriedades
Propriedades

ButtonStyle
Field
FieldName
PickList
Title

Descrio
Boto mostrado ao editar as clulas da coluna
Objeto TField ligado coluna
Nome do campo ligado coluna
TStrings com os itens da lista DropDown usada nas clulas da coluna
Propriedade do tipo TColumnTitle com as opes do ttulo da coluna

TDBNavigator - o DBNavigator permite que o usurio realize operaes padro de controle de


dados. Cada um dos botes do DBNavigator chama um mtodo do Componente Table ao qual est
ligado.

Podemos personalizar o DBNavigator usando as suas propriedades e eventos, mas se quisermos mudar
a figura dos botes teremos que editar diretamente o arquivo LIB\DBCTRLS.RES, na pasta do Delphi.
Propriedades

DataSource
VisibleButtons
Hints
ConfirmDelete
Eventos
BeforeAction
OnClick

Descrio
Componente DataSource que o controle est ligado
Define os botes que sero visveis
Hints exibidos pelos botes
Define se ser solicitado uma confirmao antes da excluso
Descrio
Quando um boto do Navigator pressionado, antes da ao ser executada
Quando um boto do Navigator pressionado, depois da ao ser executada

TDBText - usado para mostra os valores de campos.


Propriedades
DataField
DataSource

Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado

TDBEdit - usado para editar os valores dos campos.


Propriedades
DataField
DataSource

Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado

TDBCheckBox - usado em campos que podem receber apenas dois valores, como campos lgicos.
Propriedades
DataField
DataSource
ValueChecked
ValueUnchecked

Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
Valor a ser armazenado quando est selecionado
Valor a ser armazenado quando no est selecionado

TDBRadioGroup - mostra algumas opes para o preenchimento de um campo.


Propriedades
DataField
DataSource
Items
Values

Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
Ttulo para cada boto de rdio
Valor a ser armazenado para cada boto de rdio

52

Programao Delphi apoiando aplicativos de Bases de Dados

TDBMemo - usado para editar/visualizar campos com textos longos mas no usa formatao de
caractere e de paragrafos. Geralmentes so armazenados nos SGBD em campos do tipo BLOB.
Propriedades

DataField
DataSource

Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado

TDBRichEdit - usado para editar/visualizar campos com textos longos e usa formatao de caractere
e de paragrafos. Geralmentes so armazenados nos SGBD em campos do tipo BLOB.
Propriedades

DataField
DataSource

Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado

TDBImage - usado para editar/visualizar imagens. Geralmentes so armazenados nos SGBD em


campos do tipo BLOB.
Propriedades

DataField
DataSource

Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado

TDBListBox e TDBComboBox - conectados a um campo, permitem associar uma lista de strings


para preencher o campo. Use quando existe uma lista de valores determinados que podem ser
atribuidos ao campo. Exemplo: Se o campo armazena o Estado (UF) de um endereo, poderamos por
todos os estados do Brasil em uma lista onde o usurio escolheria o estado desejado. Usado em
campos que podem receber apenas dois valores, como campos lgicos.

Propriedades

DataField
DataSource
Items

Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
Lista de valores vlidos para o campo

TDBLookupListBox, TDBLookupComboBox - so componentes poderosos para tratar de


referncias a outros arquivos. Visualmente igual ao DBComboBox, a diferena que a lista de
strings fornecida por outro arquivo. Exemplo: poderamos usa-los para que o usurio pudesse
escolher o cdigo do clientes em uma lista. Essa lista vem do arquivo de clientes, de maneira que
podemos ficar seguros que todos os cdigos na lista existem no arquivo de clientes. S que isso no
tudo, podemos ir muito alm. Que tal se o que o usurio visse na lista fosse o nome e no o cdigo do
cliente? Tambm possvel, e querendo podemos fazer aparecer na lista o nome e o cdigo do cliente.
O componente sabe que na hora de gravar no arquivo o cdigo e no o nome do cliente que precisa
ser gravado.
Preenche um campo com dados contidos em outra tabela. Se o campo mostrado nesses
componentes for um campo Lookup, voc no precisa especificar nenhuma das propriedades abaixo,
apenas DataSource e DataField.
Propriedades

DataField
DataSource
ListSource
ListField
KeyField

Descrio
Campo ao qual o controle est ligado
Componente DataSource que o controle est ligado
Componente DataSource que contm os valores a serem exibidos na lista
Campo de ListSource que ser exibido
Campo de ListSource usado no relacionamento

53

Programao Delphi apoiando aplicativos de Bases de Dados

TDBChart - componente que exibe valores no formato grfico.


TChartSeries
Propriedades

DataSource
ColorSource
XLabelsSource

Descrio
Componente DataSource que o controle est ligado
Campo que contm o valor nunrico para pintar o grfico
Campo que ser visualizado no titulo da srie do grfico

RELATRIOS

6.1

Impresso de Texto

A impresso de um relatrio contendo somente texto pode ser feita utilizando o mtodo tradicional do
Pascal, com poucas modificaes:
var
<relatrio>: TextFile;
begin
AssignPrn(<relatrio>);
Rewrite(<relatrio>);
Printer.Title := <ttulo do relatrio>;
Writeln(<relatrio>, ...);
.
.
.
CloseFile(<relatrio>);
end;

Para cancelar a impresso durante a gerao do relatrio pode-se utilizar o mtodo Abort do
objeto Printer. O objeto Printer e o procedimento AssignPrn esto definidos na unit Printers.

6.2

Impresso Grfica

A impresso grfica pura pode ser feita utilizando-se o objeto Printer:


Descrio

Propriedades
Printing
Title
PageHeight
PageWidth
Orientation
Canvas
PageNumber
Mtodos
BeginDoc
EndDoc
NewPage
Abort

Informa se existe algum documento sendo impresso pelo processo.


Ttulo do relatrio
Altura da pgina
Largura da pgina
Orientao (Landscape ou Portrait)
a pgina propriamente dita
Nmero da pgina sendo impressa

Descrio
Inicia a impresso
Finaliza a impresso
Inicia uma nova pgina
Cancela uma impresso

A impresso propriamente dita de cada pgina feita no objeto Canvas:


Propriedades
Descrio
Font
Brush
Pen
Mtodos
TextOut
MoveTo

Tipo de letra que ser utilizado na escrita


Estilo e cor do preenchimento
Estilo e espessura da linha

Descrio
Escreve um texto em uma determinada posio
Move o posio de desenho para uma determinada posio

54

Programao Delphi apoiando aplicativos de Bases de Dados

LineTo
PolyLine
Arc
Pie
Rectangle
RoundRect
FillRect
FloodFill
Ellipse
Draw
StretchDraw
CopyRect

6.3

Desenha uma linha da posio atual at a posio determinada


Desenha uma srie de linhas
Desenha um arco
Desenha um setor de um grfico tipo torta
Desenha um retngulo
Desenha um retngulo com bordas arredondadas
Desenha um retngulo preenchido
Preenche uma rea qualquer
Desenha uma elipse
Coloca um Bitmap, cone ou Metafile no Canvas
Coloca um Bitmap, cone ou Metafile no Canvas, alterando o tamanho da figura
Copia uma rea do canvas para outro canvas

Impresso com o ReportSmith

O ReportSmith uma ferramenta que gera relatrios para diversas linguaguens de programao. A
ferramenta permite criar relatrio a partir de um ambiente grfico. Cada relatrio criado salvo em um
arquivo, que deve acompanhar a aplicao desenvolvida.
Ele possui alguns relatrios padres, tais como relatrios colunados (mostra os dados em
formas de colunas), referncia cruzada entre tabelas (mostra os dados tipos uma planilha, associando
duas ou mais tabelas), etiquetas (gera etiquetas em formatos padro), relatrios em modo de pgina
(mostra os registros de uma determinada tabela um por pgina).
A ferramenta QuickReport mas disponvel gratuitamente com o Delphi 2.0, mas nas demais
verses do delphi ele no gratuito.
Atravs do ReportSmith, e possvel gerar relatrios com as seguintes caractersticas:
Combinao de dados entre vrias tabelas;
Ordem e grupo livre de dados atravs de determinados campos;
Insero de cabealhos e rodaps;
Funes de soma, mdia, mximo e mnimo;
Criao de caixas de dilogo para insero de informaes, filtragem dos dados;
Criao de relatrios do tipo master/details;
Execuo de macros durante o relatrio; e
Acesso as mais variadas bases de dados, entre elas:

6.4

Impresso com o QuickReport

A verso 2.0 do Delphi traz uma soluo visual para a elaborao rpida de relatrios, o QuickReport.
A soluo utiliza o editor de formulrios do prprio Delphi e se basea no fato de que a maior parte dos
relatrios composta por faixa de informaes.
Componentes
QuickReport

QRBand
QRLabel
QRDBText
QRDBCalc
QRSysData
QRShape
QRMemo
QRDetailLink
QRGroup

Descrio
o controlador do relatrio.
Transforma o formulrio do Delphi em um relatrio. ativado pelos mtodos Print e
Preview. Permite visualizar o relatrio em tempo de desenvolvimento ao se selecionar
a opo Preview no menu sensvel ao contexto.
Define as faixas de informaes do relatrio, que podem ser
Define rtulos a serem impressos
Imprime campos de um DataSet
Exibe o somatrio, mdia ou quantidade de registros, valor mximo e mnimo em um
campo
Imprime informaes do sistema como data, hora, nmero da pgina, etc.
Imprime linhas e figuras
Imprime um rtulo com mais de uma linha
Utilizado na criao de relatrios mestre-detalhe
Define um grupo de informaes

55

Programao Delphi apoiando aplicativos de Bases de Dados

QRPreview
QRPrinter

Cria uma rea de exibio de relatrio, utilizada para preview


derivado de TPrinter e permite visualizar, salvar e carregar um relatrio

QuickReport
Propriedades
CollumnMarginInches
CollumnMarginMM
Columns
DisplayPrintDialog
LeftMarginInches
LeftMarginMM
Orientation
RestartData
ShowProgress
Mtodos
Preview
Print

Descrio
Espao, em 1/10 de polegadas, entre colunas num relatrio MultiColuna.
O mesmo que CollumnMarginInches, sendo que em milmetros.
Nmero de colunas a serem impressas.
Exibe a caixa de dilogo de impresso quando o mtodo QuickReport.Print executado.
Margem esquerda, em 1/10 de polegadas.
O mesmo que LeftMarginInches, sendo que em milmetros
Orientao do Papel (poPortait ou poLandscape)
Indica se o QuickReport ir para o primeiro registro do dataset ou inicia a partir do registro
corrente.
Indica se o formulrio de progresso ir aparecer na criao do formulrio. O formulrio de
progresso possui um boto Cancel.

Descrio
Exibe um preview do formulrio
Imprime o formulrio

QRBand
Propriedade
BandType
rbTitle
rbPageHeader
rbPageFooter
rbColumnHeader
rbDetail
rbSubDetail
rbGroupHeader
rbGroupFooter
rbSummary
Color
Enabled
Font
ForceNewPage
Frame
LinkBand
Ruler
Eventos
BeforePrint
AfterPrint

Descrio
Impresso uma vez no incio do relatrio
Impresso uma vez no incio de cada pgina
Impresso no rodap de cada pgina
Semelhante ao rbPageHeader exceto pelo fato que impresso para cada coluna no
caso de um relatrio multicoluna
Replicado para cada registro do DataSet
Usado como rbDetail em relatrios mestre-detalhe
Impresso como cabealho de grupo de informaes. Deve ser indicado em um
QRDetailLink
Impresso como rodap de grupo de informaes. Deve ser indicado em um
QRDetailLink
Impresso no fim do relatrio
Cor de fundo da faixa
Indica se o QRBand ser impresso
Fonte para os controles desse QRBand
Fora que a impresso seja feita numa nova pgina
Coloca molduras no QRBand
Liga QRBands entre si, forando que sejam impressos numa mesma pgina
Coloca uma rgua, em tempo de projeto, no QRBand

Descrio
Quando o QRBand vai ser impresso. A impresso pode ser cancelada atribuindo-se
False ao parmetro PrintBand
Ocorre aps a impresso ou tentativa de impresso de um QRBand. Se a impresso foi
cancelada no evento BeforePrint o parmetro BandPrinted tem o valor True

QRLabel
Propriedade
Alignment
AutoSize
Caption
Color
Font

Descrio
Alinhamento do texto
Controle automtico do tamanha do componente
Texto a ser impresso
Cor de fundo
Fonte utilizada

56

Programao Delphi apoiando aplicativos de Bases de Dados

Transparente
Eventos
OnPrint

Define se o componente ser transparent

Descrio
Ocorre antes do componente ser impresso. O valor a ser impresso esta no
parmetro Value

QRDBText
Propriedade
Alignment
AutoSize
Color
DataSource
DataField
Font
Transparent
Eventos
OnPrint

Descrio
Alinhamento do texto
Define se o tamanho do componente ser ajustado automaticamente de acordo
com o seu contedo
Cor de fundo para o componente
Fonte de Dados
Campo
Fonte
Indica se o componente ser transparente

Descrio
Ocorre antes do componente ser impresso. O valor a ser impresso esta no
parmetro Value

QRDBCalc
Propriedade
AsInteger
AsReal
Operation

PrintMask
ResetBand
Eventos
OnPrint

Descrio
Retorna o Valor corrente com inteiro
Retorna o Valor corrente como real
Operao de Calculo a ser realizada
qrcSum - Somatrio de um campo
qrcCount
- Nmero de registro de um campo
qrcMax - Valor mximo de um campo
qrcMin
- Valor mnimo de um campo
qrcAverange
- Mdia de um campo
Mscara de sada do QRDBCalc
Zera os clculos sempre for impresso

Descrio
Antes do componente ser impresso

QRSysData
Propriedade
Data
Alignment
AutoSize
Color
Font
Transparente
Eventos
OnPrint

Descrio
Informao a ser exibida (Hora, Data, Nmero da Pgina, Ttulo do Relatrio,
Contado de Detalhes, Registro Corrente)
Alinhamento do texto
Controle automtico do tamanha do componente
Cor de fundo
Fonte utilizada
Define se o componente ser transparent

Descrio
Ocorre antes do componente ser impresso. O valor a ser impresso esta no
parmetro Value

QRShape
Propriedade
Brush
Pen
Shape
Height
Width

Descrio
Cor e Traado da Figura
Caneta usada na pintura
Tipo da Figura
Altura da figura
Largura da figura

57

Programao Delphi apoiando aplicativos de Bases de Dados

Eventos
OnPrint

Descrio
Ocorre antes do componente ser impresso. O valor a ser impresso esta no
parmetro Value

QRMemo
Propriedade
Alignment
AutoSize
Lines
WordWrap
Color
Font
Transparente

Descrio
Alinhamento do texto
Controle automtico do tamanha do componente
Texto a ser impresso
Quebra automtica de linha de acordo com o tamanho do componente
Cor de fundo
Fonte utilizada
Define se o componente ser transparent

QRDetailLink
Propriedade
DataSource
DeatilBand
FooterBand
HeaderBand
Master
PrintBefore
Eventos
OnFilter

Descrio
Fonte de Dados na qual um relacionamento mestre-detalhe deve ter sido
defenido
QRBand detalhe
QRBand rodap
QRBand cabealho
QuickReport ou outro QRDetailLink. Um relacionamento mestre-detalhe deve
ser definido entre as tabelas envolvidas
Inidica se a informao mestre ser impresso antes ou depois dos detalhes
Descrio
Ocorre a cada movimento do ponteiro de registros no dataset e o parmetro
PrintRecord pode ser utilizado para evitar a impresso do registro corrente

QRGroup
Propriedade
DataSource
DataField
FooterBand
HeaderBand
Level

Descrio
Fonte de Dados
Campo que servir como base para o grupo
Rodap do grupo
Cabealho do grupo
Nvel do grupo

QRPreview
Propriedade
PageNumber
Zoom
Mtodos
ZoomToFit
ZoomToWith

Descrio
Escolha da pgina a ser exibida
Escolha do zoom

Descrio
Ajusta o zoom para caber todo o relatrio no formulrio
Ajusta o zoom horizontal para caber todo o relatrio no formulrio

CONCLUSO

Este trabalho apresentou as caractersticas gerais do ambiente de programao Delphi da Borland, sem
abordar os fundamentos de lgica de programao e outras peculiaridades de programao visual. Foi
enfatizada a forma de se utilizar Delphi juntamente com os recursos de Bases de Dados que podem ser
ento includos nos aplicativos.
No foi pretendido com essas notas didticas explorar todos recursos de programao que
podem ser obtidos no ambiente Delphi. No entanto, tem-se um conjunto bsico das referncias de
58

Programao Delphi apoiando aplicativos de Bases de Dados

mecanismos e recursos que podem ser utilizados como suporte nas prticas de aplicativos que
precisam de suporte de Bases de Dados.

Remissivo
1

INTRODUO ............................................................................................................................................ 4
1.1 PRINCIPAIS CARACTERSTICAS DO DELPHI.................................................................................................. 4
1.2 CARACTERSTICAS DO DELPHI CLIENT/SERVER.......................................................................................... 5

O AMBIENTE DELPHI .............................................................................................................................. 5


2.1
2.2
2.3
2.4
2.5

COMO FORMADA UMA APLICAO EM DELPHI ........................................................................................ 5


CDIGO FONTE DO ARQUIVO PROJECT(.DPR)............................................................................................. 7
CDIGO FONTE DO ARQUIVO UNIT (.PAS) .................................................................................................. 7
ARQUIVOS GERADOS PELA COMPILAO ................................................................................................... 9
AMBIENTE DE PROGRAMAO.................................................................................................................... 9

FUNDAMENTOS DE OBJECT PASCAL............................................................................................... 11


3.1 CONCEITOS DE PROGRAMAO ORIENTADA A OBJETOS .......................................................................... 11
3.2 VARIVEIS ................................................................................................................................................ 11
Variveis Globais ......................................................................................................................................... 11
Variveis Locais ........................................................................................................................................... 11
3.3 ATRIBUTOS ............................................................................................................................................... 12
3.4 ENCAPSULAMENTO ................................................................................................................................... 12
3.5 CLASSES ................................................................................................................................................... 12
3.6 OBJETOS ................................................................................................................................................... 13
3.7 LITERAIS ................................................................................................................................................... 13
3.8 CONSTANTES ............................................................................................................................................ 13
Constantes Tipadas ...................................................................................................................................... 13
3.9 INSTRUES.............................................................................................................................................. 13
Estilo de Codificao ................................................................................................................................... 14
3.10
COMENTRIOS...................................................................................................................................... 14
3.11
TIPOS DE DADOS PADRO .................................................................................................................... 14
Tipos Inteiros................................................................................................................................................ 14
Tipos Reais ................................................................................................................................................... 14
Tipos Texto ................................................................................................................................................... 14
Tipos Ordinais.............................................................................................................................................. 15
Boolean......................................................................................................................................................... 16
TDateTime .................................................................................................................................................... 16
Variant.......................................................................................................................................................... 17
3.12
CONVERSES DE TIPO .......................................................................................................................... 17
TypeCasting.................................................................................................................................................. 17
Rotinas de Converso................................................................................................................................... 17
3.13
EXPRESSES ......................................................................................................................................... 18
3.14
OPERADORES ........................................................................................................................................ 18
3.15
ESTRUTURAS DE DECISO .................................................................................................................... 19
3.16
ESTRUTURAS DE REPETIO ................................................................................................................ 19
3.17
TIPOS DEFINIDOS PELO USURIO.......................................................................................................... 20
Strings Limitadas.......................................................................................................................................... 20
Tipo Sub-Faixa. ............................................................................................................................................ 20
Enumeraes. ............................................................................................................................................... 21
Ponteiros ...................................................................................................................................................... 21
Records......................................................................................................................................................... 21
Arrays. .......................................................................................................................................................... 21
Sets. .............................................................................................................................................................. 21
3.18
PROCEDIMENTOS, FUNES E MTODOS.............................................................................................. 22
Procedimentos .............................................................................................................................................. 22

59

Programao Delphi apoiando aplicativos de Bases de Dados

Funes ........................................................................................................................................................ 22
Mtodos ........................................................................................................................................................ 22
Parmetros ................................................................................................................................................... 23
3.19
WITH .................................................................................................................................................... 23
3.20
SELF ..................................................................................................................................................... 23
3.21
CRIANDO E DESTRUINDO OBJETOS ...................................................................................................... 23
3.22
RTTI .................................................................................................................................................... 24
3.23
EXCEES ............................................................................................................................................ 24
Blocos Protegidos......................................................................................................................................... 25
Principais Excees...................................................................................................................................... 25
Blocos de Finalizao .................................................................................................................................. 25
Gerao de Excees ................................................................................................................................... 26
Erros de Bancos de Dados ........................................................................................................................... 26
4

BIBLIOTECA DE CLASSES.................................................................................................................... 28
4.1 NOMENCLATURA ...................................................................................................................................... 28
4.2 PROPRIEDADES ......................................................................................................................................... 28
Tipos de Propriedade ................................................................................................................................... 28
Propriedades Comuns .................................................................................................................................. 29
4.3 EVENTOS................................................................................................................................................... 29
Eventos Comuns ........................................................................................................................................... 29
4.4 MTODOS ................................................................................................................................................. 30
Mtodos Comuns .......................................................................................................................................... 30
4.5 JANELAS ................................................................................................................................................... 30
4.6 COMPONENTES PADRO ........................................................................................................................... 31
Tbutton. ........................................................................................................................................................ 31
TbitBtn .......................................................................................................................................................... 31
TspeedButton. ............................................................................................................................................... 31
Tlabel............................................................................................................................................................ 31
Tedit.............................................................................................................................................................. 32
TmaskEdit..................................................................................................................................................... 32
Tmemo. ......................................................................................................................................................... 32
TcheckBox. ................................................................................................................................................... 33
TradioButton. ............................................................................................................................................... 33
TradioGroup................................................................................................................................................. 33
Tpanel........................................................................................................................................................... 33
TscrollBox. ................................................................................................................................................... 33
TgroupBox. ................................................................................................................................................... 33
Tbevel. .......................................................................................................................................................... 33
TlistBox......................................................................................................................................................... 33
TcomboBox................................................................................................................................................... 34
Timage.......................................................................................................................................................... 34
Tpicture. ....................................................................................................................................................... 34
TpageControl................................................................................................................................................ 34
TtabSheet...................................................................................................................................................... 34
Tshape. ......................................................................................................................................................... 34
Ttimer. .......................................................................................................................................................... 34
TstatusBar. ................................................................................................................................................... 35
TstatusPanels................................................................................................................................................ 35
TstatusPanel. ................................................................................................................................................ 35
4.7 CAIXAS DE DILOGO ................................................................................................................................ 35
TOpenDialog / TsaveDialog......................................................................................................................... 35
TfontDialog. ................................................................................................................................................. 35
4.8 MENUS...................................................................................................................................................... 35
TmainMenu................................................................................................................................................... 36
TpopUpMenu................................................................................................................................................ 36
TmenuItem . .................................................................................................................................................. 36
4.9 CLASSES NO VISUAIS ............................................................................................................................. 36

60

Programao Delphi apoiando aplicativos de Bases de Dados

Tapplication. ................................................................................................................................................ 36
Tscreen. ........................................................................................................................................................ 37
Tprinter......................................................................................................................................................... 37
Tcanvas......................................................................................................................................................... 37
Tlist............................................................................................................................................................... 38
TstringList .................................................................................................................................................... 38
Tregistry . ..................................................................................................................................................... 38
5

BANCOS DE DADOS ................................................................................................................................ 38


5.1 CONCEITOS IMPORTANTES ........................................................................................................................ 38
5.2 BORLAND DATABASE ENGINE .................................................................................................................. 38
Fonte de Dados ............................................................................................................................................ 38
5.3 ARQUITETURA DE ACESSO ........................................................................................................................ 38
5.4 DATA ACCESS ........................................................................................................................................... 39
Tdatabase. .................................................................................................................................................... 39
Ttable............................................................................................................................................................ 40
Tfield............................................................................................................................................................. 46
TdataSource. ................................................................................................................................................ 49
Tquery........................................................................................................................................................... 49
TUpdateSQL................................................................................................................................................. 50
5.5 DATA CONTROLS ...................................................................................................................................... 50
TDBGrid....................................................................................................................................................... 51
TDBNavigator. ............................................................................................................................................. 52
TDBText........................................................................................................................................................ 52
TDBEdit........................................................................................................................................................ 52
TDBCheckBox. ............................................................................................................................................. 52
TDBRadioGroup. ......................................................................................................................................... 52
TDBMemo. ................................................................................................................................................... 53
TDBRichEdit. ............................................................................................................................................... 53
TDBImage. ................................................................................................................................................... 53
TDBListBox e TDBComboBox. .................................................................................................................... 53
TDBLookupListBox, TDBLookupComboBox. .............................................................................................. 53
TDBChart. .................................................................................................................................................... 54

RELATRIOS ........................................................................................................................................... 54
6.1 IMPRESSO DE TEXTO............................................................................................................................... 54
6.2 IMPRESSO GRFICA ................................................................................................................................ 54
6.3 IMPRESSO COM O REPORTSMITH ............................................................................................................ 55
6.4 IMPRESSO COM O QUICKREPORT ............................................................................................................ 55
QuickReport.................................................................................................................................................. 56
QRBand ........................................................................................................................................................ 56
QRLabel ....................................................................................................................................................... 56
QRDBText .................................................................................................................................................... 57
QRDBCalc.................................................................................................................................................... 57
QRSysData ................................................................................................................................................... 57
QRShape....................................................................................................................................................... 57
QRMemo....................................................................................................................................................... 58
QRDetailLink................................................................................................................................................ 58
QRGroup ...................................................................................................................................................... 58
QRPreview.................................................................................................................................................... 58

CONCLUSO ............................................................................................................................................ 58

61

Você também pode gostar