Sunteți pe pagina 1din 94

ETEC PROF MASSUYUKI KAWANO

TUP-SP
TCNICO EM WEB DESIGN
LGICA DE PROGRAMAO

PROGRAMAO INICIAL - DELPHI

INDICE
Paradigmas da Programao ............................................................................................................................... 4
Tipos Simples...................................................................................................................................................... 10
Tipos Enumerados............................................................................................................................................... 10
Tipo Set............................................................................................................................................................... 11
Tipos com Editor de Propriedades ...................................................................................................................... 11
Manipulando Eventos ......................................................................................................................................... 11
PROJETO EM DELPHI......................................................................................................................................... 15
CONVENO DE NOMEAO ......................................................................................................................... 19
COMPONENTES .................................................................................................................................................... 27
Propriedades............................................................................................................................................................ 29
Mtodos................................................................................................................................................................... 30
Mtodos................................................................................................................................................................... 30
Propriedades............................................................................................................................................................ 31
Propriedades............................................................................................................................................................ 32
Crie um formulrio conforme lay-out abaixo.......................................................................................................... 33
A opo Apaga Tudo s poder ocorrer aps confirmao do usurio ................................................................... 33
Propriedades............................................................................................................................................................ 33
Mtodos................................................................................................................................................................... 33
Propriedades............................................................................................................................................................ 34
Propriedades............................................................................................................................................................ 35
Mtodos................................................................................................................................................................... 36
Propriedades............................................................................................................................................................ 36
Mtodos................................................................................................................................................................... 36
Propriedades............................................................................................................................................................ 38
Mtodos................................................................................................................................................................... 38
Propriedades............................................................................................................................................................ 38
CHAMADA DE FORMS ........................................................................................................................................ 52
COMPONENTES (VCL)......................................................................................................................................... 53
TRATAMENTO DE EXCEES ........................................................................................................................ 66
UM POUCO MAIS SOBRE COMPONENTES (VCL) ..................................................................................... 72
Opes................................................................................................................................................................. 73
Valor ................................................................................................................................................................... 73
Significado .......................................................................................................................................................... 73
Principais Eventos............................................................................................................................................... 73
Evento ................................................................................................................................................................. 73
Descrio............................................................................................................................................................. 73
Principais Mtodos.............................................................................................................................................. 74
Mtodos............................................................................................................................................................... 74
Descrio............................................................................................................................................................. 74
Principais Propriedades....................................................................................................................................... 74
Propriedade ......................................................................................................................................................... 74
Descrio............................................................................................................................................................. 74
Opes................................................................................................................................................................. 74
Valor ................................................................................................................................................................... 74
Significado .......................................................................................................................................................... 74
Principais Eventos............................................................................................................................................... 74
Evento ................................................................................................................................................................. 74
Descrio............................................................................................................................................................. 74
Principais Mtodos.............................................................................................................................................. 75
Mtodos............................................................................................................................................................... 75
Descrio............................................................................................................................................................. 75
Principais Propriedades....................................................................................................................................... 75
Propriedade ......................................................................................................................................................... 75
Descrio............................................................................................................................................................. 75
Opes................................................................................................................................................................. 75

Valor ................................................................................................................................................................... 75
Significado .......................................................................................................................................................... 75
Principais Eventos............................................................................................................................................... 76
Evento ................................................................................................................................................................. 76
Descrio............................................................................................................................................................. 76
Principais Mtodos.............................................................................................................................................. 76
Mtodos............................................................................................................................................................... 76
Descrio............................................................................................................................................................. 76
UM POUCO MAIS SOBRE COMPONENTES (VCL) ..................................................................................... 76
Images ..................................................................................................................................................................... 82
StateImages ............................................................................................................................................................. 82
Items........................................................................................................................................................................ 82
ShowButtons ........................................................................................................................................................... 82
ShowLines............................................................................................................................................................... 82
ShowRoot................................................................................................................................................................ 82
ReadOnly ................................................................................................................................................................ 82
Eventos ................................................................................................................................................................... 82
OnEditing................................................................................................................................................................ 82
OnEdited ................................................................................................................................................................. 82
Apndice A - A Linguagem Object Pascal..................................................................................................... 84
Apndice B - DICAS ............................................................................................................................................ 87
Apndice C - INTRODUO ORIENTAO A OBJETOS ..................................................................... 92
REFERNCIA BIBLIOGRFICA ........................................................................................................................... 94

Paradigmas da Programao
"Paradigma uma forma de pensar e perceber o mundo real e determina o que
escolhemos como significativo e o que descartamos ao compreender ou descrever o que existe
ou ocorre no mundo em torno de ns".
A mudana de paradigma uma oportunidade de encontrar novas interpretaes para
antigas questes, bem como, para rever solues tidas como definitivas.

Introduo
Antes de comearmos seria interessante ressaltar que aprender a ser um bom
desenvolvedor envolve mais do que aprender a sintaxe de uma linguagem de programao em
particular, isto porque existem muitos outros aspectos do campo do sw, que tm pouca conexo
com o ato em si de escrever cdigo.
Se voc pode est pensando: "Ora, vamos, eu s quero aprender Delphi", deveria
tambm pensar que a questo aqui que, se voc pretende desenvolver sw por dinheiro ou para
manter-se num emprego, e tem clientes ou chefes esperando que seu sw:
Saia funcionando da caixa,
Seja feito a tempo,
Seja livre de erros e
Seja barato,
Ento, vamos ter que comear por aqui mesmo, comentando sobre
problemas como a crise de sw; o ciclo de vida e a engenharia de sw
porque apenas talento artstico indisciplinado (intuio) no resolve.
Devemos nos lembrar que o objetivo mais direto do desenvolvimento de sw fazer o
produto final satisfazer a especificao dos requisitos. Precisamos portanto, dividir isso em algo
mais tratvel. Algum grupo menor ou mais preciso de objetivos que sejam mais alcanveis e
fceis de lembrar.
Lembre-se de que se tem algo que sempre permanente a mudana. Conforme
sabemos, uma aplicao passar a maior parte de seu ciclo de vida na fase de manuteno. Ento,
importante termos um conjunto de objetivos que transceda a mudana.
Entre outros, os quatro objetivos geralmente excludos da engenharia de software so a
capacidade de modificao, eficincia, confiabilidade e inteligibilidade. Devemos tambm
destacar a ergonomia.

Programao Procedimental
A maior parte dos programadores est acostumada a escrever cdigo que executado
de forma sequencial. Tais programas possuem inicio, meio e fim bem definidos. Tipicamente,
estes programas possuem telas de entradas de dados de algum tipo de processamento com estes

dados de forma sequencial. Esta forma de se programar dita procedimental. A figura 1 ilustra a
sequencialidade encontrada em programas que seguem tal paradigma.

Incio

Entrada de
Dados

Processamento

Fim

Esta forma de programar uma conseqncia direta dos sistemas computacionais


disponveis no passado. Estes sistemas eram compostos por uma CPU responsvel pelo
processamento (mestre) e uma srie de perifricos (escravos), responsveis pela entrada e sada
de dados.
O custo da CPU era nitidamente superior ao de qualquer perifrico e at mesmo ao
custo do trabalho de quem lidava com estes computadores. Consequentemente, todos os sistemas
davam prioridade mxima ao processamento, em relao entrada e sada de dados.
Os programas desenvolvidos visavam normalmente a soluo de problemas de natureza
cientfica, que naturalmente requisitavam mais recursos de CPU do que de entrada e sada de
dados.
A popularizao dos computadores modificou este quadro: as aplicaes comerciais
tpicas dos dias de hoje exigem uma ateno maior dos programadores (e dos sistemas
computacionais) para a entrada e sada de dados.
A hierarquia rgida imposta pela estrutura de menus e a sequencialidade com que os
formulrios so preenchidos pelo usurio impem limitaes srias na qualidade da interao do
usurio com o computador na programao procedimental.
Um exemplo no baseado em eventos

Program Verif_Nome;
Var Nome : String;
Begin
Write ('Digite um nome: ');
Readln (Nome);
If Nome = 'Ze Silva' then

writeln ('Nome bem original cara')


else
writeln ('O que poderia dizer');
End.

Note que o fluxo do programa bem definido. Primeiramente ele pergunta o nome do
usurio. Agora, voc pode esperar que o usurio introduza seu nome, e no precisa se preocupar
com nenhuma outra entrada ou ao que ocorra no ambiente.
Depois que o nome informado, uma instruo if define o que o programa deve fazer
em seguida e o programa termina. A lgica deste programa linear direta e sequencial. O
modelo baseado em eventos no pode utilizar controle de fluxo do incio at o fim, pois o
aplicativo deve manipular todas as aes ou eventos possveis

Programao Orientada a Eventos


Um aplicativo baseado em eventos, na verdade, no faz nada - a no ser que ocorra um
evento. isso mesmo, ele no tem um incio ou final lgico. Ele simplesmente precisa saber
como responde aos diferentes tipos de eventos. Isto no quer dizer que voc no pode ter um
evento que ocorra quando o programa comea ou quando vai se fechar; entretanto, voc precisa
pensar sobre seu modelo de programao de modo diferente.
No exemplo anterior, voc sabia exatamente que aes o usurio executaria - digitar um
nome. Contudo, pense em aplicativo processador de textos baseado no Windows. No h meios
de saber se o usurio digitar uma frase, escolher uma opo no menu ou dar um clique em um
boto, na barra de atalho. Independentemente da ao que o usurio executa, o aplicativo precisa
ser consistente o suficiente para responder ao evento.
A idia bsica por trs da programao dirigida a eventos que alguns eventos
determinam o fluxo do aplicativo. Um programa gasta a maior parte de seu tempo aguardando
eventos e tem cdigo que responde a diversos deles (nem todos, j que normalmente um
programa ignora eventos nos quais no tem interesse). Por exemplo, quando o usurio d um
clique em um dos botes do mouse, ocorre um evento. enviada uma mensagem descrevendo
esse evento para a janela que est sob o cursor do mouse no momento. A aplicao intercepta a
mensagem e chama o mtodo associado ao evento correspondente. Quando o metodo termina, o
programa retorna a um estado de espera.
Como a explanao acima demonstra, eventos so serializados; cada evento
manipulado somente aps o anterior ter sido completado. Quando uma aplicao est
executando cdigo de resposta ao evento (ou seja, no est aguardando um evento), outros
eventos para essa aplicao devem aguardar em uma fila reservada de multitarefa gerenciada
atravs de um manipulador de eventos.

Aes

Sistema

Eventos

Loop de Tratamento dos Eventos

O avano da tecnologia barateou o custo dos sistemas computacionais e introduziu recursos grficos para a
interao com os usurios (GUI- Graphic User Interface).

Uma aplicao que se utiliza de interface grfica, permite que o usurio decida a
seqncia mais apropriada de interao. Esta abordagem muda completamente a forma de se
construir programas.
As interfaces grficas introduziram assim uma forma completamente nova de se
programar. Nesta abordagem, uma aplicao constitui-se de um loop para tratamento de eventos
e de procedimentos associados a eventos especficos. Toda vez que ocorre um determinado
evento, o seu procedimento equivalente executado. Eventos acontecem em decorrncia da
interao do usurio com o sistema, gerados pelo sistema operacional ou ainda gerados na
prpria aplicao. Exemplos de eventos: mover o mouse, pressionar uma tecla, selecionar um
tem de menu, setar o foco para um determinado controle, etc.
A cada ao do usurio corresponde um ou mais eventos enviados para a aplicao.
Estes eventos devem ser identificados e tratados de maneira adequada pelo programa. Esta
abordagem conhecida como programao orientada a eventos.
As interfaces grficas tornaram a interao dos usurios com as aplicaes bastante
atraentes. Em compensao, introduziram uma complexidade enorme do ponto de vista de
programao. Para se ter uma idia, o cdigo em linguagem C no windows para escreve na tela
Al mundo possui cerca de 100 linhas.
Se acrescentarmos a isto o fato de que 80% do cdigo escrito para uma aplicao
consumido na elaborao de interface, fica difcil de massificar a programao em ambientes de
interface grfica.
Felizmente, o paradigma da orientao a objetos consegui esconder do programador a
maior parte da complexidade da programao nestes ambientes.

IDE
O ambiente de desenvolvimento do Delphi composto de vrias partes compondo um
conjunto integrado de janelas que interagem entre si.

Vamos abordar cada uma separadamente:

O FORM DESIGN
Form o termo utilizado para representar as janelas do Windows que compem uma
aplicao. Os forms servem como base para o posicionamento dos componentes, que so
responsveis pela interao entre usurio e mquina.
Para selecionarmos o form devemos clicar (uma vez) em sua rea interna ou na
object inspector, e no simplesmente em seu ttulo.
As caractersticas iniciais do form como tamanho, botes (minimizar, maximizar, fechar,
controle) e cone podem (e sero) ser modificadas atravs de recursos que veremos adiante.

A BARRA DE MENU PRINCIPAL


Como todo programa padro Windows, h uma janela onde esto situados os menus da
aplicao, a barra que contem os menus tambm agrupa outras partes.

A PALETA DE COMPONENTES
Aplicativos orientados a objetos trabalham com elementos que denominamos
componentes. No Delphi, os componentes encontram-se em uma paleta com vrias guias.

Pode-se configurar a ordenao das guias clicando com o boto direito do mouse sobre
qualquer componente e clicar na opo Properties.

OBJECT INSPECTOR
Uma das partes mais importantes da orientao a objeto a possibilidade de definir
caractersticas personalizadas aos componentes.
No Delphi, utilizamos a janela object inspector para realizar esta tarefa.
H uma caixa de listagem1 que permite
a escolha de qual componente dever
ser selecionado.
Duas guias:
Properties Define as propriedades e
valores do Objeto selecionado.

Objeto atual
selecionado

Propriedade

Events Define quais os eventos sero


manipulados pelo desenvolvedor.
Algumas propriedades trazem opes
diferenciadas para alterao.

Valor atual
desta
propriedade

Por exemplo:
1

Componente ComboBox.
9

Caption Permite a insero de uma


string de caracteres.
Color Permite a insero de um dos
valores pr-definidos na caixa de listagem.
BorderIcons Toda propriedade que possui o sinal de + tem a caracterstica de mostrar
subpropriedades. Deve-se clicar no sinal de + para expandir e no sinal de para ocultar.
Icon Exibe um boto de reticncias (...) que dar origem a uma caixa de dilogo.
Os nomes definidos como valores das propriedades na object inspector sero os nomes
usados na construo do cdigo em Object Pascal.
Na parte superior da janela h uma caixa de listagem que permite a seleo de componentes j
inseridos no formulrio. Duas guias (Properties e Events) separam as listas de propriedades e
eventos.
As propriedades so definidas atravs de tipos. Podemos citar no exemplo com o objeto form:

Tipos Simples
So tipos String ou valores numricos definidos ao digitar um valor na frente da
propriedade. Exemplo: Name, Caption, Height e Width entre outros.

Tipos Enumerados
So tipos definidos por uma quantidade limitada de opes que devem ser previamente
selecionadas, no simplesmente definidas pelo usurio.
Exemplo: Cursor, BorderStyle e WindowState entre outros.

10

Tipo Set
Algumas propriedades podem conter mltiplos valores. Um exemplo a propriedade
BorderIcons com o sinal + indicando subpropriedades.

Tipos com Editor de Propriedades


As propriedades que so acompanhadas de um cone de reticncias (...) indicam que
uma janela de dilogo ir auxiliar na escolha de seu(s) valor(es). Exemplo: Icon.

Manipulando Eventos
A guia Events permite o desenvolvedor definir um handler2 em Object Pascal para um
determinado evento que pode ser disparado pelo usurio ou pelo sistema.
Um evento uma ao disparada dentro de uma aplicao orientada a Objeto. Podemos
citar as ocorrncias dos principais eventos que so disponibilizados na maioria dos componentes
em Delphi:
Evento

OnClick
OnDblClick
OnEnter
OnExit
OnKeyPress

Ocorrncia
Quando o usurio clicar uma vez com o boto esquerdo
do mouse sobre o componente.
Quando o usurio d um duplo clique no componente
com o boto esquerdo do mouse.
Quando o componente recebe o foco.
Quando o componente perde o foco.
Quando pressiona uma nica tecla de caractere.

Observe a construo do procedimento criado pelo prprio Delphi:


procedure TForm1.Button1Click(Sender: TObject);

begin
end;

CODE EDITOR
O editor de cdigo responsvel por receber todas as declaraes criadas pelo Delphi e
handlers criados pelo desenvolvedor.
E no ambiente Code Editor que implementamos o algoritmo na linguagem Object
Pascal.
3

2
3

Manipulador de evento
Manipulador de eventos.
11

Code Editor

Name do form
que define uma
nova classe

Code
Explorer

Na janela do editor pode haver uma outra janela denominada Code Explorer. a parte
esquerda da janela, onde podemos ter uma orientao sobre os objetos, procedimentos, funes e
classes utilizadas na aplicao. Para desligar o code explorer clique no pequeno X ao lado da
guia do code editor, para visualiza-lo clique com o boto direito dentro do editor e escolha View
Explorer ou pelo teclado Ctrl+Shift+E.
Uma caracterstica muito importante do Code Explorer que quando inserirmos
componentes no form, a sua declarao feita pelo Delphi de maneira automtica.

Podemos considerar tambm o seguinte fato:


Tudo o que o Delphi escrever, problema dele.
Agora, Tudo o que voc escrever problema seu.

12

