Você está na página 1de 92

Introduo

Programao Com
Delphi

Edberto Ferneda
.

Parte

I
Ambiente Integrado de
Desenvolvimento
IDE

O Ambiente DELPHI
O ambiente de desenvolvimento do Delphi possui as caractersticas IDE (Integrated
Developer Environment Ambiente Integrado de Desenvolvimento).

O DELPHI possui um conjunto de ferramentas que permitem facilitar e agilizar a


construo de programas, permitindo uma melhor interao entre o programador e o
computador. Seus principais componentes so:
 Janela Principal
 Janela OBJECT INSPECTOR
 Janela FORM DESIGNER
 Janela CODE EDITOR

Janela Principal
A janela principal controla o funcionamento do Delphi. atravs dessa janela que
mantemos o Delphi aberto, que identificamos qual projeto est ativo, que executamos os
comandos de compilao, entre outras funcionalidades. Esta janela pode ser dividida em
trs partes:
 Menu Principal: contm as opes de utilizao do DELPHI;
 Barra de Ferramentas: contm botes que agilizam determinadas funes do
DELPHI;

 Paleta de Componentes: contm diversas pginas de componentes que podem


ser utilizados na construo do projeto.

A Janela Principal: dividida em trs partes.

Menu Principal
Assim como toda aplicao Windows, no menu principal esto presentes os comandos
de abertura, criao, compilao, configurao do ambiente e chamadas a ferramentas
auxiliares como, por exemplo, o Image Editor.
 File
Abrir, salvar, fechar e imprimir projetos e arquivos, e acrescentar novos formulrios ou
Units ao projeto que est aberto.
Comando

Descrio

New

Abre a caixa de dilogo New Items que contm novos itens que
podem ser criados.

New Application

Cria um novo projeto contendo um novo formulrio, uma Unit e


o arquivo .DPR.

New Form

Cria e adiciona um novo formulrio ao projeto.

New Data Module

Cria e adiciona um novo formulrio do tipo DataModule ao


projeto.

Open

Abre uma caixa de dilogo para carregar um projeto, um


formulrio ou uma Unit no Code Editor.

Reopen

Apresenta um menu contendo uma lista dos ltimos projetos e


mdulos utilizados.

Save

Grava o arquivo ativo com o seu nome atual.

Save As

Grava o arquivo ativo com um novo nome.

Save Project As

Grava o projeto corrente com um novo nome.

Save All

Grava todos os arquivos abertos, tanto o projeto como seus


mdulos.

Close

Fecha uma Unit e/ou Formulrio ativo.

Close All

Fecha todos os arquivos.

Use Unit

Adiciona uma Unit clusula uses do mdulo ativo.

Add to Project

Adiciona um arquivo (Unit/Formulrio) ao projeto.

Remove From Project

Remove um arquivo do projeto.

Print

Envia o arquivo ativo para a impressora.

Exit

Fecha o projeto aberto e finaliza a execuo do Delphi.

 Edit
Comandos para manipular textos e componentes em tempo de projeto.
O Ambiente DELPHI

Comando

Descrio

Undelete (Undo)

Desfaz a ltima ao efetuada.

Redo

Reverte um comando Undo.

Cut

Remove um item selecionado e o coloca no Clipboard.

Copy

Coloca uma copia do item selecionado no Clipboard,


permanecendo o item original.

Paste

Copia o contedo do Clipboard na janela Code Editor ou no


formulrio.

Delete

Remove o item selecionado.

Select All

Seleciona todos os componentes no formulrio.

Align To Grid

Alinha o componente selecionado grade do formulrio.

Bring To Front

Move o componente selecionado para a frente de outro


componente.

Send To Back

Move o componente selecionado para trs de outro componente.

Align

Alinha os componentes selecionados.

Size

Altera o tamanho dos componentes selecionado.

Scale

Altera o tamanho de todos os componentes do formulrio.

Tab Order

Altera a ordem (tabulao) dos componentes do formulrio ativo.

Creation Order

Modifica a ordem em que os componentes no visuais sero


criados.

Lock Controls

Quando acionado, no permite que componentes sejam movidos


(arrastados) de suas posies

Add to interface

Define um novo mtodo, evento ou propriedade para um


componente ActiveX

 Search
Localiza texto, erros, objetos, units, variveis e smbolos no Code Editor.
Comando

Descrio

Find

Procura por um texto especificado e marca a primeira ocorrncia


encontrada no Code Editor

Find In File

Procura por um texto especificado e apresenta cada ocorrncia


em uma janela abaixo do Code Editor.

Replace

Procura por um texto especificado e o substitui por um novo


texto.

Search Again

Repete a procura.

Incremental Search

Procura por um texto movendo o cursor diretamente prxima


ocorrncia do texto digitado na barra de status.

Go to Line Number

Move o cursor para uma determinada linha.

Find Error

Procura pelo erro de execuo mais recente.

Browse Symbol

Procura por um determinado smbolo.

 View
Apresenta (ou esconde) diferentes elementos do ambiente Delphi e abre janelas do
depurador de cdigo (debugger).
Comando

Descrio

Project Manager

Mostra a janela do Project Manager.

Project Source

Apresenta o arquivo de projeto (.DPR) no Code Editor.

Object Inspector

Mostra o Object Inspector.

Alignment Palette

Mostra uma janela contendo opes para alinhamento de


componentes no formulrio (Alignment Palette).
O Ambiente DELPHI

Browser

Mostra o Object Browser.

Breakpoints

Apresenta uma janela contendo uma lista dos breakpoints


atualmente definidos (Breakpoints List).

Call Stack

Apresenta uma lista da seqncia atual das rotinas chamadas por


um programa (Call Stack).

Watches

Apresenta uma janela para visualizar o contedo de variveis


durante a execuo de um programa (Watch List).

Threads

Apresenta um janela de status dos threads (Thread Status).

Modules

Mostra uma janela contendo os mdulos da aplicao.


(Modules).

Component List

Apresenta uma lista de todos os componentes (Components).

Window List

Apresenta uma lista das janelas abertas (Window list).

Toggle Form/Unit

Alterna entre o formulrio e sua Unit correspondente.

Units

Mostra as Units que fazem parte do projeto.

Forms

Mostra os formulrios que fazem parte do projeto.

Type Library

Mostra a janela Type Library que permite examinar e criar


informaes de tipo para controles ActiveX.

New Edit Window

Abre uma nova janela para o Code Editor.

SpeedBar

Esconde/mostra a Barra de Ferramentas (SpeedBar).

Component Palette

Esconde/Mostra a Paleta de Componentes.

 Project
Permite adicionar ou remover novos mdulos em um projeto, bem como compil-lo;
Comando

Descrio

Add to Project

Adiciona um arquivo ao projeto.

Remove from Project

Remove um arquivo do projeto.

Import Type Library

Importa uma biblioteca de tipos para um projeto.

Add To Repository

Adiciona um projeto ao Object Repository.

Compile

Compila todos mdulos que foram alterados desde a ltima


compilao.

Build All

Compila todos os arquivos do projeto.

Syntax Check

Compila o projeto sem passar pelo processo de link-edio.

Information

Mostra informaes sobre o projeto

Web Deployment Options

Configura um controle ActiveX ou ActiveForm para ser


efetivamente utilizado em seu servidor Web.

Web Deploy

Aps configurar e compilar o projeto, utilize este comando para


que o controle ActiveX ou ActiveForm seja utilizado pelo
servidor Web.

Options

Apresenta a janela de opes do projeto (Project Options).

 Run
Apresenta opes de execuo e depurao do projeto.
Comando

Descrio

Run

Compila e executa a aplicao.

Parameters

Especifica parmetros de inicializao da aplicao.

Register ActiveX

Registra o projeto no Windows. Disponvel Quando for um


projeto ActiveX.

Unregister ActiveX Servers

Remove o projeto do registro Windows. Disponvel quando for


um projeto ActiveX.

O Ambiente DELPHI

Step Over

Executa um programa linha por linha, sem passar pelas


procedures ou functions.

Trace Into

Executa um programa linha por linha, passando inclusive pelas


procedures e funcitons.

Trace To Next Source Line

Executa um programa parando a cada prxima linha executvel.

Run To Cursor

Executa a aplicao a partir da localizao do cursor na janela


Code Editor.

Show Execution Point

Posiciona o cursor no ponto de execuo.

Program Pause

Suspende temporariamente a execuo de um programas.

Program Reset

Finaliza a execuo do programa e libera a memria.

Add Watch

Abre a janela Watch Properties onde podem ser definidas as


variveis que sero visualizadas durante a execuo do
programa.

Add Breakpoint

Abre o Edit Breakpoint onde podem ser definidos breakpoints


(pontos de parada do programa).

Evaluate/Modify

Abre a janela Evaluate/Modify onde pode-se calcular ou alterar


o valor de uma expresso.

 Component
Permite a criao ou instalao de novos componentes no DELPHI.
Comandos

Descrio

New Component

Abre o Component Expert para criar uma Unit bsica para um


novo componente.

Install Component

Instala um componente em um package (pacote) novo ou j


existente.

Import ActiveX Control

Adiciona bibliotecas de controles ActiveX em um projeto


Delphi.

Create Component Template

Personaliza um componente e salva-o na Paleta de Componentes

Install Packages

Especifica os packages (pacotes) requeridos pelo projeto.

Configure Palette

Abre a janela de configurao de componentes e paletas.

 Database
Possui ferramentas que permitem criar, modificar e visualizar Consultas e Tabelas de
Banco de Dados.
Comandos

Descrio

Explore

Abre o Database Explorer ou o SQL Explorer, dependendo da


verso do Delphi. Ambos permitem criar, visualizar e alterar
dados e Alias.

SQL Monitor

O SQL Monitor permite visualizar chamadas feitas atravs de


ligaes SQL (SQL Links) um servidor remoto atravs do
ODBC.

Form Wizard

O Form Wizard permite gerar facilmente formulrios que


apresentam dados de um banco de dados InterBase, Paradox,
dBASE, ou Oracle.

 Tools
Permite visualizar e alterar configuraes de ambiente, modificar a lista de programas
externos ao Delphi.
Comandos

Descrio

Environment Options

Configura o ambiente e personaliza a aparncia da Paleta de


Componentes.

O Ambiente DELPHI

Repository

Apresenta a janela Object Repository para a configurao das


pginas de componentes apresentados no comando New do menu
File.

Configure Tools

Apresenta a janela Tools Options para adicionar ou remover


programas do menu Tools.

Package Collection Editor

Cria e edita colees de packages (pacotes). As colees de


pacotes so uma forma conveniente de agrupar pacotes para
distribuio a outros programadores.

Image Editor

Cria e edita arquivos de resource (.RES), icones, bitmaps, e


cursores para serem usados em aplicaes Delphi.

Database Desktop

Cria, visualiza, modifica e consulta tabelas em formato Paradox,


dBASE, e SQL.

 Workgroups
Configura o controle de verses em projetos envolvendo vrios programadores. O
controle de verses do Delphi feito pelo Intersolv PVCS Version Manager 5.1.
Comandos

Descrio

Browse PVCS Projects

Apresenta a janela PVCS Project na qual pode ser feita todas as


tarefas referentes ao controle de verses.

Manage Archive Directories

Quando a janela PVCS est aberta, apresenta a janela Archive


Directories que permite adicionar, remover ou criar diretrios
para o PVCS Version Control armazenar informaes que
compe um projeto.

Add Project to Version


Control

Permite salvar o projeto corrente em um diretrio de controle de


verso.

Set Data Directories

Apresenta a janela Data Directories para configurar a


localizao de diretrios pblicos e privados.

 Help
Ajuda do DELPHI.
Comando

Descrio

Contents

Selecione uma das pginas (Contedo, Indice ou Localizar). A


pgina Contedo apresenta uma lista de tpicos organizada
hierarquicamente. A pgina ndice apresenta os tpicos listados
em ordem alfabtica. A pgina Localizar procura um texto
especificado.

Keyword Search

Abre a janela Help posicionada na opo ndice, descrita


anteriormente.

What's New

Apresenta um resumo as novas caractersticas e extenses do


Delphi 3.0 em relao s verses anteriores.

Getting Started

Fornece informaes sobre as principais caractersticas do


ambiente Delphi e os fundamentos de programao.

Using Object Pascal

Descreve a sintaxe e a semntica da linguagem de programao


Object Pascal.

Developing Applications

Fornece informaes para tarefas


avanadas. Fala sobre
aplicaes de banco de dados, componentes personalizados e
aplicaes Internet e Intranet. Explica como trabalhar com COM
e ActiveX.

Object and Component


Reference

Referncia completa da VCL, tipos, rotinas, variveis e


constantes.

Borland Home Page

Abre seu Web Browser e posiciona no site da Borland.

Delphi Home Page

Ligao direta para o site da Borland que se refere ao Delphi

Borland Programs and


Services

Ligao a sites de programas e servios. Fornece informaes


sobre suporte tcnico.
O Ambiente DELPHI

About

Apresenta os direitos autorais e informao sobre a verso


utilizada. Possui tambm ligao para o site da Borland.

Barra de Ferramentas
A barra de ferramentas contm as principais opes do menu principal e utilizada para
acessar os comandos de forma mais rpida.
O conjunto de botes da barra de ferramentas pode ser personalizada pressionando-se o
boto direito do mouse sobre ela e escolhendo-se a opo Properties no menu.

Paleta de Componentes
Componentes so programas que representam os botes, os ComboBoxes, as tabelas.
Etc. Cada pgina apresenta um conjunto de cones que representam as classes cujos
objetos que sero utilizados nos formulrios das aplicaes.
Para adicionar componentes em um formulrio basta seleciona o componente e em
seguida posiciona-lo no formulrio.
Os componentes podem ser Visuais ou No-Visuais. Os componentes visuais so
aqueles que podem ser redimensionados e aparecem no formulrio quando o projeto
est sendo executado.
Os componentes No-Visuais so visveis apenas em tempo de edio e no podem ser
redimensionados.
Todo componente Delphi um objeto que pertence a uma classe pr-definida. Em sua
maioria um componente possui Propriedades, Mtodos e Eventos.
Propriedades so dados relativos a um determinado componente, e que determinam
suas caractersticas visuais e seu estado. Por exemplo, o tamanho de um boto, se uma
tabela est aberta ou fechada.
Eventos so trechos de programas (procedures) que so executados em resposta a uma
determinada ao. Essa ao pode ser o clique do mouse sobre um boto da interface, a
excluso de um registro em uma tabela, o fechamento de um formulrio, etc.
Mtodos so procedimentos ou funes que executam uma determinada operao. Os
mtodos esto associados a um determinado objeto e so declarados na classe que este
objeto pertence. Por exemplo, existem mtodos para abrir tabelas, fechar formulrios,
excluir registros, etc.

O Object Inspector
A janela Object Inspector contm propriedades e eventos dos componentes inseridos em
um formulrio e tambm do prprio formulrio. A janela do Object Inspector possui um
ComboBox e est dividida em duas pginas.

O Ambiente DELPHI

A Janela OBJECT INSPECTOR: propriedades e eventos

A pgina Properties (Propriedades) permite que se altere os valores das propriedades


