Anda di halaman 1dari 49

149 1

Delphi
Borland
492
2
Copyright

2005 - Marcos Antonio Moreira.


Todos os nomes dos produtos citados so marcas registradas da Borland International, Inc.
Outros produtos citados so marcas registradas no respectivo cabealho
As vrias Marcas Registradas que aparecem no decorrer deste livro. Mais do que simplesmente listar esses nomes e
informar quem possui seus direitos de explorao, ou ainda imprimir o logotipo das mesmas, o autor declara estar
utilizando tais nomes apenas para fins editoriais, em benefcio exclusivo do dono da marca registrada, sem inteno de
infringir as regras de sua utilizao.
493
3
I NDI CE
Capitulo 1 Introduo
Introduo Linguagem de Programao 05
O que processamento de dados 06
O que Sistemas Operacionais 06
Como executado um programa de computador 06
Capitulo 2 Ambiente Delphi
O ambiente de desenvolvimento ( IDE ) 09
Trabalhando com Form 14
Estrutura de uma Unit 16
Arquivos usados em um projetos 18
Capitulo 3 Componentes Bsicos
Definio 20
Componentes Visuais 20
Componentes No Visuais 20
Vantagens do Uso de Componentes 21
Capitulo 4 A Linguagem Delphi Language
Smbolos Especiais 23
Palavras reservadas 24
Nmeros 25
Constantes 25
Identificadores 26
Strings de caracteres 26
Comentrios 27
Estruturas de controle 27
Capitulo 5 Modularizao
Procedimento 34
Funo 35
Capitulo 6 Orientao a Objetos
Conceito 39
Classe 40
Herana 40
Polimorfismo 40
Embutimento 40
494
4
1
I
I
n
n
t
t
r
r
o
o
d
d
u
u