Problema no sentido de atualizao de cdigo, como veremos adiante. Quando


alteramos o nome do objeto, deve-se utilizar o mesmo nome nas rotinas implementadas. Agora, o
que o Delphi declarou, ele se encarrega de atualizar.
Pode-se personalizar o Editor atravs do menu Tools | Editor Options.

CODE INSIGHT
Um recurso que vai facilitar nossa vida no momento de desenvolvimento de cdigo o
Code Insight do Code Editor do Delphi.,
Ele atua como um ajudante de complemento junto ao cdigo do desenvolvedor. Por
exemplo, ao digitar o nome de um objeto seguido de ponto (.) abre-se uma listagem de mtodos
e propriedades que podem ser utilizadas neste objeto.
Esta lista pode ser ordenada por nome, clicando com o boto direito dentro da listagem.

No momento de chamada de procedimentos ou mtodos:

Para forar o code insight em determinada situao, utiliza-se:


Ctrl + Barra de Espao - Para complemento de objetos; seus mtodos e
propriedades.
Ctrl + Shift + Barra de Espao Para complemento de parmetros.

13

Prtica 1 - Vamos realizar um pequeno exemplo no Delphi para resultar na execuo


abaixo:

Siga os seguintes passos:


1. Defina para o Formulrio no Object Inspector:
Caption: P, que emoo cara
Name: Form1
2. Insira um boto no formulrio (Ver Guia Standard na Barra de Ferramentas)
3. Defina para o Botao no Object Inspector:
Caption: Ol Pessoal
Name: Btn_Ola
4. D um click duplo no boto e aparecer no editor de cdigo:
procedure TForm1.Btn_OlaClick(Sender: TObject);
begin
end;
5.

Digite o seguinte comando entre o begin / end;


MessageDlg('Ol Pessoal', mtInformation, [mbok], 0);

6. Execute a aplicao (Run).


7. Observe o cdigo gerado
Responda: O que ocorrer se clicarmos no formulrio?

14

PROJETO EM DELPHI
O conceito de projeto em Delphi baseado em um conjunto de arquivos necessrios
para gerar uma aplicao.
Vamos destacar os principais arquivos:
Extenso

.PAS
.DPR

.DFM

Tipo e descrio
Arquivo Pascal: o cdigo-fonte de uma
unidade Pascal, ou uma unidade
relacionada a um formulrio ou uma
unidade independente.
Arquivo Delphi Project. (Contm
cdigo-fonte em Pascal.)
Delphi Form File: um arquivo binrio
(na verso 5 pode ser convertido para
texto) com a descrio das propriedades
de um formulrio e dos componentes
que ele contm.
Delphi Compiled Unit: o resultado da
compilao de um arquivo Pascal.

Criao
Desenvolvimento

Sim.

Desenvolvimento

Sim.

Desenvolvimento

Sim. Todo formulrio


armazenado em um
arquivo PAS e em um
arquivo DFM.

Compilao

Apenas se o cdigo-fonte
no estiver disponvel. Os
arquivos DCU para as
unidades que voc
escreve so um passo
intermedirio; portanto,
eles tornam a compilao
mais rpida.
Normalmente no, mas
eles podem ser
necessrios em tempo de
execuo e para edio
adicional.
Necessrio apenas se
opes de compilao
especiais foram
configuradas.
Exigido apenas se opes
de compilao especiais
foram configuradas.
No. Voc deve exclu-lo
se copiar o projeto em um
novo diretrio.

.DCU

.BMP, .ICO,
.CUR

.CFG

.DOF

.DSK

Arquivos de bitmap, cone e cursor:


arquivos padro do Windows usados
para armazenar imagens de bitmap.

Desenvolvimento:
Image Editor

Arquivo de configurao com opes de Desenvolvimento


projeto. Semelhante aos arquivos DOF.
Delphi Option File: um arquivo de texto
com as configuraes atuais para as
opes de projeto.
Arquivo de Desktop: contm
informaes sobre a posio das janelas
do Delphi, os arquivos abertos no editor
e outros ajustes da rea de trabalho.
Aquivo executvel: o aplicativo
Windows que voc produziu.

Desenvolvimento
Desenvolvimento

Compilao: Ligao
(linking)

.EXE

.~PA

.TODO

Necessrio para
compilar?

Backup do arquivo Pascal


Desenvolvimento
Pode ser ativado ou desativado atravs
do Menu Tools Editor Options - guia
display Item: Create backup file.
Arquivo da lista to-do, contendo os itens Desenvolvimento
relacionados ao projeto inteiro.

No. Esse o arquivo que


voc vai distribuir. Ele
inclui todas as unidades
compiladas, formulrios e
recursos.
No. Esse arquivo
gerado automaticamente
pelo Delphi, quando voc
salva uma nova verso do
cdigo-fonte.
No. Esse arquivo contm
notas para os
programadores.

15

O Delphi possui um mecanismo de gerncia de arquivos de projeto informando os


principais arquivos e seu path. Clique em View Project Manager

A figura acima um exemplo de um projeto inicial, ainda no salvo. O diretrio padro


para criao dos arquivos projects, obviamente devemos definir na gravao pasta e nomes de
arquivos mais especficos.

.PAS E .DPR
Para visualizarmos o cdigo fonte da unidade (.PAS) em Delphi basta selecionarmos o
code editor (F12).
Para visualizarmos o cdigo fonte no arquivo de projeto (.DPR) basta selecionarmos o
menu Project View Source. O arquivo de projeto exibido em uma guia no code editor.
Para fechar a guia basta clicar com o boto direito e escolher close page.

Unidades
Existem trs tipos de unidades: unidades associadas aos formulrios (as mais comuns),
arquivos de unidade usados para armazenar funes e procedures, e arquivos de unidade usados
para construir componentes.
Vamos ver una unidade bsica associada a um formulrio:
Unit Unit1;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs;

16

Type
Tform1 = class(Tform)
procedure FormCreate(Sender: Tobject);
private
{Declaraes privativas}
public
{Declaraes pblicas}
end;
var
Form1: Tform1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: Tobject);
begin
end;
end.

O cdigo acima, junto com o cdigo de arquivo de projeto, tudo de que precisa no
Delphi para criar um executvel que abre uma janela. Ele no far muita coisa nesse ponto, mas
um programa Windows funcional, na sua forma mais simples.
Veja os nomes na clusula uses, do cdigo acima. Trata-se dos nomes de outras
unidades. Se voc decidisse escrever vrias funes e procedures teis, poderia criar sua
unidade, colocar todo seu trabalho til nela e compil-la para uso futuro. Vamos ver as partes
que constitui a unidade:
Cabealho da unidade - Um cabealho de unidade identifica o cdigo como uma unit e
seguido pelo nome.
Interface - Marca o incio da parte unit interface, que usada para declarar variveis,
tipos, procedures, etc. A parte interface determina o que nessa unidade est disponvel para
outras unidades e partes do programa. A parte interface termina com o incio da parte
implementation.

17

Uses - A clusula uses informa ao compilador quais bibliotecas de funes e


procedures precisam ser compiladas no executvel final. O Delphi coloca, automaticamente,
vrias delas l para voc.
Type - A seo de declarao type usada para a criao de tipos definidos pelo
usurio. Esses tipos pode, ento, ser usados para definir variveis.
Especificadores de visibilidade vm aps a clusula type na parte da interface. Os
seguintes especificadores so usados para controlar como os objetos aparecem para outros
programas e objetos:
Private - As declaraes nessa seo so tratadas como pblicas dentro do mdulo, mas
sero desconhecidas e no acessveis fora da unidade.
Public - As declaraes nessa seo so visveis e acessveis fora da unidade.
Var - Usado para declara varveis e variveis de objeto. Em uma unidade de
formulrio, var usado na parte de interface (o Delphi coloca essa declarao para voc) para
declarar o formulrio como uma instncia do objeto Tform. Var tambm usado para declarar
variveis na parte de implementao, assim como em procedures e funes.
Implementation - onde todas as funes e procedures que foram declaradas na parte
interface sero realmente colocadas. Todas as declaraes feitas aqui so privativas da unidade
(no disponveis para as outras unidades).
{$R *.DFM) - Em uma unidade de formulrio. O Delphi insere essa entrada para voc.
Ela liga o formulrio ao seu arquivo.dfm. No remova isso de seu programa, ou voc ter
problemas.
O bloco de cdigo a seguir executado quando seu formulrio criado. Voc deve
colocar aqui, todo o cdigo de inicializao que precise ser executado quando o formulrio
comear a ser carregado. Para criar essa procedure, use o Object Inspector para ver o menu
Events do formulrio e, depois, d um click duplo no evento OnCreate.
End. - o end final, significa o final de sua unidade.
importante manter os cabealhos, as clusulas, etc no lugar correto. O Delphi cuida
muito bem disso para voc, pois ele cria a unidade e o cdigo medida que so feitas alteraes
no formulrio. Voc simplesmente insere seu cdigo na seo correta, conforme for necessrio.

OPES DE PROJETO
O Delphi permite a configurao de vrios itens do sistema atravs do menu Project Options.

18

Forms

Main form - Nesta guia permite a escolha do formulrio principal da aplicao.


Available form - Os formulrios available (disponveis) em caso de criao em tempo de
execuo.

Application

Title - Define um nome para a sua aplicao diferente do nome do arquivo de projeto
(.DPR).
Help file Define o nome do arquivo de Help (.HLP) associado aplicao.
Icon Define o cone utilizado no arquivo executvel. (.EXE)

Compiler

Estas opes permitem especificar uma compilao personalizada, ou seja, cada projeto
pode ser compilado com uma caracterstica.

Linker

Estas opes incluem informaes para a depurao.

Directories/Conditionals

Nesta guia pode-se configurar o diretrio de sada para os arquivos gerados pela
aplicao.

Version Info

Estas informaes podem ser visualizadas no Windows atravs do menu rpido do mouse
no arquivo executvel.

Packages

Os packages permitem um controle de distribuio atravs de DLLs bsicas externas ao


executvel entre outros recursos.

CONVENO DE NOMEAO
A propriedade mais importante de um componente a propriedade Name. ela que define
o nome interno com relao ao cdigo escrito em Object Pascal. Para organizar e facilitar o
processo de desenvolvimento/manuteno do sistema, grande parte dos desenvolvedores
adota uma nomenclatura para tornar o cdigo mais legvel possvel.
O Delphi adota como nomenclatura padro o nome da classe da qual o componente
instanciado e um nmero crescente de acordo com o nmero de ocorrncia deste componente no
form. Exemplo: Button1, Button2, etc... so componentes instanciados da classe TButton .
No obrigatria a utilizao da conveno de nomes utilizados nesta apostila, mas
muito importante fazer uso de uma conveno mais clara possvel.

Exemplo:

19

Nome gerado pelo Delphi


Button1
Edit1
Label1

Objetivo
Sair da aplicao
Receber nome do usurio
Indicar componente Edit

Conveno
BtnSair
EdtNome
LblNome

A Lista de Units
A janela de lista de units permite que voc alterne entre as units que fazem parte do
projeto ativo, sem que elas tenham de estar todas abertas no editor de cdigo. Caso voc
selecione uma unit que no esteja aberta, o Delphi a abrir e mostrar no Code Editor.

Figura 31 A Lista de Units

A lista de units pode ser ativada atravs do menu View, opo Units..., ou atravs do
primeiro cone inferior da SpeedBar ou atravs da combinao das teclas <Ctrl> <F12>.

A Lista de Forms
A janela de lista de forms permite, de forma anloga de lista de units, que voc
alterne entre os forms que fazem parte do projeto ativo, sem que eles tenham de estar todos
abertos. Caso voc selecione um form que no esteja aberto, o Delphi o abrir e mostrar para
edio no Form Designer.

20

A lista de forms pode ser ativada atravs do menu View, opo Forms..., ou atravs do
segundo cone inferior da SpeedBar ou atravs da combinao das teclas <Alt> <F12>.

A Lista de Janelas
A janela de lista de janelas do ambiente, embora menos utilizada do que as de lista de
units e forms, apresenta uma forma rpida de encontrar-se uma janela, que esteja escondida atrs
de muitas outras.

A lista de janelas pode ser ativada atravs do menu View, opo Window List..., ou
atravs da combinao das teclas <Alt> <0>.
Prtica 2 - Exerccio de Gerenciamento de Projetos
1. Finalidade: Demonstrao das diversas forma de Gerenciamento de Projetos
2. Roteiro:
a. Crie uma pasta Aulas Delphi e dentro desta outra Gerencia de Projeto
b. Inicialize o Delphi
c. Insira um Label com Caption 'Formulrio 1'
d. Salve o projeto com Projeto_1 e a unidade com Unit_1. Atravs de:
Opo File Save All do Menu File
Opo File Project AS do Menu File
4 cone superior do Speed Bar (SB) (Projeto)
3 cone superior do Speed Bar (SB) (Unidade)
e. Observe o cdigo de Unit_1
f. Insira novo formulrio ao Projeto
Opo New do Menu File
Opo New Form do Menu File
4 cone inferior do SB
21

g. Salve a unidade com Unit_2


h. Insira novo formulrio ao Projeto utilizando opo diferente da 1.
i. Salve a unidade com Unit_3
Observe que as unidades podem ser selecionadas pelas guias, que <F12> ou o clique no 3
cone inferior do SB alterna entre unidade e formulrio ou utilizando o 1 ou 2 cone inferior
do SB..
j. Salve todo o Projeto
k. Remova a Unit_2 do Projeto
Boto Remove da Opo Project Manager do Menu View
No Project Manager, boto direito sobre o nome do projeto ou unit, opo Remove File ...
Opo Remove from Project do Menu Project
7 cone superior do SB
l. Adicione a Unit_2 ao Projeto
No Project Manager, clicar com boto direito sobre o nome do projeto, opo Add ...
Opo Add to Project do Menu Project
6 cone superior do SB
m. Observando o cdigo do Projeto
Opo View Source do Menu Project - Observe seu nome na Guia de Units
(para fechar utilize boto direito do mouse - Opo Close Page)
n. Atente para a clusula uses e seu cdigo (begin ... end.)
Qual o formulrio que ser criado quando a aplicao for executada?
p. Execute a aplicao e vamos conferir qual o formulrio criado.
q. Feche a aplicao
r. Alterando o formulrio principal do Projeto
Opo Options do Menu Project, observando o nome do formulrio da ListBox Main Form
s. Altere o nome do formulrio principal para Unit_2
t. Observe o cdigo do Projeto e execute-o
u. Torne a Unit_2 disponvel
v. Observe o cdigo do projeto
O que ele nos informa?
w. Feche a Aplicao
x. Abra novamente a aplicao e observe quantos forms so trazidos para voc inicialmente

22

Para ativar os forms que deseja trabalhar, utilize o 2 cone inferior do SB ou View
Project Manager, selecione o form, clique com boto direito e escolha a opo Open.

Modularizao
muito indicado que voc modularize o seu projeto. Isto implica tambm em no
misturar funcionalidades diferentes na mesma unit.
Como assim? Voc no deve colocar strings nem valores constantes diretamente no
cdigo. Isto aumenta o trabalho quando for necessrio alterar determinado valor. Teremos que
procurar em todos os mdulos para saber onde fazemos referncia quele valor. E cuidado para
no confundir com uma mesma constante que possua, por coincidncia, o mesmo valor que a que
estamos procurando.
Para resolver este problema, voc deve criar constantes e atribuir valores a estas
constantes. Mas no defina estas constantes em qualquer unit. Crie uma unit que ir abrigar
somente a definio das constantes do projeto. Voc pode nomear esta unit com qualquer nome,
exceto Const.Pas, porque const uma palavra reservada.

Diretrios
Via de regra, aconselhado utilizar um diretrio para cada projeto Delphi. Isto porque
facilita bastante a identificao dos vrios arquivos.
Um dos pontos mais importantes de um projeto saber quais arquivos so necessrios
para uma compilao completa (build). Quando temos mais de uma aplicao por diretrio, esta
identificao passa a ser um problema.
Exemplo:

C:\Sistema
C:\Sistema\Doc
C:\Sistema\Dados
C:\Sistema\Dll
C:\Sistema\Icones

No perca este objetivo de vista: projeto e organizao so os requisitos mais


importantes para um bom desenvolvimento.
Para aprendermos a depurar um programa, defina uma aplicao conforme o form e
cdigo abaixo:

23

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure SomaNum;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.SomaNum;
var Value1, Value2, Total : integer;
begin
Value1 := StrToInt (Edit1.text);
Value1 := StrToInt (Edit2.text);
Label1.Caption := IntToStr(Value1 + Value2);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SomaNum;
end;
end.

Agora, execute o programa, introduza dois nmeros pequenos, pressione o boto Ok e


observe que o resultado est incorreto. Para descobrir por que, vamos usar o depurador para
percorrer o cdigo e ver o que aconteceu.

Definindo um Ponto de Quebra (BreakPoint)


Um ponto de quebra permitir que o programa seja executado normalmente, at
encontr-lo, e ento o depurador parar na linha em esse ponto foi definido, sem execut-la.

24

Para definir um ponto de quebra, d um duplo clique na mediamiz (a rea cinza


esquerda do cdigo no editor) ao lado da linha para a qual voc quer definir o ponto de quebra,
ou ento tecle <F5> na desejada. Na realidade, esses procedimentos ativam e desativam pontos
de quebra.

O editor de cdigo mostrando a mediatriz com um ponto de quebra assinalado

