Escolar Documentos
Profissional Documentos
Cultura Documentos
Tutorial Delphi
Tutorial Delphi
Rede de projetos do
Laboratrio de Tecnologias Intelectuais Lti
TUTORIAL DELPHI
Autor:
Edberto Ferneda
Programao Orientada
a Objetos
POO
1
Orientao a Objetos
O termo orientado a objetos tem sido to usado 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 linguagem 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.
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-se a essas, vrias outras caractersticas 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.
Objeto
Estado
Comportamento
Carro
Velocidade atual,
modelo, marca
Gato
Caneta
Toca-fitas
marcha,
acelera,
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.
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
O contedo deste documento de responsabilidade de seus autores.
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.
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
O contedo deste documento de responsabilidade de seus autores.
por
exemplo,
pode
acrescentar
novos
mtodos
como
Delphi e a POO
Para se definir uma classe no DELPHI deve-se empregar a seguinte sintaxe:
type
classe = class(superclasse)
atributos
mtodos
end;
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:
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.
O contedo deste documento de responsabilidade de seus autores.
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
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.
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).
O contedo deste documento de responsabilidade de seus autores.
Self
A clusula self, na procedure AtualizarDados, indica que o atributo referenciado o
da classe, e no a varivel passada como parmetro.
2
Object Pascal
Comentrios
Como ponto inicial, voc deve saber como fazer comentrios em seu programa
Pascal. O Delphi suporta trs tipos de comentrios:
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 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;
integer = 10;
Pointer = Nil;
String = Alo mamae!;
Double = 3.141579
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!;
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.
O contedo deste documento de responsabilidade de seus autores.
Operador
Smbolo
Atribuio
:=
=
<>
<
>
<=
>=
and
or
not
Comparao
Diferena
Menor
Maior
Menor ou igual
Maior ou igual
e lgico
ou lgico
not lgico
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
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.
Tamanho
Domnio
(em bytes)
Byte
0..255
ShortInt
-128..127
Word
0..65535
SmallInt
-32768..32768
Longint
-2147483648..2147483647
Tamanho
Domnio
(em bytes)
Cardinal
-32768.. 32767
Integer
0.. 65636
Cardinal
0.. 2147483647
Integer
-2147483648.. 2147483647
Tamanho
Domnio
(em bytes)
Single
Real
Double
Extended
10
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.
O contedo deste documento de responsabilidade de seus autores.
Tamanho
Armazenamento
(em bytes)
Boolean
1 byte
ByteBool
1 byte
WordBool
uma palavra
LongBool
Tamanho
Armazenamento
(em bytes)
Char
1 caracter ANSI
AnsiChar
1 caracter ANSI
WideChar
1 caracter Unicode
Tamanho
Armazenamento
(em bytes)
ShortString
255
ANSIChar
AnsiString
at 3 Gb
ANSIChar
255 ou at 3 Gb
ANSIChar
at 1,5 Gb
WideChar
String
WideString
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
...
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.
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;
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.
/* C */
typedef struct {
int i;
double d;
}MyRec;
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);
//
PP1^ := 1998; //
//
Dispose(PP1); //
end.
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;
Ateno
Se uma instruo if possui vrias condies (expresses booleanas) estas devem vir
entre parntesis.
if (x=7) and (y=8) then ...
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:
constantes:
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
ndice:
inicial:
final:
instruo:
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
instruo
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
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;
begin
if HouveReajuste then
ShowMessage(Reajuste);
end;
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);
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.
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 );
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,
Forms, Dialogs;
SysUtils,
Classes,
Graphics,
Controls,
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.
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.
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 UnDeclara
Interface
var B: Integer;
Interface
var A: Integer;
Implementation
uses UnDeclara;
procedure Inicia;
begin
A := 10;
end;
end.
Implementation
uses UnAcessa;
procedure Reset;
begin
B := 0;
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.
O contedo deste documento de responsabilidade de seus autores.
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}
Tipos de Exceo
Os principais tipos de exceo da RTL (RunTime Library) do DELPHI, a serem
tratadas nos blocos on ... do so:
Descrio
EaccessViolation
Ocorre quando se tenta acessar uma regio de memria invlida (ex: tentar
atribuir valor a um ponteiro cujo contedo nil).
EconvertError
EdivByZero
EinOutError
EintOverFlow
EinvalidCast
EinvalidOp
EinvalidPointer
EoutOfMemory
EoverFlow
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
Eunderflow
EzeroDivide
Por exemplo, garantir que um arquivo ser fechado mesmo quando ocorrer uma
exceo.
IVGraduaem
Cincia da
Ambiente Integrado de
Desenvolvimento
IDE
3
O Ambiente DELPHI
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.
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
New Form
Open
Reopen
Save
Save As
Save Project As
Save All
Close
Close All
Use Unit
Add to Project
Exit
Edit
Comandos para manipular textos e componentes em tempo de projeto.
Comando
Descrio
Undelete (Undo)
Redo
Cut
Copy
Paste
Delete
Select All
Align To Grid
Bring To Front
Send To Back
Align
Size
Scale
Tab Order
Creation Order
Lock Controls
Add to interface
Search
Localiza texto, erros, objetos, units, variveis e smbolos no Code Editor.
Comando
Descrio
Find
Find In File
Replace
Search Again
Repete a procura.
Incremental Search
Go to Line Number
Find Error
Browse Symbol
View
Apresenta (ou esconde) diferentes elementos do ambiente Delphi e abre janelas do
depurador de cdigo (debugger).
Comando
Descrio
Project Manager
Project Source
Object Inspector
Alignment Palette
Browser
Breakpoints
Call Stack
Watches
Threads
Modules
Component List
Window List
Toggle Form/Unit
Units
Forms
Type Library
SpeedBar
Component Palette
Project
Permite adicionar ou remover novos mdulos em um projeto, bem como compil-lo;
Comando
Descrio
Add to Project
Add To Repository
Compile
Build All
Syntax Check
Information
Web Deploy
Options
Run
Apresenta opes de execuo e depurao do projeto.
Comando
Descrio
Run
Parameters
Register ActiveX
Step Over
Trace Into
Run To Cursor
Program Pause
Program Reset
Add Watch
Add Breakpoint
Evaluate/Modify
Component
Permite a criao ou instalao de novos componentes no DELPHI.
Comandos
Descrio
New Component
Install Component
Install Packages
Configure Palette
Database
Possui ferramentas que permitem criar, modificar e visualizar Consultas e Tabelas de
Banco de Dados.
O contedo deste documento de responsabilidade de seus autores.
Comandos
Descrio
Explore
SQL Monitor
Form Wizard
Tools
Permite visualizar e alterar configuraes de ambiente, modificar a lista de programas
externos ao Delphi.
Comandos
Descrio
Environment Options
Repository
Configure Tools
Image Editor
Database Desktop
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
Help
Ajuda do DELPHI.
Comando
Descrio
Contents
Keyword Search
What's New
Getting Started
Developing Applications
About
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.
O contedo deste documento de responsabilidade de seus autores.
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 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 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.
O contedo deste documento de responsabilidade de seus autores.
4
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.
O contedo deste documento de responsabilidade de seus autores.
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.
O contedo deste documento de responsabilidade de seus autores.
STANDARD
A pgina Standard possui os componentes de interface mais comuns para a
construo de aplicaes Windows95/NT.
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.
WIN32
Os pgina de componente Win32 fornece a maioria dos controles encontrados na
interface Windows 95/98/NT.
O contedo deste documento de responsabilidade de seus autores.
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.
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.
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.
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.
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.
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.
O contedo deste documento de responsabilidade de seus autores.
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.
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.
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.
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.
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.
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
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.
O contedo deste documento de responsabilidade de seus autores.
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.
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).
SAMPLES
Os componentes dessa pgina so exemplos de componentes personalizados. O
cdigo
fonte
destes
componentes
esto
disponveis
no
diretrio
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.
5
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.
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
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.
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.
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.
O contedo deste documento de responsabilidade de seus autores.
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.
O contedo deste documento de responsabilidade de seus autores.
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.
Banco de Dados
6
Delphi com Banco 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.
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.
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.
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.
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;
O contedo deste documento de responsabilidade de seus autores.
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.
TUTORIAL
Sero vistas aqui as etapas para construo de uma aplicao Delphi. Como
exemplo, ser utilizado um sistema comercial simplificado, que utiliza 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, anlise de 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
de um sistema importante.
Toda a papelada gerada durante a anlise do sistema, se bem padronizada, pode
servir como documentao do sistema, e ainda ser um ponto de partida para a
elaborao dos manuais. Dessa forma o seu sistema continuar funcionando caso o
analista ou o programador saia de frias ou arranje outro emprego.
O Sistema
O sistema que ser utilizado como exemplo serve para emisso de notas fiscais. Ele
ter o nome de SisFat, e ter as seguintes atribuies:
Controle de Produtos;
O contedo deste documento de responsabilidade de seus autores.
As Tabelas
As informaes 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
Quantidade
Preo de venda
2
Organizando os Arquivos
Definido o sistema, iremos agora ao computador comear a programar!!! A primeira
coisa a fazer 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, ndices, etc.) dos
diversos tipos de arquivos referentes aos programas (.dpr, .pas, .dfm, etc.). 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.
Passo 1
Na pgina Databases do BDE Administrator selecione a opo New no 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.
O contedo deste documento de responsabilidade de seus autores.
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.
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;
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 aparecer uma caixa de dilogo para que se possa salvar a
tabela em disco. D um nome tabela e clique no boto Salvar.
Ateno
4
Iniciando um Projeto
Ao iniciar o Delphi, apresentado um projeto chamado Project1 j 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.
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
DbFaturamento
TableName
Produto
Name
TbPRODUTO
Active
True
PASSO 4
Acrescente um componente DataSource no Data Module.
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
DadosFaturamento.
Ateno
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 da tabela 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....
Ser apresentada 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.
6
Criando campos virtuais
O recurso de transformar campos em objetos permite que se crie objetos-campo que
no esto ligados fisicamente 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!!!.
O contedo deste documento de responsabilidade de seus autores.
PASSO 2
Na janela que ser apresentada, preencha as seguintes informaes:
Name
Component
Type
Key Fields
Dataset
Lookup key
Result Field
PASSO 2
Na janela que ser apresentada, preencha as seguintes informaes:
Component
Type
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.
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.
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 os 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.
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
&Produtos
OpcaoProduto
&Venda
OpcaoVenda
N1
Sair
OpcaoSair
PASSO 3
Os eventos deste menu sero definidos assim que as janelas correspondentes forem
criadas. Podemos, no entanto, definir 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;
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:
Vendedores
BorderStyle
bsSingle
Name
fmVendedor
Position
poScreenCenter
DadosFaturamento.dsVENDEDOR
Name
DadosVendedor
PASSO 4
Inclua no formulrio um componente DBNavigador.
DadosFaturamento.dsVENDEDOR
Name
ControleVendedor
10
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:
Produtos
BorderStyle
bsSingle
Name
fmProduto
Position
poScreenCenter
DadosFaturamento.dsPRODUTO
Name
DadosProduto
DadosFaturamento.dsPRODUTO
Name
ControleProduto
11
Criando a janela Notas fiscais
O formulrio de entrada de dados das notas fiscais ter as seguintes propriedades:
Notas Fiscais
BorderStyle
bsSingle
Name
fmNotaFiscal
Position
poSreenCenter
12
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.
13
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.