dos componentes contidos no formulrio ou ainda as propriedades do prprio
formulrio. J na pgina Events (Eventos) estabelecem-se aes a serem tomadas pelo
componente a partir de um evento associado ao mouse, teclado, sistema operacional,
etc.
O ComboBox existente no Object Inspector mostra o componente atualmente
selecionado no formulrio e apresenta uma lista com todos os componentes existentes
no formulrio.

O Form Designer
Um formulrio (FORM) a janela onde o desenvolvedor constri sua aplicao. A
partir de um formulrio que se estabelece a interao usurio-computador, atravs de
botes, rtulos e outros componentes, estabelecendo-se funes, mtodos ou eventos
que sero ativados. Os componentes so dispostos na rea til do FORM.

O Ambiente DELPHI

A Janela FORM: interface.

Existem quatro tipos de formulrios:


 Normal: o FORM padro;
 MDIForm: os FORMS do tipo MDI (Multiple Document Interface), podem
conter outros FORMS do tipo MDIChild;
 MDIChild: so FORMS que sempre esto subordinados a um FORM
MDIForm;
 StayOnTop: so FORMS que sempre ficam visveis na tela.

O Code Editor
A janela Code Editor (Editor de Cdigo), onde se desenvolve o programa fonte.
neste editor que se encontra a estrutura sinttica propriamente dita da Linguagem. Cabe
ressaltar, no entanto, que boa parte do cdigo escrito gerado automaticamente.
No topo do editor de cdigo encontra-se um controle de mltiplas pginas, onde cada
pgina corresponde a um mdulo do programa (Unit). Geralmente as Units esto
relacionadas aos formulrios da aplicao. A cada vez que se adiciona um novo
formulrio na aplicao, o Delphi adiciona tambm uma nova pgina ao editor de
cdigo.

O Ambiente DELPHI

A Janela CODE EDITOR: cdigo fonte

O Ambiente DELPHI

10

Biblioteca de Classes
Por ser uma linguagem de programao orientada a objetos o DELPHI possui uma
biblioteca de classes denominada de VCL (Visual Component Library), para
auxiliar na construo de programas.
A biblioteca de classes do DELPHI pode ser visualizada no Browser (comando
View|Browser do menu principal).
No DELPHI existem as classes visveis e as no visveis.
As classes no-visveis oferecem controles especializados que no so possveis ou
necessrios atravs da interface visual. As classes no visveis mais comuns so a
TApplication, a TScreen e a TPrinter.

Classes No-Visveis
TApplication
Quando se inicia um projeto em DELPHI, automaticamente criada uma varivel
Application que do tipo TApplication. Esta classe permite a interao de sua
aplicao com o Windows.
A atribuio de valores s propriedades do TApplication pode ser feita apenas em
tempo de execuo, ou durante o desenvolvimento do projeto na opo do menu
Project - Options.
Os principais mtodos da classe TApplication so:
 Run(): faz com que a aplicao seja executada. Este comando colocado
automaticamente no cdigo fonte do projeto (veja em View - Project Source).
 HelpCommand(): carrega o arquivo de help da aplicao.
Algumas das principais propriedades da classe TApplication so:
 MainForm: contm o formulrio principal da aplicao;
 Title: contm o ttulo da aplicao que ser apresentado para quando estiver
minimizada;
 HelpFile: armazena o nome do arquivo de Help da aplicao;
 Icon: contm o cone que representa a aplicao.

TScreen
Quando se inicia um projeto em DELPHI, automaticamente criada uma varivel
Screen que do tipo TScreen. Esta classe contm as caractersticas da tela na qual a
aplicao est rodando.
Algumas das principais propriedades da classe TScreen so:
 Cursor : contm o cursor que est em uso;
 Cursors: contm a lista dos cursores disponveis para a aplicao;






Fonts: contm a lista de fontes disponveis para a aplicao;


Forms: contm a lista de formulrios da aplicao;
Height: contm a altura da tela (em pixels);
Width: contm a largura da tela (em pixels).

TPrinter
Quando se inicia um projeto em DELPHI, automaticamente criada uma varivel
Printer que do tipo TPrinter. Esta classe contm as caractersticas da impressora
que est sendo utilizada pelo Windows, alm de permitir a impresso.
Os principais mtodos da classe TPrinter so:
 BeginDoc(): inicia um processo de impresso.
 EndDoc(): finaliza um processo de impresso.
 Abort(): aborta o processo de impresso.
 NewPage(): inicia a impresso em uma nova pgina.
Algumas das principais propriedades da classe TPrinter so:
 Printers: contm a lista de impressoras instaladas no Windows.
 PrinterIndex: contm o ndice da impressora ativada.
 Orientation: contm a orientao do papel.
 PageHeight: contm a altura da pgina de impresso.
 PageWidth: contm a largura da pgina de impresso.
 PageNumber: contm o nmero da pgina que est sendo impressa.
 Title: contm o ttulo da pgina impressa.
Para a impresso de dados utilizando o TPrinter necessrio utilizar a classe
TCanvas.

Componentes
As classes visveis so aquelas que podem ser manipuladas atravs da Paleta de
Componentes, ou seja, so os prprios componentes
A paleta de componentes a biblioteca de classes que fornece recursos para o
desenvolvimento visual em DELPHI. Os componentes VCL (Visual Component
Library) representadas na Paleta de Componentes esto separados em pginas.
Os componentes visuais podem ter sua forma e tamanho alteradas no formulrio,
alm das propriedades e eventos que podem ser alterados no Object Inspector. Eles
aparecem durante a execuo do aplicativo exatamente como foram definidos
durante a construo do formulrio.

STANDARD
A pgina Standard possui os componentes de interface mais comuns para a
construo de aplicaes Windows95/NT.

Pgina Standard: componentes mais comuns

Biblioteca de Classes

12

MainMenu
Cria uma barra de menus em um formulrio. Para definir as opes do menu, adicione o
componente MainMenu no formulrio e d um duplo-click sobre ele para abrir o Menu
Designer.
PopupMenu
Cria um menu popup que aparece quando o usurio clica o boto direito do mouse. Para definir
as opes do menu e, adicione o componente PopupMenu no formulrio e d um duplo-click
sobre ele para abrir o Menu Designer.
Label
Apresenta um texto que o usurio no poder selecionar ou manipular.
Edit
Apresenta um campo de edio onde o usurio poder digitar uma nica linha de texto.
Memo
Apresenta uma rea de edio onde o usurio poder digitar diversas linha de texto.
Button
Cria um boto que o usurio escolhe para iniciar uma determinada ao.
CheckBox
Representa uma informao do tipo Sim/No. Geralmente utilizado para representar um
grupo de opes que no so mutuamente exclusivas, podendo-se selecionar mais de uma
opo de um mesmo grupo.
RadioButton
Apresenta uma informao do tipo Sim/No. geralmente utilizado para representar um grupo
de opes mutuamente exclusivas, podendo o usurio escolher apenas uma opo de um
mesmo grupo.
ListBox
Apresenta uma lista de opes.
ComboBox
Apresenta um campo de edio onde o usurio digita informaes diretamente em uma linha de
texto, ou escolher a partir de uma lista previamente definida.
ScrollBar
Fornece uma forma de alterar a rea visvel de uma lista ou um formulrio.
GroupBox
Permite definir uma rea para criar um grupo de componentes relacionados.
RadioGroup
Permite criar uma rea contendo um agrupamento de componentes RadioButton.
Panel
Permite cria uma rea que pode-se agrupar diversos tipos de componentes. Pode-se ainda
utilizar o Panel para criar barra de ferramentas ou linhas de status.

ADDITIONAL
Na pgina Additional encontram-se outros componentes de interface.

Pgina Additional: componentes especializados


BitBtn
Cria um boto que pode conter, alm do texto, uma figura bitmap.
SpeedButton
Cria um boto que pode conter um texto e uma figura. Este tipo de boto freqentemente
utilizado em grupos, em uma barra de ferramentas.

Biblioteca de Classes

13

MaskEdit
Apresenta um campo de edio onde o usurio digita uma nica linha de texto, similar ao
componente Edit. A diferena que o MaskEdit fornece uma forma de especificar um formato
particular, tal como CEP, nmero de telefone, etc.
StringGrid
Cria uma tabela que pode ser usada para apresentar textos divididos em colunas e linhas.
DrawGrid
Cria uma tabela que pode ser usada para apresentar diversos tipos de dados em forma de tabela.
Image
Apresenta figuras bitmap, icon, etc. em um formulrio.
Shape
Desenha figuras geomtricas no formulrio.
Bevel
Cria linhas e caixas tridimensionais no formulrio.
ScrollBox
Cria uma rea que apresenta automaticamente barras de rolagem (scrollbars) quando
necessrio.
CheckListBox
Apresenta um lista similar ao ListBox, exceto que cada item possui tambm um CheckBox.
Splitter
Um componente Splitter pode ser colocado entre dois componentes para permitir ao usurio
alterar o tamanho desses componentes em tempo de execuo.
StaticText
Este componente possui um texto no editvel, como o componente Label. A diferena podese definir uma moldura ao redor do texto.
Chart
Este componente desenha grficos em um formulrio utilizando uma pequena planilha como
fonte de dados

WIN32
Os pgina de componente Win32 fornece a maioria dos controles encontrados na
interface Windows 95/NT.

Pgina Win32: aplicativos com a aparncia do Windows 95/NT.


TabControl
Fornece uma rea contendo uma nica pgina de informao e um conjunto etiquetas (Label).
PageControl
Define mltiplas paginas ou sees de informao em uma mesma janela. Possui etiquetas para
acessar cada uma dessas pginas.
ImageList
Coleo de imagens do mesmo tamanho que podem ser referenciadas atravs de um ndice. Este
componente usado para se gerenciar eficientemente um grande conjunto de figuras (cones ou
bitmaps).
RichEdit
Define uma rea de texto que suporta a definio de tipos diferentes de letras (fontes), alm de
propriedades de formatao tais como alinhamento, tabulaes, etc.
TrackBar
Define um determinado valor atravs do deslocamento de um apontador sobre um rgua. Podese configurar a orientao como vertical ou horizontal.
Biblioteca de Classes

14

ProgressBar
Barra retangular que preenchida da esquerda para a direita, como aquela mostrada quando se
copia arquivos no Windows Explorer. Fornece um retorno visual sobre o progresso de uma
operao.
UpDown
Incrementa e decrementa valores atravs de uma seta para cima e uma para baixo..
HotKey
Cria e apresenta combinaes de teclas que podero ser usadas como teclas de atalho.
Animate
Apresenta um vdeo .AVI (Audio Video Interleaved). Possui alguns vdeos pr definidos como
aqueles que so apresentados pelo Windows 95 quando se exclui ou copia um arquivo, por
exemplo..
DateTimePicker
Apresenta um calendrio para a seleo de data. O usurio pode digitar, selecionar atravs de
um calendrio ou atravs de setas para cima e para baixo.
TreeView
Permite apresentar informaes atravs de uma estrutura hierrquica.
ListView
Fornece diferentes formas de apresentar informaes sob forma de lista.
HeaderControl
Apresenta um cabealho que pode ser dividido colunas contendo textos ou nmeros. Pode-se
configurar o comportamento de cada uma dessas colunas para que, como um boto, execute
uma funo especifica quando o usurio clicar sobre ele.
StatusBar
Define uma rea para apresentar o estado atual de alguma operao, mensagens de erro ou de
alerta, avisos, etc.
ToolBar
Agrupa um conjunto de botes e outros componentes, organizando-os em colunas e ajustando
automaticamente seus tamanhos e posies.
CoolBar
Apresenta uma coleo de linhas (CoolBand) que podem ser movimentados pelo usurio em
tempo de execuo.

SYSTEM
A pgina System possui controles especializados que interagem com o Sistema
Operacional ou com algumas caractersticas de Hardware.

Pgina System: Interao com o Sistema Operacional


Timer
Timer um componente no-visual que dispara um evento em determinada hora ou
repetidamente aps um determinado intervalo de tempo.
PaintBox
Apresenta uma rea onde permitido apresentar e editar figuras. Este componente utilizado
em aplicaes de desenho.
MediaPlayer
Apresenta um painel de controle para apresentar e gravar informaes multimdia.
OleContainer
Cria uma rea Object Linking and Embedding (OLE) em um formulrio.

Biblioteca de Classes

15

DdeClientConv
DDE uma antiga tecnologia para implementao de comunicao. Para novos projetos deve-se
utilizar OLE.
O componente DDEClientConv fornece s aplicaes a habilidade de estabelecer uma
converso DDE com uma aplicao servidora DDE. Este componente deve trabalhar em
conjunto com um componente DDEClientItem para que sua aplicao seja uma aplicao
cliente DDE completa.
DdeClientItem
O componente DDEClientItem define o item da converso DDE. Utilize este componente junto
com o componente DDEClientConv para implementar uma aplicao cliente DDE.
DdeServerConv
Este componente fornece aplicao a habilidade de estabelecer uma converso DDE com um
aplicao cliente. Ao utilizar este componentes, sua aplicao ser uma servidor DDE. Este
componente utilizado em conjunto com o componente DDEServerItem para que sua aplicao
seja um servidor DDE completa.
DdeServerItem
O componente DDEServerItem define o tpico de uma converso DDE com outra aplicao.
Este componente utilizado em conjunto com um componente DDEServerConv.

INTERNET
Os componentes da pgina Internet permitem implementar aplicaes que utilizem
algum tipo de servio Internet.

Pagina Internet: Componentes para aplicaes Internet


ClientSocket
Acrescente este componente a um formulrio ou Data Module da sua aplicao para torn-la
uma aplicao cliente TCP/IP.
O componente ClientSocket define uma conexo a um servidor TCP/IP, gerencia a abertura e a
finalizao de uma conexo.
ServerSocket
Acrescente este componente a um formulrio ou Data Module para tornar sua aplicao um
servidor TCP/IP.
O componente ServerSocket recebe as requisies TCP/IP de outras mquinas e estabelece tais
conexes quando requisitadas.
WebDispatcher
Converte um Data Module em um WEB Module e permite que o servidor de aplicao Web
responda s mensagens HTTP.
PageProducer
Converte um seqncia HTML em uma a string de comando HTML que pode ser interpretada
por uma aplicao cliente, por exemplo, um Browser.
QueryTableProducer
Monta um seqncia de comandos HTML para gerar uma apresentao tabular de registros
provenientes de um objeto Query.
DataSetTableProducer
Monta uma seqncia de comandos HTML para gerar uma apresentao tabular de registros
provenientes de um objeto DataSet.
FTP
Controle ActiveX que fornece acesso fcil aos servios Internet File Transfer Protocol (FTP)
para transferncia de arquivos e dados entre uma mquina remota e uma local.

Biblioteca de Classes

16

HTML
Controle ActiveX que implementa um visualizador HTML, com ou sem recuperao automtica
de documentos HTML e fornece interpretador HTML, assim como uma viso de uma pgina
HTML. O componente HTML pode ainda ser usado como um interpretador HTML no-visual
para analisar ou processar documentos HTML.
HTTP
Controle ActiveX que implementa o Protocolo Cliente HTTP, permitindo aos usurios
recuperarem documentos HTTP diretamente, sem possibilidade de navegao.
NNTP
Controle ActiveX que permite s aplicaes acessarem o Protocolo NNTP, possibilitando
leitura e escrita de mensagens no servidor de news
POP
Controle ActiveX que recupera correios eletrnicos de servidores UNIX ou outro servidor que
suporta o protocolo POP3.
SMTP
Controle ActiveX que permitem as aplicaes acessarem a servidores de correio eletrnico
SMTP e a capacidade de enviar mensagens.
TCP
Controle ActiveX que implementa o protocolo TCP para aplicaes cliente e aplicaes
servidoras, fornecendo fcil acesso aos seus servios.
UDP
Controle ActiveX que fornece fcil acesso aos servios do protocolo UDP (UDP). Implementa
o WinSock para cliente e servidor, e representa um ponto de comunicao utilizando servios
UDP. Pode ainda ser usado para enviar e receber dados UDP.