Execute o programa. digite 4 e 5 e depois pressione o boto Ok. O editor deve aparecer,
mostrando a posio em que o ponto de quebra foi definido, conforme figura 27. Agora o ponto
de quebra tem uma marca verde na mediamiz, mostrando que voc parou neste ponto, e uma seta
verde apontando para a direita aparece na mediamiz, mostrando sua posiao no cdigo. Esta
linha ainda no foi executada, ou seja, a seta verde aponta para a prxima linha de execuo.

O editor de cdigo no modo debug, mostrando o programa interrompido em um ponto de quebra

Voc pode definir pontos de quebra especiais que interrompero a execuo apenas se
certas condies ocorrerem ou em uma passagem por um loop em particular. Isto pode
ser muito til, se seu cdigo falha somente em certas condies ou no meio de um
loop muito grande. Para definir condies ou contagem de passagem, voc usa a opo
de menu Run | Add Breakpoint para acessar a caixa de dilogo Edit Breakpoint.

25

Opes de Depurao
O menu Run do Delphi contm algumas opes de depurao adicionais, que tm
toques de tecla de atalho correspondentes:
Opo
Run (F9)
Step Over (F8)
Trace Into (F7)
Trace to Next Source Line
(Shift F7)
Runt to Cursor (F4)
Show Execution Point
Program Reset (Ctrk F2)

Significado
Compila e executa iu, no modo depurador, continua a executar a partir desse
ponto.
Executa cada linha do cdigo, mas no entra nas chamadas de funes e
procedures.
Permite que o depurador siga o cdigo de uma chamada de funo ou
procedure.
Segue at a prxima linha executvel.
Executa at a posio corrente do cursor, na janela do editor
Coloca o cursor no ponto de execuo corrente.
Finaliza a execuo do programa

Como examinar valores variveis com Sentinelas


Existem duas maneiras de examinar o valor armazenado em variveis: usando
sentinelas e usando o novo recurso ToolTip Expression Evaluation (que j foi discutido
anteriormente).
Uma sentinela permite que voc especifique nomes de varivel que deseja monitorar e
apresentar seus valores numa pequena janela. Para inserir uma sentinela, voc pode pressionar
<Ctrl> <F5> ou selecionar Run | Add Watch para acessar a caixa de dilogo Watch Properties,
conforme a figura. Em uma sentinela, voc pode especificar nomes de varivel e expresses
como Valor1 + Valor2 ou StrToInt(Valor1).

A caixa de dilogo Watch Properties

26

A janela Watch List

Na caixa de dilogo Watch Properties, digite Value1 na caixa de texto Expression. Isto
cria a janela Watch List, onde as variveis controladas e seus valores correntes sero
apresentados, como na figura.
Se a varivel ainda no foi criada ou atribuda, vrias mensagens sero apresentadas,
indicando o status da varivel em que o valor normalmente estaria. A mensagem pode indicar
Process not accessible, o que significa que o cdigo que cria essas variveis no foi iniciado ou
que ele terminou e as variveis foram retiradas da memria.
Voc tambm poderia ver a mensagem Inaccessible here due to optimation, que
normalmente significa que a varivel ainda no foi atribuda. Quando as linhas de cdigo que
tratam da varivel que voc atribuiu uma sentinela so executadas, o valor apresentado na
janela Watch List.

COMENTRIOS
Os comentrios no cdigo fonte so importantes e podem ser feitos atravs dos
seguintes smbolos:
//Comentrio de linha
{ Comentrio de bloco }
(*Comentrio de bloco *)

COMPONENTES
Agora definiremos resumidamente os principais componentes do Delphi, bem como as
suas principais propriedades e eventos. Logicamente, este material no se constitui num manual
dos componentes do Delphi, mas sim visa introduzir o programador nos recursos disponveis.
Antes de iniciarmos as discusses sobre os componentes, iremos nos ater explicao
de algumas peculiaridades das propriedades dos componentes. O primeiro ponto a ser observado,
est no fato de que algumas propriedades s so acessveis em tempo de execuo. Quando
acontecer tal fato, chamaremos ateno a esse respeito.
Finalmente, existem propriedades onde o Delphi incorpora um construtor de valores.
Para estes casos, aparece um boto com reticncias no canto da coluna valor, do Object
Inspector, isto quando a propriedade selecionada. Para abrir o construtor de valores basta um
clique neste boto, ou um duplo clique na propriedade.

27

bom lembrar que ao criarmos uma aplicao, um dos detalhes mais importantes que
devem ser considerados a interface com o usurio. Porque se ela for feia ou difcil de ser
entendida ser mal usada e isto a linha que divide o sucesso do fracasso no ramo de software.
O que se segue uma referncia dos componentes de interface mais utilizados.
Vamos considerar alguns objetos e suas principais propriedades, mtodos e eventos.

Principais Eventos
Os eventos recaem em trs categorias: de Mouse, de teclado, ou de Sistema. A maioria
dos componentes possui um evento padro. Para verificar isso d um duplo clique sobre o
componente no formulrio.Os trs eventos padro so OnChange, OnClick e OnCreate, nesta
ordem.
Se um componente no responder a nenhum deles, significa que ele no possui evento
padro.
Verificao: D um duplo clique na rea do formulrio e ter seu evento padro,
depois faa o mesmo no Label. Insira um Edit e d um duplo clique.
Evento
OnChange
OnClick
OnDblClick
OnEnter
OnExit
OnMouseDown
OnMouseMove
OnMouseUp
OnKeyDown
OnKeyPress
OnKeyUp
OnDragDrop
OnDragOver
OnEndDrag
OnStartDrag

Descrio
Acontece quando o objeto ou seus dados mudam
Clique simples do mouse sobre o componente ou Enter no componente
Duplo clique do mouse sobre o componente
Ocorre quando o componente recebe foco
Ocorre quando o componente perde foco
O boto do mouse pressionado sobre o componente
O ponteiro do mouse passa sobre o componente
O boto do mouse liberado sobre o componente
Uma tecla pressionada. enviado para o componente com o foco de entrada.
Uma tecla de caractere pressionada. Idem
Uma tecla liberada. Idem
O componente est sendo arrastado e solto num local permitido
O componente est sendo arrastado e passa sobre outro componente
O componente est sendo arrastado e solto num local permitido ou no
Acontece quando o usurio comea a arrastar; enviado para o componente que originou
a operao de arrasto.

Principais Mtodos
Mtodo
BringToFront
CanFocus
Create
Destroy
Focused
Free
Hide
SetFocus
SendToBack
Show

Descrio
Coloca o componente na frente dos outros
Determina se o controle pode receber o foco
Cria uma instncia do componente
Destri a instncia. Na verdade, deve-se utilizar o Free
Retorna se o foco est sobre o componente
Destri a instncia e desaloca a memria
Torna o controle invisvel
Faz com que o controle receba o foco
Coloca o componente atrs dos outros
Torna o controle visvel

28

Clear

Limpa o contedo do componente

Objeto Form (Formulrio)


Paleta Standart
Importncia: o principal componente
container pois permite posicionar os demais
componentes em si mesmo.
literalmente a implementao do conceito de
janelas do sistema operacional Windows.

Propriedades
ActiveControl
Align
AutoScroll
AutoSize
BorderIcons
BorderStyle

BorderWidth
Caption
ClientHeight /
ClientWidth
Color
Cursor
DefaultMonitor
Enabled
Font
FormStyle

Height
HelpContext
HelpFile
Hint
HorzScrollBar
Icon
KeyPreview
Left
Menu
Name
PopupMenu
Position

Permite definir qual o primeiro componente a receber foco assim que o formulrio
criado.
Altera o alinhamento e preenchimento do objeto.
Permite habilitar as barras de rolagem.
Determina se o controle ser automaticamente redimensionado.
Determina os cones a serem exibidos na barra de ttulo do formulrio.
Define o estilo da borda do formulrio.
bsDialog Borda no redimensionvel, comum em caixa de dilogo
bsSingle Borda simples e redimensionvel.
bsNone Borda invisvel, no redimensionvel, sem botes de controle.
bsSizeable Borda padro redimensionvel.
Define a espessura da borda.
Indica o rtulo exibido para o componente.
Define a altura e largura da rea cliente.
Define a cor de fundo de um componente.
Indica a imagem exibida pelo ponteiro do mouse quando este ficar sobre o objeto.
Associa o form a um monitor especfico em uma aplicao que utiliza vrios monitores.
Define se o componente est habilitado ou no.
Permite controlar os atributos do texto exibido em um componente.
Determina o estilo do formulrio.
fsNormal Definio padro do formulrio.
fsMDIChild O formulrio ser uma janela-filha de uma aplicao MDI.
fsMDIForm O formulrio ser o formulrio-pai de uma aplicao MDI.
fsStayOnTop O formulrio permanece sobre todos os outros formulrios do projeto,
exceto aqueles que tambm tm a propriedade FormStyle igual a fsStayOnTop.
Define a altura do objeto.
Define o tpico do arquivo help que ser exibido ao pressionar a tecla F1.
Define um arquivo de help especfico.
Permite exibir um texto de auxlio no momento em que o ponteiro do mouse permanece
sobre o controle.
Define o comportamento de uma barra de rolagem horizontal.
Define o cone que ser usado pelo formulrio.
Define se o formulrio deve ou no responder a um pressionamento de tecla, atravs do
evento OnKeyPress, por exemplo.
Define a coordenada da extremidade esquerda de um componente.
Permite escolher entre mais de um componente MainMenu.
Define o nome interno que identifica o componente dentro da aplicao.
Define o componente PopupMenu a ser utilizado pelo objeto.
Permite definir o tamanho e posio de um formulrio no momento em que ele aparece

29

ShowHint
Tag
Top
VertScrollBar
Visible
Width
WindowMenu
WindowState

na sua aplicao.
Define se a string de auxlio deve ou no ser exibida quando o usurio mantm o
ponteiro do mouse sobre um controle.
A propriedade Tag uma varivel do tipo Longint que o Delphi coloca disposio do
usurio, que pode atribuir o significado mais conveniente.
Define a coordenada da extremidade superior de um componente.
Define o comportamento de uma barra de rolagem vertical.
Define se o componente aparece ou no na tela.
Define a largura do objeto.
Permite definir qual o menu responsvel por manipular as janelas-filhas de uma
aplicao MDI.
Define o estado de exibio de um formulrio.

Mtodos
Show
ShowModal
Close

Exibe o formulrio de manipulao no-modal.


Exibe o formulrio de manipulao modal.
Permite fechar o formulrio.

Objeto Button1 (Boto)


Paleta Standart
Importncia: um dos objetos mais utilizados
para confirmar e disparar rotinas associadas.

Propriedades
Action
Anchors

Referencia uma ao definida em um objeto TActionList.


Permite manter a posio relativa do objeto ao objeto parente quando este
redimencionado.
Associa o evento OnClick do objeto ao pressionamento da tecla Esc.

Cancel
Associa ao evento OnClick do objeto ao pressionamento da tecla Enter.

Default
ModalResult
Parent...
TabOrder
TabStop

Propriedade utilizada para encerrar a execuo de um formulrio Modal quando


selecionado um valor diferente de mrNone.
As propriedades Parent permitem que o componente receba a mesma formatao do
objeto proprietrio.
Define a ordem na passagem de foco no momento de pressionamento da tecla TAB.
Define se o foco pra no componente.

Mtodos
SetFocus

Envia o foco do windows para o componente.

30

Objeto Edit (Caixa de edio)


Paleta Standart
Importncia: Um dos principais componentes
para a entrada de dados do usurio do sistema.

Propriedades
AutoSelect
AutoSize
BorderStyle
CharCase
HideSelection
Maxlength
PasswordChar

Define se o texto exibido pelo controle ser selecionado quando este receber o foco da
aplicao.
Para componentes TEdit a propriedade determina se a altura do controle ser
redimensionada quando o tamanho da fonte for alterado.
Determina o tipo da borda do componente.
Determina o se tipo da fonte ser maiscula, minscula ou normal.
Define se o texto perde a seleo ao perder o foco.
Define um limite para a insero de caracteres.
Define qual caractere ser usado para ocultar o texto inserido no componente.
Permite manipular os caracteres inseridos no componente pelo usurio.

Text

Mtodos
Clear
SetFocus

Limpa o contedo da propriedade text.


Envia o foco do windows para o componente.

Exerccio
Confeccione um formulrio conforme esquema abaixo:

Funcionalidade:
1. As caixas de edio e os rtulos s ficaro habilitados se Delphi for digitado na 1 caixa

31

2. O boto Ok s ficar habilitado se o texto das ltimas caixas forem iguais e diferentes de
branco.
Altere as seguintes props do formulrio:
Ctl3D = False, BorderStyle = bsDialog, Height = 225, Width = 280 e Position = poCenter
Faa com que as teclas <Enter> ou <Esc> finalize a aplicao.
Faa as trs caixas de edio ficarem sem texto e que para cada caractere digitado um @ seja
exibido.
Faa com o acesso mnemnico aos rtulos ative a caixa de edio correspondente.
Defina o evento para fechamento do formulrio atravs do clique nos botes
Desabilite o boto Ok, os dois ltimos rtulos e as duas ltimas caixas de edio.

Objeto Label (Rtulo de orientao)


Paleta Standart
Importncia: Orientar o usurio escolha de
componentes bem como sua utilizao.

Propriedades
Alignment
AutoSize

FocusControl
Layout
ShowAccelChar
Transparent
WordWrap

Define o alinhamento da string na rea do componente.


Para componentes TDBText e TLabel, esta propriedade define se o controle ser
automaticamente redimensionado para acomodar o texto.
Define qual o componente receber foco quando o usurio selecionar a combinao de
teclas aceleradoras (atalho) se existir.
Define o alinhamento vertical do texto na rea do componente.
Define se o caracter & ser um literal ou tecla de aceleradora (atalho).
Define se o fundo do componente ser transparente ou no.
Define se o texto poder utilizar o retorno automtico em caso de ultrapassar a largura
definida e se a propriedade AutoSize estiver falsa.

Objeto Memo (Memorando)


Paleta Standart
Importncia: Permite o usurio entrar com
dados do tipo TStrings, compara-se
funcionalidade do software bloco de notas.

32

Exerccio:
Crie um formulrio conforme lay-out abaixo
Para as opes de Adiciona na Posio e Apaga Linha, a Caixa de Edio Linha, deve
ser preeenchida com um valor menor que a da Caixa de Edio Total de Linhas
A opo Apaga Tudo s poder ocorrer aps confirmao do usurio
Antes de Carregar e Salvar Arquivo, verificar se o nome do arquivo foi fornecido na
Caixa de Edio Arquivo
A Caixa de Edio Total de Linhas dever se alterar obviamente toda vez toda vez que
o contedo do memo for alterado e o seu valor no pode ser alterado pelo usurio

Propriedades
Lines
MaxLength
ReadOnly
ScrollBars
WantReturns
WantTabs

Propriedade do tipo TStrings que contm as linhas de texto do componente.


Define o limite mximo de caracteres no componente em sua propriedade Lines.
Define se o componente do tipo somente leitura.
Define se o componente pode trabalhar com barras de rolagem.
Define se a tecla ENTER ser utiliza para quebra de linha.

Define a tecla Tab como tabulao ou mudana de foco. Caso falso podese utilizar CTRL+TAB para produzir o efeito desejado.

Mtodos
LoadFromFile
SaveToFile

Permite carregar um arquivo para a propriedade Lines.


Permite salvar o contedo da propriedade Lines em um arquivo especificado.

33

Objeto CheckBox (Caixa de verificao)


Paleta Standart
Importncia: Permite verificar opes boolenas
pr-definidas ou re-definidas pelo usurio.

Propriedades
AllowGrayed

Define caso verdadeiro, trs estados possveis para o checkbox: checked (ligado),
unchecked (desligado) e grayed (parcial). Caso falso, dois estados: checked (ligado) e
unchecked (desligado).
Define se o componente est ligado ou no, caso tenha apenas dois estados.

Checked
State

Permite definir trs estados se AllowGrayed for verdadeiro.

Exerccio

Confeccionar uma aplicao conforme lay-out abaixo.


Defina o codigo inicialmente prevendo que os CheckBoxs tenham a prop. AllowGrayed = False
e execute. Depois defina o cdigo com essa prop. = True
Funcionalidade: Ao se marcar um item, adicionar 1 na Caixa de Edio Total de Itens
assinalados. E ao se desmarcar um, decrementar o valor desta Caixa.

34

Objeto RadioButton (Boto de radio)


Paleta Standart
Importncia: Permite escolher entre um grupo,
pelo menos uma opo.

Propriedades
Define se o componente est ligado ou desligado.

Checked

Exerccio
Confeccionar uma aplicao conforme lay-out abaixo. Insira primeiro o GroupBox e
depois os botes de rdio. Observe que interessante definir acessos mnemnicos para os
botes.
Funcionalidade: Para Nada a Fazer, tire a marca do boto assinaloado e para O que
Fazer exiba como mensagem o Caption do boto assinalado.

Objeto ListBox (Caixa de listagem)


Paleta Standart
Importncia: Permite o usurio entrar ou
manipular uma lista de dados.

35

Propriedades
Define uma lista de Strings que aparece no componente.

Items
MultiSelect
Sorted

Permite selecionar vrios itens (Strings) no componente.


Define se a lista de Strings ser ordenada ou no.

Mtodos
Clear
LoadFromFile
SaveToFile

Permite limpar o contedo da propriedade Items.


Permite carregar um arquvo para a propriedade Items.
Permite salvar o contedo da propriedade Items para um arquivo.