o
o
495
5
I ntroduo Linguagem de Programao
Uma linguagem de programao um mtodo padronizado para
expressar instrues para um Computador. um conjunto de regras sintticas
e semnticas usadas para definir um programa de computador. Uma linguagem
permite que um programador especifique precisamente sobre quais dados um
computador vai atuar, como estes dados sero armazenados ou transmitidos e
quais aes devem ser tomadas sob vrias circunstncias. O conjunto de
palavras (tokens), compostos de acordo com essas regras, constituem o
cdigo fonte de um software. Esse cdigo fonte depois traduzido para
cdigo de mquina, que executado pelo processador.
Cdigo fonte o conjunto de palavras escritas de forma ordenada,
contendo instrues em uma das linguagens de programao existentes no
mercado, de maneira lgica. Aps compilado, transforma-se em software, ou
seja, programas executveis. Este conjunto de palavras, que formam linhas de
comandos, devero estar dentro da padronizao da linguagem escolhida,
obedecendo critrios de execuo. Atualmente com a diversificao de
linguagens, o cdigo pode ser escrito de forma totalmente modular, podendo
um mesmo conjunto de cdigos ser compartilhado por diversos programas, e
at mesmo linguagens.
Software, logicial ou programa de computador uma sequncia de instrues
a serem seguidas e/ou executadas, na manipulao, redirecionamento ou
modificao de um dado/informao ou acontecimento.
Todo computador possui um conjunto de instrues que seu processador
capaz de executar. Essas instrues so representadas por
nmeros(opcodes).Um programa em cdigo de mquina consiste de uma
sequncia de nmeros que significam uma sequncia de instrues a serem
executadas. Programar diretamente em cdigo de mquina costuma ser
exaustivamente difcil, pois requer o conhecimento dos opcodes de cada
instruo.Por esse motivo, foi criada uma linguagem de programao chamada
linguagem de montagem (Assembly Language), composta de cdigos
mnemnicos que, do ponto de vista tcnico, to prxima do processador
quanto o cdigo de mquina, mas humanamente mais fcil de se
compreender uma vez que seus cdigos so geralmente acrnimos do ingls.
Por exemplo mov de mover, rep de repetio e assim por diante.
496
6
Processamento de Dados
Consiste em extrair informao de dados. Os dados so os elementos
bsicos pertencentes a um conjunto determinado de informaes.
Por exemplo um documento de identificao pode conter vrios dados de uma
pessoa como nome, sexo, data de nascimento, etc. Outros exemplos de dados
so a temperatura de uma cidade, ou a rea de um territrio. Ainda que estes
paream, por vezes, isolados, podem sempre englobar-se em conjuntos (as
temperaturas das cidades de uma provncia ou pas, ou as reas de um
conjunto de territrios) ou sries (as temperaturas de uma cidade ao longo do
tempo).
Sistemas Operacionais
Sistema Operacional ou Sistema Operativo um conjunto de ferramentas
necessrias para que um computador possa ser utilizado de forma adequada.
Consiste na camada intermediria entre o aplicativo e o hardware da mquina.
Este conjunto constitudo por um Kernel, ou ncleo, e um conjunto de
softwares bsicos, que executam operaes simples, mas que juntos fazem
uma grande diferena.
Antes que existissem sistemas desse tipo, todo software desenvolvido deveria
saber se comunicar com os dispositivos do computador de que precisasse.
Como executado um Programa
composto por uma sequncia lgica de instrues, que interpretada e
executada por um processador. Um programa pode ser executado por qualquer
dispositivo capaz de interpretar e executar as instrues de que formado.
Esses dispositivos possuem um ou mais processadores, que so circuitos
complexos e criados para esse fim. Quando um software est escrito usando
instrues que podem ser executadas diretamente por um processador dizemos
que est escrito em linguagem de mquina. A execuo de um software
tambm pode ser intermediada por um programa interpretador, responsvel
por interpretar e executar cada uma de suas instrues. Uma categoria especial
e notvel de interpretadores so as mquinas virtuais, como a J VM (Mquina
Virtual J ava), que simulam um computador inteiro, real ou imaginado.
497
7
O dispositivo mais conhecido que dispe de um processador o computador.
Existem outras mquinas programveis, como telefone celular, mquinas de
automao industrial, calculadora, etc
498
8
A
A
m
m
b
b
i
i
e
e
n
n
t
t
e
e
D
D
e
e
l
l
p
p
h
h
i
i
(
(
I
I
D
D
E
E
)
)
2
499
9
Ambiente de Desenvolvimento ( I DE )
Em uma ferramenta de programao visual como o Delphi, o papel do IDE (
Integrated Development Environment - Ambiente integrado de
desenvolvimento ) , s vezes, ainda mais importantedo que a linguagem de
programao.
O Delphi 7 fornece alguns recursos novos e interessantes que aproveitam o rico
IDE do Delphi 6. Se voc um programador iniciante, no se preocupe.
O uso do IDE do Delphi bastante intuitivo.
Ao trabalhar com um ambiente de desenvolvimento visual, seu tempo gasto
em duas partes diferentes doaplicativo: nos projetista visuais e no editor de
cdigo. Os projetista visuais permitem que voc trabalhe com os componentes
no nvel visual(quando voc incluir um boto em um formulrio) ou no nvel no
visual(quando voc inclui um componente DataSet em um modulo de dados).
Um formulrio e um mdulo de dados do IDE do Delphi
4910
10
O editor o local na qual voc escreve o cdigo. O mais bvio de
escrever cdigo em um ambiente visual responder aos eventos, iniciando com
aqueles ligados s operaes executadas pelos usurios do programa, tal como
clicarem um boto ou selecionar um item em uma caixa de lista.
medida que o programador conhece melhor o Delphi, ele passa a escrever
principalmente cdigo de manipulao de eventos e, em seguida, passam a
escrever suas prprias classes e componentes, e quase sempre acabam
passando a maior parte de seu tempo no editor.
Editor de cdigos
4911
11
Configurao da rea de Trabalho
A Configurao da rea de Trabalho, pode personalizar o I DE do Delphi de
diversas maneiras - em geral, abrindo muitas janelas reorganizando-as entre
outras. Por isso, o Delphi permite salvar determinadas organizao das janelas
do IDE (chamadas de rea de trabalho ou desktop)
Code Explorer
O Code Explorer, que geralmente fica acoplado ao lado do editor, lista todos os
tipos, variveis e rotinas definidas em uma unidade, alm das outras unidades
que apaream em instrues uses. Voc pode usar o Code Explorer para
navegar no editor. Se voc der um clique duplo em uma das entradas no Code
Explorer, o editor pular para a declarao correnpondente.
Code Explorer
4912
12
Completamento d Classe
Completamento de Classe (Code Complete ) - O editor do Delphi tambm pode
ajudar gerando parte do cdigo-fonte para voc, completando aquilo que voc
j tem escrito. Esse recurso chamado de completamento de classe, e voc
pode ativ-lo pressionando a combinao de teclas Ctrl+Shift+C
Completamento de Classe
4913
13
Completamento de Cdigo
Completamento de Cdigo permite escolher a propriedade ou mtodo de um
objeto simplesmente procurando-o em uma lista ou digitando suas letras
iniciais. Para chama essa lista, voc apenas digita o nome de um objeto, como
Button1, insere o ponto e espera. Para forar a exibio da lista, pressione
Ctrl+Barra de espao
Completamento de Cdigo
4914
14
Form Designer
Outra janela do Delphi a qual voc vai interagir freqentemente o Form
Designer, uma ferramenta visual para colocao de componentes.
Os formulrios (objeto TForm) so os pontos centrais para o desenvolvimento
Delphi. Voc se utilizar deles para desenhar sua comunicao com o usurio,
colocando e organizando outros objetos. Estes objetos so arrastados da
Component Palette, mostrada na janela localizada acima.
Voc pode imaginar que o formulrio um objeto que contm outros objetos.
Sua aplicao ficar localizada em um formulrio principal e este interagir com
outros formulrios criados. possvel aumentar, mover ou ocupar
completamente a tela do monitor, ou at mesmo ultrapass-la.
Um formulrio bsico inclui os seguintes componentes:
Controles de menu;
Botes de maximizao e minimizao;
Barra de ttulo; e
Bordas redimensionveis.
O cdigo gerado, na rea conhecida como Code Editor, fica exatamente atrs
do objeto formulrio, clique na barra de notas, em Unit1.
Ao terminar de projetar um formulrio, voc pode usaro comando Lock Controls
do menu edit para impedir a mudana acidental da posio de um componente.
4915
15
Code Editor
O editor de cdigos providncia total acesso ao cdigo gerado pelo
projeto, incluindo alguns dos mais poderosos recursos para a edio. Pode ser
selecionado tipos de cores para os elementos do programa (como por exemplo
comentrios, palavras reservadas, cdigos assembler, ...) para tanto a partir do
menu principal entre emTools | Options..., localize a pgina Colors.
Ao ser aberto um novo projeto, o Delphi gera automaticamente na
pgina do Code Editor uma Unit com o arquivo cdigo (.PAS). Para ver o cdigo
de uma Unit em particular, simplesmente Click na tabulao de pgina.
O Code Editor mostrar sempre o nome do arquivo corrente ativo na
tabulao de pgina.
possvel alternar entre o objeto Form e a Code Editor atravs do
pressionamento da tecla F12, do boto boto (Toggle Form/Unit) da
SpeedBar, ou ainda atravs das opes do menu View | Toggle Form/ Unit.
(curiosidade: o acesso rpido atravs da tecla Alt + Letra sublinhada para esta
opo est marcado sobre a letra G)
Object I nspector
Providncia a conexo entre a interface visual e o cdigo. Composto
por duas pginas Properties (propriedades) e Events (Eventos) que mostrar as
propriedades e eventos do objeto selecionado.
Disponibiliza um fcil caminho para a personalizao dos objetos. Voc usar a
pgina de Propriedades para personalizar os objetos colocados no formulrio
(inclusive o prprio formulrio), e a pgina de Eventos para gerenciar a
navegao entre certas partes do cdigo do programa.
O seletor de objetos (Object Selector - localizado em um objeto do tipo
ComboBox no topo do Object Inspector) mostra o nome e o tipo de todos os
componentes do formulrio corrente (inclusive o prprio). Voc pode usar o
seletor de objetos para localizar facilmente qualquer objeto no formulrio.
4916
16
Estrutura de Uma Unit
Seo Unit
Declara o nome da unit.
Seo Uses
Contm as units acessadas por este arquivo.
Seo Interface
Nesta seo esto as declaraes de constantes, tipos de variveis,
funes e procedures gerais da Unit/Form. As declaraes desta seo so
visveis por qualquer Unit. Esta seo formada pelo seguinte cdigo:
I NTERFACE - Palavra que inicia a seo;
USES - Clusula que inicia uma lista de outras unidades compiladas
(units) em que se basea:
SysUtils = utilitrios do sistema (strings, data/hora, gerar
arquivos)
WinProcs = acesso a GDI, USER e KERNEL do Windows
Wintypes= tipos de dados e valores constantes
Messages=constantes com os nmeros das mensagens do
Windows e tipos de dados das Mensagens
Classes=elementos de baixo nvel do sistema de componentes
Graphics=elementos grficos
Controls=elementos de nvel mdio do sistema de componentes
Forms=componentes de forma e componentes invisveis de
aplicativos
Dialogs=componentes de dilogo comuns
4917
17
Seo Type
Declara os tipos definidos pelo usurio. Subsees: Private, declaraes
privativas da Unit. Public declaraes publicas da Unit.
Seo Var
Declara as variveis privadas utilizadas.
Seo I mplementation
Contm os corpos das funes e procedures declaradas nas sees
Interface e Type. Nesta seo tambm esto definidos todos os procedimentos
dos componentes que esto includos no Form. As declaraes desta seo so
visveis apenas por ela mesma. Esta seo formada pelo seguinte cdigo:
{$R*.DFM} - Diretiva compiladora que inclui toda a interface,
propriedades da forma e componentes do arquivo *.DFM
{$S+} - Diretiva compiladora que ativa verificao de pilha.
Seo uses adicional
Serve para declarar Units que ativam esta.
Inicialization
Nesta seo, que opcional, pode ser definido um cdigo para proceder
as tarefas de inicializao da Unit quando o programa comea. Ela consiste na
palavra reservada inicialization seguida por uma ou mais declaraes para
serem executadas em ordem.
4918
18
Arquivos Produzidos pelo Sistema
Extenso
Tipo de arquivo
e descrio
Momento da
Criao
Requerido para
a compilao
.CFG
Arquivo de
configurao com
opes de projeto.
Desenvolvimento
Requerido apenas se
as opes especiais do
compilador foram
configuradas
.RES, .RC
Arquivos de recursos:
o arquivo binrio
associado ao projeto e
que, em geral contm
seu icone
Caixa de dilogo
Development Options
Sim. O arquivo RES
principalmente de um
aplicativo
reconstrudo pelo
Delphi.
.DOF
Delphi Option File
(arquivo de opes o
Delphi): um arquivo
de texto com as
configuraes atuais
das opes de projeto
Desenvolvimento
Requerido apenas se
as opes especiais do
compilador foram
configuradas.
.DPR
Arquivo Delphi Projet:
(Projeto Delphi: na
verdade, este arquivo
contm cdigo-fonte
Delphi)
Desenvolvimento Sim
.DFM
Delhi Form File
(arquivo de formulrio
do Delphi): arquivo
binrio com a
descrio das
propriedades de um
formulrio iu de um
modulo de dados
Desenvolvimento
Sim. Cada formulrio
armazenado em um
arquivo PAS e em um
arquivo DFM.
.PAS
Arquivo fonte de uma
unidade Delphi
Language (Pascal), ou
uma unidade
relacionada com um
formulrio ou unidade
independnte
Desenvolvimento Sim
.DSK, .DLL, .EXE,
BPL
4919
19
3
Componentes
Bsicos do Delphi
4920
20
Definio
Existem basicamente duas formas de se definir o que um componente.
Do ponto de vista usual ou funcional podemos entender que um componente
todo objeto que, em tempo de desenvolvimento, pode ser adicionado em um
formulrio e ter caracterstica e comportamento alterados atravs de suas
propriedades e eventos.
Os componentes podem ser dividir em duas categorias : Os visuais e os No
visuais
Componentes Visuais: So todos aqueles componentes que formam a
interface com o usurio, ou seja, aqueles que so exibidos tanto em tempo de
projeto quanto de tempo de execuo.
Exemplos: Button, Edit, panel, Memo, Label dentre outros.
Componentes No Visuais: So todos aqueles componentes que, quando
adicionado ao formulrio, so representados por um pequeno cone e quando a
aplicao est sendo executada esta representao grfica deixa de existir.
Dessa forma eles no fazem parte da interface da aplicao, apenas
disponibiliza recursos.
Exemplos: Query, Timer, DataSource, dentre outros.
Paleta Standart
Paleta Additional
4921
21
Vantagens do Uso de Componentes
Com o advento da programao visual o uso de componentes tornou-se um
grande atrativo. Fica muito mais prtico e rpido voc adicionar um boto em
seu formulrio e alterar as suas propriedades de forma a, no mesmo instante,
observar os efeitos desta alterao.
Alm disso o uso de componentes torna o desenvolvimento de aplicaes muito
mais rpido. Uma vez que voc j possui um componente testado e confivel,
basta adiciona-lo em sua aplicao e ajustar as suas propriedades que ele se
encarrega de fazer o restante. Ele j sabe o que deve fazer. Se, por exemplo,
um usurio alterar o sistema de cores de sua mquina, voc no precisa se
preocupar em criar rotinas que alterem as cores de sua aplicao, pois os
componentes que usam o sistema de cor fazem a alterao necessria.
Outro aspecto importante que, com o uso de componentes, a manuteno de
um sistema se torna mais eficiente. Imagine o trabalho que daria se depois que
voc acabou de criar uma aplicao, descobre um pequeno problema nos
botes, e tem que fazer uma alterao em todos os locais onde aparece algum
boto!
4922
22
4
A Linguagem
Delphi
4923
23
A linguagem Delphi Language (Pascal) uma linguagem Orientada a
Objetos no pura mas hbrida por possuir caractersticas de programao no
s visual mas tambm escrita, para os programadores que j conhecem
tcnicas de estruturas de programao, com o C, Basic, Pascal ou xBASE entre
outras linguagens a Delphi Language providncia uma migrao de forma
natural oferecendo um produto de maior complexibilidade. Delphi Language
fora a voc executar passos lgicos isto torna mais fcil o desenvolvimento no
ambiente Windows