DATA ACCESS
De uma forma geral, os componentes da pgina Data Access representam e do
acesso aos dados armazenadas fisicamente.

Pgina DataAcess: Componentes de acesso a Banco de Dados


DataSource
Age como um condutor entre um componente Table, Query, StoredProc e componentes de
apresentao de dados tais como DBGrid, DBEdit, etc.
Table
Recupera dados de um tabela atravs do BDE, fornecendo-os a um ou mais componentes
DataSource.
Query
Utiliza declaraes SQL para recuperar dados de uma tabela atravs do BDE, fornecendo-os a
um ou mais componentes do DataSource.
StoredProc
utilizado quando uma aplicao cliente deve executar um procedimento armazenado no
servidor de banco de dados. constitudo de um grupo de instrues armazenados como se
fosse uma tabela, e executa uma tarefa que se repete com freqente no servidor, retornando
alguns resultados para a aplicao cliente.
Database
Configura uma conexo a um banco de dados, especialmente um banco de dados remoto.
Session
Fornece controles a grupos de componentes DataBase que podem ser associados a ele. Um
componente Session default automaticamente criado para cada aplicao de Banco de Dados.
A criao manual de componentes Session necessria somente na criao de aplicaes
multithread que utilizam de banco de dados.
Biblioteca de Classes

17

BatchMove
Copia a estrutura de uma tabela ou os seus dados. Pode ser usado para copiar tabelas inteiras de
um determinado formato para outro.
UpdateSQL
Permite utilizar o recurso de cached updates com um DataSet de apenas leitura. Por exemplo,
poderia se utilizar um componente UpdateSQL para possibilitar a atualizao de um DataSets
abilitando a atualizao de DataSets de apenas leitura.
Provider
Fornece dados de uma aplicao multi-tiered servidora para um DataSet de uma aplicao
cliente (ClientDataSet).
ClientDataSet
utilizado como se fosse um componente DataSet na parte cliente de um aplicao multi-tiered.
RemoteServer
Em uma aplicao cliente, fornece a conexo a uma servidor de dados remoto.
Report
Permite que uma aplicao utilize relatrios desenvolvidos em geradores de relatrios
independentes tal como o ReportSmith, que era distribudo juntamente com a verso 2.0 do
Delphi.

DATA CONTROLS
A pgina Data Controls fornecem componentes que permitem construir formulrios
para trabalhar diretamente com dados (campos) que esto armazenados em tabelas de
banco de dados.

Pgina DataControls: Componentes de interface para Banco de Dados


DBGrid
Permite visualizar e editar dados de forma tabular, como uma planilha. Pode-se determinar as
colunas que sero visualizadas, o formato, a ordenamento, etc.
DBNavigator
Conjunto de botes que permitem fazer todas as operaes necessrias para a manuteno uma
tabela de banco de dados.
DBText
Apresenta o valor de um campo do registro corrente de uma tabela.
DBEdit
Apresenta uma caixa de edio onde pode-se visualizar ou alterar o valor de um campo no
registro corrente de uma tabela.
DBMemo
Permite visualizar e editar campos do tipo MEMO.
DBImage
Permite visualizar e editar imagens bitmap armazenadas no campo de uma tabela.
DBListBox
Permite visualizar e editar um campo cuja lista de possveis valores provm de uma lista fixa de
valores pr-definidos.
DBComboBox
Componente to tipo Combo, que permite visualizar e editar um campo de uma tabela cuja lista
de possveis valores provm de uma lista previamente definida.
DBCheckBox
Apresenta ou edita um campo booleano de uma tabela.

Biblioteca de Classes

18

DBRadioGroup
Grupo de botes do tipo RadioButton que apresenta um conjunto de valores que podem ser
armazenados em um campo de uma tabela.
DBLookupListBox
Apresenta um campo de uma tabela cuja lista de possveis valores provm de um campo de
outra tabela.
DBLookupComboBox
Componente do tipo Combo, que permite visualizar e editar um campo de uma tabela cuja lista
de possveis valores provm de um campo de outra tabela.
DBRichEdit
Controle de edio que permite apresentar e editar campos memo formatados.
DBCtrlGrid
Permite apresentar e editar dados de forma tabular, sendo que cada clula pode conter vrios
campos de um mesmo registro.
DBChart
Este componente desenha grficos em um formulrio utilizando uma tabela de banco de dados
como fonte de dados..

DECISION CUBE
Os componentes da pgina Decision Cube (disponveis somente na verso
Client/Server) acrescenta recursos para anlise multidimensional de dados atravs de
referncia cruzada entre tabelas de banco de dados, utilizando as poderosas
caracterstica da linguagem SQL.

Pgina DecisionCube: Anlise multidimensional de dados


DecisionCube
Um depsito de dados multidimensional.
DecisionQuery
Forma especializada de Query usada para definir dados em um Decision Cube.
DecisionSource
Define o piv atual de um componente DecisionGrid ou um componente DecisionGraph.
DecisionPivot
Botes utilizados para abrir ou fechar dimenses ou campos de um DecisionCube.
DecisionGrid
Apresenta dados multidimensionais de forma tabular.
DecisionGraph
Apresenta campos de um DecisionGrid como um grfico dinmico que se altera quando suas
dimenses so modificadas.

QREPORT
Os componentes da pgina QReport permitem construir relatrios atravs da
definio de da definio de faixas, ttulos, cabealhos, sumrios, grupos, etc. Podese gerar relatrios a partir de qualquer tipo de DataSource: Table, Query, etc.
Durante a montagem do relatrio possvel visualiza-lo atravs do Preview.

Pgina QReport: Componentes para a construo de relatrios


Biblioteca de Classes

19

QuickRep
Formulrio bsico para a construo de relatrios, onde so colocados todos componentes do
relatrio. um componente visual que possui o tamanho do papel selecionado (A4, Legal, etc.).
Um relatrio criado desenhando-se faixas e outros componentes sobre um QuickRep
conectado a um DataSet.
QRSubDetail
Faz a ligao de DataSets adicionais em um relatrio. Tipicamente utilizado para construir
relatrios do tipo Master/Detail.
QRBand
Adicione um componente QRBand em seu relatrio e configure a propriedade BandType para
especificar o seu comportamento durante a gerao do relatrio.
QRChildBand
Faixas filhas (Child Bands) so usadas como extenses das faixas regulares de um relatrio.
QRGroup
Define o inicio e o final de um grupo de registros conforme determinado atributo. utilizado
para a definio das quebras de um relatrio.
QRLabel
Imprime um texto ou outra informao que no provm de um banco de dados.
QRDBText
uma verso do componente QRLabel que imprime o valor de campos calculados e campos
texto, incluindo campos string, numrico, data e memo.
QRExpr
Imprime campos de banco de dados, clculos e textos estticos.
QRSysData
Imprime informaes do sistema, tais como data, hora, nmero da pgina, etc.
QRMemo
Imprime uma grande quantidade de texto que no provm de um campo de banco de dados
Pode ser texto esttico ou pode-se alterar durante a gerao do relatrio..
QRRichText
Permite imprimir no relatrio um texto formatado.
QRDBRichText
Permite imprimir no relatrio o texto formatado armazenado em um campo de uma tabela.
QRShape
Apresenta figuras simples tais como retngulos, crculos e linha em um relatrio.
QRImage
Apresenta uma figura em um relatrio.
QRDBImage
Imprime imagens armazenadas em campos de banco de dados.
QRCompositeReport
QRPreview
Define uma rea para a visualizao de relatrios, no formato em que iriam ser impressos.
QRChart
Permite a impresso de diversos tipos grficos.

DIALOGS
Os componentes da pgina Dialogs implementam as caixas de dilogo do Windows
95/NT. Caixas de dilogo fornecem uma interface consistente para operaes com
arquivo, tais como abertura, gravao e impresso.

Biblioteca de Classes

20

Pgina Dialogs: Caixas de dilogo j prontas.


OpenDialog
Apresenta uma caixa de dilogo para abertura de arquivos, comum nas aplicaes Windows
95/NT.
SaveDialog
Apresenta uma caixa de dilogo para gravar arquivos, comum nas aplicaes Windows 95/NT
OpenPictureDialog
Apresenta uma caixa de dilogo para abertura de arquivos grficos, onde o usurio pode
visualizar a imagem armazenada no arquivo selecionado.
SavePictureDialog
Apresenta uma caixa de dilogo para gravao de arquivos grficos. Idntica ao SaveDialog,
exceto que possui uma rea onde apresentado a imagem que ser gravada.
FontDialog
Apresenta uma caixa de dilogo que permite especificar o tipo de letra (fonte), seu tamanho e
estilo.
ColorDialog
Apresenta a caixa de dilogo para seleo de cores.
PrintDialog
Mostra uma caixa de dilogo que permite especificar informaes de impresso, tais como as
pginas a serem impressas, o nmero de cpias, etc.
PrinterSetupDialog
Mostra uma caixa de dilogo que permite a configurao da impressora.
FindDialog
Apresenta uma caixa de dilogo que permite especificar uma String de pesquisa.
ReplaceDialog
Mostra uma caixa de dilogo que permite especificar uma String de pesquisa e uma String para
substituio.

Win 3.1
Possui componentes de interface no padro Windows 3.1. Estes componentes servem
para manter a compatibilidade com as aplicaes desenvolvidas em Delphi 1.0
(Windows 3.1).

Pgina Win3.1: Compatibilidade com o Windows 3.1

SAMPLES
Os componentes da pgina Samples so exemplos de componentes personalizados. O
cdigo fonte destes componentes esto disponveis no diretrio DELPHI
3\SOURCE\SAMPLES (instalao Default).

Pgina Samples: Alguns exemplos de componentes.

Biblioteca de Classes

21

Gauge
Barra retangular que preenchida da esquerda para a direita. Fornece um retorno visual sobre o
progresso de uma operao.
ColorGrid
Apresenta uma tabela de cores.
SpinButton
Semelhante ao componente UpDown. Uma diferena que o componente SpinButton permite
definir uma figura para os botes.
SpinEdit
Semelhante ao componente UpDown. Uma diferena que j apresenta um campo onde
apresentada a informao.
DirectoryOutline
Apresenta a rvore de diretrios do disco, semelhante ao que apresentado pelo Windows/NT
Explorer.
Calendar
Implementao de um calendrio.
IBEVentAlerter

ActiveX
Os componentes na pgina ActiveX so objetos completos apresentados como
exemplos. Para utiliza-los deve-se primeiro abrir um formulrio ActiveX em um
projeto ActiveX. Aps posicionar um componente em um formulrio ActiveX,
clique o boto direito do mouse para ser apresentadas as propriedades e outros
comandos.

Pgina ActiveX: Exemplos da utilizao de componentes ActiveX


Chartfx
Permite criar grficos personalizados. Selecione as propriedades para apresentar um painel de
controle que permite definir valores, aparncia e algumas outras caractersticas.
VSSpell
Visual Speller, um corretor ortogrfico personalizado.
F1Book
Formula One. Permite implementar uma planilha de clculo.
VtChart
Permite-se criar grficos 3D.
VtChart
Pinnacle Graph, permite gerar grficos 2D.

Biblioteca de Classes

22

Parte

II
Programao Orientada
a Objetos
POO

Orientao a Objetos
O termo orientado a objetos tem sido to usado e abusado que o seu sentido
concreto se perdeu. Tem caracterizado desde modelos de administrao a mtodos de
auto-ajuda. Muitos produtos de softwares que alegam ser orientados a objetos no o
so. s vezes possuem alguns recursos baseados em objetos, outras vezes nem isso.
Toda essa confuso de conceitos fez com que ningum hoje soubesse mais o que
realmente vem a ser orientado a objetos.
A linguagem utilizada pelo Delphi (Object Pascal) uma orientada a objetos. Para
melhor entender o Delphi importante compreender os conceitos da programao
orientada a objetos (POO).
Apesar de ser um assunto muito badalado, o conceito de POO no novo. Tem quase
trinta anos de idade. Foi introduzido pela primeira vez na linguagem Simula-67.
Desde ento surgiram vrias outras linguagens com esses conceitos como SmallTalk
Eiffel. C++, a mais popular, na verdade uma linguagem hbrida. uma extenso do
C com suporte a classes e objetos, mas permite que se desenvolva programas sem
classes ou objetos.

Porque Usar Objetos?


As vantagens de se usar objetos como blocos para a construo de aplicaes so
muitas. Pode-se citar:
 Simplicidade: Os objetos escondem a complexidade do cdigo. Pode-se criar
uma complexa aplicao grfica usando botes, janelas, barras de rolagem,
etc.. sem conhecer detalhes do cdigo fonte utilizado para cri-los.
 Reutilizao de cdigo: Um objeto, depois de criado, pode ser reutilizado por
outras aplicaes, Ter suas funes estendidas e serem usados como blocos
fundamentais em sistemas mais complexos.

Elementos do Modelo Orientado a Objetos


Os autores divergem quanto s caractersticas que fazem uma linguagem ser
orientada a objetos, mas a maioria concorda que o paradigma se baseia em quatro
princpios bsicos: abstrao, encapsulamento, herana e polimorfismo.

Abstrao
o processo de extrair as caractersticas essenciais de um objeto real. A abstrao
essencial para se ter um modelo fiel da realidade. O conjunto de caractersticas
resultante da abstrao forma um tipo abstrato de dado, com informaes sobre
estado e comportamento.
A abstrao nem sempre produz os mesmos resultados. Depende do contexto onde
utilizado. Ou seja, a abstrao de um objeto por uma pessoa pode ser diferente na
viso de outra. Por exemplo, para um mecnico, um carro caracterizado pela marca,
modelo, potncia, etc. J um usurio comum o caracteriza pela cor, marca modelo,

preo. E finalmente, para o DETRAN, um carro totalmente caracterizado pela


placa, proprietrio, marca, modelo, cor e nmero de chassi.

Encapsulamento
o processo de combinar tipos de dados e funes relacionadas em um nico bloco
de organizao e s permitir o aceso a eles atravs de mtodos determinados.
Por exemplo, existe um nmero determinado de coisas que se pode fazer com um
toca-fitas. Pode-se avanar, voltar, gravar, tocar, parar, interromper e ejetar a fita.
Dentro do toca-fitas, porm, h varias outras funes sendo realizadas como acionar
o motor, deslig-lo, acionar o cabeote de gravao, liberar o cabeote, e outras
operaes mais complexas. Essas funes so escondidas dentro do mecanismo do
toca fitas e no temos acesso a elas diretamente. Quando apertamos o play o motor
ligado e o cabeote de reproduo acionado, mas no precisamos saber como isso
feito para usar o toca fitas.
Uma das principais vantagens do encapsulamento esconder a complexidade do
cdigo. Outra, proteger os dados, permitindo o acesso a eles apenas atravs de
mtodos. Dessa maneira evita-se que seus dados sejam corrompidos por aplicaes
externas.