Objeto ComboBox1 (Caixa de listagem em formato de cortina)


Paleta Standart
Importncia: Permite o usurio entrar ou
manipular uma lista de dados.

Propriedades
Define uma lista de Strings que aparece no componente.

Items
Sorted

Define se os dados sero ordenados.


Define o texto atual da Combobox.

Text

Mtodos
Clear
LoadFromFile
SaveToFile

Permite limpar o contedo da propriedade Items.


Permite carregar um arquvo para a propriedade Items.
Permite salvar o contedo da propriedade Items para um arquivo.

Exemplo:
Insira uma ComboBox num formulrio limpo e defina as propriedades:
Sorted = True, Style = csSimple (redimensione a caixa para poder ver parte dela)
No evento OnKeyPress, defina
If key = # 13 then

// Se teclou <Enter>

Begin
if (ComboBox1.Text <> ) and (ComboBox1.Items.IndexOf(Combox1.Text) < 0) then // no duplic.
ComboBox1.Items.Add(ComboBox1.Text);
ComboBox1.Text := ;
Key := #0;
End;
Assim, toda vez que o <Enter> for teclado, a digitao realizada ser inserida na ComboBox.
36

Exerccio:
Utilizando a figura abaixo, produzir um aplicao que apresente a seguinte funcionalidade:


pressionamento do boto Adicionar, aciona o nome escrito na caixa de texto na ComboBox.

pressionamento do boto Nova, habilita o boto Adicionar, seta o foco da aplicao na Caixa
de texto, desabilita o boto Nova e Excluir.

pressionamento do boto Limpar, limpa o contedo da Caixa de Texto e todos os elementos


da ComboBox.

pressionamento do boto Fechar encerra a aplicao.

No evento click da ComboBox os botes Nova e Excluir ficam habilitados e Adicionar


desabilitado.

Objeto ComboBox1 (Caixa de listagem em formato de cortina)


Paleta Standart
Importncia: Permite o usurio entrar ou
manipular uma lista de dados.

37

Propriedades
Define uma lista de Strings que aparece no componente.

Items
Sorted

Define se os dados sero ordenados.


Define o texto atual da Combobox.

Text

Mtodos
Clear
LoadFromFile
SaveToFile

Permite limpar o contedo da propriedade Items.


Permite carregar um arquvo para a propriedade Items.
Permite salvar o contedo da propriedade Items para um arquivo.

Objeto GroupBox (Caixa de agrupamento)


Paleta Standart
Importncia: Permite agrupar componentes e
estabelecer um ttulo na propriedade Caption.

Propriedades
Align
Caption

Pemite definir um alinhamento no objeto proprietrio.


Define o texto informativo na parte superior do componente.

Objeto RadioGroup (Grupo de botes radio)


Paleta Standart
Importncia: Permite estabelecer um grupo de
botes de radio e manipula-los pela
propriedade ItemIndex.

Propriedades
Items
ItemIndex
Columns

Define os itens disponveis ao usurio.


Define qual dos itens est selecionado.
Define o nmero de colunas para organizao dos componentes.

38

Exerccio 1:
Utilizando-se da interface mostrada na figura abaixo, produzir uma aplicao que apresente a
seguinte funcionalidade:



O Clique no boto OK dever incrementar a quantidade de votos de cada equipe e a


quantidade de entrevistados dos dois sexos.
Sexo um RadioGroup e as demais caixas GroupBox

Exerccio 2:
Defina uma aplicao para conforme o lay-out abaixo.
Linguagem e Verbo so GroupBox
Adjetivo um RadioGroup
Em tempo de projeto ative um boto de cada agrupamento
Alterar o contedo da Caixa de Edio Frase quando qualquer uma das Caixas for alterada.

39

Objeto Panel (Painel)


Paleta Standart
Importncia: Permite agrupar outros objetos e
estabelecer um efeito visual nas aplicaes.

Propriedades
Align
Bevel...
BorderStyle

Define o alinhamento do componente em relao ao seu proprietrio.


Define a caracterstica das bordas (interna e externa) bem como sua
espessura.
Define o tipo da borda.

Exerccio
Utilizando uma Panel como Barra de Status para exibio de Dicas Flutuantes
Insira um Panel no formulrio limpo e defina as propriedades:
Align
= alBottom
Alignment = ta LeftJustify
BevelInner = bvLowered
Caption = (nenhum)
Manipulador para o evento OnClick do Panel digite: Panel1.Caption := Application.Hint
V no Object Inspector e exclua a conexo do Panel com esse manipulador.
Atravs do menu Search | Replace, troque as ocorrncias Panel1Click para DoShowHint.

No manipulador de evento OnCreate do formulrio, digite: Application.OnHint := DoShowHint;


Insira alguns componentes no formulrio e defina dicas atravs da prop. Hint. Seja criativo.
Execute
Observe que sempre que o cursor estiver sobre um dos componentes, a dica aparecer na Barra
de status.
Poder ocorrer algum problema se a dica da Barra de status for muito grande e o componente
tambm utiliza dica instantnea (showHint = True), que geralmente curta.
Para resolver isso, selecione um componente e na prop. Hint defina dica instantnea | dica
flutuante.
Assim, quando o cursor passar sobre o componente, o texto da dica instantnea ser exibida
prximo ao mesmo e o texto da dica flutuante, na linha de status.

40

Objetos MainMenu e PopupMenu (Menu principal e Menu rpido)


Paleta Standart
Importncia: Define os Menus utilizados pelo
usurio pelo boto esquerdo (MainMenu) ou
pelo boto direito (PopupMenu) do Mouse.

Propriedades
Items
Images

Define um novo item de Menu.


Define um objeto do tipo ImageList.

O objeto MainMenu permite a construo de sub-menus atravs de seu construtor


clicando no item com o boto direito e escolhendo a opo Create submenu. Pode-se
tambm excluir ou incluir items aleatoriamente atravs do boto direito no item desejado.
Para criar um separador de menus, utilize o operador de subtrao (-) e confirme
com a tecla Enter.
Diferentes ppeis dos itens de menu
Independentemente da posio deles na estrutura dos menus, h trs tipos fundamentais
de itens de menu:
Comandos: So itens de menu usado para dar um comando, para executar uma ao. Eles no
oferecem nenhuma pista visual.
Definidores de Estado: So itens de menu usados para alternar uma opo entre ligado e
desligado, para mudar o estado de um elemento em particular. Quando h dois estados, estes

41

comandos usualmente tm uma marca de verificao esquerda se estiverem ativos. Neste caso,
selecionar o comando produz a ao oposta.
Itens de Dilogo: So itens de menu que fazem com que uma caixa de dilogo aparea. A real
diferena entre estes e os outros itens de menu que o usurio ter condies de explorar os
possveis efeitos da caixa de dilogo correspondente e de finalmente abort-los atravs do boto
Cancelar da caixa. Esses comandos devem ter uma pista visual, que consiste em trs pontos aps
o texto. Isto no obrigatrio do ponto de vista tcnico, mas to comum que voc no deve
ignorar esta diretriz.
Mudando itens de menu em tempo de execuo
A estrutura de um menu pode mudar numa srie de maneiras, mas as mais importantes
se aplicam a itens individuais. Como por exemplo, quando um comando de menu no pode ou
no deve ser selecionado (Prop. Enabled), usualmente ele assume a cor cinza. Neste caso o
usurio no tem a chance de usar esse comando.
Outra mudana visual o uso da marca de verificao (Prop. Checked), que pode ser
substituda por duas legendas diferente (Prop. Caption) para os dois estados do item, como por
exemplo: Exibir Lista e Ocultar Lista.
Editando um menu com o Menu Designer (MD)
O Delphi possui em editor especial de menus, o Menu Designer. Para invocar esta
ferramenta, coloque um componente de menu num formulrio e d um clique duplo sobre ele ou
na sua propriedade Items ou d um clique com o boto direito do mouse sobre ele e escolha
essa opo.
No se preocupe demasiadamente com a posio do componente de menu do
formulrio, uma vez que isso no afetar o resultado; o menu colocado apropriadamente abaixo
da Barra de Ttulo do formulrio.
Observao: Para ser mais preciso, o formulrio exibe, abaixo de sua legenda, o menu indicado
em sua propriedade Menu, a qual definida por padro to logo voc insira o primeiro
componente de menu principal do formulrio. Se o formulrio tiver mais de um componente de
menu principal, esta propriedade deve ser definida manualmente e pode ser mudada tanto em
tempo de projeto como em tempo de execuo.
Para criar o seu menu dentro do Menu Designer basta escrever o texto dos comandos.
Para se criar menus suspensos de segundo nvel d um clique com boto direito do mouse sobre
o item desejado e selecione o comando Create Submenu ou pressione simultaneamente <Ctrl>
<
>.
Voc tambm pode utilizar as teclas <Insert> e <Delete> para inserir e deletar itens de
menu respectivamente e as setas de direo para navegar entre os itens de menu.
Para adicionar um separador ao menu suspenso, simplesmente insira um hfen como
texto do comando, sendo que o separador no responde ao evento OnClick.

42

Atalhos de Menu
Uma caracterstica comum dos itens de menu que eles contm uma letra
sublinhada, pode ser a 1 ou uma letra do meio. E ao pressionar <Alt> + letra, ativa menu
suspenso correspondente.
Obviamente, cada elemento da barra de menus deve ter uma letra sublinhado diferente.
O mesmo verdadeiro para os itens de menu de um menu suspenso especfico.
Para determinar a letra sublinhada, simples coloque & antes dela na definio do item.
Os itens de menu podem ter tambm teclas de atalho (p.e. <Ctrl> <C>). Para associar
uma tecla de atalho a uma item de menu (menus suspensos as possui) selecione um valor para a
propriedade ShortCut do item atravs das combinaes padres.
Mudando Itens de Menu
Trs propriedades so usadas para modificar um item de menu. Usamos a propriedade
Checked para adicionar ou remover uma marca de verificao dentro do item de menu. A
propriedade Enabled pode usada para dar a cor cinza a um item de menu a fim de que ele no
possa ser selecionado pelo usurio. A ltima a Caption, o texto do item de menu.
Uma quarta operao com item de menu seria a sua remoo ou torn-lo invisvel. Isso
facilmente realizado mudando-se o valor da prop. Visible para False. Sugere-se que voc
evite esta operao, pois o usurio pode confundir-se. prefervel desabilit-lo temporariamente.
Associando Eventos a Itens de Menu
A associao de um evento a um item de menu fita semelhante associao de um
evento a qualquer componente. A nica diferena que ele no visto como um componente,
logo devemos selecion-lo utilizando caixa de seleo do Obj Inspector ou utilizarmos o MD.
Exerccio -1
1. Insira um Label no formulrio e limpe sua legenda
2. Insira um MainMenu com 1 Menu suspenso e este com 3 itens de menu quaisquer.
3. Construa o cdigo para que cada vez que selecionarmos um item de menu, a legenda do label
receba a sua descrio
4. Execute a aplicao e depois remova os compoentes inseridos no formulrio
Exerccio 2:
Confeccione a estrutura de Menu conforme layouts abaixo, observando os nomes dos menus
suspensos e dos itens de menu.
Para obtermos uma janela com melhor aparncia altere a prop Color do formulrio para
clBtnShadow
Viajar

Namorar

Comer

Estudar

Bye Bye

43

Praias
Ctrl P
Montanhas
Florestas
4
Casa da Vov
Regressar

Cinema
Aquilo
Boite
Sof
E Mais Aquilo
Junto com Sogra
No ..

Cobol
Sobre
Assuntos Espec.
Religio

Menus Pop-Up ou SpeedMenus ( com o boto direito do mouse) (Standard)


No Windows comum ver aplicaes que possuem menus locais especiais que voc ativa
dando um clique com o boto direito do mouse. O menu que exibido - um menu pop-up em
termos do Windows - usualmente depende da posio do clique do mouse. Estes menus tendem a
ser fceis de usar, uma vez que agrupam somente os poucos comandos relacionados ao elemento
que est atualmente selecionado.
Para adicionar menus pop-up na sua aplicao, execute algumas operaes simples:
1. Insira um componente PopUpMenu no formulrio
2. Adicione alguns itens de menu ao componente
3. Associe o componente propriedade PopUpMenu do componente desejado
4. E obviamente, adicionar manipuladores de eventos para o OnClick dos itens de menu
Observaes:
A propriedade AutoPop = True faz o menu aparecer atravs do clique do boto direito
sobre o componente.
A propriedade Alignment determina onde o menu se abrir. A parte superior do menu
ser a da posio do cursor do mouse, mas o alinhamento poder ser esquerda ou direita ou
no no centro do componente, dependendo do valor definido nesta propriedade.
O PopUp Menu no deve ter submenus, pois por convenincia, eles devem ser rpidos
e no possuem teclas de acesso mnemmico (Alt + letra).
Podem ter tecla de atalho (propriedade ShortCut). Mas ateno: Mesmo que menu
no esteja associado a nenhum componente e tambm no esteja exibido, as teclas de atalho
estaro disponveis. Neste caso, para no acessar um item com este recurso, devemos desabilitlo.
Um componente de menu suspenso recebe o evento OnPopUp antes que ele seja
exibido. a chance que temos de realizar qualquer preparao em seus itens, como desativar,
ajustar marcas de verificao, etc...

44

ScrollBar (Standard)
Paleta Standart
O componente ScrollBar serve como barra de
rolamento vertical ou horizontal para seleo
e/ou variao de um parmetro.

O usurio pode modificar o valor representado pelo scrollbar de duas formas: clicando
nas setas de incremento/decremento ou diretamente na barra. A primeira ao faz com que o
valor representado sofra uma modificao menor (SmallChange) enquanto a segunda gera uma
maior (LargeChange).
Os limites inferior e superior da faixa de valores vlidos para a ScrollBar so dados por
Min e Max respectivamente. Estes limites representam o valor quando o cursor da barra estiver
em cima ou esquerda (Min) ou em baixo ou direita (Max).
O controle prov fcil e eficiente navegao por longa lista de itens ou grande
quantidade de informao que no podem ser totalmente visualizadas nas suas reas de exibio.
Pode tambm ser usado como entrada de dados ou como mostrador de informaes (valores
numricos).
Principais Propriedades
Propriedade
Kind
LargeChange
Max
Min
Position
SmallChange

Descrio
Define a direo da barra de rolagem
Indica a variao da rolagem feita sem o uso das setas de movimentao
Maior valor do ScrollBar
Menor valor do ScrollBar
Indica a posio atual do srollbar
Indica a variao da rolagem feita com o uso das setas de movimentao

Principais Eventos
Evento
OnChange
OnScroll

Descrio
Disparado quando o contedo da propriedade position alterado pelo usurio, e ocorre
imediatamente aps o OnScroll
Ocorre quando feita a rolagem do ScrollBar

Principais Mtodos
Mtodos
SetParams

Descrio
Modifica os valores das propriedades Position, Min e Max de uma s vez

45

FUNES DE CONVERSO E MANIPULAO


Vamos quebrar nosso estudo sobre os componentes do delphi para falarmos sobre Casting
e Converses de tipos , pois estas funes sero importantes para futuras esplicaes e
atividades.
Como j sabemos, no podemos atribuir uma varivel outra de um tipo diferente. Caso
precise fazer isso, h duas opes. A primeira casting e a segunda utilizar uma funo de
converso de tipos.
Funo

Objetivo

Chr

Converte um nmero ordinal em um caractere ANSI

Ord

Converte um valor do tipo ordinal em um nmero que indica sua ordem

Round

Converte um valor real em um valor inteiro, arrendondando seu valor

Trunc

Converte um valor real em um valor inteiro, truncando seu valor

Int

Retorna a parte inteira do argumento de valor de ponto flutuante

IntToStr

Converte um nmero em uma string

IntToHex

Converte um nmero em uma string com sua representao em hexadec.

StrToInt

Converte uma string em um nmero, levando uma execeo se a string no


representa um nmero inteiro vlido

StrCopy

Copia uma string estilo Pascal em uma string terminada em nulo

FloatToDecimal

Converte um valor de ponto flutuante em registro incluindo sua representao


decimal (expoente, dgito, sinal)

FloatToStr

Converte um valor de ponto flutuante para sua representao string usando


representao padro

FloatToStrF

Converte um valor de ponto flutuante para sua representao string usando a


formatao especificada

StrToFloat

Converte uma string Pascal em um valor de ponto flutuante

TextToFloat

Converte uma string terminada em nulo em um valor de ponto flutuante

DateToStr(Date: TdateTime)

Converte um dado TDateTime em String.

DateTimeToStr(DateTime:
TDateTime)

Converte um dado TDateTime em String.

StrToDate (const S: String)

Converte um dado String em tipo TDateTime.

StrToDateTime(const S:
String)

Converte um dado String em tipo TDateTime

FormatFloat(const Format:
string; Value: Extended):
string

Permite formatar um tipo ponto flutuante retornando uma string.


Edit2.Text := FormatFloat('###,###.00',soma);
Sendo soma uma varivel real.

46

EXEMPLOS:
Armazenar a data e hora atuais em uma varivel
Var
InicioAtual : TDateTime;
Begin
Atual := Now;

Exibir a data e a hora na legenda de Labels


Label1.Caption := DateToStr(Atual);
Label2.Caption := TimeToStr(Atual);

O tipo TDateTime internamente manipulado como tipo Ponto Flutuante.

PROCEDURES E FUNES
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.

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;

47

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.
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.

DECLARAES CRIADAS AUTOMATICAMENTE PELO DELPHI