de aplicaes livres ou que utilizam banco de dados do


tipo Client/Server, WebService, Multi Camada e Web, trabalha com o uso de
ponteiros para a alocao de memria e todo o poder de um cdigo totalmente
compilvel. Alm disso possibilita a criao e reutilizao (vantagem de re-uso
to sonhado com a Orientao a Objetos) de objetos e bibliotecas dinmicas
(Dynamic Link Libraries - DLL).
Delphi Language contm todo o conceito da orientao a objetos incluindo
encapsulamento, herana e polimorfismo. Algumas extenses foram includas
para facilitar o uso tais como conceitos de propriedades, particulares e
pblicas, e tipos de informaes em modo run-time, manuseamento de
excees, e referncias de classes. O resultado de toda esta juno faz com
que Delphi Language consiga suportar as facilidades de um baixo nvel de
programao, tais como:
Controle e acesso das subclasses do Windows

(API);
Passar por cima das mensagens de loop do Windows

;
Mensagens semelhantes as do Windows

;
Cdigo puro da linguagem Assembler.
Como deu para perceber a base de toda a programao Delphi a linguagem
Object Pascal, ento neste captulo trataremos exclusivamente deste tipo de
programao.
Smbolos Especiais
A Delphi Language aceita os seguintes caracteres ASCII:
Letras - do Alfabeto Ingls: A at Z e a at z.
Dgitos - Decimal: 0 at 9 e HexaDecimal: 0 at 9 e A at F (ou a
at f)
Brancos - Espao (ASCII 32) e todos os caracteres de controle
ASCII (ASCII 0 at ASCI I 31), incluindo final de linha e Enter
(ASCI I 13).
Especiais - Caracteres: + - * / = < > [ ] . , ( ) : ; ^ @ { } $ #
Smbolos - Caracteres: <= >= := .. (* *) (. .) //
[AL1] Comentrio:
4924
24
O colchetes esquerdo ( [ ) e equivalente ao (. e o colchetes direito ( ] ) e
equivalente a .). A chave esquerda ( { ) e equivalente ao (* e a chave direita (
} ) e equivalente a *).
Palavras Reservadas
A Delphi Language se utiliza das seguintes palavras reservadas, no podendo
as mesmas serem utilizadas ou redefinidas:
And Exports Library Set
Array File Mod Shl
As Finnaly Nil Shr
Asm For Not String
Begin Function Object Then
Case Goto Of To
Class I f On Try
Const Implementation Or Type
Constructor I n Packed Unit
Destructor Inherited Procedure Until
Div Initialization Program Uses
Do Inline Property Var
Downto Interface Raise While
Else I s Record With
End Label Repeat Xor
Except
Uma outra lista a seguir, apresenta as diretivas que so utilizadas em contextos
de identificao de objetos:
Absolute Export Name Published
Abstract External Near Read
Assembler Far Nodefault Resident
At Forward Override Stored
Cdecl Index Private Virtual
Default Interrupt Protected Write
Dynamic Message Public
4925
25
Nmeros
possvel definir variveis e constantes de tipos de Inteiro ou Real atravs de
qualquer decimal ordinrio ( 0 a 9 ), mas a Delphi Language tambm aceita a
notao Hexadecimal utilizados com o prefixo dollar ( $ ) ou a notao cientfica
( E ).
Constantes
Uma constante um identificador com valor(es) fixo(s). Um bloco de
declaraes constante possui a seguinte expresso:
[Declarao Constante] [Identificador] (=) [constante] (;)
A lista abaixo apresenta um conjunto de funes que podem ser utilizadas para
a declarao das constantes:
Ab Length Ord SizeOf
Chr Lo Pred Succ
Hi Low Ptr Swap
High Odd Round Trunc
Alguns exemplos para a definio de Constantes:
const Min = 0;
Max = 100;
Centro = (Max - Min) div 2;
Beta = Chr(225);
NumLetras = Ord('Z') - Ord('A') + 1;
MensOla = 'Instruo invlida';
MensErro = ' Erro: ' + MensOla + '. ';
PosErr = 80 - Length(MensErro) div 2;
Ln10 = 2.302585092994045684;
Ln10R = 1 / Ln10;
DigNumericos = ['0'..'9'];
LetrasAlpha = ['A'..'Z', 'a'..'z'];
AlphaNum = LetrasAlpha + DigNumericos;
4926
26
Expresses
As expresses em Delphi Language (como em qualquer linguagem) formada
por operadores e operandos; os operadores so divididos em quatro categorias
bsicas:
nicos @, Not
Multiplicativos >, /, div, mod, and, shl,
shr, as
Adicionais +, -, or, xor
Relacionais =, < >, <, >, < =, >
=, in, is
As expresses obdecem as regras bsicas de lgica para a precedncia da
execuo das operaes.
I dentificadores
Identificadores podem ser constantes, tipos, variveis, procedures, funes,
unidades, programas e campos de registros.
No existe limite de caracteres para o nome de um identificador mas apenas os
63 primeiros caracteres so significantes (no podendo ser idntico ao nome
das palavras reservadas). O nome de um identificador deve ser iniciado por
Letras ou o carcter underscore ( _ ). O resto formado por Letras, Dgitos,
carcter underscore (ASCII $5F). No permitido a utilizao de espaos para
a formao do nome.
Exemplo de identificadores vlidos: Form1, SysUtils.StrLen, Label1.Caption
Strings
Strings so conjunto de caracteres entre aspas simples.
Exemplos:
`isto uma string'.
`123456'.
Etc.
4927
27
Comentrios
Comentrios so textos que introduzimos no meio do programa fonte com a
inteno de torn-lo mais claro. uma boa prtica em programao inserir
comentrios no meio dos nossos programas. No Turbo Pascal, tudo que estiver
entre os smbolos
(* e *) ou { e } ser considerado como comentrio.
Concatenao
Esta operao, representada pelo sinal de adio, ou seja, +. Os operandos
devem ser do tipo string ou char.
Exemplo:
`Isto uma ` + `String' = `Isto uma String'.
Atribuio
variavel := valor;
Estrutura de Controle - Condicional
O comando condicional if pode ser composto de uma ou mais condies de
processamento, por exemplo:
if (A > B) then
B := B + 1; // ou INC(B);
if (A > B) then
B := B + 1
else
A := A - 1; // ou DEC(A);
if (A > B) then
begin
B := B + 1;
X := B + A;
end
4928
28
else
begin
A := A - 1;
Y := Y + B;
end;
No ltimo exemplo para representar um bloco de comandos em caso verdadeiro ou falso, utiliza-se dos
delimitadores begin e end.
O comando if-then-else considerado como nico, portanto, no h ponto e vrgula (;)antes da palavra
reservada else.
Estrutura de Controle - Repetio
for <variavel> := <valor_inicial> to <valor_final>do
<comando1>;
ou
for <variavel> := <valor_inicial>downto <valor_final>do
<comando1>;
Estrutura de Controle - Repeat
O comando repeat..until uma opo para estruturas de repetio. A grande
diferena com o comando while o fato do comando repeat ser executado pelo
menos uma vez.
repeat
X := X + 1;
INC(Z,3); //equivale a Z := Z + 3;
DEC(AUX,2);
until X >= 200;
repeat
<comandos>;
until <condio>;
4929
29
Nas estruturas while e for, se houver mais de um comando a ser processado,
eles devem ser colocados entre BEGI N e END.
Estrutura de Controle - While
O comando while..do tambm permite a construo de estruturas de repetio,
com diferena de no executar o lao no incio do teste lgico.
while X <= 200 do
begin
X := X + 1;
I NC(Z,3);
DEC(AUX,2);
end;
while <condio>do
begin
<comando1>;
<comando2>;
<comandon>;
end;
Estrutura de Controle - For
O comando for..do estabelece uma estrutura de repetio considerando um
controle inicial e final. Pode ser construdo de maneira crescente ou
decrescente.
for i:=0 to 500 do
Label1.Caption := IntToStr(i);
for i:=500 downto 100 do
begin
Label1.Caption := IntToStr(i);
Edit1.Caption := IntToStr(i);
end;
for <variavel> := <valor_inicial>to <valor_final>do
begin
<comando1>;
<comando2>;
<comandon>;
end;
4930
30
Estrutura de Controle - Escolha
O comando case..of oferece uma alternativa para comandos if-then-else com
um `grande' nmero de testes. Por exemplo:
case Key of
`A'..`z': Label1.Caption := `Letras';
`0'..`9': Label1.Caption := `Nmeros';
`+', `-', `*', `f': Label1.Caption := `Operador'
else
Label1.Caption := `Caracter especial';
end; //fim do case
Estrutura de Controle - With
with... do...;
Delimita um determinado bloco de declaraes para um identificador especfico
evitando a declarao deste identificador. A sintaxe do comando : WI TH
{nome do identificador} DO {comandos};. Ex:
begin
{ ... comandos iniciais ... }
with form1 do
begin
Caption := `Teste'; Equivalente a Form1.Caption
BorderStyle := bsSizable; Equivalente a Form1.BorderStyle
end;
end;
O comando with..do usado para abreviar a referncia a campos de registro,
ou a mtodos, e propriedades de um objeto.
begin
Form1.Caption := `Senac';
Form1.Color := ClBlue;
Form1.Top := 95;
end;
//Equivalente :
with Form1 do
begin
Caption := `Senac';
Color := ClBlue;
Top := 95;
end;
4931
31
Vetores - Array
Define um conjunto de variveis ou constantes de um mesmo tipo. A sintaxe do
comando : array [{quantidade de ocorrncias}] of {Tipo};. Os arrays so
controlados por trs funes:
var
array [ lim_inf .. lim_sup ] of <tipo>;
- Exemplo:
var
Alunos : array [1..100] of string;
Alunos[1] := Valeria;
Declaraes
Declaraes descrevem aes de um algortmo a serem executadas.
begin... end;
Prende um conjunto de declaraes em um bloco de comandos determinado. A
sintaxe do comando : BEGIN {comandos} END;. Ex:
begin
{ ... comandos iniciais ... }
begin
{ ... bloco 1 ... }
end;
begin
{ ... bloco 2 ... }
end;
{ ... comandos finais ... }
end;
Registro
var
nome_registro : record
campo : tipo;
end;
ou
4932
32
type
nome_registro =record
campo : tipo;
end;
Exemplo
var
CadFunc : record
nome, endereco : string;
cpf : string;
sexo : char;
TemDependentes : boolean;
end;
4933
33
5
Modularizao
4934
34
Para construirmos grandes programas, necessitamos fazer uso da tcnica de
modularizao. Esta tcnica faz com que dividamos um grande programa em
pequenos trechos de cdigo, onde cada qual tem uma funo bem definida.
Assim, alm da facilidade em lidar com trechos menores, ainda podemos fazer
uso da reutilizao de cdigo, j que estes trechos devem ser bem
independentes.
Assim, definimos mdulo como um grupo de comandos, constituindo um
trecho de algoritmo, com uma funo bem definida e o mais independente
possvel em relao ao resto do algoritmo.
A maneira mais intuitiva de trabalharmos com a modularizao de problemas
definir-se um mdulo principal de controle e mdulos especficos para as
funes do algoritmo. Mdulos de um programa devem ter um tamanho
limitado, j que mdulos muito grandes so difceis de serem compreendidos.
Os mdulos so implementados atravs de procedimentos ou funes.
Sintaxe de definio de um procedimento
Procedimento Nome_Procedimento [ (parmetros) ];
declare
< variveis locais >
incio
comando 1;
comando 2;
comando n;
fim
Os parmetros podem ser passados por valor ou por referncia. Um
parmetro passado por valor, no pode ser alterado pelo procedimento. Os
parmetros por referncia so identificados usando-se a palavra VAR antes de
sua declarao
4935
35
Os valores passados como parmetros na chamada de um procedimento,
devem corresponder sequencialmente ordem declarada.
A funo semelhante ao procedimento, todavia sua diferena consiste no fato
de que um procedimento no retorna valor quando chamado para execuo,
enquanto que a funo retorna um valor.
Definio de uma funo:
Funo Nome_Funo [ (parmetros) ] : valor_retorno;
declare
< variveis locais >
incio
comando 1;
comando 2;
comando n;
fim
Chamada da funo:
Nome_Funo (<lista de parmetros>);
Ou
Varivel Nome_Funo (<lista de parmetros>);
Procedimentos e funes so blocos de cdigo (rotinas) em Object Pascal que
podem ou no receber parmetros (valores) para processamento. Uma vez
definida a rotina pode-se ativa-la de diversas partes do programa atravs de
seu nome.
A grande diferena entre as formas de definio destas rotinas (se
procedimentos ou funes) est no fato de que:
Procedimento - NO retorna valor.
Funo - Retorna valor.
4936
36
Declarao e Ativao de Procedimento
Podemos declarar um procedimento da seguinte maneira maneira:
Dentro da clusula private ou public, defina a declarao do procedimento:
procedure Soma(X, Y: String);
Com o cursor posicionado na mesma linha, pressione: CTRL+SHIFT+C e
perceba que o prprio Delphi realiza a construo do procedimento dentro da
clusula implementation. Esse recurso chamado Class Completion. Nossa
tarefa apenas definir o cdigo a ser realizado pelo procedimento.
procedure TForm1.Soma(X, Y: String);
begin
Label1.Caption := FloatToStr(StrToFloat(X)+StrToFloat(Y));
end;
Supondo a existncia de dois componentes Edit, um componente Button e um
componente Label, este cdigo pode ser ativado da seguinte forma:
procedure TForm1.Button1Click(Sender: TObject);
begin
Soma(Edit1.Text, Edit2.Text);
end;
Declarao e Ativao de Funes
A construo de funes tem o mesmo raciocnio diferindo na caracterstica de
retorno da funo.
Podemos declarar um procedimento da seguinte maneira maneira:
Dentro da clusula private ou public, defina a declarao da funo:
function Subtrai(X, Y: String): String;
Observe que agora, depois dos parmetros h um tipo de definio de retorno
da funo (String).
Pode-se utilizar a mesma dica de construo do procedimento, na linha da
declarao tecle CTRL+SHIFT+C (Class Completion) e perceba que o prprio
Delphi realiza a construo da funo dentro da clusula implementation.
4937
37
Nossa tarefa apenas definir o cdigo a ser realizado pela funo.
function TForm1.Subtrai(X, Y: String): String;
begin
result := FloatToStr(StrToFloat(X)-StrToFloat(Y));
end;
A palavra reservada result o recurso usado pela Object Pascal para
estabelecer o retorno da rotina. No se deve declarar esta varivel,
ela declarada no momento da utilizao da funo.
Supondo a existncia de dois componentes Edit, `um' componente
Button e um componente Label, esta funo pode ser ativada da
seguinte forma:
function TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption := Subtrai(Edit1.Text, Edit2.Text);
end;
Neste caso, o Label recebe o result de subtrai, ou seja, a subtrao dos dados
passados nos parmetros.
4938
38
6
Orientao a Objetos
- Eventos
4939
39
Conceito de Programao Orientado a Objeto
Para compreendermos melhor a novo ambiente de desenvolvimento da Borland
o Delphi necessrio que voc, aprenda e, tenha em mente os conceitos de
POO (Programao Orientada a Objetos), no confunda os conceitos com POE
(Programao Orientada a Eventos) muito difundido com o Access 2.0

(um
ambiente baseado em Objetos), mas ao longo deste captulo voc vai notar as
sensveis diferenas que existem entre esses dois conceitos.
A POO e a POE so facilmente confundidas, mas lembre-se a POO contm a
POE mas a POE no contm a POO, um objeto pode existir mesmo que no
exista nenhum evento associado a ele, mas um evento no pode existir se no
houver um objeto a ele associado. Outra caracterstica que pode causar
confuso so ambientes Orientados a Objetos e ambientes Baseados em
Objetos. Em ambiente Orientado a Objetos consegue-se criar e manipular
objetos enquanto que o Baseado em Objetos no possivel a criao de
objetos apenas a sua manipulao.
A POO um conceito desenvolvido para facilitar o uso de cdigos de
desenvolvimento em interfaces grficas. Sendo a Borland, uma das primeiras a
entrar neste novo conceito, possui suas principais linguagens de programao
(tais como Object Pascal e C++), totalmente voltadas para este tipo de
programao. A POO atraiu muitos adeptos principalmente pelo pouco uso de
cdigo que o projeto (diferente de sistema) carrega no programa fonte, ao
contrrio das linguagens mais antigas como o Clipper'87

muito utilizado no
final da dcada de 90 e incio da dcada de 90. O resultado desta limpeza" no
cdigo resulta que a manuteno do projeto torna-se muito mais simples.
Antes de comearmos a falar realmente de linguagem orientada a objetos e
necessrio que voc possua os conceitos bsicos da orientao a objetos, so
eles:
Objeto - Um objeto uma instancia de uma classe, ou
uma varivel do tipo de dado definido pela classe. Os
objetos so entidades reais. Uma janela por exemplo,
um objeto de uma casa, de um carro ou de um software
com interface grfica para o usurio.
Atributos - So as caractersticas do objeto, como cor e
tamanho, a janela, por exemplo, tem atributos como o
modelo, tamanho, abertura simples ou dupla, entre outros.
Encapsulao - um mecanismo interno do objeto escondido" do
usurio. Uma pessoa pode abrir uma janela girando a tranca sem
precisar saber o que h dentro dela.
Ao - a operao efetuada pelo objeto. Todas as janelas, por exemplo,
controlam a iluminao e temperatura ambiente, dependendo do seu
design.
4940
40
Herana
Um objeto novo nem sempre criado do zero. Ele pode herdar"
atributos e aes de outros j existentes. Um basculante herda atributos das
janelas e das persianas.
Polimorfismo
a capacidade de objetos diferentes reagirem segundo a
sua funo a uma ordem padro. O comando abre", por exemplo, faz um
objeto entrar em ao, seja ele uma janela, uma porta ou uma tampa de
garrafa.
Classe
Uma classe um tipo de dado definido pelo usurio, a qual tem um estado(sua
representao ou dados internos) e algumas operaes (seu comportamento ou
seu mtodos).
Encapsulamento
Uma classe pode ter qualquer quantidade de dados e qualquer nmero de
mtodos. Entretanto, para uma boa estratgia orientada a objetos, os dados
devem ser ocultos ou encapsulados dentro da classe que os est usando.
Delphi Language
Para melhor compreendermos o que seja uma classe, devemos comear
definindo dois elementos fundamentais na codificao de um software. So as
estruturas de dados, ou seja, reas de memrias utilizadas para armazenar os
dados usados por nossos programas, e os trechos de cdigo que manipulam
estas estruturas. Essencialmente, uma classe nada mais do que uma
estrutura que conter dados e cdigos que manipular estes dados.
O Delphi se baseia nos conceitos de POO e, em particular, na definio de
novos tipos de classes. O uso de POO parcialmente implantado pelo ambiente
de desenvolvimento visual, porque para cada formulrio definindo em tempo de
projeto, o Delphi define automaticamente uma nova classe. Alm disso, cada
componente colocado visualmente em um formulrio um objeto de um tipo
de classe disponvel ou includo na biblioteca do sistema.
Como acontece em outras linguagens de POO mais modernas (entre elas o
J ava e o C#), no Delphi uma varivel tipo classe no fornece o armazenamento
4941
41
Do objeto, mas apenas um ponteiro ou uma referncia para o objeto na
memria. Antes de usar o objeto, voc deve alocar memria para ele criando
uma instncia nova ou atribuindo uma instancia existente para a varivel.
Var
Objeto1, objeto2: TMinhaClasse;
Begin
// Atribui um objeto recm-criado
Objeto1 : TMinhaClasse.Create;
// atribui a um objeto existente
Objeto2 := ObjetoExistente;
A chamada de create invoca um construtor-padro disponvel para acada
classe, a menos que a classe o redefina. Para declara um novo tipo de dados de
classe no Delphi, com alguns campos de dados locais e alguns mtodos, voc
usa a sintaxe a seguir:
Type
TData = class
Ms, Dia, Ano: Integer;
Procedure SetValue (m,d,a: I nteger);
Function LeapYear: Boolean;
End;
Um mtodo definido com a palavra-chave function ou procedure,
dependendo de ele ter ou no valor de retorno. Na definio de classe, os
mtodos s podem ser declarados. Em seguida, eles devem ser definidos na
parte de implementao (implementation) da mesma unidade (Unit).
Function Tdate.LeapYear: Boolean;
Begin
// chama isleapYear em SysUtils.pass
Result := IsLeapYear(Year);
End;
4942
42
A seguir apresentado como voc pode usar um objeto da classe defininda
anteriormente:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TData = class
Mes, Dia, Ano: Integer;
procedure SetValue (m, d, y: Integer);
function LeapYear: Boolean;
End;
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
m, d, a : Word;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses DateUtils;
{$R *.dfm}
{ TData }
function TData.LeapYear: Boolean;
begin
Result := IsLeapYear(ano);
end;
procedure TData.SetValue(m, d, y: Integer);
begin
Mes := m;
Dia := d;
Ano := y;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Aday: TData;
begin
// Cria o Objeto;
Aday := TData.Create;
Try
Aday.SetValue(1,1,2000);
If Aday.LeapYear then
ShowMessage(' Ano Bissexto:' + IntToStr(Aday.Ano));
Finally
Aday.Free;
End;
end;
end.
Observe que Aday.LeapYear uma expresso semelhante a Aday.Year, embora
a primeira seja uma chamada de funo e a segunda, um acesso direto
4943
43
a dados. Opcionalmente, voc pode incluir parnteses aps a chamada de uma
funo sem parmetros.
Encapsulamento
O conceito de encapsulamento indicado com freqncia pela idia de caixa-
preta" Voc no conhece o funcionamento inteiro: voc s sabe como fazer a
interface com a Caixa-Preta" ou como usa-la, independentemente da sua
estrutura interna. A parte referente a `como usar', chamada de interface da
classe, permite que outras partes de um programa acessem e usem os objetos
daquela classe. Entretanto, quando voc usa objetos, a maior parte de seu
cdigofica oculta. Entretanto, no Delphi h um nvel extr de ocultamento,
realizado por meio das propriedades, como veremos mais adiante.
Private, Protected e Public
Para o encapsulamento com base em classe, a linguagem Delphi tem trs
especificadores de acesso: Private, Protected e Public. Um quarto, Published
para tempo de projeto ou melhor fica em propriedades de um componente e
pode ser comparado ao public.
Private => A diretiva private denota campos e mtodos de uma classe, os
quais no so acessveis fora da unidade(unit) que declara a classe.
Protected => usada para indicar mtodos e campos com visibilidade
limitada. Apenas a classe atual e suas subclasses podem acessar elementos
protected. Mais precisamente, apenas a classe, as subclasses e o cdigo da
mesma unidade da classe podem acessar os membros protegidos.
Public => Denota campos e mtodos que so livremente acessveis por meio
de qualquer parte de um programa, assim como na unidade na qual eles so
definidos.
Em geral, os campos de uma classe devem ser privados e os mtodos
normalmente so pblicos.
Como exemplo, considere esta nova verso da classe TData:
4944
44
unit Dates;
interface
uses
SysUtils;
type
TDate = class
private
fDate: TDateTime;
procedure SetDay(const Value: Integer);
procedure SetMonth(const Value: Integer);
procedure SetYear(const Value: Integer);
function GetDay: Integer;
function GetMonth: Integer;
function GetYear: Integer;
public
procedure SetValue (y, m, d: Integer); overload;
procedure SetValue (NewDate: TDateTime); overload;
function LeapYear: Boolean;
function GetText: string;
procedure Increase;
property Year: Integer read GetYear write SetYear;
property Month: I nteger read GetMonth write SetMonth;
property Day: Integer read GetDay write SetDay;
end;
implementation
uses
DateUtils;
procedure TDate.SetValue (y, m, d: Integer);
begin
fDate := EncodeDate (y, m, d);
end;
function TDate.GetText: string;
begin
Result := DateToStr (fDate);
end;
procedure TDate.Increase;
begin
fDate := fDate + 1;
end;
4945
45
function TDate.LeapYear: Boolean;
begin
// from DateUtils
Result := IsInLeapYear(fDate);
end;
procedure TDate.SetValue(NewDate: TDateTime);
begin
fDate := NewDate;
end;
procedure TDate.SetDay(const Value: Integer);
begin
fDate := RecodeDay (fDate, Value);
end;
procedure TDate.SetMonth(const Value: Integer);
begin
fDate := RecodeMonth (fDate, Value);
end;
procedure TDate.SetYear(const Value: Integer);
begin
fDate := RecodeYear (fDate, Value);
end;
function TDate.GetDay: Integer;
begin
Result := DayOf (fDate);
end;
function TDate.GetMonth: Integer;
begin
Result := MonthOf (fDate);
end;
function TDate.GetYear: Integer;
begin
Result := YearOf (fDate);
end;
end.
4946
46
unit DateF;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs, Dates, StdCtrls;
type
TDateForm = class(TForm)
BtnIncrease: TButton;
EditYear: TEdit;
EditMonth: TEdit;
EditDay: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BtnRead: TButton;
BtnWrite: TButton;
procedure BtnIncreaseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure BtnReadClick(Sender: TObject);
procedure BtnWriteClick(Sender: TObject);
private
TheDay: TDate;
public
{ Public declarations }
end;
var
DateForm: TDateForm;
implementation
{$R *.DFM}
procedure TDateForm.FormCreate(Sender: TObject);
begin
TheDay := TDate.Create;
TheDay.SetValue (2003, 12, 25);
end;
procedure TDateForm.BtnIncreaseClick(Sender: TObject);
begin
TheDay.Increase;
end;
procedure TDateForm.FormDestroy(Sender: TObject);
begin
TheDay.Free;
end;
procedure TDateForm.BtnReadClick(Sender: TObject);
begin
EditYear.Text := IntToStr (TheDay.Year);
EditMonth.Text := IntToStr (TheDay.Month);
EditDay.Text := IntToStr (TheDay.Day);
end;
4947
47
procedure TDateForm.BtnWriteClick(Sender: TObject);
begin
TheDay.SetValue (StrToInt (EditYear.Text),
StrToInt (EditMonth.Text), StrToInt (EditDay.Text));
end;
end.
Eventos
Os programas feitos em Delphi so orientados a eventos. Eventos so aes
normalmente geradas pelo usurio. Ex.: Clicar o mouse pressionar uma tecla,
mover o mouse etc. Os eventos podem ser tambm gerados pelo windows.
Existem eventos associados ao formulrio e cada componente inserido neste.
Exemplos:
- Ao formulrio est ligado on create, que ocorre quando mostramos o
formulrio na tela.
- Ao componente boto est ligado o evento on click, que ocorre
quando damos um click com o mouse sobre o boto.
-
Eventos comuns ao formulrio e aos componentes.
Alguns eventos ligados tanto ao formulrio quanto aos componentes esto
listados a seguir.
OnClick: ocorre quando o usurio clica o objeto.
OndblClick: ocorre quando o usurio da um duplo clique.
OnKeyDown: ocorre quando o usurio pressiona uma tecla enquanto o
objeto tem foco.
OnKeyUp: ocorre quando o usurio solta uma tecla enquanto o objeto
tem o foco.
OnKeyPress: ocorre quando usurio da um clique numa tecla ANSI.
OnMouseDown: ocorre quando o usurio pressiona o boto do mouse.
OnMouseUp: ocorre quando o usurio solta o boto do mouse.
OnMouseMove: ocorre quando o usurio move o ponteiro do mouse.
Rotinas que Respondem a Eventos
Cada evento gera uma procedure, aonde voc deve inserir as linhas de cdigo
que envolvem este evento. Por exemplo, o evento OnClick, que gerado ao
clicarmos em um boto chamado BTNSair, cria a procedure:
4948
48
Procedure TForm1.BTNSairClick(Sender: Tobject);
onde Tform1 o objeto Tform que contm o boto BTNSair, e Sender um
objeto Tobject que representa o componente que deu origem ao evento.
Se voc quiser inserir uma rotina que trate um determinado evento de um
componente, faa o seguinte:
clique sobre o componente;
no Object Inspector, seleciona a pgina Events;
d um duplo clique sobre o evento para o qual quer inserir o cdigo;
entre no editor de cdigo e escreva as linhas de cdigo.
Exemplo:
Procedure TForm1.BTNSairClick(Sender: Tobject);
begin
Form1.Close;
end;
Obs.: Escreva seu cdigo entre o begin e o end, se por acaso voc quiser
retirar o evento e o componente, retire primeiro os eventos do componente
removendo somente o cdigo que voc colocou e depois o componente; os
resto dos procedimentos o DELPHI tira para voc.
Propriedades
Como vimos, eventos podem estar associados a modificaes em propriedade
de componente e formulrio, ou seja, voc pode modificar propriedades de
formulrios e componentes durante a execuo do sistema. Para isto voc
dever usar a sintaxe:
<componente>.<propriedade>;
Por exemplo, para modificar a propriedade text de uma caixa de edio
Edit1 para Bom Dia" faa:
Edit1.Text := `Bom Dia';
Se a propriedade do componente tiver sub propriedades, para acessa-l, utilize
a seguinte sintaxe:
<componente>.<propriedade>.<subpropriedade>
4949
49
Por exemplo, para modificar a sub propriedade Name referente a propriedade
fonte, de uma caixa de edio Edit1, para `Script', faa:
Edit1.Font.name := `Script';
Obs.: Verifique o tipo da propriedade para antes de mandar o valor,
consultando no Objetc I nspector.