Herana
o aproveitamento e extenso das caractersticas de uma classe j existente.
Existem muitos exemplos de herana na natureza. No reino animal, os mamferos
herdam a caracterstica de terem uma espinha dorsal por serem uma subclasse dos
vertebrados. Acrescentam a essa caracterstica, vrias outras, como Ter sangue
quente, amamentar, etc. Os roedores herdam todas as caractersticas dos vertebrados
e mamferos e acrescentam outras, e assim por diante.
Em programao, a herana ocorre quando uma classe aproveita a implementao
(estrutura de dados e mtodos) de uma outra classe para desenvolver uma
especializao dela. formada ento uma hierarquia de classes, onde cada nvel
uma especializao do nvel anterior, que mais genrico.

Polimorfismo
a propriedade de se utilizar um mesmo nome para fazer coisas diferentes.
Por exemplo, mandar algum correr pode produzir resultados diferentes dependendo
da situao. Se a pessoa estiver parada e em p, ir obedecer ordem simplesmente
correndo. Ser a pessoa estiver no volante de um carro, o resultado ser o aumento da
presso do p no acelerador.
Em programao, uma mesma mensagem poder provocar um resultado diferente,
dependendo dos argumentos que foram passados e do objeto que o receber. Por
exemplo: o envio de uma instruo desenhe() para uma subclasse de
polgono, poder desenha um tringulo, retngulo, pentgono, etc. dependendo
da classe que a receber.

O que um Objeto?
Objetos so a base da tecnologia orientada a objetos. Consistem de modelos
(abstraes) de objetos reais, com seus estados e seus comportamentos.
Qualquer objeto real pode ser abstrado, filtrando-se seus estados e comportamentos.

Orientao a Objetos

25

Objeto

Estado

Comportamento

Carro

Velocidade atual, marcha, cor, troca marchas,


modelo, marca
partida, freia.

Gato

nome, raa, com fome, com mia, dorme, se estica, brinca,


preguia
caa.

Caneta

cor, nvel da tinta

Toca-fitas

ligado, sentido da fica, tocando, grava, toca, avana, volta, para,


gravando
pausa, ejeta, liga.

acelera,

escreve, coloca mais tinta

Em programao, o estado de um objeto representado por variveis, e seu


comportamento implementado com mtodos (procedimentos). Os mtodos so o
nico meio de mudar o estado das variveis. Por exemplo, para mudar o estado do
toca-fitas para ligado, necessrio utilizar o mtodo liga().

Tudo o que o objeto de software sabe (seu estado) e tudo o que ele pode fazer
(comportamento) determinado pelas suas variveis e mtodos.
Vamos representar o modelo de um automvel atravs de um objeto de software. As
variveis indicam o seu estado atual: Velocidade = 77 Km/h, marcha = 4 e
cor = vermelho. DPartida(), acelera(), trocaMarcha() e
freia() so mtodos que podem mudar o estado das variveis (velocidade e
marcha). O objeto que vamos construir se chamar ferrari.

Orientao a Objetos

26

Um objeto sozinho no tem muita utilidade. Um carro sozinho, sem motorista, na


garagem, s serve de enfeite. Para se conseguir alguma funcionalidade dos objetos,
necessrio que haja uma interao com outros objetos. S assim se pode construir
modelos de comportamento mais complexo.
Objetos de software se comunicam entre si atravs de mensagens. No exemplo do
automvel, o objeto motorista envia uma mensagem para o objeto ferrari,
invocando o mtodo trocaMarcha(), com o parmetro 5 (quinta-marcha). Com
esta informao, o mtodo desejado executado, provocando a mudana das
variveis do objeto ferrari.

Para realizar a mudana acima em Delphi (Object Pascal), dentro do cdigo do


objeto motorista haveria uma linha do tipo:
ferrari.trocaMarcha(5)
assim que o Object Pascal representa a invocao do mtodo de um objeto. O
primeiro nome (ferrari) o objeto. Aps o ponto, vem uma varivel
(atributo/propriedade) ou mtodo.
Orientao a Objetos

27

O que so Classes?
Classes so prottipos utilizados para construir objetos. As caractersticas de estado e
comportamento do objeto ferrari, ilustrado nos exemplos anteriores, so
caractersticas de qualquer automvel que sai da fbrica. Essas caractersticas so
definidas nas classes.
A figura abaixo representa uma classe. Observe a semelhana com o diagrama que
utilizamos para representar os objetos. A classe no um objeto pois no possui um
estado, nem um comportamento especfico. Ela no algo que existe e que possua
estados.

Para produzir todos os automveis que saem da fbrica, poderamos definir uma
classe chamada Automvel. Esta classe teria a declarao das variveis que sero
utilizadas para armazenar a cor, velocidade e marcha, alm da implementao dos
mtodos que cada automvel deve ter.

Os objetos so instncias das classes. Quando criamos um objeto, dizemos que


instanciamos uma classe. Cada instncia uma entidade individual e pode ento
receber valores para as suas variveis e modific-las atravs de mtodos.
Com a classe Automvel, podemos criar agora vrios automveis com as mesmas
caractersticas bsicas. Por exemplo, se ferrari, fusca, porsche so instncias
de Automvel, todos possuem uma velocidade, uma posio de marcha e uma cor,
Orientao a Objetos

28

e podem dar partida, acelerar, freiar e trocar marcha. Porsche pode ser vermelho e
estar a 193 Km/h, enquanto fusca pode ser preto e estar parado.
A grande vantagem de se usar classes a reutilizao do cdigo. Toda a estrutura de
um objeto definida na classe, que depois utilizada quantas vezes for necessrio
para criar vrios objetos.

Herana
No bastasse a reutilizao do cdigo proporcionado pelas classes, na criao de
objetos, a POO vai mais longe e define meios de permitir em uma classe, a
reutilizao do cdigo de outras classes.
As caractersticas cor, velocidade, marcha, etc. podem estar definidas em uma classe
chamada de Veculo Motorizado, que declara mtodos trocaMarcha(),
dPartida(), acelera(), etc. Esses mtodos e varveis podem ser herdadas
pelas classes Automvel, Motocicleta e Caminho que so veculos
motorizados.

Desta maneira, est formada uma hierarquia de classes. Veculo Motorizado


superclasse de Automvel, Caminho e Motocicleta, que por sua vez, so
subclasses de Veculo Motorizado. O cdigo escrito uma nica vez e usado
por vrias classes diferentes.
Cada classe herda caractersticas de sua superclasse, mas no est limitada
implementao oferecida nela. A subclasse uma especializao da superclasse e
pode definir novas variveis, novos mtodos e at sobrepor mtodos definidos na
superclasse.
Automvel, por exemplo, pode acrescentar novos mtodos como
abrirPorta() e abrirMala(). Motocicleta deve sobrepor o mtodo
acelera(), trocaMarcha(), dPartida() e freia() com uma
Orientao a Objetos

29

implementao especfica para motos. Caminho pode acrescentar novas variveis


capacidadeDeCarga, nmeroDeEixos, etc. para caracterizar melhor os objetos
que sero produzidos.

Delphi e a POO
Para se definir uma classe no DELPHI deve-se empregar a seguinte sintaxe:
type
classe = class(superclasse)
atributos
mtodos
end;

atributos: seguem as regras das declaraes de variveis;


mtodos: seguem as regras das declaraes de subprogramas (function e procedure).
No DELPHI:
 A classe me denominada TObject. Esta classe deve ser utilizada quando a
classe no tiver bem definida sua classe me.
 A definio de uma classe deve ser feita na rea de interface de uma UNIT.
 Convenciona-se iniciar o nome de uma classe com a letra T.
A definio da classe TPessoa, em DELPHI, seria:
type
TPessoa = class(TObject)
Nome : string;
Endereo : string;
procedure AtualizarDados (Nome, Endereo : string);
end;

No entanto esta definio no est completa, pois deve-se definir o qualificador de


acesso permitido para cada atributo ou mtodo.

Qualificadores de Acesso
No DELPHI pode-se definir o tipo de acesso que uma classe-objeto ter sobre os
atributos ou mtodos de outra classe-objeto. Os principais qualificadores de acesso
em DELPHI so:
 Private: as declaraes feitas nesta rea no podem ser acessadas por outras
classes-objetos;
 Protected: as declaraes feitas nesta rea s podem ser acessadas pelas
classes filhas da classe-objeto;
 Public: as declaraes feitas nesta rea podem ser acessadas por qualquer
outra classe-objeto.
Sendo assim, uma definio mais completa da sintaxe de uma classe, em DELPHI :

Orientao a Objetos

30

classe = class(superclasse)
private
{declaraes privativas}
protected
{declaraes protegidas}
public
{declaraes pblicas}
end;

Uma nova definio para a classe TPessoa poderia ser:


classe = pessoa(TObject)
private
Nome: String;
Endereco: String;
protected
{declaraes protegidas}
public
procedure AtualizaDados( Nome, Endereco: String);
end;

Definindo-se os atributos Nome e Endereo como private eles s podem ser


alterados pelo mtodo AtualizarDados, que por sua vez poder ser acessado por
qualquer outra classe-objeto.
No entanto esta definio no est completa. Uma classe-objeto em DELPHI precisa
ser criada ou destruda atravs de Construtores e Destrutores.

Construtores e Destrutores
Quando uma nova classe definida em DELPHI necessrio declarar construtores.
Um construtor permite criar a instncia de uma classe, ou seja, um objeto.
Convenciona-se chamar um construtor pelo nome de Create. Um construtor
denotado pela palavra Constructor.
Ao contrrio dos construtores, os destrutores so utilizados para liberar a instncia
da classe. Ao destrutor convenciona-se o nome de Destroy. Um destrutor denotado
pela palavra Destructor.
Sendo assim, uma nova definio para a classe TPessoa poderia ser:
type
TPessoa = class(TObject)
private
Nome : string;
Endereco : string;
public
procedure AtualizarDados(Nome, Endereco : string);
protected
constructor Create;
destructor Destroy;
end;

O constructor Create foi colocado na rea protected. Isto significa que ele s pode
ser acessado pelas subclasses da classe TPessoa. Deste modo, a classe TPessoa nunca
Orientao a Objetos

31

poderia ser um objeto, pois seu construtor no pode ser acessado por outras classesobjetos.
Poderamos considerar esta definio como definitiva. No entanto, falta agora a
implementao dos mtodos AtualizarDados e Create.

Implementao de Classes
A implementao das classes deve ser feita na rea de implementation de uma
UNIT, e segue as regras normais da linguagem Turbo Pascal. A seguir apresentada
a implementao completa da classe TPessoa.
unit Pessoas;
interface
type
TPessoa = class(TObject)
protected
Nome

: string;

Endereco : string;
constructor Create;
destructor Destroy:
public
procedure AtualizarDados (Nome, Endereco: string);
end;
implementation
constructor TPessoa.Create;
begin
inherited Create;
Nome := ;
Endereco := ;
end;
destructor TPessoa.Destroy;
begin
inherited Destroy;
end;
procedure TPessoa.AtualizarDados(Nome, Endereco: string);
begin
Self.Nome := Nome;
Self.Endereco := Endereco;
end;
end.

Trs detalhes importantes devem ser notados na implementao da classe TPessoa: o


constructor Create e as clusulas inherited e self.

Orientao a Objetos

32

Constructor Create
No constructor Create podem ser omitidos as inicializaes dos atributos. Eles
devem aparecer apenas quando deseja-se inicializar um atributo com um
determinado valor.

Inherited
A clusula inherited, no constructor Create, indica que o mtodo Create foi herdado
da classe-me (no caso, TObject).

Self
A clusula self, na procedure AtualizarDados, indica que o atributo referenciado o
da classe, e no a varivel passada como parmetro.

Orientao a Objetos

33

Object Pascal
A linguagem Object Pascal proveniente da linguagem Pascal, que durante a dcada
de 80 fez grande sucesso comercial atravs do Turbo Pascal. A estrutura bsica da
linguagem, a maioria de seus comandos e sua sintaxe elegante ainda permanecem.
Porm, com a evoluo para a programao orientada a objetos, a forma de se
trabalhar com a linguagem e algumas de suas caractersticas foram sendo alteradas.
Passou-se do Turbo Pascal 7 para o Turbo Pascal para Windows, que no fez o
mesmo sucesso.
Com o Delphi, a linguagem Pascal assume outra vez o lugar de destaque que sempre
mereceu. Agora com o nome Object Pascal, muitas de suas caractersticas, que
muitos pensam ser fruto de atualizaes posteriores, na verdade j faziam parte da
linguagem padro, idealizada e concebida pelo seu criador, Niklaus Wirth.

Comentrios
Como ponto inicial, voc deve saber como fazer comentrios em seu programa
Pascal. O Delphi suporta trs tipos de comentrios:
{ Comentrios utilizando chaves }
(* Comentrios usando parente e asterisco *)
// Comentrios no estilo C++

Variveis
A linguagem Object Pascal requer que se declare todas as variveis, antes de se
iniciar uma procedure, function ou program. Isto significa que o cdigo escrito em
Object Pascal, obedece a uma estrutura um pouco mais rgida do que em outras
linguagens:
Procedure Foo;
Var
x, y: integer;
f: double;
Begin
X := 1;
Inc(x);
y := 2;
// ...
end;

A linguagem Object Pascal, diferentemente das linguagem C e C++, no consideram


maisculas e minsculas como formas diferentes. Por exemplo, X e x se referem a
uma mesma varivel.

Dica

A utilizao de letras MAISCULAS e minsculas pode ser til para dar clareza aos
nomes de variveis, procedures, functions, etc. Por exemplo, a seguinte declarao
Procedure estaprocedurenaofaznada;
difcil de ler. Ficaria bem melhor da seguinte forma:
Procedure EstaProcedureNaoFazNada;
Note como a Object Pascal permite voc agrupar mais de uma varivel de mesmo
tipo juntas em uma mesma linha:
x, y: Integer;

Uma caracterstica implementada a partir da verso 2.0 do Delphi, permite se


inicializar variveis globais na prpria declarao.
Var
I: integer = 10;
P: Pointer = Nil;
S: String = Alo mamae!;
D: Double = 3.141579

A inicializao prvia de variveis permitida apenas para variveis globais e no


aquelas que so locais a uma procedure ou function.

Constantes
As constantes so definidas aps a clusula const, similar linguagem C, como no
exemplo abaixo:
const float AdecimalNumber = 3.14;
const int i = 10;
const char *ErrorStrng = Perigo, perigo, perigo!;

A diferena entre as constantes entre C e Object Pascal que em Pascal no preciso


declara o tipo de uma constante. O compilador Delphi aloca automaticamente o
espao apropriado para a constante baseado em seu valor.
Const
AdecimalNumber = 3.14;
i = 10;
ErrorString = Perigo, perigo, perigo!;

Opcionalmente pode-se especificar o tipo de uma constante.


Const
AdecimalNumber: double = 3.14;
i: Integer = 10;
ErrorString: string = Perigo, perigo, perigo!;

A linguagem Object Pascal permite o uso de algumas funes nas declaraes de


constantes e variveis. Estas funes incluem Ord(), Chr(), Trunc(),
Round(), High(), Low() e SizeOf().

Object Pascal

35