Se voc um bom observador, percebeu que o Delphi tambm gera as declaraes e
seus respectivos procedimentos quando voc deseja manipular um determinado evento.

CAIXAS DE DILOGO
Podemos utilizar alguns tipos de caixas de dilogo pr-definidas pelo Delphi facilitando
em muito o desenvolvimento pela ferramenta:

48

ShowMessage
A caixa de dilogo ShowMessage declarada internamente pelo Delphi desta forma:
procedure ShowMessage(const Msg: string);

Onde o parmetro Msg um dado String. Exemplo:


ShowMessage(Um texto ou propriedade string ser exibida.);

MessageDlg
A caixa de dilogo MessageDlg declarada internamente pelo Delphi desta forma:
function MessageDlg(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint): Word;

Onde:
const Msg: string

DlgType: TmsgDlgType

Buttons: TMsgDlgButtons
HelpCtx: Longint

uma constante string ou propriedade deste tipo.


mtWarning
Contm um cone exclamao amarelo.
mtError
Contm um cone vermelho de parada.
mtInformation
Contm um cone i azul.
mtConfirmation
Contm uma interrogao verde.
mtCustom
No contm BitMap.
mbYes mbNo mbOK mbCancel mbAbort mbRetry
mbIgnore mbAll mbNoToAll mbYesToAll mbHelp
Define um nmero para o help de contexto. Por padro, zero 0.

O retorno da funo o tipo do boto como mr


Desta maneira pode-se fazer testes lgicos como no exemplo:
if MessageDlg(Deseja sair?, mtConfirmation, [mbYes, mbNo], 0)=mrYes then

49

Application.MessageBox
Uma outra caixa de dilogo o mtodo MessageBox do objeto Application. Esta
funo est definida da seguinte maneira:
function MessageBox(const Text, Caption: PChar; Flags: Longint): Integer;

Onde:
const Text
Caption: PChar

Flags

uma constante string ou propriedade deste tipo.


Define uma string para o ttulo da janela.
Define os botes, cones e a possibilidade de focar um determinado boto.
Os valores para botes so:
MB_ABORTRETRYIGNORE,
MB_OK,
MB_OKCANCEL,
MB_RETRYCANCEL,
MB_YESNO,
MB_YESNOCANCEL
Os valores para os cones so:
MB_ICONEXCLAMATION,
MB_ICONWARNING,
MB_ICONINFORMATION,
MB_ICONASTERISK,
MB_ICONQUESTION,
MB_ICONSTOP,
MB_ICONERROR,
MB_ICONHAND
Os valores para a definio do boto default pode ser:
MB_DEFBUTTON1,
MB_DEFBUTTON2,
MB_DEFBUTTON3,
MB_DEFBUTTON4

O retorno da funo o tipo do boto como id


(IDABORT IDCANCEL IDIGNORE IDNO IDOK IDRETRY IDYES)

Desta maneira pode-se fazer testes lgicos como no exemplo:


if Application.MessageBox('Texto','Ttulo',MB_YESNOCANCEL +
MB_ICONINFORMATION + MB_DEFBUTTON2) = IdYes then

CAIXAS DE ENTRADA
Podemos obter dados do usurio atravs de caixas de dilogo pr-defindas.

InputBox

50

A funo InputBox retorna um tipo String, que dado digitado pelo usurio na sua utilizao.
Sua definio interna a seguinte:
function InputBox(const ACaption, APrompt, ADefault: string): string;

Onde:
const ACaption
APrompt
ADefault

Define o ttulo da janela


Define um rtulo para orientao dentro da caixa.
Define um valor default para a caixa.

Exemplo:
InputBox('Ttulo da janela','Descrio','Valor Padro')

InputQuery
A funo InputQuery retorna um tipo Booleano, o dado digitado pelo usurio ser colocado em
uma varivel do tipo string previamente declarada.
Sua definio interna a seguinte:
function InputQuery(const ACaption, APrompt: string; var Value: string):
Boolean;

Exemplo:
if InputQuery('Ttulo', 'Descrio', aux) and (aux <> '') then

Neste exemplo acima, a janela s retornar verdade se houver algum valor digitado e o usurio
clicar no boto OK, caso contrrio o retorno ser falso.

51

Exemplo
Vamos examinar uma unit e exemplicar os principais conceitos:
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
function Soma(X, Y: String): Integer; //definida pelo desenvolvedor
private
{ Private declarations }
aux: Integer; //varivel privada
public
{ Public declarations }
frase: String; //varivel pblica
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
const MAX = 50; //definio de constante
procedure TForm1.Button1Click(Sender: TObject);
var titulo: String; //variavel local
i: Integer;
begin
if (Edit1.Text <> '') and (Edit2.Text <> '') then
//atribui variavel private - aux o retorno da funo soma
aux := Soma(Edit1.Text,Edit2.Text);
titulo := 'Curso de Delphi'; //atribui varivel local
frase := titulo+' Verso 5'; //atribui variavel public
Form1.Caption := frase; //atribui propriedade Caption do form
ShowMessage('A soma dos valores : '+IntToStr(Aux));
for i:=0 to MAX do
Label1.Caption := IntToStr(i);
end;
function TForm1.Soma(X, Y: String): Integer;
begin
result := StrToInt(X)+StrToInt(Y);
end;
end.

CHAMADA DE FORMS
Uma caracterstica importante da apresentao dos formulrios em uma aplicao, o
fato de ser apresentado como MODAL ou NO-MODAL. H dois mtodos para executar a
visualizao, mas antes vamos entender como isso funciona.

MODAL O foco fica preso no formulrio e no liberado para outro form at que ele
seja fechado. O usurio pode ativar outra aplicao do Windows, mas no poder

52

trabalhar em outra janela daquele programa cuja janela foi aberta como modal (at que
seja fechada).
NO MODAL O foco pode ser transferido para outra janela sem que esta precise ser
fechada.

Entendido este conceito, os mtodos que o Delphi utiliza para apresentar os forms so:
Show para apresentar forms NO-MODAIS, ou ShowModal para apresentar forms
MODAIS.

COMPONENTES (VCL)
Objeto BitBtn (Boto com figuras opcionais)
Paleta Additional
Importncia: Permite inserir figuras para uma
melhor orientao do usurio, alm de funes
pr-definidas.

Propriedades
Glyph
Kind

Define um Bitmap para o componente. (Arquivo com extenso .BMP)


Define o tipo de Bitmap exibido pelo usurio.
bkCustom
Bitmap definido pelo usurio.
bkOk
Boto OK padro, com uma marca de verificao na cor verde e propriedade Default
igual a True.
bkCancel
Boto Cancel padro, com um x na cor vermelha e propriedade Cancel igual a True.
bkYes
Boto Yes padro, com uma marca de verificao na cor verde e propriedade Default
igual a True.
bkNo
Boto No padro, com uma marca vermelha representando um crculo cortado e
propriedade Cancel igual a True.
bkHelp

Boto de auxlio padro, com uma interrogao na cor cyan. Quando o


usurio clica sobre o boto, uma tela de auxlio deve ser exibida
(baseada no cdigo do desenvolvedor).
bkClose
Boto Close padro, com o desenho de uma porta. Quando o usurio clica sobre o
boto, o formulrio a que ele pertence se fecha.
bkAbort
Boto Abort padro, com um x na cor vermelha e propriedade Cancel igual a True.
bkRetry
Boto Retry padro, com uma seta circular verde.
bkIgnore
Boto ignore padro, com o desenho de um homem verde se afastando.

53

ModalResult

bkAll
Boto All padro, com uma marca de verificao dupla na cor verde e propriedade
default igual a True.
Permite encerrar a execuo de um formulrio Modal quando o seu valor for diferente de
mrNone.

Objeto MaskEdit (Caixa de edio com mscara)


Paleta Additional
Importncia: Permite estabelecer uma mscara
para a entrada de dados no componente. Pode
ser considerado literalmente um componente
Edit com mscara.

Propriedades
CharCase
EditMask
PasswordChar

Define o tipo dos caracteres.


Permite definir uma mscara para entrada de dados.
Define um caracter para ocultar a entrada de dados.

A mscara definida na propriedade EditMask ir restringir os caracteres que o usurio


pode entrar numa caixa de edio, isto evita que os usurios entrem com caracteres invlidos ou
com formatos de dados indesejados para um determinado valor.
Mscara de Telefone: !\(9999\)999-9999;1;_
A mscara formada por trs partes: a 1 a mscara propriamente dita, a 2 consiste
num caractere que define se os caracteres ou a mscara devem ser salvos como parte dos dados,
a 3 define o caractere usado para representar espaos em branco na mscara.

Lista dos caracteres utilizados numa mscara


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

Significado na Mscara
Se um ! aparecer na mscara, caracteres em branco no so armazenados como dados
Marca o incio do bloco que deve ser convertido em letras maisculas, para fechar esse bloco esperase o caractere <
Marca o incio do bloco que deve ser convertido em letras minsculas, para fechar esse bloco esperase o caractere >
Define um caractere literal, ou seja, o caractere que segue a barra invertida \ utilizado como
caractere especial, fixo, que pode ser salvo como parte integrante do valor ou no.
Requer a entrada de caractere alfabtico (A-Z, a-z) nesta posio
Permite a entrada de caractere alfabtico (A-Z, a-z) nesta posio, mas no requer
Requer a entrada de caractere alfanumrico (A-Z, a-z, 0-9) nesta posio
Permite entrada caractere alfanumrico (A-Z, a-z, 0-9) nesta posio, no requer
Requer um caractere qualquer nesta posio
Permite um caractere qualquer nesta posio, mas no requer
Requer um caractere numrico (0-9) nesta posio
Permite um caractere numrico (0-9) nesta posio, mas no requer
Permite um caractere numrico, um smbolo + ou -, mas no requer
Usado como separador em dados horrios. Se outro caractere separador definido nos atributos
internacionais do Painel de Controle do seu Sistema, este caractere ser usado ao invs dos dois
pontos

54

/
;
_
<>

Separador de dia, ms e ano. Idem com relao Painel de Controle


Usado para separar as trs partes que formam a mscara
Insere espao em branco automaticamente no texto
Define que as letras maisculas e minsculas sero armazenadas como digitadas

Objeto SpeedButton (Boto para barra de cones)


Paleta Additional
Importncia: Permite ao usurio manipular os
botes individuais ou atravs do conceito de
grupo.

Propriedades
Glyph
GroupIndex
AllowAllUp
Flat
Down

Define um Bitmap para o componente.


Permite agrupar um conjunto de SpeedButtons quando ao serem selecionados, tiverem a
propriedade diferente de zero.
Permite que o componente possa ter o relevo suspenso ao ser clicado. S pode ser
utilizado junto ao conceito de agrupamento.
Define um efeito visual interessante.
Permite determinar qual componente foi pressionado. S pode ser utilizado junto ao
conceito de agrupamento.

Exemplo:

Objeto Image (Imagem)


Paleta Additional
Importncia: Permite inserir uma figura para
uso geral na aplicao.

55

Propriedades
AutoSize
Picture
Stretch

Permite alterar o tamanho do componente baseado no tamanho da figura.


Define a figura a ser exibida.
Permite alterar o tamanho da figura baseado no tamanho do componente.

Mtodos
LoadFromFile

Permite carregar um arquivo de figura na propriedade Picture.

Para trabalhar com imagens jpg, necessrio acrescentar na clusula uses da interface a
biblioteca jpeg.

Possibilita a exibio de uma figura (Bmp)


Propriedade
Picture
Center
Strech
AutoSize

Significado
Definio da figura do tipo BMP, ICO, WMF ou EMF
Centraliza a figura em relao ao Quadro (objeto)
Se True, adequa o tamanho da imagem com relao ao objeto
Se True, adequa o tamanho do objeto com relao a imagem
Contrrio da propriedade Strech

Exerccio

56

Nosso exerccio ir utilizar 3 formulrios que sero exibidos na ordem acima:


1 Tela de Splash, 2 Formulrio de Senha e 3 o Formulrio Principal da Aplicao
1. Comece uma nova aplicao
2. Altere tamanho do formulrio, seu nome para Frm_Princ e dever ser exibido no centro da
tela.
1. Insira mais formulrio, altere suas propriedades para que seja exibido maximizado, sem
borda e com o nome de Splash.
2. Insira um Image nesse formulrio e altere as propriedades Picture, Strech = True e Align =
alClient
5. Em Project Options defina o Splash como disponvel.
6. Altere o arquivo .DPR conforme codificao em negrito abaixo e execute
Application.Initialize;
Splash := Tsplash.Create(Application);
Splash.Show;
Splash.Refresh;
Application.CreateForm(TFrm_Princ, Frm_Princ);
Splash.Release; // Se nao desejar mais ele no fundo
Application.Run;
7. Observe que o Splash no fica na tela e logo o formulrio principal exibido.
Na prtica teramos a exibio do Splash, a execuo de rotinas de inicializao da aplicao
que demandaria algum tempo e quando estas terminassem, o Splash deveria ser apagado e
exibido o formulrio principal.

57

Como no temos rotinas de inicializao, vamos ento, criar um freio, que no exerccio seria a
exibio do formulrio de Senha.
8. Para inserir o formulrio de Senha: Menu File, opo New, Guia Dialog e escolha Password
Dialog
9. Altere os componentes deste formulrio para que fique igual ao exibido acima, com o nome
de Frm_Senha e o defina como disponvel em Project Options.
10. Insira o cdigo abaixo no arquivo .DPR depois do comando Splash.Refresh:
Frm_Senha := TFrm_Senha.Create(Application);
Frm_Senha.ShowModal;
Frm_Senha.Release;
11. Grave e execute a aplicao

StringGrid (Additional)
Utilizado para exibio e edio de uma tabela de strings. A sua apresentao similar
a uma planilha. organizada em linhas e colunas, tendo como elemento bsico as clulas (cells).
Propriedade

Descrio
Clula que est selecionada
Nmero da coluna da clula selecionada
Nmero da linha da clula selecionada
Nmero de colunas (default = 5)
Nmero de linhas (default = 5)
Nmero de colunas fixas
Nmero de linhas fixas
Largura padro das colunas
Altura padro das linhas
Vetor que define a largura das colunas
Vetor que define a altura das linhas
Largura da linha da Grid

Cells
Col
Row
ColCount
RowCount
FixedCols
FixedRows
DefaultColWidth
DefaultRowHeight
ColWidths
RowHeight
GridLineWidth

Referncia a uma clula:


nome da grid.Cells[nmero da coluna, nmero da linha]





StringGrid no permite ordenao


No permite centralizar os contedos nas clulas
Pode-se alterar a largura das colunas, tambm com: ColWidths[0] := valor (1 col)
Pode-se alterar a altura das linhas, tambm com: RowHeights[0] := valor (1 linha)

O StringGrid tem uma propriedade chamada Options, do tipo Set, que permite a
configurao de diversas opes, inclusive a permisso ou no de edio de clulas.

58

Valor
goFixedVerLine
goFixedHorzLine
goVerLine
goHorzLine
goDrawFocusSelected
goRowSizing
goColSizing
goRowMoving
goColMoving
goEditing
goTabs
goRowSelect
goAlwaysShowEditor
goThumbTracking

Descrio
Exibe linhas verticais em colunas fixas
Exibe linhas horizontais em colunas fixas
Exibe linhas verticais
Exibe linhas horizontais
Exibe a clula selecionada em cor de seleo
Permite a mudana de tamanho da linha
Permite a mudana de tamanho das colunas (arrastando as clulas das linhas fixas)
Permite a movimentao de linhas (arrastando as clulas das colunas fixas)
Permite a movimentao de colunas (arrastando as clulas das linhas fixas)
Permite a edio do texto das clulas no fixas
Permite o uso da tecla TAB para a navegao entre as clulas
Seleciona uma linha inteira ao invs da clula corrente
Sempre exibe o editor (somente vlido se goEditing)
Ao usar as scrollbars, o contedo rolado em tempo real

Mscaras de Edio
possvel utilizarmos mscaras de edio para controlar a edio do texto de uma
clula. Para tal, precisamos associar cdigo ao evento OnGetEditMask da seguinte forma:
procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol,
ARow: Integer; var Value: String);
begin
if Acol = 1 then
Value := '##/##/##';
end;
Os caracteres usados para definir as mscaras de edio so os mesmos do componente
TMaskEdit.
Exerccio 1 - Inserindo valores na Grid:
1. Insira no formulrio: um StringGrid, 3 Edits, 3 Labels e um boto "Inserir"
2. No evento OnClick do boto inserir o texto do 3 Edit nas posies especificadas nos outros
dois edits
3. Criticar os valores informados da linha e coluna
Exerccio 2 - Inserindo Ttulos na Coluna e na Linha Fixa:
1. Insira os ttulos para colunas: Seg, Ter, Qua, Qui
2. Insira os ttulos para as linhas: 8:00, 9:00, 10:00, 11:00

59

Exerccio 3 - Recuperando um valor da Grid


1. Insira um Edit e um boto "Recuperar"
2. No evento OnClick do boto fazer o Edit receber o valor da clula selecionada
Exerccio 4 - Uma pequena Aplicao:
1. Insira um StringGrid com 3 colunas e 2 linhas, 3 edits, 3 Labels e um boto "Inserir"
2. Defina "Nome", "Telefone" e "E-mail" para os Labels e Colunas
3. No Evento OnClick do boto inserir os contedos dos edits no StringGrid
4. Realizar as devidas crticas e controles para perfeita funcionalidade.

Objeto - PageControl
Paleta Win32
Importncia: Permite definir guias para agrupar
os demais componentes.
Cada guia representa um componente
TabSheet do tipo TTabSheet, uma espcie de
sub-objeto do PageControl.

Propriedades
ActivePage

Permite determinar qual a guia foi selecionada pelo usurio.

Para criar novas pginas, clique com o boto direito no componente PageControl e
escolha New Page.

Objeto OpenDialog (Caixa de dilogo para abertura de arquivos)


Paleta Dialogs
Importncia: Permite utilizar uma caixa de
dilogo pronta com recursos padronizados pelo
sistema operacional.

60

Propriedades
DefaultExt

Especifica a extenso a ser adicionada ao nome de um arquivo quando o usurio digita o


nome de um arquivo sem a sua extenso.
Define o arquivo selecionado no componente.
Permite definir as mscaras de filtro de arquivo a serem exibidas.
Define o filtro default a ser exibido na lista drop-down que define os tipos de arquivos
selecionveis.
Define o diretrio default quando a caixa de dilogo aberta.
Neste componente, options define uma srie de valores booleanos.
Define o ttulo da caixa de dilogo.

FileName
Filter
FilterIndex
InitialDir
Options
Title

Os componentes da paleta dialogs so executados atravs do mtodo execute. Este


mtodo uma funo que retorna um valor booleano, assim para exibir uma caixa de
dilogo, podemos escrever:
if OpenDialog1.Execute then

Se o usurio escolher algum arquivo e confirmar a caixa, execute retorna verdadeiro, caso
contrrio, falso.

Objeto RichEdit (Texto com formatao)


Paleta Win32
Importncia: Permite formatar o texto
(Negrito, Itlico, Sublinhado, Fontes, etc...)
para a leitura de outros editores compatveis
com o padro RTF.

Propriedades
Lines
WantReturns
WantTabs
WordWrap

Define o texto exibido no componente.


Define a tecla Enter como quebra de linha.
Define a tecla Tab como tabulao ou mudana de foco. Caso falso pode-se utilizar
CTRL+TAB para produzir o efeito desejado.
Define a quebra de linha automtica de texto.

Mtodos
Clear
LoadFromFile
SaveToFile

Permite limpar o contedo do componente.


Permite carregar um arquivo para a propriedade Lines.
Permite salvar o contedo da propriedade Lines em um arquivo.

Objeto ProgressBar (Barra de progresso)


Paleta Win32
Importncia: Permitir ao usurio ter um
acompanhamento de uma rotina demorada.

61

Propriedades
Max
Min
Orientation
Position
Step

Permite definir o valor mximo para a faixa de valores no componente.


Permite definir o valor mnimo para a faixa de valores no componente.
Define se o componente dever ser vertical ou horizontal.
Define a posio corrente do controle no componente.
Define o incremento usado na variao do valor da propriedade position.

Objeto Gauge (Barra de progresso)


Paleta Samples
Importncia: Permitir ao usurio ter um
acompanhamento de uma rotina demorada.

Propriedades
Kind
Progress

Permite definir aparncias diferenciadas no componente.


Define a posio corrente do controle no componente.

Objeto Animate (Animaes)


Paleta Win32
Importncia: Permite exibir um filme .AVI
para ilustrar tarefas (rotinas) em andamento.

Propriedades
CommonAVI
Active
Repetitions

Define o AVI a ser exibido.


Liga e desliga a exibio do AVI.
Define um nmero inteiro correspondente ao nmero de repeties. Zero define
repeties indefinidas.

Objeto DateTimePicker (Data e hora atravs de uma Combobox)


Paleta Win32
Importncia: Permite ao usurio escolher uma
data atravs de um componente que possui um
importante impacto visual e facilidade
operacional.

62

Propriedades
CalColors
Date
DateFormat
DateMode
Kind
MaxDate
MinDate

Define as cores do calendrio.


Define a data selecionada no componente.
Define o formato da apresentao da data.
Define o estilo da caixa de listagem.
Define se o componente deve trabalhar com data ou hora.
Define uma data mxima para uma faixa de valores.
Define uma data mnima para uma faixa de valores.

Objeto MonthCalendar (Calendrio mensal)


Paleta - Win32
Importncia: Permite ao usurio escolher uma
data atravs de um componente que possui um
importante impacto visual e facilidade
operacional.

Propriedades
Date
FirstDayOfWeek
WeekNumbers

Define a data selecionada no componente.


Define qual o primeiro dia da semana.
Permite numerar as semanas.

Objeto StatusBar (Barra de status)


Paleta Win32
Importncia: Um dos principais componentes
de informaes sobre operaes gerais no
sistema.

Propriedades
AutoHint
SimplePanel
SimpleText
Panels

Permite exibir o hint do componente automaticamente na barra de status. Se no houver


painis, a barra deve ter a propriedade SimplePanel ligada.
Define que a barra de status ser sem divises.
Define o texto a ser exibido pela barra de status.
Permite a criao e edio de painis na barra de status.
A propriedade SimplePanel deve estar desligada.
Pode-se tambm dar um duplo clique na barra de status.

Ao utilizar a propriedade AutoHint, pode-se definir o hint dos objetos com duas strings
separadas por pipe (|).
63

A primeira string ser utilizada como hint local, a segunda como hint na barra de status.
Inserindo dicas no StatusBar
Para obter esse efeito, so necessrias duas etapas:
1. Inserir componentes no formulrio e definir uma ou duas dicas atravs da propriedade Hint.
2. Escrever o cdigo para evento OnHint do componente ApplicationEvents
Praticando:
1. Insira alguns componentes no formulrio e defina a prop. Hint dos mesmos.
J vimos que a dica instantnea do componente pode ser = ou <> do StatusBar.
2. Insira o componente ApplicationEvents
3. Defina o cdigo abaixo no seu evento OnHint:
procedure Tform1.ApplicationEvents1Hint (Sender : TObject);
begin
Statusbar1.Panels[0].Text := Application.Hint;
end;

Inserindo Data e Hora no StatusBar


Voc utilizar as funes que manipulam data e hora no Object Pascal.
Mesmo utilizando essas funes devemos nos planejar como e quando a data e a hora
sero atualizadas para serem exibidas.
A forma mais fcil para realizar tal controle inserir no formulrio um componente
Timer (paleta System) e configurar sua prop. Interval (Default = 1000 milissegundos = 1
segundo) que a frequncia do intervalo de tempo das ocorrncias do evento OnTimer do
comp. Timer.
Logo, o cdigo desse evento deve recuperar a data e/ou a hora do sistema e depois
exib-las no StatusBar.
procedure TForm1.Timer1Timer (Sender : TObject);
{ variveis que recebero Data e hora do Sistema }
var
Data_Hora : TDateTime; // Tipo float que armazenar a data + a hora
Data_Sys : TDate;
Data_Hora : TTime;
begin
{Recuperando a data e a hora do sistema}
Data_Hora := Now;
Data_Sys := Date;
Hora_Sys := Time;
{Exibindo Data e Hora }

64

StatusBar1.Panels[0].Text := DateToStr(Data_Hora);
StatusBar1.Panels[1].Text := TimeToStr(Data_Hora);
{Outra forma de exibio
StatusBar1.Panels[0].Text := DateToStr(Data_Sys);
StatusBar1.Panels[1].Text := TimeToStr(Hora_Sys);
}
{Outra forma de exibio
StatusBar1.Panels[0].Text := DateToStr(Date); // No necessrio criar variveis
StatusBar1.Panels[1].Text := TimeToStr(Time);
end;

Observao:
Se o intervalo for grande (p. ex. 60000 = 1 minuto) para aparecer logo a data e a hora
nos SubPaineis, ative o evento acima dentro do evento OnCreate do formulrio ou, se possvel,
compartilhe este evento com ele.
Se configurarmos a prop. Enabled do componente Time em False, o seu evento
OnTimer no ocorrer.
Dica:
Sempre que voc usar um StatusBar, preencha o resto do formulrio com uma caixa de
rolagem (ScrollBox da paleta Additional) e defina a sua prop. Align para alClient. Caso
contrrio, se o usurio diminuir o formulrio o bastante para que as barras de rolagem
apareo, estas se misturaro com o StatusBar.

Objeto ToolBar (Barra de cones)


Paleta Win32
Importncia: Permite criar barras de cones de
maneira rpida e simples.

Propriedades
Flat
Images
HotImages
ShowCaptions

Define um efeito visual com relevo atravs do mouse nos botes.


Permite definir um objeto do tipo ImageList.
Permite definir um objeto do tipo ImageList a ser usado no momento em que o mouse
passa (ou clica) sobre o componente.
Permite exibir a propriedade caption dos botes.

Para adicionar botes ou separadores na ToolBar, clique com o boto direito sobre o
componente e escolha New Button ou New Separator.

65

Inserindo BitMaps nos botes


1. Acrescentar no formulrio um ou mais componentes ImageList
2. Obviamente carregar os bitmaps no ImageList
3. Associar o ImageList com a prop. Images do ToolBar.
Por padro, as imagens sero atribudas aos botes na ordem em que elas aparecem, mas
voc pode mudar isso facilmente, configurando a prop. ImageIndex para cada boto do
ToolBar.
Pode-se preparar mais componentes ImageList para condies especiais dos botes, e
atribuir a elas as propriedades (DisabledImages ou Images) e HotImages para cada boto do
ToolBar.
O primeiro grupo usado para os botes desabilitados, o segundo para o botes quando
pressionados.
Esse ltimo grupo de imagens usualmente mais vivo, ou seja, deve possuir as imagens
mais vivas que o seu correspondente desabilitado.
Para que as imagens vivas sejam exibidas quando da passagem do cursor do mouse
sobre os botes, defina a propriedade Flat = True, fazendo tambm os botes terem aparncia
plana. Obviamente, associe uma ImageList propriedade HotImages.
No se esquea de definir dicas instantneas para os botes. Se voc definir a
propriedade ShowHint = True (Default = False) daToolBar, a propriedade ShowHint dos botes
tambm ser ajustada para True.

TRATAMENTO DE EXCEES
Quando criamos e executamos nossos programas, estamos sujeitos situaes de erros
em tempo de execuo, a isto denominamos exceo.
As excees devem ser tratadas de maneira a no permitir:
Travar a aplicao
Emitir mensagens tcnicas ao usurio leigo
Deixar o SO instvel
Quando uma exceo ocorre, o fluxo de controle automaticamente transferido para
blocos de cdigo denominados handlers(Manipulador de evento). de excees, definidos atravs
de comandos especficos do Object Pascal.
No Object Pascal, uma exceo uma classe. A definio de excees como classes
permite agrupar excees correlatas. Esse agrupamento feito atravs da prpria hierarquia de
classes, de modo que podemos ter vrias classes dependentes de uma nica.
66

O que ativa o mecanismo de tratamento de erros atravs de excees o uso da


unit SysUtils. Ela permite detectar os erros e convert-los em excees.
A idia das excees tornar os programas mais consistentes ao adicionar a capacidade
de tratar erros durante a execuo (runtime). Um programa pode sobreviver a tais erros ou
terminar de forma suave, permitindo que o usurio salve dados antes de sair.
Em tempo de execuo, o Delphi lana excees quando algo estiver errado. Se seu
cdigo for escrito corretamente, poder reconhecer o problema e tentar resolv-lo; caso
contrrio, a exceo ser passada para o cdigo chamador, e assim por diante. Eventualmente, se
nenhuma parte de seu cdigo tratar da exceo, o Delphi tratar dela, exibindo uma mensagem
de erro padro e tentanto continuar o programa.
O Delphi traz um grande nmero de excees predefinidas pertencentes a RTL
(RunTime Library) - que so largamente utilizadas pela VCL. As excees pertencem a classe
Exception do Delphi

O COMANDO TRY-EXCEPT
Podemos tratar as excees atravs do comando try-except.
Sua sintaxe:
try
<comandos a serem executados>
except
<bloco de exceo>
end; //finaliza o bloco

Os comandos a serem executados so tratados seqencialmente na ordem em que foram criados,


caso no haja alguma exceo o bloco de exceo ignorado. O programa prossegue
normalmente obedecendo aos eventos provocados pelo usurio.
Caso ocorra alguma exceo, o fluxo de controle desviado para o bloco de exceo.
importante lembrar que podemos inserir qualquer comando, inclusive fazer chamadas a
procedimentos e funes que por sua vez, podem chamar outros procedimentos e funes.
O bloco de exceo pode ser definido atravs de uma construo genrica, exemplo:
try
Abre(Arq);
while not Fim(Arq) do
processa(Arq);
except
Showmessage (Houve um erro inesperado.);
end; //bloco try
No exemplo acima tratamos os erros com uma mensagem genrica dentro de um um bloco try-except.

67

A CONSTRUO ON-DO
try
Abre(Arq);
while not Fim(Arq) do
processa(Arq);
except
on EInOutError do //erro de entrada e sada
begin
Showmessage(Problemas...);
Fecha(Arq);
end;
on EdivByZero do //erro de diviso de n inteiro por zero
Showmessage(Erro ao dividir por zero);
on EconvertError do //erro de converso de tipos
Showmessage(Erro de converso de tipos de dados);
end; //bloco try

Podemos ainda definir utilizando a clusula on-do com um handler genrico usando
else, da seguinte forma:
try
Processa;
except
on Exceo1 do Trata1;
on Exceo2 do Trata2;
else TrataOutras;
end;

Os principais tipos de exceo da RTL (RunTime Library) do DELPHI, a serem


tratadas nos blocos on ... do so:
Nome

Descrio

EaccessViolation

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

EconvertError

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


utilizar a funo StrToInt em uma letra).

EdivByZero

ocorre na diviso de um nmero inteiro por zero.

EinOutError

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


existe).

EintOverFlow

ocorre quando o resultado de um clculo excedeu a capacidade do


registrador alocado para ele (para variveis inteiras).

EinvalidCast

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


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

EinvalidOp

ocorre quando se detecta uma operao incorreta de ponto flutuante.

EinvalidPointer

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


tentar liberar um ponteiro duas vezes).

EoutOfMemory

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


suficiente.

EoverFlow

ocorre quando o resultado de um clculo excedeu a capacidade do


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

ErangeError

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

EstackOverflow

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

68

Stack.
Eunderflow

ocorre quando o resultado de um clculo pequeno demais para ser


representado como ponto flutuante.

EzeroDivide

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

O COMANDO TRY-FINALLY
H um outro comando cuja sintaxe comea com try. Este controle de finalizao nos
permite lidar de forma estruturada com as situaes em que alocamos algum tipo de recurso e,
haja o que houver, precisamos depois liber-lo.
<aloca o recurso>
try
<usa o recurso>
finally
<libera o recurso com ou sem exceo>
end;

O comando funciona da seguinte forma: os comandos especificados aps o Try so


executados seqencialmente. Se no ocorrer nenhuma exceo, os comandos especificados aps
finally so executados, e o programa prossegue com a execuo normal, com o comando
seguinte ao try-finally. Porm, se houver alguma exceo qualquer uma durante a execuo
da lista de comandos do try, o trecho aps o finally executado e, no final, a exceo reativada.
Em resumo: Os comandos do bloco finally sempre so executados, haja ou no alguma
exceo durante a execuo dos comandos especificados aps o try.

BLOCOS TRY ANINHADOS


Exemplo:
1

Try
abrir arquivo
algumas operaes
fechar arquivo
except
...

abrir arquivo
Try
algumas operaes
finally
fechar arquivo

Observamos que no quadro 1 se em algumas operaes ocorrer uma exceo, o arquivo no


ser fechado.
Logo, devemos utilizar a soluo do quadro 2, pois nessa codificao, o arquivo ser
fechado, independentemente da ocorrncia da exceo.
Entretanto, se observarmos melhor, a soluo do quadro 2 que ela no trata a exceo.
Como regra temos que um bloco try pode ser seguido por uma instruo except ou
finally, mas no por ambas simultaneamente. A soluo tpica utilizar os dois blocos try
aninhados. D ao interno uma instruo finally e d ao externo uma instruo except, ou viceversa, conforme a situao exigir.

69

Podemos mesclar as duas maneiras, conforme o cdigo abaixo:


var i,j : real;
begin
try
try
i := strtofloat(edit1.text);
j := strtofloat(edit2.text);
edit3.text := floattostr(i/j);
except
on exception do
showmessage('Ocorreu uma exceo');
end;
finally
showmessage('alguma instrucao');
end;
end;

Outro Exemplo:
procedure TForm1.Button1Click(Sender: Tobject);
var i, aux:integer;
begin
aux := 500;
try
{inicio do bloco try-finally.
Screen controla uma serie de recursos do sistema operacional
neste exemplo, muda-se a aparencia do cursor para ampulheta}
Screen.Cursor := crHourGlass;
try//inicio do bloco try-except
for i:=0 to aux do
begin
Edit1.Text := IntToStr(i);
Application.ProcessMessages;
{O mtodo ProcessMessages necessrio para forar que as
mensagens do windows sejam processadas, desenhando o numero
no Edit. Sem ele, apenas o valor final seria visto.}
end;
except
Showmessage('Ocorreu um erro.');
end;//fim do bloco try-except
finally
Screen.Cursor := crDefault;
end;//fim do bloco try-finally
end; //fim da procedure

CLASSE EXCEPTION
A classe Exception tambm possui o objeto E, que recebe o valor do objeto exceo
passado pela instruo raise
Observe o cdigo abaixo:
Begin
Try
Resultado := A div B;
Except
On EDivByZero do