Type
A = array[1..2] of integer;
Const
W: word = Sizeof(Byte);
Var
I: integer = 8;
J: SmallInt = ord(a);
L: LongInt = Trunc(3.14159);
X: ShortInt = Roud(2.17828);
B1: byte = High(A);
B2: byte = Low(A);
C: Char = Chr(46);

Se durante a execuo de um programa tentar-se alterar o valor de uma constante, o


Delphi apresenta um erro de compilao.

Operadores
Os operadores so smbolos que habilitam a manipulao de todos os tipos de dados.
Em Object Pascal os operadores esto definidos basicamente em: operador de
atribuio, operadores aritmticos, operadores lgicos, operadores relacionais, etc.:

Operador de Atribuio
O operador de atribuio utilizado para alterar o contedo das variveis. Para
atribuir um valor a uma varivel utiliza-se o operador :=.
PI := 3.1415;
Mens := Pressione OK para sair

Operador de Comparao
O Object Pascal utiliza o operador = para realizar comparaes lgicas entre duas
expresses ou dois valores.
if X = Y then
...

Operadores Lgicos
O Pascal utiliza as palavras and, or e not como operadores lgicos.
If (condio1) and (condio2) then
FazIsso
While (condio1) or (condio2) do
FazAquilo
If not (condio) then
FacaAlgumaCoisa;
Operador

Smbolo

Atribuio

:=
=

Comparao

Object Pascal

36

Diferena
Menor
Maior
Menor ou igual
Maior ou igual

e lgico
ou lgico
not lgico

<>
<
>
<=
>=
and
or
not

Operadores Aritmticos
De forma geral, os operadores aritmticos so os mesmos existentes em outras
linguagens de programao. A diferena que o Pascal possui diferentes operadores
de diviso. O operador div (diviso inteira) trunca automaticamente o resultado
final da diviso.
Operador

Smbolo

Adio

+
*
/
div
mod

Subtrao
Multiplicao
Diviso Real
Diviso Inteira
Resto da Diviso
Ateno

Use o operador de diviso correto para os tipos de expresses que se est


trabalhando. O compilador ir apresentar um erro ao dividir dois nmeros de ponto
flutuante utilizando o operador inteiro div ou dois inteiros utilizando o operador /.

Operadores de Incremento e Decremento


Os operadores de incremento e decremento geram um cdigo mais otimizado para a
adio e subtrao de variveis inteiras. Os comando Inc() e Dec() realizam a
adio e a subtrao. Pode-se utilizar estes operadores como um ou dois parmetros.
...
var
VInt: Integer;
begin
VInt := 10;
Inc(VInt)
:= VInt + 1

// Produz resultado idntico a VInt

Inc(VInt, 3)

// idntico a VInt := VInt + 3

Dec(Vint, 5)

// idntico a Vint := Vint - 5

end.

Tipos de Dados
A definio de tipos de dados corretos para as variveis muito importante, pois
alm de permitirem a economia de memria, eles tem, em muitos casos, de ter
compatibilidade com os seus respectivos tipos de dados do Windows.
Object Pascal

37

Tipos de Dados NUMRICOS INTEIROS


Tipo

Tamanho
(em bytes)

Domnio

Byte

0..255

ShortInt

-128..127

Word

0..65535

SmallInt

-32768..32768

Longint

-2147483648..2147483647

Os tipos inteiros genricos so CARDINAL e INTEGER. O tipo Cardinal


representa um inteiro sem sinal e o tipo Integer representa um inteiro com sinal. O
tamanho e formato do tipo Integer e do tipo Cardinal variam de acordo com as
diferentes implementaes da linguagem Object Pascal, mas geralmente so aqueles
resultam em operaes inteiras mais eficientes para uma determinada CPU ou
Sistema Operacional.
Tipo

Tamanho
(em bytes)

Domnio

Cardinal

-32768.. 32767

Integer

0.. 65636

Cardinal

0.. 2147483647

Integer

-2147483648.. 2147483647

Tipos de dados NUMRICOS REAIS e MOEDA


Tipo

Tamanho
(em bytes)

Domnio

Single

1.5 * 10-45 .. 3.4 * 1038

Real

2.9 * 10-39 .. 1.7 * 1039

Double

5.0 * 10-324 .. 1.7 * 10308

Extended

10

3.4 * 10-4932 .. 1.1 * 104392

Comp

-26310 .. 263-10

Currency

-922337203685477.5808..
922337203685477.5807

O tipo Currency o tipo MOEDA. Ele tem preciso de quatro casas decimais e
compatvel com os bancos de dados que representam dinheiro.

Tipos de dados BOOLEANOS


Tipo

Tamanho
(em bytes)

Armazenamento

Boolean

1 byte

ByteBool

1 byte

WordBool

uma palavra

LongBool

uma palavra dupla

A existncia de diversos tipos lgicos que armazenam a mesma coisa (TRUE ou


FALSE) d-se pela necessidade de compatibilizao com os tipos do Windows.
Object Pascal

38

Tipos de Dados Caracter


Tipo

Tamanho
(em bytes)

Armazenamento

Char

1 caracter ANSI

AnsiChar

1 caracter ANSI

WideChar

1 caracter Unicode

 AnsiChar: o padro de caracteres ANSI de 1 byte que todos ns


conhecemos.
 WideChar: um tipo de 2 bytes surgido com o Delphi 2 para representar um
caracter Unicode.
 Char: idntico ao AnsiChar.

Tipos de Dados String


Tipo

Tamanho
(em bytes)

Armazenamento

ShortString

255

ANSIChar

AnsiString

at 3 Gb

ANSIChar

255 ou at 3 Gb

ANSIChar

at 1,5 Gb

WideChar

String
WideString

O tipo AnsiString padro. Quando declarada uma varivel como STRING


assumido AnsiString. Este tipo surgiu com o Delphi 2 para facilitar a manipulao de
strings que excediam o tamanho de 255 caracteres (ShortString). As variveis
declaradas com este tipo so alocadas dinamicamente e s ocupam memria
enquanto esto sendo utilizadas e a medida que vo aumentando de tamanho, o seu
espao em memria realocado automaticamente.

Tipo PChar
O tipo PChar permite tambm que voc manipule strings. Quando voc utiliza uma
varivel com o tipo Pchar, o Delphi assume que todo o gerenciamento de alocao e
liberao de memria ser realizado pelo cdigo do programa.
As variveis do tipo PChar possuem como delimitador de fim de string o caracter
especial #0.

Tipo Variant
O tipo de dados variant um tipo nico que pode manipular diferentes tipos de
dados. O tipo variant pode manipular strings, inteiros, reais, entre outros. Porm uma
varivel do tipo variant no poder manipular tipos de dados dinmicos, como, por
exemplo, os ponteiros (pointer) e as classes de dados (os objetos). Exemplo

Object Pascal

39

...
Var
V1, V2, V3: Variant;
Begin
V1 := 1200;
V2 := Borland Delphi;
V3 := 3.1415;
V1 := V1 + V2 + V3;
end.

Note que para o mesmo tipo foram atribudos trs diferentes tipos. Portanto, deve-se
tomar cuidado quando realizar operaes envolvendo este tipo de dado.
No exemplo acima, o contedo da varivel V1 ser igual a 1200Borland
Delphi3.1415.
Veja que neste caso o compilador ir converter todos as variveis envolvidas na
operao para o tipo String e realizar uma concatenao.

Tipos Definidos pelo Usurio


Nmero inteiros, strings e ponto flutuante freqentemente no so suficientemente
adequados para representar variveis nos problemas do mundo real. Neste casos
deve-se criar tipos complexos para melhor representar variveis de um determinado
problema. Em Pascal, os tipos definidos pelo usurio geralmente so da forma de
registros (records) ou objetos.

Arrays
A linguagem Object Pascal permite criar arrays (matrizes) de qualquer tipo. Por
exemplo, uma varivel declarada como Array com oito nmeros inteiros:
Var
A: Array[0..7] of integer;

A declarao de arrays em Pascal possui uma propriedade que difere de outras


linguagens: A array no precisa iniciar com um determinado nmero.
Var
A: Array[28..30] of integer;

Records
O tipo record permite que se agrupe em uma nica varivel, um conjunto de tipos de
dados diferentes. A aplicao deste tipo de dado bastante semelhante ao conceito
de registro, ou seja, ou seja, uma varivel do tipo record composta por vrios
campos.
Record tipo estruturado em Pascal, equivalente ao struct do C.

Object Pascal

40

{ Pascal }

/* C */

Type

typedef struct {

MyRec = record

int i;

I:integer;
D:double;

double d;
}MyRec;

end

Quando se trabalha com records, utiliza-se o caracter ponto para acessar cada campo.
...
var
N: MyRec
Begin
N.i := 23;
N.d := 3.4;
end;

Pointers
O tipo de dado Pointer uma varivel que armazena um endereo de memria, e no
um valor, como estamos acostumados a trabalhar. Um exemplo de varivel do tipo
pointer o tipo Pchar, mostrado anteriormente. Existem duas formas de
implementao para o tipo pointer: pointer tipados e pointers no tipados.
Uma varivel pointer tipada quando se conhece o tipo de dado que est
armazenado no endereo de memria contido na varivel pointer.
...
var
PP1: ^Integer;
begin
New(PP1);

// Aloca memria para a varivel PP1

PP1^ := 1998; // Atribui valor ao endereo de memria


// apontada pela varivel PP1
Dispose(PP1); // Libera memria que foi alocada para PP1
end.

Uma varivel pointer no-tipada uma varivel que armazena um endereo de


memria que no se conhece o tipo de contedo deste endereo.
...
var
PP2: Pointer;
begin
GetMem(PP2, 100);

//Aloca 100 bytes para PP2

StrPCopy(PP2, Delphi 3) //Atribui valor ao endereo de


//memria apontado pela varivel PP2
FreeMem(PP2);

// Libera memria alocada para PP2

end.

muito comum a utilizao de variveis do tipo record juntamente com o pointer


para a implementao de listas (pilhas, filas, rvores, grafos, etc.).

Object Pascal

41

Objetos
Pode-se dizer que um objeto um record que contm functions e procedures.
type
TobjetoFilho =

class( TObjetoPai )
V: Integer;
procedure FazNada;
end;

Estruturas de Deciso
No Object Pascal existem dois comandos para tomar decises durante a execuo de
um programa. So as instrues IF e CASE.

O comando IF
A instruo IF permite controlar a execuo de outras instrues (ou bloco de
instrues) do programa, dependendo do valor de uma varivel ou expresso
booleana. Quando a expresso booleana tem o valor True, a instruo (ou bloco) que
segue a palavra THEN executada. Quando a expresso booleana tem o valor False,
a instruo (ou bloco) que segue a palavra ELSE executada.
IF expresso booleana THEN instruo;
IF expresso booleana THEN
instruo1
ELSE
instruo2;
IF expresso booleana THEN
BEGIN
instruo;
...
instruo;
END
ELSE
BEGIN
instruo;
...
instruo;
END;
expresso booleana: constante, varivel ou expresso boleana.
instruo:

qualquer instruo Pascal, inclusive outra instruo IF.

Ateno

Se uma instruo if possui vrias condies (expresses booleanas) estas devem vir
entre parntesis.
if (x=7) and (y=8) then ...

Object Pascal

42

O Comando CASE
O comando CASE equivalente a uma srie de comandos IF. Se a varivel de
controle igual a uma das constantes de uma lista, a instruo ou bloco de instrues
associada lista executada. Se a varivel de controle no igual a nenhuma das
constantes, a declarao case no ter nenhum efeito e o computador passa para
instruo seguinte do programa.
CASE varivel-controle OF
constante1: instruo1;
constante2: instruo2;
...
ELSE
instruo1;
END;
varivel-controle:

uma varivel do tipo inteiro, caracter ou definido pelo usurio,


mas no pode ser do tipo real.

constantes:

pode ser um nico valor, vrios valores isolados separados por


vrgula ou uma faixa de valores, indicadas pelo valor mnimo e
mximo separados por dois pontos finais (..).

Estruturas de Repetio
Na linguagem Pascal esto disponveis trs estruturas de repetio que fornecem uma
grande flexibilidade na representao de um processo repetitivo. Um loop executa
uma instruo (ou bloco de instrues) repetidamente.
As trs estruturas de repetio em Pascal so representadas pelas palavras reservadas
FOR, WHILE e REPEAT.

O Comando FOR
O comando FOR usado para repetir vrias vezes a mesma instruo ou bloco de
instrues. Durante a execuo, uma varivel usada como ndice assume uma srie
de valores, desde um dado valor inicial at um valor final. Na forma FOR-TO, o
ndice assume valores crescentes; na forma FOR-DOWNTO, o ndice assume valores
decrescentes. A forma geral da declarao a seguinte:
FOR ndice := inicial TO final DO instruo

FOR ndice := inicial TO final DO


BEGIN
instruo1;
instruo2;
...
END;

Object Pascal

43

FOR ndice := inicial DOWNTO final DO


BEGIN
instruo1;
instruo2;
...
END;
ndice:

O ndice uma varivel ordinal. O ndice pode ser do tipo inteiro,


caracter, byte ou definido pelo usurio. No pode ser uma varivel
real.

inicial:

Valor inicial da varivel ndice.

final:

Valor final da varivel ndice.

instruo:

Qualquer instruo Pascal.

As variveis ordinais possuem uma propriedade chamada ordem. Em outra


palavras, faz sentido falar em nmero inteiro seguinte ou no caracter anterior. O
nmero inteiro que vem depois de 6 7; o caracter que precede M L. As variveis
reais no so ordinais. No faz sentido falar no nmero real seguinte, porque entre
dois nmeros reais quaisquer sempre existe outro nmero real.
importante notar que se inicial for maior ou igual a final, as instrues contidas no
loop do tipo FOR-TO sero simplesmente ignoradas. O mesmo acontecer em um
loop do tipo FOR-DOWNTO se inicial for menor que final.
Ateno

O valor do ndice s definido no interior do loop. Depois que o programa sai de um


loop FOR-TO ou FOR-DOWNTO, a varivel usada como ndice tem um valor
indefinido. Se o valor dessa varivel for usada depois de o programa sair do loop, o
programa ir se comportar de forma imprevisvel.

O Comando REPEAT
A instruo REPEAT faz com que uma instruo (ou bloco de instrues) seja
executada repetidas vezes, at que uma certa condio seja satisfeita. Observe que na
forma composta da declarao, as palavras BEGIN e END no so usadas para
delimitar as declaraes que fazem parte do loop; este sempre comea pela palavra
REPEAT e termina na palavra UNTIL.
REPEAT instruo UNTIL condio;

REPEAT
instruo1;
instruo2;
...
UNTIL condio;
condio

uma expresso booleana.

instruo

qualquer instruo Pascal.

Object Pascal

44

Como a condio verificada no final do loop, todo loop do tipo REPEAT


executado pelo menos uma vez. Se a condio nunca assume o valor True, o loop s
pra se o programa for interrompido do manualmente.

O Comando WHILE
O loop WHILE semelhante ao loop REPEAT. A principal diferena est no fato de
que o loop REPEAT sempre executado pelo menos uma vez; o loop WHILE pode
no ser executado nenhuma vez.
WHILE condio DO instruo.
WHILE condio DO
BEGIN
instruo1;
instruo2;
...
END;
condio

uma expresso booleana.

instruo