70

Begin
Resulatdo := 0;
MessageDlg(Diviso por zero corrigida, mtError, [mbok], 0);
End;
On E: Exception do
Begin
Resultado := 0;
MessageDlg(E.Message, mtError, [mbok], 0);
End;
End;
End;

TRATAMENTO DE EXCEES DE FORMA GLOBAL


H no Delphi um objeto chamado Application criado sem a deciso do desenvolvedor
em todo o projeto. Este objeto representa a applicao como um todo e possui um evento muito
importante: OnException. Este evento permite manipular as excees em um nvel global,
podemos afirmar que os tratamentos de erro atravs do comando try so tratamento locais.
A partir da verso 7 do Delphi, os eventos deste objeto esto disponvel na paleta
Additional, nas verses anteriores este objeto era manipulado apenas no Code Editor tendo o
desenvolvedor o trabalho de declarar os procedimentos desejados.
Como o objeto tem como finalidade generalizar e centralizar tratamentos, deve haver
um nico objeto na aplicao.
Paleta Additional
Importncia: Permite a manipulao de
excees em um nvel global para toda a
aplicao.

A utilizao do evento OnException pode ser criado da seguinte forma, utilizao um


if na varivel E (que recebe o erro atual) tomando uma deciso na condio verdadeira:
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
if E is EConvertError then
ShowMessage('Erro de converso de dados.');
end;

Neste exemplo acima, em qualquer lugar do programa (e no apenas em uma


determinada rotina) que venha a levantar um erro do tipo EConvertError, uma mensagem
genrica ser exibida.
Este objeto deve estar inserido ou no formulrio principal ou no formulrio especial
denominado Data Module como veremos adiante.

71

TRATAMENTO DE EXCEES SILENCIOSAS


Podemos utilizar o comando Abort para gerar excees silenciosas, ou seja, sem
nenhuma mensagem.
try
Form1.Caption :=
FloatToStr(StrToFloat(Edit1.Text) / StrToFloat(Edit2.Text));
except
on EZeroDivide do
begin
Beep;
ShowMessage('Diviso por zero');
end;
on EInvalidOp do ShowMessage('Operao invlida');
else
Abort;
end;

UM POUCO MAIS SOBRE COMPONENTES (VCL)


A Paleta Dialog
OpenDialog e SaveDialog
Os Componentes OpenDialog e SaveDialog exibe uma caixa de dilogo padro do
Windows para selecionar, abrir e salvar arquivos. A caixa de dilogo no aparece at que seja
executado o mtodo Execute. Quando o usurio clica para Abrir ou salvar o arquivo, a caixa de
dilogo fecha e so armazenados em uma lista, nas propriedades do componente, os nomes e
caminhos de arquivos selecionados.
Propriedade
DefaultExt
FileEditStyle
FileName
Files
Filter
FilterIndex
HistoryList
InitialDir
Options
Title

Descrio
Especifica uma extenso, padro, de arquivo que juntada automaticamente ao nome de
arquivo digitado na rea do nome do arquivo na caixa de dialogo.
Determina o estilo da caixa de dilogo de seleo do arquivo. (Obsoleto.)
FileEditStyle mantido para compatibilidade com verses mais velhas de Delphi.
Devolve o nome e o caminho do diretrio completo do arquivo mais recentemente selecionado.
Vetor que contem o nome e o caminho completo de todos os arquivos selecionados.
Fornece uma lista drop-down para preencher com extenses de arquivos que serviram de filtro
nas selees do arquivos. Ex: OpenDialog1.Filter := 'Arquivos de Texto (*.txt)|*.TXT'
Determina qual o tipo de arquivo ser o padro na lista da propriedade Filter anterior.
Mantm uma lista de arquivos previamente selecionados. (Obsoleto.)
HistoryList mantido para compatibilidade com verses mais velhas de Delphi.
Determina o diretrio atual quando a caixa de dilogo abre. Se esta opo estiver vazia o
Opendialog sempre vai abrir no diretrio do programa ou no ltimo diretrio utilizado.
Define caractersticas da caixa de dilogo. Na tabela abaixo esto discriminadas todas as
opes.
Texto que fica na barra de ttulo da caixa de dilogo.

72

Opes
Valor

Significado

ofAllowMultiSelect
ofCreatePrompt

Permite que o usurio selecione mais de um arquivo na caixa de dilogo.


Gera uma mensagem de advertncia se o usurio tentar selecionar um arquivo
inexistente e pergunta se quer criar um arquivo novo com o nome especificado.
Esta tag muda em tempo de execuo sempre que o nome do arquivo selecionado
tem uma extenso que difere de DefaultExt.
Gera uma mensagem de erro se o usurio tenta selecionar um arquivo inexistente.
Remove o checkbox de confirmao para somente leitura
Depois que o usurio clica OK, reajusta o diretrio corrente para o que estava antes
da caixa de dilogo ser aberta.
Opo para reconhecer um arquivo de atalho de Windows, como um atalho ou
como um arquivo qualquer.
Mostra apenas arquivos com 8.3 caracteres.
Remove o boto de Rede da caixa de dilogo.
Gera uma mensagem de erro se o usurio tenta selecionar um arquivo somente de
leitura.
Desabilita o teste de proteo de arquivo em rede e disco inacessveis. S se aplica
quando o usurio tenta salvar um arquivo em um diretrio de rede compartilhado.
Permite seleo de nomes de arquivo com caracteres invlidos.
Cria o estilo do Windows 3.1 para caixa de dilogo.
Gera uma mensagem de advertncia se o usurio tentar selecionar um nome de
arquivo que j est em uso e pergunta se quer sobrescrever o arquivo existente.
(Use com TsaveDialog e TSavePictureDialog.)
Gera uma mensagem de erro se o usurio tentar selecionar um nome de rquivo que
inexistente.
Seleciona como padro o ComboBox habilitado pela opo ofHideReadOnly.
Ignora erros compartilhados e permite selecionar arquivos at mesmo quando
acontecem violaes de compartilhando.
Exibies um boto de Ajuda na caixa de dilogo.

ofExtensionDifferent
ofFileMustExist
ofHideReadOnly
ofNoChangeDir
ofNoDereferenceLinks
ofNoLongNames
ofNoNetworkButton
ofNoReadOnlyReturn
ofNoTestFileCreate
ofNoValidate
ofOldStyleDialog
ofOverWritePrompt
ofPathMustExist
ofReadOnly
ofShareAware
ofShowHelp

OBS: Todas as opes so marcadas como falso.


Principais Eventos
Evento

Descrio

OnClose
OnShow
OnFolderChange
OnSelectionChange

Ocorre quando a caixa de dilogo encerrada.


Ocorre quando a caixa de dilogo iniciada.
Ocorre quando um diretrio aberto ou fechado na caixa de dilogo.
Ocorre quando nomes de arquivo exibidos no dilogo mudado, isto , o evento de
OnSelectionChange acontece quando o usurio faz algo que mude a lista exibida no dilogo.
Isto pode incluir: selecionando um filtro novo, selecionando um diretrio novo, ou criando
uma pasta nova.
Ocorre acontece quando o usurio seleciona um filtro novo de arquivo no ComboBox de Tipo
na caixa de dilogo.

OnTypeChange

73

Principais Mtodos
Mtodos

Descrio

Execute

Abre a caixa de dilogo do OpenDialog e devolve true quando o usurio seleciona um arquivo dar um
Clique para abrir o arquivo. Se o usurio clicar Cancele retorna False.

ColorDialog
O Componente TColorDialog exibe uma caixa de dilogo padro do Windows para
selecionar cores. A caixa de dilogo no aparece at que seja executado o mtodo Execute.
Quando o usurio seleciona uma cor e clica o OK, a caixa de dilogo fecha e a cor selecionada
armazenada na propriedade de Cor.

Principais Propriedades
Propriedade

Descrio

Color
CustomColors

Retorna a cor selecionada. A cor padro clBlack. Quando o usurio seleciona uma cor na
caixa de dilogo e clica o OK, a cor selecionada se torna o valor da propriedade de Cor.
Determina quais cores personalizada iniciam na caixa de dilogo. Cada cor personalizada
representada com uma string na forma ColorX=HexValue. Por exemplo, a seguinte string
determina a primeira cor personalizada: ColorA=808022

Options

Pode personalizar at 16 cores (ColorA at ColorP).


Define caractersticas da caixa de dilogo. Na tabela abaixo esto discriminadas todas as
opes.

Opes
Valor

Significado

cdFullOpen
cdPreventFullOpen

Exibe as opes de personalizar cores quando a caixa de dilogo e aberta.


Desabilita o boto que Define a personalizao de cores na caixa de dilogo, de forma
que o usurio no pode definir cores novas.
Adiciona um boto de Ajuda na caixa de dilogo.
Direciona o Windows a usar a cor slida mais prxima da cor escolhido.
Permite que o usurio selecione cores no-slidas.

cdShowHelp
cdSolidColor
cdAnyColor

OBS: Todas as opes so marcadas como falso.


Principais Eventos
Evento

Descrio

OnClose
OnShow

Ocorre quando a caixa de dilogo encerrada.


Ocorre quando a caixa de dilogo iniciada.

74

Principais Mtodos
Mtodos

Descrio

Execute

Abre a caixa de dilogo do OpenDialog e devolve true quando o usurio seleciona um arquivo dar
um Clique para abrir o arquivo. Se o usurio clicar Cancele retorna False.

PrintDialog
O Componente TPrintDialog exibe uma caixa de dilogo padro do Windows para
enviar trabalhos para uma impressora. O caixa de dilogo de impresso modal e no aparece
at que seja chamada pelo mtodo Execute.

Principais Propriedades
Propriedade

Descrio

Collate
Copies
FromPage
MaxPage

Indica se o Checkbox Collate na caixa de dialogo est selecionada.


Indica as cpias de nmero selecionadas na caixa dilogo de Impresso.
Indica a pgina na qual o trabalho de impresso vai comear.
Determina o maior nmero de pginas que usurio pode imprimir. Se o usurio tenta entrar
com um nmero maior que MaxPage, uma mensagem de erro aparece.
OBS: O usurio s pode especificar o nmero de pgina se a opo poPageNums estiver em
True.
Determina o menor nmero de pginas que usurio pode imprimir. Inverso do anterior.
Define caractersticas da caixa de dilogo. Na tabela abaixo esto discriminadas todas as
opes.
Define qual o intervalo de impresso ficar selecionado como padro na caixa de dilogo.
Podem assumir trs valores: prAllPages ( O RadioButton Todos fica selecionado),
prSelection (O RadioButton Seleo fica selecionado), prPageNums (O RadioButton
Pginas fica selecionado).
Seleciona o CheckBox impresso para arquivo na caixa de dilogo como padro.
Indica a pgina na qual o trabalho de impresso termina.

MinPage
Options
PrintRange

PrintToFile
ToPage

Opes
Valor

Significado

PoDisablePrintToFile

Desabilita (fica cinzento) o CheckBox Imp. em arquivo. (Aplicvel somente a opo


poPrintToFile for verdadeira).
Exibe um boto de Ajuda na caixa de dilogo. Pode no aparecer em algumas verses do
Windows 95.
Habilita o RadioButtom que permite que usurio especifique um intervalo de pginas.
Exibe o CheckBox Imp em arquivo na caixa no dilogo.
Habilita o RadioButtom que permite que usurio especifique imprimir uma seleo.
Gera uma mensagem de advertncia se o usurio tentar enviar um trabalho a uma
impressora desinstalada.

PoHelp
PoPageNums
PoPrintToFile
PoSelection
PoWarning

OBS: Todas as opes so marcadas como falso.

75

Principais Eventos
Evento

Descrio

OnClose
OnShow

Ocorre quando a caixa de dilogo encerrada.


Ocorre quando a caixa de dilogo iniciada.

Principais Mtodos
Mtodos

Descrio

Execute

Abre a caixa de dilogo do OpenDialog e devolve true quando o usurio seleciona um arquivo dar um
Clique para abrir o arquivo. Se o usurio clicar Cancele retorna False.

UM POUCO MAIS SOBRE COMPONENTES (VCL)


Objeto Timer (Temporizador)
Paleta System
Importncia: Permite a execuo de rotinas em
loop, em um intervalo pr-definido.

Propriedades
Enabled
Interval

Permite ligar o timer, ou seja, ele entra em um loop executando o evento OnTimer at
que seja atribudo falso ou terminada a aplicao.
Define em milisegundos o intevalo de repetio do evento OnTimer.

Objeto FileListBox (Caixa de listagem de arquivos)


Paleta Win 3.1
Importncia: Permite
determinado diretrio.

listar

arquivos

de

Propriedades

76

FileEdit
FileName
Mask

Define uma caixa de edio (TEdit) que exibir o arquivo atualmente selecionado.
Define o nome do arquivo selecionado. Vlido em tempo de execuo.
Define mscaras de filtro (separadas por ponto e vrgula) para a exibio dos arquivos.

Objeto DirectoryListBox (Caixa de listagem de diretrios)


Paleta: Win 3.1
Importncia: Permite listar os diretrios do
drive desejado.

Propriedades
DirLabel
FileList

Permite exibir o diretrio corrente com a propriedade Caption de um componente do tipo


TLabel.
Permite a conexo com um componente TFileListBox.

Objeto - DriveComboBox (Caixa de listagem de drives)


Paleta: Win 3.1
Importncia: Permite listar
disponveis no computador.

os

drives

Propriedades
DirList

Permite a conexo com um componente TDirectoryListBox.

Objeto FilterComboBox (Caixa de listagem de filtros)


Paleta: Win 3.1

Importncia: Permite estabelecer filtros para


visualizao de arquivos.

Propriedades
FileList
Filter

Permite a conexo com um componente TFileListBox.


Permite definir as mscaras de filtro de arquivo a serem exibidas.

77

Gauge
Paleta: Samples
Utilizado para dar idia
progresso na execuo de uma tarefa.

Importncia:

Propriedades
MinValue
MaxValue
Progress
BackColor
ForeColor
Kind
ShowText

do

Significado

Valor mnimo
Valor mximo
Valor atual
Cor da rea no preenchida
Cor da rea preenchida
Tipo da figura (barra horizontal ou vertical, crculo, etc)
Define se o valor em percentagem ser exibido

TrackBar
Paleta: Win32
Importncia: Componente utilizado para a
seleo de valores inteiros dentro de uma faixa

Propriedades

Significado

Orientation
Min
Max
Position
TickStyle
TickMarks

Orientao vertical ou horizontal


Valor mnimo
Valor mximo
Posio corrente
Estilo de exibio das marcaes
Aparncia do indicador

78

PageSize
LineSize
SelStart
SelEnd

Determina o incremento que deve ser dado quando as teclas PgUp e PGDn forem pressionadas
Determina o incremento que deve ser dado quando as setas forem pressionadas
Posio de incio do preenchimento
Posio de trmino do preenchimento

CheckListBox
Paleta: Additional
Importncia: Possui toda a funcionalidade do
ListBox exibindo ao lado do item uma
CheckBox.
Este componente bastante til quando
queremos
exibir uma lista extensa de
CheckBoxs e o espao para faz-lo escasso.
Muito encontrado em programas de SetUp.

Propriedades

Significado

Checked[n]
State[n]
AllowGrayed

Retorna true se o item n estiver selecionado


Retorna o estado do item n : [cvUnchecked, cbChecked, cbGrayed]
Permite ou no a existncia de itens com estado indeterminado. Default = False

Eventos

Descrio

OnClickChecked

Quando um item marcado ou desmarcado

ListView (Win32)
Paleta: Additional
Importncia: Componente que permite exibir
de vrias maneiras uma lista de itens.

Propriedades
ViewStyle

LargeImages
SmallImages
Items

Significado

Determina se os itens devem ser apresentados em colunas com cabealhos e sub-itens,


verticalmente ou horizontalmente, com cones grandes ou pequenos
Lista de Imagens (TImagesList) contendo a bitmaps a serem exibidos e somente usada
quando a propriedade ViewStyle vsIcon
Lista de Imagens (TImagesList) contendo a bitmaps a serem exibidos e somente usada
quando a propriedade ViewStyle vsSmallIcon
Items a serem exibidos

79

Columns
ShowColumnHeaders
ColumnClick
IconOptions

SortedType

Selected

Cabealhos das colunas da Lista


Exibe os cabealhos das colunas
Indica se os cabealhos das colunas tero a aparncia de botes
Opes de exibio dos cones quando ViewStyle for vsIcon ou vsSmallIcons
Arrangement
alinhado no topo ou esquerda do ListView
AutoArrange
os cones so alinhados automaticamente
WrapText
a propriedade caption ser quebrada
nsNone no ordenado
nsData
os iten so ordenados dados so alterados
nsText
os itens so ordenados quando o Caption alterada.
nsBoth
a ordenao e feita em ambos os casos
Item selecionado. Podemos acessar o contedo selecionado atravs de Select.Captiont;

Pode ser utilizado com o Imagelist

ImageList

Paleta: Win32
Importncia: O componente ImageList permite
que trabalhemos com listas de imagens em
bitmap e a apresenta quando solicitado, sendo
um componente no visual.

Ele extremamente til, mas quase todo a sua operao depende de outros
componentes. Por exemplo, as diversas imagens que aparecem em componentes de visualizao
em lista ou em rvore ou numa ToolBar esto em listas de imagens.

Para se definir a lista de imagens devemos selecionar o componente e emitirmos um