uma instruo Pascal. Na forma composta do loop WHILE no


preciso colocar um ponto e vrgula depois da ltima instruo.

Procedimentos e Funes
Procedimentos (procedures) e Funes (functions) so partes do programa que
podem executar uma tarefa especfica quando chamamos de um dos mdulos do
programa. Aps a execuo do procedimento ou funo, o controle da execuo
retorna ao mdulo do programa que executou a chamada.
Os procedimentos e funes so executados de forma bastante semelhante, porm,
uma funo retorna um valor de retorno, enquanto que um procedimento apenas
executa um bloco de comandos.
Procedure ReajustaSalario;
begin
if Salario > 600 then
Salario := Salario * 1.05
else
Salario := Salario * 1.10;
end;

Function HouveReajuste: Boolean


begin
if Salario > 600 then
result := false
else
result := true;
end;

Note que na implementao da funo necessrio indicar o tipo de retorno da


funo. Para a funo retornar o valor desejado, deve-se utilizar a varivel de sistema
Result.
Object Pascal

45

begin

begin

while Salario < 600 do


ReajustaSalario;
end;

if HouveReajuste then
ShowMessage(Reajuste);
end;

Procedimentos e Funes com Parmetros


A linguagem Pascal permite se utilize parmetros na implementao de
procedimentos e funes. O Pascal permite passagem de parmetros por valor ou por
referncia. Os parmetros passados podem ter um tipo bsico ou um tipo definido
pelo usurio ou arrays abertas (que ser visto mais adiante). Um parmetro pode
tambm ser constante, caso seu valor no seja alterado durante a execuo da
procedure ou da function.

Passagem de Parmetros por Valor


A passagem de parmetros por valor a forma padro do Pascal. Quando um
parmetro passado por valor, significa que uma copia local daquela varivel
criada e a function ou procedure opera sobre essa cpia.
...
var
m: String;
procedure Mens(s: string );
begin
s := Mensagem: + s;
ShowMessage( s );
end;
begin

// Inicio do Programa Principal

m := teste de passagem de parametros;


Mens( m );
end.

No exemplo acima, na chamada da procedure Mens, apenas o valor contido na


varivel m passado para a varivel s da procedure. Desta forma, a procedure
ir operar com a varivel s, sem afetar o contedo da varivel m.

Passagem de Parmetros por Referncia


Passar um parmetro por referncia significa que a funo ou procedimento poder
alterar o valor da varivel enviada na sua chamada. Para passar uma varivel por
referncia utiliza a palavra var na lista de parmetros da procedure ou function.

Object Pascal

46

procedure ChangeMe(var x: LongInt);


begin
x := x + 2;
end;
begin
z := 10
ChangeMe( z );
end.

No exemplo acima, o endereo de memria da varivel x ser o mesmo endereo da


varivel z, utilizada na chamada da procedure. Desta forma, toda a alterao
realizada na varivel x ser refletida na varivel z. Assim sendo, aps a chamada da
procedure ChangeMe( z ) a varivel z, que inicialmente continha o valor 10,
ter o valor 12.

Parmetros Constantes
Se o valor de um parmetro no vai ser alterado durante a execuo da procedure ou
function, pode-se declara-lo como constante atravs da clusula conts. A palavra
const previne qualquer modificao de valor e tambm gera um cdigo otimizado.
procedure ApresentaMensagem(const Mens: String);

Parmetros com Arrays Abertas


Atravs deste tipo de parmetro possvel passar um nmero varivel de
argumentos para procedures ou functions. Pode-se passar arrays cujos elementos
possuem o mesmo tipo ou pode-se passar arrays constantes de tipos diferentes. O
exemplo abaixo declara uma funo que recebe uma array aberta com elementos
inteiros.
function TesteArray(A: Array of integer): integer;

Pode-se passar variveis, constantes ou expresses para a funo acima.


var
i, Rez: Integer;
const
j = 23
begin
i := 8;
Rez := TesteArray( [ i, 50, j, 89 ] );
...

Para se trabalhar com uma array aberta dentro da procedure ou function pode-se
utilizar as funes High(), Low() e SizeOf() para se obter informaes sobre a
array.
Object Pascal

47

A linguagem Object Pascal suporta tambm um array de constantes que permite


passar dados de tipos diferentes para uma function ou procedure.
procedure TesteArrayConstante( A: array of const );

A funo acima pode ser chamada da seguinte maneira:


TesteArrayConstante([Maceio,90,5.6,@X,3.14159,True,s]);

Units
As Units so mdulos de programa onde so agrupados os procedimentos e funes
que compem a aplicao Delphi. Uma Unit composta de reas pr-definidas.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
end.

A rea Unit
Nesta rea encontra-se o incio da Unit, determinada pela palavra Unit, seguida pelo
seu identificador (nome). O nome da unit ser gerado pelo Delphi e ter o mesmo
nome que o arquivo armazenado em disco. Isto . inicialmente o Delphi gera
automaticamente o nome da Unit. Ao ser gravado no disco, a Unit assume o nome
dado ao arquivo.

Object Pascal

48

A rea Interface
A rea de interface encontra-se sempre aps a rea da Unit e antes da rea de
implementation. Esta rea utilizada para realizar as declaraes de variveis,
constantes, tipos, procedimentos e funes, etc. As declaraes posicionadas nesta
rea podero ser compartilhadas por outras Units ou pelo mdulo principal da
aplicao.
Nesta rea somente podero aparecer declaraes, nunca aparecer linhas de
comando.

A rea Implementation
Nesta rea ser encontrado basicamente a implementao dos procedimentos e
funes. Pode ainda conter declaraes de variveis, constantes, tipos, etc. que no
podero ser compartilhados por outras Units, nem pelo prprio mdulo principal da
aplicao. Isto e, os dados declarados na rea implementation so dados locais,
somente visveis dentro da Unit na qual foram declarados.

reas Opcionais
A rea Initialization
Esta rea, quando existente, deve conter linhas de comando responsveis pela
inicializao de variveis, objetos, etc., declarados dentro da Unit. A execuo desta
rea realizada antes da execuo do mdulo principal da aplicao e ocorre uma
nica vez.

A rea Finalization
Esta rea deve aparecer aps a rea Initialization e deve conter linhas de comandos
relativas a desalocao de memria de variveis do tipo Pointer ou Objetos. A
execuo desta rea realizada s sua aplicao est sendo encerrada.

A clusula Uses
A clusula uses serve para que possamos tornar acessveis as variveis, constantes,
procedimentos e funes declarados na rea Interface de uma determinada Unit. A
clusula uses deve aparecer dentro da Unit na qual deseja-se manipular dados
declarados fora do se escopo.
program Prog;
uses Unit2;
const a = b;
begin
end.
unit Unit2;
interface
uses Unit1;
const b = c;
implementation
end.

Object Pascal

49

unit Unit1;
interface
const c = 1;
implementation
const d = 2;
end.

Referncia Circular
A clusula uses pode aparecer na rea interface ou na rea implementation, sem
interferir em desempenho ou tamanho da aplicao. Porm, existe um caso em que se
torna obrigatrio a declarao da clusula uses dentro da rea implementation da
Unit. Isto acontece quando duas Units fazem referncia entre si. Este processo
conhecido como Referncia Circular.
Unit UnAcessa

Unit UnDeclara

Interface

Interface

var B: Integer;

var A: Integer;

Implementation

Implementation

uses UnDeclara;

uses UnAcessa;

procedure Inicia;

procedure Reset;

begin

begin

A := 10;

B := 0;

end;

end;

end.

end.

No exemplo acima mostra um caso de referncia circular que foi solucionada devido
declarao da clusula uses ter sido feita na rea implementation. Caso a
declarao da clusula uses tivesse sido feita na rea interface, seria apresentado um
erro durante a compilao

Excees
Excees so erros que ocorrem durante a execuo do programa. Existem diversos
tipos de excees, que podem ocorrer nas seguintes operaes:
 alocao de memria;
 criao e utilizao de objetos;
 clculo de expresses matemticas;
 manipulao de arquivos;
 utilizao de recursos do sistema operacional.
Algumas das principais caractersticas das excees no DELPHI so:
 a instncia da exceo fornece informaes sobre o tipo de problema ocorrido;
 usurio pode definir suas prprias excees, utilizando a classe Exception;
 para forar a execuo de uma exceo utiliza-se a clusula Raise;
 os tipos de exceo normalmente devem iniciar com a letra E.
 uma exceo gera um evento denominado OnException.
Object Pascal

50

As excees podem ser tratadas atravs das instrues:


 Try ... Except
 Try ... Finally

Try ... Except


O bloco try ... except utilizado para definir um cdigo de programa a ser executado
no momento que ocorrer uma exceo.
try
{ Bloco de comandos}
except
{ comandos executados quando ocorrer uma exceo}
end;

Exemplo: tratamento de uma diviso por zero.


...
Valor1 := StrToInt(Edit1.Text);
Valor2 := StrToInt(Edit2.Text)
try
Resultado := Valor1 div Valor2;
except
ShowMessage (Diviso por Zero);
end;
...

No entanto, pode ocorrer mais de uma exceo dentro de um mesmo bloco. Neste
caso necessrio utilizar o comando on ... do.

On ... Do
O comando on ... do permite tratar mais de um tipo de exceo de um bloco try ...
except.
on
{Tipo de exceo}
do
{Bloco de comandos da exceo}

Exemplo: tratamento de uma diviso por zero e da digitao de um caracter em um


campo que deveria ser numrico.
...
try
Valor1 := StrToInt (Edit1.Text);
Valor2 := StrToInt (Edit2.Text)
Resultado := Valor1 div Valor2;
except
on EDivByZero do
ShowMessage (Diviso por Zero);
on EInOutError do
ShowMessage (Os valores devem ser numricos);
end;

Object Pascal

51

Tipos de Exceo
Os principais tipos de exceo da RTL (RunTime Library) do DELPHI, a serem
tratadas nos blocos on ... do so:
Nome

Descrio

EaccessViolation

Ocorre quando se tenta acessar uma regio de memria invlida (ex: tentar
atribuir valor a um ponteiro cujo contedo nil).

EconvertError

ocorre quando se tenta converter um string em um valor numrico (ex:


utilizar a funo StrToInt em uma letra).

EdivByZero

ocorre na diviso de um nmero por zero.

EinOutError

ocorre numa operao incorreta de I/O (ex: abrir um arquivo que no


existe).

EintOverFlow

ocorre quando o resultado de um clculo excedeu a capacidade do


registrador alocado para ele (para variveis inteiras).

EinvalidCast

ocorre quando se tenta realizar uma operao invlida com o operador as


(ex: tentar usar um Sender com uma classe que no corresponde a seu tipo).

EinvalidOp

ocorre quando se detecta uma operao incorreta de ponto flutuante.

EinvalidPointer

ocorre quando se executa uma operao invalida com um ponteiro (ex:


tentar liberar um ponteiro duas vezes).

EoutOfMemory

ocorre quando se tenta alocar memria mas j no existe mais espao


suficiente.

EoverFlow

ocorre quando o resultado de um clculo excedeu a capacidade do


registrador alocado para ele (para variveis de ponto flutuante).

ErangeError

ocorre quando uma expresso excede os limites para a qual foi definida (ex:
tentar atribuir 11 ao ndice de um vetor que pode ir no mximo at 10).

EstackOverflow

ocorre quando o sistema no tem mais como alocar espao de memria na


Stack.

Eunderflow

ocorre quando o resultado de um clculo pequeno demais para ser


representado como ponto flutuante.

EzeroDivide

ocorre quando se tenta dividir um valor de ponto flutuante por zero.

Try ... Finally


O bloco try ... finally permite que um bloco de comandos seja executado, mesmo
quando houver uma exceo.
try
{ Bloco de comandos}
finally
{Comandos executados mesmo quando ocorrer uma exceo}
end;

Por exemplo, garantir que um arquivo ser fechado mesmo quando ocorrer uma
exceo.

Object Pascal

52

...
assign (arq, teste.txt);
try
reset(arq)
// outros comandos sobre o arquivo
finally
close (arq)
end;
...

Object Pascal

53

Projetos Delphi
Os Arquivos do Projeto
Um projeto Delphi composto por vrios arquivos relacionados entre si. Alguns
destes arquivos so gerados durante o desenvolvimentos, quando est se definindo os
formulrios da aplicao. Outros arquivos so gerados na compilao da aplicao.

O Arquivo Principal (.DPR)


O arquivo principal gerado durante a construo da aplicao e possui a extenso
.dpr. neste arquivo que instanciado o formulrio principal da aplicao, assim
como todos os formulrios que sero automaticamente instanciados pelo Delphi.
Voc raramente ir editar o arquivo de projeto de uma aplicao
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Estrutura de um Projeto em Delphi.

Note que neste arquivo existe uma clusula uses contendo a relao de uma Unit. O
arquivo de projeto ir listar todas as Units que compem a aplicao, estando elas
relacionadas a formulrios ou no. Outro ponto que vale ressaltar a diretiva de
compilao {$R *.RES}. As chaves seguidas pelo caracter $ indicam uma diretiva de
compilao, ou seja, um determinado comportamento do compilador Delphi. Neste
caso, esta diretiva indica que o compilador ir adicionar os arquivos com extenso
.RES (arquivos de recurso), quando da link-edio do projeto.

O Arquivo de Recurso (.RES)


O arquivo de recurso um arquivo binrio gerado automaticamente pelo Delphi que
contm basicamente o cone da aplicao. Poder ser adicionado um ttulo a sua
aplicao, ou gerar um outro arquivo de recursos para o seu projeto. Por default, todo
o projeto Delphi possui um arquivo de recurso que ter o mesmo nome do arquivo
principal (.dpr) e ser linkado ao arquivo executvel (.exe).

O Arquivo de Opes (.DOF)


Um arquivo de opes de projeto ser gerado quando sua aplicao salva pela
primeira vez. Este arquivo ir conter opes de compilao de projeto, indicaes de
criao automtica de formulrios, etc. Pode-se alterar as opes de um projeto
utilizando o comando Option do menu Project.
Alm do arquivo .dof, um arquivo com extenso .DSK ser criado com as opes do
ambiente de desenvolvimento Delphi. Assim como as opes de um projeto
(Project|Options), pode-se definir diferentes opes de ambiente para cada projeto.
Para se alterar as opes de ambiente utiliza-se o comando Environment Options
do menu Tools.

Os Arquivo de Cdigo (.PAS)


Os arquivos .pas so os programas fonte em Object Pascal, as Units. Pode-se dividir
as Units em trs classes:
 units que possuem um formulrio relacionado a ela;
 units relacionadas a componentes;
 units de uso geral, que possuem prodecures e functions que sero utilizadas
por outros programas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
end.

Arquivos de Formulrios (.DFM)


Quando um novo formulrio adicionado em uma aplicao, o Delphi gera dois
arquivos correspondente ao formulrio. Um arquivo o cdigo fonte em Object
Pascal (.PAS). O outro arquivo (.DFM), descreve as caractersticas do formulrio
como, por exemplo, a altura, a largura, o ttulo, a cor, etc. Raramente ser necessrio
Projetos Delphi

55

visualizar o contedo deste tipo de arquivo. Ele atualizado automaticamente toda


vez que feito uma alterao no formulrio.