duplo clique para que seja exibido o Editor da lista de imagens ou usarmos o boto direito e
selecionarmos a opo ImageList editor, que apresenta o seguinte diologo:
A opo Add utilizada para acrescentar uma imagem na lista
A opo Delete remove a imagem selecionada da lista
A opo Clear limpa toda a lista

80

Se a imagem estiver armazenada, uma figura habilitada e outra desabilitada quando da


incluso na lista, o Editor pergunta, caixa abaixo, se deseja a separao. Observe que a imagem
de ndice 0 e 1, foram seperadas e a de ndice 2 no.

A opo Crop faz com a imagem Habilitada/Desabilitada fique junta quando se


responde No na caixa acima.
A opo Strech faz com a imagem Habilitada/Desabilitada fique separada quando se
responde No na caixa acima.
Os bitmaps da lista so sempre retangulares, mesmo que contenham imagens em
formas irregulares. A lista de imagem tem o recurso de tratar o fundo como se fosse transparente.
Se voc definir a propriedade bkColor de uma lista com uma cor especfica, voc
desativa o recurso de desenho transparente.
Como exemplo do TreeView, visualizao de dados em rvores, temos o Explorer que
exibe a estrutura hierrquica dos diretrios de um disco, com um pequeno cone esquerda para
diferenciar discos rgidos de diretrios, estes de drive e CD e assim por diante.
O componente de visualizao em rvore pode representar qualquer tipo de dados que
possua um arranjo hierrquico, como um organograma de uma empresa.

Propriedades

Significado

81

Images
StateImages
Items

Lista de Imagens que contm os bitmaps que representam os prprios cones, como as
imagens dos discos no Explorer
Lista de Imagens especiais que indicam que um item encontra-se num estado especfico.
Estado este que o programador define. Geralmente atravs de um ImageList e Caixa de
Edio StateIndex do TreeView Items Editor.
Permite a edio dos ns da rvore. Possui um conjunto de mtodos como Add, AddChild,
AddFirst que tambm permite a incluso de ns na rvore. Cada n considerado um
objeto do tipo TTreeNode.
As principais propriedades dos ns so:
ImageIndex informa qual imagem da lista de imagens representa o n.
SelectIndex qual imagem da lista ser exibida se o n for selecionado.
StateIndex da mesma forma, um ndice da StateImages. Se for <> -1, a
imagem ser exibida esquerda da imagem normal.

ShowButtons
ShowLines
ShowRoot
ReadOnly

Default = True, exibe os botes + ou para expandir/fechar ramos


Default = True, exibe as linhas conectando os ns.
Default = True, exibe o n da raiz
Default = False, possibilita a edio dos ramos da rvore

Eventos
OnEditing
OnEdited

Significado
Se ReadOnly = False, ocorre quando o usurio edita o ramo da rvore
Ocorre quando o usurio termina a edio

Animate
Paleta: Win32
Importncia: Componente capaz de exibir um
AVI, o qual representa um formato de arquivo
multimdia com imagens e sons, mas este
componente apenas exibe as imagens.

Propriedades
Active
AutoSize
Center
FileName
FrameCount
Repetitions

Significado
Indica se a animao esta sendo exibida ou no
Ajusta automaticamente o tamanho do componente ao tamanho da imagem
Centraliza a animao
Nome do arquivo AVi
Nmero de Frames da animao
Nmero de repeties quando a animao for executada.
O valor zero indica repeties indefinidas

DateTimePicket

82

Paleta: Win32
Importncia: Componente que permite a seleo visual
de datas ou horas

Propriedades
Time
Date
DateMode
DateFormat
Kind
ShowCheckbox
Check

Significado
Hora selecionada
Data Selecionada
A forma como a data poder ser selecionada [dmComboBox, dmUpDown]
Formato da Data [dfShort, dfLong]
Seleciona o componente para Data ou Hora [dtkDate, dtkTime]
Exibe um CheckBox
Indica se o CheckBox esta selecionado

83

Apndice A - A Linguagem Object Pascal


Caractersticas
Object 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 como o C, Basic, Pascal entre outras
linguagens, a Object Pascal providncia uma migrao de forma natural oferecendo um produto
de maior complexidade.
Ela fora a voc executar passos lgicos, isto torna mais fcil o desenvolvimento no
ambiente Windows de aplicaes livres ou que utilizam banco de dados cliente/servidor e possui
todo o poder de um cdigo totalmente compilvel. Alm disso possibilita a criao e a
reutilizao (vantagem de re-uso to sonhado com a OO) de objetos e bibliotecas dinmicas
(DLL - Dymanic Link Libraries).
Object Pascal contm todo o conceito da OO, incluindo encapsulamento, herana e
polimorfismo. Algumas extenses foram includas para facilitar o uso de conceitos como
propriedades particulares e pblicas, e tipos de informaes em modo run-time, manuseamento
de excees, e referncias de classes.

EXPRESSES LGICAS
So expresses que retornam valor booleano (falso ou verdadeiro).
Operador
not
and
or
xor

Operao
Negao
E lgico
OU lgico
OU EXCLUSIVO lgico

O operador not unrio, por exemplo: if not (X > Z) then


Devemos usar parnteses ao compararmos expresses lgicas, por exemplo:
if (X > Z) or (W > Y) then

COMANDO IF
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);

84

if (A >
begin
B :=
X :=
end
else
begin
A :=
Y :=
end;

B) then
B + 1;
B + A;

A - 1;
Y + B;

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.

COMANDO CASE
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;
+, -, *, /: Label1.Caption := Operador
else
Label1.Caption := Caracter especial;
end; //fim do case

COMANDO 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;

COMANDO 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;
INC(Z,3);
DEC(AUX,2);

85

end;

COMANDO 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;

COMANDO BREAK
O comando break usado para alterar o fluxo normal de comandos de repetio, o
controle desviado para o comando seguinte ao comando repetitivo.
frase := Edit1.Text;
for i:=1 to length(frase) do
begin
if frase[I] = 'A' then
break;
aux := aux + frase[I];
end;
Label1.caption := aux; //Label1 recebe o conteudo de frase at a letra A

COMANDO WITH
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;

86

Apndice B - DICAS
CRIAR UM HOTLINK
Podemos criar um link para a Internet dentro do Delphi atravs da funo ShellExecute.
Supondo que a propriedade Caption de um label seja um endereo web vlido
(http://www.fulanodetal.com.br) podemos inserir em seu evento OnClick o seguinte cdigo:
ShellExecute(Handle, 'open', pchar(Label1.Caption), nil, '',SW_SHOWNORMAL);

necessrio incluir a biblioteca ShellAPI na clusula uses da Inteface.

ENVIAR UM MAIL
Podemos utilizar a funo ShellExecute para abrir o programa de mail do usurio e
preparar seu envio.
ShellExecute(Handle,
,SW_SHOWNORMAL);

open,

mailto:fulano@provedor.com.br,

nil,

Caso queira colocar um subject padro na construo do e-mail utilize a palavra subject
da seguinte forma:
ShellExecute(Handle,
open,
?subject=Pergunta, nil, ,SW_SHOWNORMAL);

mailto:fulano@provedor.com.br

necessrio incluir a biblioteca ShellAPI na clusula uses da Inteface.

EXECUTANDO UM PROGRAMA DE ACORDO COM A EXTENSO DE


UM ARQUIVO
ShellExecute um funo API comparada a um canivete suio, vamos utiliz-la novamente
para chamar um programa atravs da extenso do arquivo passado como parmetro.
Os parmetros de ShellExecute so 6:
 Um manipulador de janela, que o pai do processo disparado.
 Uma ao a executar, que pode ser open, para abrir, print, para imprimir, ou
explore, para abrir uma janela do Explorer no diretrio desejado.
 Um ponteiro (tipo Pchar em Delphi) para o nome do programa ou diretrio.
 Parmetros para a aplicao.
 Diretrio inicial.
 Modo de abertura do programa
Exemplo:
ShellExecute(Handle, open, exemplo.doc, nil, nil, SW_SHOWNORMAL);

necessrio incluir a biblioteca ShellAPI na clusula uses da Inteface.

87

DATAS
As datas so um tipo de dados TDateTime, internamente so armazenadas como
nmeros de ponto flutuante (Double). A parte inteira indica a data, em nmero de dias, contados
a partir de 30/12/1899 e a fracionria, as horas. Pelo fato de serem armazenadas como Double,
pode-se subtrair, somar e estabelecer comparaes. Por exemplo:
var
DataIni, DataFim : TDateTime;
Dif : Single;
begin
Dif := DataFim DataIni; //diferena em dias entre as datas
DataIni := DataIni+10; //acrescenta + 10 dias na data
end;

Para saber a hora de determinada data, multiplica-se a parte fracionria por 24:
Frac(DataIni) * 24;

Podemos ainda comparar as datas com os operadores < e >. Caso no seja necessrio
a comparao com a hora, basta converter a data para um inteiro e efetuar a comparao:
if Trunc(Data1) < Trunc(Data2) then

A formatao de data pode ser feita atravs da funo FormatDateTime.


function

FormatDateTime(const

Format:

string;

DateTime:

TDateTime):

string;

Exemplo:
Label1.Caption := FormatDateTime('dddd, d "de" mmmm "de" yyyy', date);

SAIR DE UMA APLICAO


O Delphi fornece diferentes mtodos para sair de uma aplicao. O ideal utilizar o
mtodo
Close. Porm, h casos em que Close no atenderia necessidade do desenvolvedor,
nestes casos pode-se chamar Halt ou Application.Terminate.
Halt um procedimento do Pascal e provoca o trmino da aplicao, no se
importando com arquivos abertos. J o mtodo Terminate do objeto Application obriga o
fechamento de todos os arquivos abertos e a destruio de todas a forms criadas.

REDUZINDO TESTES IF
A expresso:
if A = 10 then
B := True
else

88

B := False;

Pode ser reduzida a apenas uma linha:


B := A = 10;

A = 10 uma operao boleana, que retorna True se A igual a 10 e False caso


contrrio. Neste caso estamos atribuindo varivel B o resultado da comparao, TRUE ou
FALSE.

HINTS COM DUAS OU MAIS LINHAS


A object inspector permite Hint com apenas uma linha. Para gerar Hints com mais
linhas pode-se em tempo de execuo configurar a propriedade Hint da seguinte forma:
Edit1.Hint := Primeira linha do hint#13segunda linha do hint;

Pode-se tambm em tempo de projeto clicar na form com o boto direito e escolher a
opo View as Text, procurar o objeto e a hint desejada e alter-la:
Hint := Primeira linha do hint#13segunda linha do hint;

Para voltar ao Form clique com o boto direito e escolha View as Form.

SUBSTITUIR A TECLA TAB POR ENTER NA MUDANA DE FOCO






Setar a propriedade KeyPreview da Form para True


Setar a propriedade Default de todos os botes da Form para False
Criar um evento OnKeyPress para a Form como este:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);


begin
if (Key = #13) and not (Activecontrol is TMemo) then begin
//desabilita o processamento posterior da tecla
key := #0;
//simula o envio da tecla tab
Perform(WM_NEXTDLGCTL,0,0);
end;
end;

CONES
O Delphi possui um conjunto de cones e imagens em uma pasta padro:
C:\Arquivos de programas\Arquivos comuns\Borland Shared\Images

89

EXECUTAR UM PROGRAMA
Para executar um programa use a API WinExec.
WinExec(calc.exe, SW_SHOWNORMAL);

LINKS
Alguns links interessantes:

Nacionais
http://www.clubedelphi.com.br/
http://www.delphibrasil.eti.br/
http://clubedodelphi.com.br
http://www.inprise.com.br/

DISPARANDO SONS DO SISTEMA (MULTIMDIA)


Para utilizar os sons do sistema, utilize a funo PlaySound.
PlaySound(pChar('SYSTEMSTART'),0,SND_ASYNC);

Outros sons:
SYSTEMSTART
SYSTEMEXIT
SYSTEMHAND
SYSTEMASTERISK
SYSTEMQUESTION
SYSTEMEXCLAMATION
SYSTEMWELCOME
SYSTEMDEFAULT
necessrio incluir as biblioteca mmsystem na clusula uses da Inteface

GARANTINDO UMA INSTNCIA DO APLICATIVO


Para que seu aplicativo no seja executado vrias vezes, utilize o seguinte cdigo no
arquivo de projeto (DPR). A funo FindWindow procura se h outra tela da classe passada
como parmetro, se houver, traz para frente e no cria a aplicao novamente.
program Project1;
uses
Forms,Windows,

90

Unit1 in 'Unit1.pas' {Form1};


{$R *.RES}
begin
if FindWindow('TForm1','Form1') <> 0 then
SetForegroundWindow(FindWindow('TForm1','Form1'))
else
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.

necessrio incluir a biblioteca windows na clusula uses do arquivo DPR.

PERMITIR APENAS NMEROS EM UM TEDIT


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if ((Key in ['0'..'9'] = False) and (Word(Key) <> VK_BACK)) then
Key := #0;
end;

91

Apndice C - INTRODUO ORIENTAO A


OBJETOS
Mais do que popular, a orientao a objetos uma metodologia que ganhou espao no
mercado, e ao que tudo indica, veio para ficar.
Vamos abordar alguns conceitos importantes para o inicio do estudo da ferramenta
Delphi, seria importante que na sua vida profissional voc possa aprofundar-se mais nestes e
outros conceitos que pelo enfoque, no sero abordados. Uma referencia bibliogrfica no final da
apostila ir ajuda-lo(a) a encontrar mais informaes a respeito.
Independente da ferramenta (Delphi, C++Builder, PowerBuilder, entre outras), a
orientao a objetos uma teoria da dcada de 70 que veio ser implementada com grande
destaque nas ferramentas visuais. Essa tcnica baseada no conceito de classes.
Classe um tipo abstrado de dados, ou seja, um novo tipo criado pelo
desenvolvedor que pode conter mtodos e propriedades. como compararmos um tipo classe
com um tipo record. Com o tipo classe possvel implementar um conjunto de recursos OO4,
sendo um dos principais chamado herana, que uma poderosa maneira de reaproveitamento de
cdigo.
Considerando simplesmente a ttulo de exemplo vamos criar a classe base TSerVivo
com as seguintes caractersticas e tipos de dados:

Tamanho : Single

Cor : String

Forma(Obeso, Magro) : String


e que pode possuir as seguintes aes:

Alimentar

Respirar
Um exemplo de herana seria criar as classes TSerHumano e TAnimais como
descendente de TSerVivo, desta forma, a classe descendente herda todas as caractersticas e
aes criadas na classe ascendente podendo acrescentar particularidades sua estrutura,
exemplo:
TSerHumano
Tamanho : Single
Cor : String
Forma : String
Vestimenta : String
CorCabelo: String
Sexo : Char
 Alimentar
 Respirar
 Falar
 Caminhar

TAnimais
Tamanho : Single
Cor : String
Forma : String
NPatas : Integer
Cauda : Boolean
 Alimentar
 Respirar
 EmitirSom

92

Os objetos so variveis do tipo classe, onde as caractersticas so consideradas


propriedades, e as rotinas chamadas pelos objetos so denominadas mtodos.
As aes disparadas pelo usurio ou pelo sistema no componente sero chamados
eventos. Eles so de extrema importncia pois definem quando um conjunto de comandos ser
executado.
Ainda exemplificando, podemos utilizar as propriedades atribuindo valores de acordo
com o tipo de dados definido (no estamos considerando a sintaxe completa em Object Pascal) e
utilizar os mtodos apenas chamando o nome da rotina.
Edileumar,Jorgina
Cachorro

: TSerHumano;
: TAnimais;

begin
Edileumar.Tamanho := 1.70;
Edileumar.Forma := Magro;
Edileumar.Sexo := M;
Jorgina.Tamanho := 1.60;
Jorgina.Sexo := F;
Jorgina.CorCabelo := Castanhos;
Edileumar.Falar;
Jorgina.Caminhar;
Cachorro.Tamanho := 0.60;
Cachorro.Cauda := True;
Cachorro.Alimentar;
end;

Observe que as propriedades recebem valores e os mtodos executam rotinas (procedimentos ou


funes) sobre o objeto que o invocou.
Alguns mtodos podem receber parmetros.
O que acontece no Delphi que existe uma gigantesca estrutura de classes onde TObject a
classe base das demais classes. Apesar de no ser necessrio manipular este recurso diretamente,
importante saber seu funcionamento bsico.
Voc ver as declaraes de classe dentro do Delphi como abaixo, um formulrio com dois
componentes (objetos) button e um componente edit ser declarado assim:
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;

Essa introduo vem apenas ilustrar os principais conceitos: Propriedades, eventos e mtodos,
sendo amplamente utilizados durante o curso.
A herana um recurso importante implementado na OO, no sendo o nico, obviamente.
Polimorfismo, encapsulamento entre outros, so conceitos que a principio voc no precisa saber
para manipular a ferramenta (Delphi), mas em um futuro prximo ser muito importante.

93

REFERNCIA BIBLIOGRFICA
Dominando o Delphi 7 A Bblia Marco Cant
Makron Books, 2000
Programao Orientada a Objetos usando o Delphi 3 Faial Farhat de Carvalho
Editora rika
Delphi4 Curso Completo Marcelo Leo
Axcel Books do Brasil
Delphi4 Senac Adilson Resende
Editora SENAC Belo Horizonte
365 Dicas de Delphi Bruno Sonnino
Makron Books
Programao Inicial - Delphi Prof. Mrio Andr
CEFET - UNED

94

S-ar putea să vă placă și