Arquivos Compilados
Aps a compilao de um projeto, sero gerados mais dois tipos de arquivos. Os
arquivos com extenso .DCU (Delphi Compiled Unit) e o arquivo com extenso
.EXE. Um arquivo .dcu o resultado da compilao dos arquivos .pas e .dfm. O
arquivo executvel .exe o resultado da compilao de todos os arquivos do projeto.

As Opes de um Projeto
O comando de menu Project | Options, ir apresentar uma caixa de dilogo contendo
algumas opes relativas ao seu projeto. Voc poder definir desde o formulrio
principal da aplicao, at a forma de como o projeto ser compilado.

A Pgina Forms
Na pgina Forms possvel selecionar o formulrio principal da aplicao e para
definir quais os formulrios sero criados automaticamente pelo Delphi.
 Main form: Indica qual o formulrio principal da sua aplicao. Este ser o
primeiro formulrio apresentado quando se executa a aplicao. Atravs do
ComboBox possvel alterar a definio do formulrio principal da aplicao.
Normalmente o formulrio principal gerado automaticamente. Isto , ele est
presente na lista Auto-create forms.
 Auto-create forms: Contm a lista dos formulrios gerados automaticamente
pelo Delphi quando sua aplicao for executada.
 Available forms: Contm a lista dos formulrios que sero gerados pela
aplicao. Para fazer uso dos formulrios que esto sendo mostrados nesta
lista eles devem ser instanciados anteriormente.

Projetos Delphi

56

A Pgina Application
Nesta pgina poder definir-se um ttulo e um cone para a aplicao.
 Title: Especificao de um ttulo para a sua aplicao. Este ttulo ser
apresentado quando sua aplicao estiver minimizada.
 Help file: Associao de um arquivo de help (.hlp) que ser utilizado na sua
aplicao. O boto Browse ir abrir uma caixa de dilogo para que voc
localize o arquivo de help.
 Icon: Especificao de um cone para a aplicao.

A Pgina Compiler
Define as opes de compilao de seu projeto. Entre as opes disponveis, pode-se
indicar se sero realizadas checagem de limite de variveis, se sero compiladas
informaes para depurao do projeto, etc. Todas as opes desta pgina so
diretivas de compilao que tambm podero ser colocadas diretamente no cdigo da
unit.

A Pgina Linker
Contm as indicaes de como os arquivos do projeto sero link-editados. Nesta
pgina indica-se se o compilador Delphi ir gerar um arquivo externo com
mapeamento dos arquivos linkados, indicar tambm se o produto final da linkedio ser uma unit compilada (.dcu) ou um arquivo objeto (.obj), e mais diversas
outras opes.

A Pgina Directories/Conditionals
Utiliza-se esta pgina para definir onde os seus arquivos compilados sero
armazenados e para definir um smbolo de compilao. Pode-se decidir, de acordo
com o smbolo de compilao, qual a parte do cdigo ser compilada.

A Pgina Version Info


Esta pgina permite especificar informaes de verso de seu projeto.

A Pgina Packages
Packages so arquivos que contm vrias classes pr-definidas pelo Delphi, como,
por exemplo, botes, forms, tables, etc. O nome package uma nova designao para
VCL Visual Component Library.
Voc poder indicar quais os packages que estaro disponveis em tempo de
desenvolvimento e quais os que sero requisitados em tempo de execuo. Com o
controle dos packages, consegue-se reduzir o tamanho do arquivo executvel, pois s
sero compilados os packages que fazem parte da sua aplicao.

Projetos Delphi

57

Parte

III
Banco de Dados

Delphi com Banco de Dados


O Delphi prov um ambiente bastante simples para o desenvolvimento de aplicaes
que acessam banco de dados. O Borland DataBase Engine (BDE) permite o acesso
aos principais sistema de gerenciamento de banco de dados e de um conjunto de
componentes para conexo e manipulao das bases. Com isso possvel
desenvolver aplicaes de forma simples e rpida.

O BDE um conjunto de funes que possui as informaes sobre os drivers de


acesso dos principais gerenciadores de banco de dados do mercado. Na verso
Client/Server do Delphi, o BDE traz drivers de conexo nativa para os bancos
Oracle, Informix, SQL Server, DB2, entre outros.

As ferramentas de gerenciamento de banco de dados do Delphi so:


 BDE Administrator: Configura o BDE e os drivers de Gerenciadores de
Banco de Dados. Cria e configura Alias.
 DataBase Desktop (DBD): ferramenta para criar, alterar e editar bancos de
dados;
 Componentes (visuais e no visuais): permitem conexes e interface com
banco de dados. Esto disponibilizados nas paletas Data Access e Data
Controls;
 Data Module: centraliza componentes de acesso a dados dos formulrios e
aplicaes;
 Form Expert: permite a gerao automtica de formulrios-padro para
acesso a banco de dados.
 Object Repository: armazena formulrios e mdulos de dados para serem
compartilhados entre diferentes aplicaes;
 Borland Database Engine (BDE): faz o relacionamento entre o DELPHI e o
banco de dados;
 SQL Explorer: ferramenta para gerenciar BDE e criar dicionrio de dados;
 Quick Report: permite a gerao de relatrios a partir de bancos de dados;

O que um Alias ?
As aplicaes que trabalham com tabelas de banco de dados podem referenciar estas
tabelas utilizando o caminho (path) onde elas esto posicionadas no disco. Para cada
tabela representada na aplicao definido o caminho e o arquivo que contm os
dados da tabela.

Delphi com Banco de Dados

60

Implementao sem utilizar Alias: Referncia direta ao arquivo

Apesar de funcionar sem problemas, essa forma de implementao faz com que a
aplicao fique dependente da pasta (diretrio) onde os dados esto localizados. Se
os dados no estiverem exatamente na pasta definida na aplicao, esta no
funcionar.

Alterao da pasta de dados: A aplicao no funciona mais

Uma forma de se resolver esse problema atravs da utilizao de um Alias. Um


Alias referencia a pasta onde esto localizados os arquivos de dados (tabelas). A
representao das tabelas representadas na aplicao referenciam o Alias
previamente definido.

Delphi com Banco de Dados

61

Desta forma, caso seja alterada a pasta onde esto localizados os dados da aplicao
basta alterar a definio do Alias para que a aplicao continue funcionando
normalmente.

BDE Administrator
Para que se consiga acessar bases de dados a partir do Delphi, faz-se necessrio a
criao de referncias. Estas referncias so conhecidas por Alias, e so criadas em
um aplicativo chamado BDE Administrator.
O BDE Administrator permite:
 Configurar o Borland Database Engine (BDE).
 Configurar os drivers STANDARD (Paradox e dBASE/FoxPro), os drivers
SQL, Access e tambm criar e configurar drivers ODBC.
 Criar e manter Alias de banco de dados.

A Pgina Databases
Mostra os alias dos bancos de dados disponveis.

Delphi com Banco de Dados

62

A Pgina Configuration
Permite adicionar e configurar drivers ODBC, configurar drivers padro e drivers
SQL e ainda configurar o Borland Database Engine (BDE).

DataBase Desktop
O DataBase Desktop uma ferramenta do DELPHI para manipulao de Banco de
Dados. Ela til principalmente para a criao, visualizao, modificao e consulta
de tabelas nos formatos Paradox, dBASE e SQL.

Delphi com Banco de Dados

63

Criando uma Tabela


Para criar uma nova tabela utiliza-se a opo do menu File|New|Table.

Ser apresentado uma janela para a definio do tipo de tabela que se deseja criar.
Clique o boto OK. Neste instante devem ser definidos os atributos dos campos,
como segue:
 Field Name: nome do campo;
 Type: tipo do campo. Clicando o boto direito do mouse pode-se selecionar o
tipo do campo;
 Size: define o tamanho do campo. S disponvel para alguns tipos;
 Key: define campos-chave para a tabela.
Ainda nesta tela pode-se definir:
 Table properties: define caractersticas gerais dos campos da tabela;
 Required Field: define se o campo tem um valor requerido;
 Minimum Value: valor mnimo para o campo;
 Maximum Value: valor mximo para o campo;
 Default Value: valor padro para o campo;
 Picture: define o formato de entrada do campo.
Delphi com Banco de Dados

64

Componentes de Banco de Dados


A pgina Data Access possui componentes que permitem a conexo do DELPHI
com bancos de dados.

A pgina Data Controls contm componentes que permitem a manipulao e


visualizao dos dados de um banco de dados.

Os componentes da pgina Decision Cube fornece recursos para anlise


multidimensional de dados atravs de referncia cruzada entre tabelas de banco de
dados utilizando a linguagem SQL.

Data Module
O Data Module um formulrio especial que permite centralizar os componentes de
controle de banco de dados. Suas principais vantagens so:
 permite que toda a aplicao utilize os mesmos componentes de controle de
dados, evitando duplicao de componentes;
 garantem o uso correto das tabelas, pois elas no precisam ser recriadas em
cada formulrio;
 permitem definir novos eventos ou mtodos sobre as tabelas que sejam
comuns em toda a aplicao.

Delphi com Banco de Dados

65

Data Module: Centralizao de componentes de banco de dados.

Formulrios Utilizando Banco de Dados


A criao de um formulrio para a manipulao do banco de dados pode ser feita de
forma manual (adicionando-se cada componente individualmente) ou de forma
automtica (atravs do Form Expert).
O Form Expert uma ferramenta do DELPHI que permite criar um formulrio
padro para a manipulao de banco de dados. Sua principal vantagem est na
automatizao do processo de criao de formulrio, o que permite ganhar tempo no
desenvolvimento da aplicao.

Delphi com Banco de Dados

66

TUTORIAL
.

Construindo uma Aplicao


DELPHI

Sero vistas aqui as etapas para construo de uma aplicao Delphi. Como
exemplo ser utilizado um sistema comercial simplificado, que se utiliza de
tabelas de banco de dados. A seqncia com que essas etapas so apresentadas
serve apenas para a conduo didtica na elaborao do exemplo proposto, no
tem pretenso de metodologia. Pelo contrrio. A forma com que sero
implementadas algumas caractersticas do nosso sistema-exemplo se justifica
apenas por uma questo de gosto pessoal.

1
Definindo o Sistema
sempre bom lembrar que, antes de sentar-se em frente ao micro e sair
programando, a anlise do sistema e a modelagem de dados ainda so fundamentais
para o sucesso de um projeto de sistema. muito difcil para um programador
compulsivo ficar parado elaborando diagramas, perdendo tempo rabiscando
coisas que j esto claras em sua cabea. Esse pensamento o caminho mais curto
para aqueles sistemas no acabam nunca.
Sofisticados recursos de interface no conseguem ajeitar um sistema mal
elaborado.
Na elaborao de sistemas que envolvam Banco de Dados, no se deve esquecer de
toda a teoria que envolve esta rea. Modelagem de dados, normalizao, etc., foram e
esto sendo estudadas para serem usadas. No se deve elaborar novas teorias ou um
jeitinho todo seu de se fazer as coisas. Pelo menos no durante o desenvolvimento
um sistema importante.
Toda a papelada gerada durante a anlise do sistema, se bem padronizada, pode
servir como documentao do sistema ainda ser um ponto de partida para a
elaborao dos manuais. Assim o seu sistema continuar funcionando caso o analista
ou o programador arranjar outro emprego.

O Sistema
O sistema que ser utilizado como exemplo serve para emisso de notas fiscais. Ele
ter o nome (otimista) de SisFat, e ter as seguintes atribuies:
 Controle de Produtos;
 Controle de Vendedores;
 Elaborao e emisso de Notas Fiscal.

As Tabelas
As informaes necessrias esto divididas em quatro tabelas de banco de dados
como definidas abaixo:
PRODUTO

VENDEDOR

NotaFiscal

ItemNota

Cdigo

Cdigo

Nmero

Nota

Descrio

Nome

Data

Item

Quantidade em estoque

Data de admisso

Vendedor

Produto

Preo de compra
Preo de venda

Quantidade

2
Organizando os Arquivos
Definido o sistema, iremos agora ao computador comear a programar!!! A primeira
coisa a fase definir uma nova pasta (diretrio) onde sero gravados os dados e os
programas do novo sistema.
Um sistema pode conter centenas de arquivos referentes aos programas e outras
centenas referentes aos dados. Portanto, uma boa prtica criar uma pasta de
trabalho para a organizao dessa grande quantidade de arquivos.

Criando Diretrios
Crie uma Pasta (diretrio) com o nome do sistema (SisFat).

importante separar os arquivos que se referem aos dados (tabelas) dos diversos
tipos de arquivos referentes aos programas. Para isso, na pasta SisFat, crie duas
outras pastas: Dados e Programas.

Criando um Alias
Para a aplicao proposta, vamos criar um Alias chamado Faturamento que
referencia a pasta de dados onde sero gravadas as tabelas que iremos criar adiante.
 Passo 1
Na pgina Databases do BDE Administrator execute a opo New do menu Object.
 Passo 2
Ser apresentada uma janela para a seleo do driver de banco de dados. Selecione
STANDARD pois iremos trabalhar com tabelas Paradox.

Aps digitar OK, ser criado um novo Alias com o nome STARDARD1. Renomeie
o Alias com o nome Faturamento.
 Passo 3
Em Definition (lado direito da janela) preencha o atributo Path com o caminho onde
sero posicionadas as tabelas de dados da aplicao: C:\SisFat\Dados. Se preferir,
clique o mouse nos trs pontos que aparecem no atributo para utilizar uma caixa de
dilogo para auxiliar na procura do diretrio de dados.
 Passo 4
Feche o DBE Administrator
Construindo uma aplicao Delphi

70

Responda Yes para salvar o Alias. Como pode ser visto, todos os Alias so gravados
no arquivo
C:\Arquivos de Programas\Borland\Common Files\BDE\IDAPI32.CFG

3
Criando Tabelas
DataBase Desktop
O DataBase Desktop uma ferramenta para manipulao de Banco de Dados. Ela
til principalmente para a criao, visualizao, modificao e consulta de tabelas
nos formatos Paradox, dBASE e SQL.

No menu principal do Database Desktop selecione a opo File|New|Table.


 PASSO 1
Selecione a opo Paradox 7 e clique em OK. As tabelas Paradox (extenso .DB)
oferecem mais recursos que as tabelas DBase (extenso .DBF).

 PASSO 2
Neste instante devem ser definidos os atributos dos campos:
 Field Name: nome do campo;
 Type: tipo do campo. Clicando o boto direito do mouse pode-se selecionar o
tipo do campo;
Construindo uma aplicao Delphi

71

 Size: define o tamanho do campo. S disponvel para alguns tipos;


 Key: define campos-chave para a tabela.

Produto.db

Type

Size

Codigo

Descricao

40

QtdEstoque

PrecoCompra

PrecoVenda

NotaFiscal.db

Type

Numero

Data

Vendedor

Size

Key
*

Key
*

Vendedor.db

Type

Size

Codigo

Nome

40

DataAdmissao

ItemNota.db

Type

Size

Key
*

Key

Nota

Item

Produto

Quantidade

 PASSO 3
Clicando no boto Save As, deve aparecer uma caixa de dilogo para que se possa
salvar a tabela em disco. D um nome tabela e clique no boto Salvar.
Ateno

No nosso exemplo os arquivos de dados (tabelas) devem ser gravados na pasta


C:\SisFat\Dados.

Construindo uma aplicao Delphi

72

4
Iniciando um Projeto
Ao iniciar o Delphi, apresentado um projeto chamado Project1 com um formulrio
chamado Form1.
Para comearmos a partir do zero, feche (sem salvar) o formulrio utilizando o
comando do menu File|Close. Desta forma teremos apenas o projeto sem nenhum
formulrio. Agora salve o projeto atravs do comando File|Save Project As. Um
arquivo de projeto possui a extenso .dpr (Delphi Project).
Ateno

Verifique com ateno a pasta onde ser gravado o projeto. No nosso exemplo os
arquivos que no se referem s tabelas devem ser gravados na pasta
C:\SisFat\Programas.

Criando um Data Module


O Data Module um formulrio especial que permite centralizar os componentes de
controle de banco de dados. Suas principais vantagens so:
 permite que toda a aplicao utilize os mesmos componentes de controle de
dados, evitando duplicao de componentes;
 garantem o uso correto das tabelas, pois elas no precisam ser recriadas em
cada formulrio;
 permitem definir novos eventos ou mtodos sobre as tabelas que sejam
comuns em toda a aplicao.
 PASSO 1
Selecione o comando do menu File|New Data Module. Ser criada uma janela
chamada
inicialmente
DataModule1.
Na
propriedade
Name
digite
DadosFaturamento.
 PASSO 2
Inicialmente ponha na janela (Data Module) um componente Database, localizado
no conjunto de componentes da pgina DataAccess da Paleta de Componentes
Altere as seguintes propriedades:
Properties
AliasName

Faturamento

DatabaseName

dbFaturamento

Name

dbFaturamento

Connected

True

 PASSO 3
Ponha um componente Table na janela. O componente Table tambm est
localizado na pgina DataAccess da Paleta de Componentes

Construindo uma aplicao Delphi

73

Altere as seguintes propriedades:


Properties
DatabaseName

dbFaturamento

TableName

Produto

Name

tbPRODUTO

Active

True

 PASSO 4
Acrescente um componente DataSource no Data Module.
Altere as seguintes propriedades:
Properties
DataSet

tbPRODUTOS

Name

dsPRODUTO

 PASSO 5
Conforme os passos 3 e 4, acrescente mais trs componentes Table e mais trs
componentes DataSource com as seguinte as propriedades:
Properties

Properties

DatabaseName

dbFaturamento

DataSet

tbVENDEDOR

TableName

Vendedor

Name

dsVENDEDOR

Name

tbVENDEDOR

Active

True

Properties

Properties

DatabaseName

dbFaturamento

DataSet

tbNotaFiscal

TableName

NotaFiscal

Name

dsNotaFiscal

Name

tbNotaFiscal

Active

True

Properties

Properties

DatabaseName

dbFaturamento

DataSet

tbItensNota

TableName

ItensNota

Name

dsItensNota

Name

tbItensNota

Active

True

 PASSO 6
Salve o Data Module utilizando o comando File|Save As. O nome do arquivo ser
dmFaturamento.
Ateno

Este arquivo deve ser gravados na pasta C:\SisFat\Programas.

Construindo uma aplicao Delphi

74

5
Transformando campos em objetos
Pode-se dizer que a funo de um componente Table representar internamente
aplicao uma tabela gravada no disco, permitindo que a aplicao consiga
referenci-la.
Na maioria das aplicaes necessrio que cada campo de uma tabela seja tambm
representado por um objeto. Dessa forma possvel manipular algumas propriedades
de cada campo individualmente.
Como exemplo ser utilizada a tabela tbItensNota
D um duplo-clique sobre a tabela tbItensNota. Aparecera uma pequena janela
inicialmente vazia. Sobre esta janela clique o boto direito do mouse e escolha a
opo Add Fields....

Construindo uma aplicao Delphi

75

Aparecer uma outra janela contendo todos os campos da tabela. Marque todos os
campos e clique o boto OK.

O nome de cada objeto-campo ser definido automaticamente pelo Delphi. Ele ser
composto do nome da tabela seguido do nome do campo. Por exempo, o nome do
objeto-campo definido para o campo Produto da tabela tbItemNota ser
tbItemNotaProduto.

Alterando propriedades dos campos


Aps a transfomao dos campos em objetos, cada campo-objeto ter suas
propriedades e eventos individualmente.
Sempre que for necessrio ter acesso aos objetos-campo de uma tabela basta dar um
duplo-clique sobre ela.

Construindo uma aplicao Delphi

76

6
Criando campos virtuais
O recurso de transformar campos em objetos permite que se crie objetos-campo que
no esto ligados a um campo da tabela.
Na tabela tbItemNota, por exemplo, temos o cdigo do Produto e a Quantidade.
Sabemos antecipadamente que durante a execuo do nosso sistema teremos que
calcular diversas vezes o valor total do item (preo de venda * quantidade). Porm o
preo de venda do produto no aparece nesta tabela e sim na tabela tbPRODUTO.
Que bom seria se o campo PrecoVenda aparecesse tambm na tabela tbItemNota,
economizaria muito trabalho.

Criando campos lookup


Este tipo de campo virtual armazena o valor de um campo que est em outra
tabela. A busca desse valor feita atravs de pesquisa utilizando a chave primria.
Vamos criar um campo chamado PrecoUnitario na tabela tbItemNota cujo valor
que ser trazido da tabela tbPRODUTO atravs do cdigo do produto.
 PASSO 1
D um duplo-clique na tabela tbItemNota. Aparecer uma pequena janela contendo
os objetos-campo da tabela. Sobre essa janela clique o boto direito do mouse e
escolha a opo New field....

 PASSO 2
Na janela que ser apresentada, preencha as seguintes informaes:

Construindo uma aplicao Delphi

77

Name

Nome do novo campo virtual que ser criado na tabela.

Component

Nome do objeto-campo que ser criado.

Type

Tipo do novo campo virtual.

Key Fields

Campo que ser utilizado na pesquisa.

Dataset

Tabela onde est o campo desejado.

Lookup key

Chave primria da tabela onde est o campo desejado

Result Field

Nome do campo cujo valor se deseja trazer.

O atributo Component preenchido automaticamente mas pode ser alterado, se


preferir. Este nome usado para referenciar o objeto-campo nos programas do
sistema.
 PASSO 3
Clique no boto OK e pronto. criado um novo campo na tabela que no est
fisicamente gravado no disco. Este campo mantido automaticamente pelo sistema.

Criando campos calculados


Outro tipo de campo virtual o campo calculado. Um campo calculado armazena
o resultado da uma operao realizada com alguns campos da tabela.
Utilizando mais uma vez a tabela tbItemNota como exemplo, poderamos pensar
que nos pouparia muito trabalho se tivssemos armazenado na tabela o resultado da
multiplicao do PrecoUnitario com a Quantidade.
 PASSO 1
D um duplo-clique na tabela tbItemNota. Aparecer uma pequena janela contendo
os objetos-campo da tabela. Sobre essa janela clique o boto direito do mouse e
escolha a opo New field....

Construindo uma aplicao Delphi

78

 PASSO 2
Na janela que ser apresentada, preencha as seguintes informaes:

Name

Nome do novo campo virtual que ser criado na tabela.

Component

Nome do objeto-campo que ser criado.

Type

Tipo do novo campo virtual.

 PASSO 3
Clique no boto OK e ser criado um novo campo na tabela que no est fisicamente
gravado no disco. Porm, o valor deste campo no mantido automaticamente pelo
sistema. necessrio definir na tabela tbItemNota o evento OnCalcFields.
Selecione a tabela tbItemNota e na janela Object Inspector clique na pgina
Events. No evento OnCalcFields digite TotalItem e pressione Enter. Ser criado
uma procedure onde dever ser digitada apenas uma linha de cdigo.

Construindo uma aplicao Delphi

79

procedure TDadosFaturamento.TotalItem(DataSet: TDataSet);


begin
tbItensNotaTotalItem.Value := tbItensNotaQuantidade.Value *
tbItensNotaPrecoUnitario.Value;
end;

7
Relacionando tabelas
Existe um relacionamento 1 para N entre as tabelas tbNotaFiscal e a tabela
tbItemNota. Uma nota fiscal possui vrios itens. Este tipo de relacionamento
chamado pelo Delphi de Master-Detail.
No nosso exemplo a tabela Master a tabela tbNotaFiscal e a tabela Detail a
tabela tbItemNota. Os relacionamentos entre as tabelas feito atravs de um ou
mais campos. No caso, o campo Nota da tabela Detail (tbItemNota) deve se
relacionar com o campo Numero da tabela Master (tbNotaFiscal);
Para se definir um relacionamento Master-Detail basta alterar alguns atributos da
tabela Detail.

Na propriedade MasterFields defini-se o campo de relacionamento. Esta definio


feita utilizando-se o Field Linker Designer.

Construindo uma aplicao Delphi

80

8
Criando a janela Principal
O primeiro formulrio (janela) que iremos criar o formulrio principal. O
formulrio principal ter apenas o menu principal de nossa aplicao. Este menu
servir para guiar a implementao de todos demais formulrios do sistema.
 PASSO 1
Para criar um novo formulrio selecione a opo do menu File|New Form. Ser
criado um formulrio que inicialmente ter o nome Form1.
Altere as seguintes propriedades da janela.
Properties
Caption

SisFat 1.0

Name

fmPrincipal

Position

poScreenCenter

 PASSO 2
Ponha um componente MainMenu (pgina Standard) em qualquer posio e altere a
propriedade Name para MenuPrincipal.
D um duplo-clique sobre esse componente e ser apresentado um Editor de Menu,
onde voc poder definir as opes do menu.

Construindo uma aplicao Delphi

81

Cada item do menu um objeto, possuindo suas propriedades e eventos. Para cada
item do menu, altere as seguintes propriedades:
Caption

Name

&Cadastro

MenuCadastro

&Vendedores

OpcaoVendedores

&Venda

OpcaoVenda

N1

Sair

OpcaoSair

 PASSO 3
Os eventos deste menu sero definidos assim que as janelas correspondentes forem
criadas. Podemos, no entanto, definirmos o evento para a opo Sair. Para isso d um
duplo-clique sobre esta opo. Automaticamente ser criada uma Procedure para que
voc escreva o cdigo (programa) que ser executado na seleo desta opo.
procedure TfmPrincipal.OpcaoSairClick(Sender: TObject);
begin
Close;
end;

Digite apenas o comando Close; na linha onde o cursor est posicionado.


 PASSO 4
Salve o formulrio utilizando o comando File|Save As. O nome do arquivo ser
Principal, e ser gravado na pasta de programas (C:\SisFat\Programas).
O Delphi, na verdade, ir gravar dois arquivo. Um arquivo com extenso .pas e um
outro arquivo com extenso .dfm (Delphi Form).

Construindo uma aplicao Delphi

82

9
Criando a janela Vendedores
Vamos agora criar o formulrio para entrada de dados da tabela Vendedores. Existe
uma forma automtica de se criar formulrios de banco de dados utilizando-se o
Database Form Wizard. Iremos, porm, criar os formulrios de forma manual.
 PASSO 1
No menu, selecione File|New Form. Ser apresentado um formulrio em branco.
Altera as seguintes propriedades:
Properties
Caption

Vendedores

BorderStyle

bsSingle

Name

fmVendedor

Position

poScreenCenter

Antes de tudo, salve o formulrio (File|Save As...) com o nome Vendedor.


 PASSO 2
Este formulrio, assim como todos os formulrios que fazem atualizao de tabelas,
vai referenciar uma ou mais tabelas que esto definidas no Data Module da
aplicao (dmFaturamento). Para que este formulrio possa acessar tais tabelas,
necessrio declarar este relacionamento. Para isso, selecione a opo File|Use Unit
do menu principal. Ser apresentada a seguinte janela:

Construindo uma aplicao Delphi

83

Selecione dmFaturamento e clique OK.


 PASSO 3
Inclua no formulrio um componente DBGrid (Data Controls).
Altere algumas de suas propriedades:
Properties
DataSource

DadosFaturamento.dsVENDEDOR

Name

DadosVendedor

Selecionando a propriedade Columns (ou d um duplo-clique no componente


DBGrid) apresentado um Editor de Colunas. Atravs dele possvel alterar
propriedades e eventos de cada coluna individualmente.

 PASSO 4
Inclua no formulrio um componente DBNavigador.
Altere as seguintes propriedades:
Properties
DataSource

DadosFaturamento.dsVENDEDOR

Name

ControleVendedor
Construindo uma aplicao Delphi

84

1
0
Criando a janela Produtos
Seguindo o exemplo da criao da janela Vendedores criada a janela Produtos
 Criar novo formulrio (File|New Form)com as seguintes propriedades:
Properties
Caption

Produtos

BorderStyle

bsSingle

Name

fmProduto

Position

poScreenCenter

 Salvar este formulrio com o nome Produtos


 File|Use Unit dmFaturamento
 Incluir no formulrio um componente DBGrid (Data Controls) e alteraras
seguintes propriedades:
Properties
DataSource

DadosFaturamento.dsPRODUTO

Name

DadosProduto
Construindo uma aplicao Delphi

85

 Configurar cada coluna individualmente;


 Inclua no formulrio um componente DBNavigador e altere as seguintes
propriedades:
Properties
DataSource

DadosFaturamento.dsPRODUTO

Name

ControleProduto

1
1
Criando a janela Notas fiscais
O formulrio de entrada de dados das notas fiscais ter as seguintes propriedades:
Properties
Caption

Notas Fiscais

BorderStyle

bsSingle

Name

fmNotaFiscal

Position

poSreenCenter

Construindo uma aplicao Delphi

86

1
2
Completando a janela principal
O formulrio principal ir acessar os trs formulrios de entrada de dados que foram
criados (fmVendedor, fmProduto, fmNotaFiscal). Para que o formulrio principal
consiga referenciar cada um deste formulrios, necessrio selecion-los atravs da
opo File|Use Unit selecione.

Construindo uma aplicao Delphi

87

Falta agora completar o menu principal definindo-se o evento OnClick de cada


opo. Para isso, basta clicar em cada opo do menu e definir a linha de cdigo para
a chamada da janela correspondente.

Aps a definio de todas as procedures, o formulrio principal ter o seguinte


cdigo:

Construindo uma aplicao Delphi

88

1
3
Configurando o Projeto
Para configurar a aplicao utilize a opo do menu do Delphi Project|Options...
Apesar de existir vrias pginas, as pginas que iremos ver so as pginas Forms e
Application.
Na pgina Forms, no campo Main form, voc define o formulrio principal do
projeto. Isto , a janela que ser apresentada quando voc executar a aplicao. No
nosso exemplo, o formulrio que contm o menu, ou seja fmPrincipal.
Na janela Auto-create forms: aparecem os formulrios que so criados
automaticamente, ao ser iniciada a aplicao. Pode-se dizer que estes formulrios
ocupam memria, mesmo que no estejam visveis.
Na janela Available forms: esto os formulrios que sero criados em tempo de
execuo. Esses formulrios no ocupam memria, at que eles sejam apresentados
na tela. Porm, o processo de alocao e liberao de memria para esses formulrios
de responsabilidade do programador.

Na pgina Application so configurados o ttulo da aplicao (Title:), o arquivo de


help que ser utilizado pela aplicao (Help file:) e o cone para representar a
aplicao (Icon:)

Construindo uma aplicao Delphi

89

Construindo uma aplicao Delphi

90

Você também pode gostar