Você está na página 1de 86

SUMRIO

PRIMEIROS PASSOS _____________________________________________________________________________1


ANATOMIA DE UMA JANELA _________________________________________________________________________2
BARRA DE MENU, BARRA DE FERRAMENTAS E PALETA DE COMPONENTES______________________________________3
Barra de Ferramentas __________________________________________________________________________3
PALETA DE COMPONENTES__________________________________________________________________________4
JANELAS DO DELPHI _______________________________________________________________________________8
MEU PRIMEIRO PROGRAMA ____________________________________________________________________11
ADAPTAR AS PROPRIEDADES DOS OBJETOS_____________________________________________________________12
ESCREVER O CDIGO PARA OS EVENTOS ASSOCIADOS. ____________________________________________________14
EXEMPLO I - CALCULADORA ___________________________________________________________________21
PROPRIEDADES _______________________________________________________________________________26
BorderStyle _________________________________________________________________________________26
Default _____________________________________________________________________________________28
Tabstop_____________________________________________________________________________________28
Name ______________________________________________________________________________________29
Caption_____________________________________________________________________________________29
Text________________________________________________________________________________________29
MTODO _____________________________________________________________________________________29
Setfocus ____________________________________________________________________________________29
VARIVEIS NO DELPHI ____________________________________________________________________________30
Formas de Declarar uma Varivel _______________________________________________________________31
FORMATAO DE NMEROS________________________________________________________________________31
Formatando Data e Hora: ______________________________________________________________________32
MODIFICANDO A CALCULADORA ____________________________________________________________________32
EXEMPLO II - JOGO DA VELHA _________________________________________________________________37
EXEMPLO III - BLOCO DE NOTAS _______________________________________________________________48
EXEMPLO IV - RELGIO DESPERTADOR ________________________________________________________60
MTODOS GRFICOS___________________________________________________________________________64
DESENHO DE PONTO _____________________________________________________________________________64
CORES _______________________________________________________________________________________65
DESENHO DE LINHA ______________________________________________________________________________66
EXEMPLO V - CATLOGO ______________________________________________________________________73
INSERINDO UMA NOVA UNIDADE ____________________________________________________________________75
TIPOS _________________________________________________________________________________________76
REGISTROS _____________________________________________________________________________________76
PONTEIRO DE REGISTROS __________________________________________________________________________79
LISTA DE EXERCCIOS__________________________________________________________________________85

DELPHI - BSICO

Delphi 3.0
PRIMEIROS PASSOS

Vantagens : - Facilidade em alteraes e implementaes


- Melhor Estruturao do cdigo
- Velocidade
- Verdadeira orientao a objetos
Delphi possui um ambiente de desenvolvimento fcil de usar, com uma grande Biblioteca de
Componentes Visuais (VCL - Visual Component Library). A VCL contm cdigo de botes
campos, rtulos, grficos, caixas de dilogo e acesso e tabelas de bancos de dados, e foi
desenvolvida levando em conta as velocidades no desenvolvimento de aplicativos e na
execuo destes aplicativos.
O rpido desenvolvimento de aplicativos possvel graas aos vrios controles disponveis na
paleta de componentes, onde o programador escolhe um destes componentes, e coloca-o
diretamente no local desejado, dentro de um formulrio. Formulrio este que ser a janela do
aplicativo apresentada ao usurio.
O Delphi permite o uso de objetos, e sua criao. Ele trabalha com eventos que do incio
alguma rotina de trabalho, ou seja, o programa fica parado at que um evento ocorra.
Um programa tradicional, feito para ser executado em DOS, organizado em torno de
estruturas de dados com um loop principal e uma srie de sub-rotinas constituindo o aplicativo,
com procedimentos e funes separados para manipular os dados.
Um programa orientado a objetos e eventos organizado em torno de um conjunto de objetos.
Onde objeto uma varivel com propriedades que o definem, e vrios cdigos dando
funcionalidade a este objeto. Ou seja, objetos so estruturas que combinam dados e Rotinas
em uma mesma entidade.
Um Objeto possui dados internos, que no podem ser acessados por outros objetos e dados
externos, tambm chamados de propriedades, estas podendo ser acessadas de fora deste
objeto. De maneira semelhante, um objeto possui rotinas internas que so usadas apenas
internamente e rotinas externas, tambm chamadas de mtodos, que podem ser acessadas
externamente.
Pgina: 1

DELPHI - BSICO
Um carro um objeto que possui propriedades e mtodos. A tabela abaixo lista algumas
propriedades e comportamentos do objeto real carro.

Propriedades

Mtodos

cor
comprimento
potncia do motor
tipo de pintura

dar partida
mudar marcha
acelerar
frear

Um mtodo uma rotina prpria do objeto que o d funcionalidade, ou seja, torna-o vivo, e as
propriedades fazem o intercmbio entre o objeto e o programa.
ANATOMIA DE UMA JANELA
A figura abaixo, mostra uma janela tpica do Windows e a denominao de seus componentes
bsicos.

Moldura - Os quatro lados da janela, que definem seu tamanho.


Barra de Ttulo - Acima da moldura superior como nome da janela e documento corrente.
Menu de Controle - esquerda da Barra de Ttulo. Um boto com um cone que representa o
programa.
Botes de Tamanho - direita da Barra de Ttulo. So dois botes, no primeiro temos um
trao, o outro com duas janelinhas ou uma janela desenhadas. Se forem duas
janelinhas, mostra que a janela est maximizada, e se for uma janela um pouco maior,
mostra que a janela est em seu tamanho normal e pode ser maximizada. O boto com
um trao serve para minimizar a janela.
Pgina: 2

DELPHI - BSICO
Barra de Menu - Est abaixo da barra de ttulo e contm as opes de controle do aplicativo.
rea do Cliente - a parte interna da janela, tambm chamada de rea do documento,
utilizada para inserir os controles da nossa aplicao.
rea Externa Janela - sua Mesa de Trabalho onde voc pode ter tantos aplicativos
quantos necessitar e a memria do seu computador permitir.
Janela - Uma Janela plena quando podemos dimension-la (mini, maxi e restaur-la) e
mov-la.

BARRA DE MENU, BARRA DE FERRAMENTAS E PALETA DE COMPONENTES

Barra de Ferramentas

Pgina: 3

DELPHI - BSICO
PALETA DE COMPONENTES
A Paleta de Componentes, possui todos os controles que iremos precisar para desenharmos
nossa janela - formulrio - como um programa de desenho livre. Para incluir um controle no
formulrio, existem dois mtodos:
1 - Click Duplo no cone da paleta de componentes. Far com que o controle seja
inserido no centro do formulrio com um tamanho padro.
2 - Selecionar o cone na caixa de ferramentas e depois dar um clique no formulrio, na
posio desejada para o objeto (canto superior esquerdo deste).
Podemos dimensionar estes controles, depois de inseridos, a qualquer momento durante o
desenvolvimento. Primeiro, selecionamos o controle dando um clique em cima dele e depois o
dimensionamos arrastando um dos oito botes dimensionadores que circundam este objeto.

Pgina: 4

DELPHI - BSICO

Pgina: 5

DELPHI - BSICO

Pgina: 6

DELPHI - BSICO

Pgina: 7

DELPHI - BSICO

JANELAS DO DELPHI

Formulrio
a janela que aparece no centro da tela do Delphi. Essa a janela que estamos projetando.
Quando rodarmos o aplicativo, ser ela que ir aparecer com os objetos que ns incorporamos.

Pgina: 8

DELPHI - BSICO
Controles
Existem vrios tipos de objetos no Delphi, entre eles, formas e controles. Controles so todos
os objetos que compem um formulrio, inserindo-o em um formulrio ou controlando os seus
eventos e propriedades. Um controle qualquer objeto que o usurio possa manipular desde
que no seja uma janela (formulrio).

Object Inspector
Nesta janela escolhemos como sero as caracteresticas de cada objeto do formulrio (botes
de comando, quadros de texto, formulrios, e outros), e a que eventos eles respondero,
definindo como eles sero apresentados e operados pelo cdigo. Cada um desses objetos
possui um conjunto especfico de propriedades que podem ser associadas a eles. Ao
trabalharmos nos diferentes objetos, a janela Object Inspector nos permitir mudar as
propriedades do objeto com que estamos trabalhando. Esta janela possui a divisria Events
onde esto listados todos os eventos possveis de ocorrerem com o objeto especificado.
Existem propriedades que podemos mudar enquanto construmos nosso projeto, ou seja, em
tempo de projeto, e outras propriedades que s podemos mudar durante a execuo do
projeto, neste caso em tempo de execuo.

Pgina: 9

DELPHI - BSICO
Na Object Inspector anterior, temos algumas das propriedades do formulrio assim que
iniciamos o Delphi.
Caixa de Objeto - Est caixa mostra o objeto atualmente selecionado, atravs dela tambm
podemos selecionar o objeto que queremos mudar as suas propriedades, basta dar um
clique na seta, que um menu de cortina se abrir, onde poderemos selecionar um
objeto.
Nome - Contm o nome do objeto atualmente selecionado, que ser utilizado pelo cdigo.
Este nome est na propriedade Name.
Tipo - Nesta posio encontraremos qual o tipo do objeto selecionado, se ele um TForm
(formulrio), TButton (boto de comando), TLabel (legenda), ou ento um TEdit
(quadro de texto).
Coluna de Propriedades - Exibe todas as propriedades que podemos modificar em tempo de
projeto do referido objeto.
Coluna de Valores - Exibe o valor da propriedade correspondente.

Pgina: 10

DELPHI - BSICO

MEU PRIMEIRO PROGRAMA


Para iniciar, vamos construir um programa que quando for dado um clique no boto de
comando, ser mostrada uma mensagem. E posteriormente poderemos alterar a cor desta
mensagem atravs de outros botes.
Existem trs passos principais para a escrita de uma aplicao no Delphi que iremos seguir:
Desenhar as janelas que se deseja usar.
Inserir no formulrio os controles que sero necessrios
Adaptar as propriedades dos objetos.
Alterar as propriedades dos controles s necessidades da aplicao
Escrever o cdigo para os eventos associados.
Esta a parte mais complexa do desenvolvimento, ela que d a funcionalidade
ao programa, so as rotinas que comeam a ser executadas a partir de um
evento.

Desenhar as janelas que se deseja usar.

1 - Comeamos inserindo um Label (Legenda) e um Boto de Comando no Formulrio,


de uma das duas maneiras:
a) Dando um duplo clique na barra de ferramentas no controle desejado;
b) Selecionando o controle e dar um clique no formulrio.
2 - Observe que, quando o controle estiver selecionado, poderemos arrast-lo e
dimension-lo dentro do formulrio.

Pgina: 11

DELPHI - BSICO

ADAPTAR AS PROPRIEDADES DOS OBJETOS


Para se alterar a propriedade de um objeto, ele tem que estar selecionado (com os oito pontos
dimensionadores visveis), depois procurar o nome da propriedade a ser alterada, na janela
Object Inspector, e selecionar (no caso de valores padro) o seu valor, ou ento escrever um
valor.
1 - Dimensione o formulrio da seguinte maneira:
Selecionar a propriedade Height, e atribuir a ela o valor de 150.

Selecionar a propriedade Width e dar o valor de 180.

Estes nmeros correspondem a Pixels, que a quantidade de pontos do monitor .


O mesmo dever ser feito para as propriedades Name e Caption. A propriedade Name ser a
identificao do Objeto quando construirmos o cdigo da aplicao. E a propriedade Caption
a palavra que aparecer como ttulo da janela.
Pgina: 12

DELPHI - BSICO

Aps voc alterar estas quatro propriedades (Caption, Height, Name e Width) do formulrio,
ela estar assim:

Agora, altere as propriedades do TLabel e do TButton.

Pgina: 13

DELPHI - BSICO

ESCREVER O CDIGO PARA OS EVENTOS ASSOCIADOS.


O cdigo escrito na janela Unit, para acess-la, selecione o boto Iniciar e na janela Object
Inspector, chame a divisria Events e d um duplo clique na parte direita da linha que contm o
evento OnClick - a rotina escrita para este evento, ser executada quando o boto Iniciar for
clicado. Isto traz a janela Unit para a frente.

Pgina: 14

DELPHI - BSICO
Janela Unit

Nesta janela observamos o nome da procedure, identificando qual o objeto e o evento que dar
incio execuo do cdigo, e onde est localizado este objeto.

Todas as instrues a serem executadas por um procedimento devem estar entre as palavras
reservadas Begin e End.
A Janela Unit tambm pode ser acessada dando-se um duplo clique no objeto que se quer criar
um cdigo. Cada objeto tem um evento que mais comumente utilizado, e com este evento
que o Delphi iniciar a Janela Unit quando acessada desta forma, isto no impede que criemos
outros cdigos utilizando mais de um evento ao mesmo tempo.
O nosso projeto de Incio, mostrar uma mensagem no Label (objeto) com um Click (evento)
no Boto Iniciar (objeto). Ou seja, iremos alterar a propriedade Caption de lblMensagem,
esta propriedade contm o que ser mostrado ao usurio.
Atribumos valores a uma propriedade de objeto seguindo o padro:
objeto + . + propriedade + := + valor da propriedade ;
Abra a Janela Unit para o boto de comando e digite o cdigo conforme a figura a seguir.
Repare que ao digitar o ponto aps LabelMensagem, e aguardando alguns instantes, o Delphi
exibir uma lista de propriedades e mtodos do controle Label.
Pgina: 15

DELPHI - BSICO

Esta ajuda do Delphi pode ser acionada para qualquer controle ou funo, quando digitamos o
nome de uma funo, ele exibe os parmetros necessrios para a execuo desta funo.

Para escolher uma propriedade do LabelMensagem, selecione-a com as setas de direo e


ento pressione Enter, inserindo-a na linha de comando. Ou ento, digite a primeira letra da
propriedade, selecionando-a.

Pgina: 16

DELPHI - BSICO

Continue com o cdigo, seguindo a figura mostrada abaixo. Quando for dado um clique em
Iniciar, ser mostrada a mensagem Voc deu um Clique em Iniciar.

Clique sobre o boto Run da barra de ferramentas (


) para que o Delphi inicie a compilao
do projeto. Em seguida, selecione o boto Iniciar para ver o resultado.

Pgina: 17

DELPHI - BSICO
Finalize a execuo do projeto teclando Alt+F4 ou no boto Finalizar (
janela.

) da barra de ttulo da

Para alternar a visualizao entre o Formulrio e a janela de cdigo Unit, utilize o boto
Toggle Form/Unit (

) na barra de ferramentas.

Existem propriedades que possuem valores predefinidos, quando escolhemos a propriedade


Alignment e damos um clique na seta da caixa de valor, aparecem os tipos de alinhamento
para o texto.

Selecione o objeto TLabel atravs da Caixa de Objeto da janela Object Inspector, e altere a
propriedade Alignment para taCenter, para que o texto no TLabel fique centralizado. Altere
tambm a propriedade AutoSize para False, e no Formulrio aumente a largura do TLabel.

Pgina: 18

DELPHI - BSICO

Alm das propriedades descritas acima, com padres pr-definidos, existem outras que
possuem inmeras escolhas, neste caso, ao invs de uma seta, observaremos trs pontos,
este o caso da propriedade Font.

Quando selecionamos os trs pontos, aparece um Quadro de Dilogo onde escolheremos o


formato da fonte que ser apresentada a mensagem.
No seu projeto Iniciar, teste as alteraes de fonte e observe as mudanas. Na figura a seguir,
foi utilizada a fonte Arial com tamanho de 14 pontos.

Pgina: 19

DELPHI - BSICO

Observe na figura acima que o texto no coube na rea de exibio do TLabel e nem do
Formulrio, ns temos duas opes para que este texto aparea integralmente. A primeira,
alterar para True, a propriedade WordWrap do TLabel, esta propriedade insere uma mudana
de linha quando o texto atinge a margem direita do objeto. A segunda, redimensionar os
tamanhos da TLabel e do Formulrio. Como mostram as figuras a seguir.

Pgina: 20

DELPHI - BSICO

EXEMPLO I - CALCULADORA

Para iniciar um novo projeto, escolha a opo New Application do menu File. No salvando o
projeto Iniciar anterior.
Dimensione e insira os controles, utilizando a Paleta de Componentes, no formulrio como o
exemplo abaixo. Dimensionamos o formulrio no Delphi da mesma forma que no Windows
dimensionamos as janelas.
Para inserir vrios objetos repetidos no Formulrio, damos um clique no cone do objeto
escolhido enquanto pressionamos a tecla Shift, ele ficar conforme a figura abaixo mostra.

Logo aps, basta ir inserindo o objeto (no caso, o Edit) dentro do Formulrio, sem se preocupar
com a esttica. Aps inserir todos os componentes repetidos, clique no cursor bitmap em
forma de seta, isto desativar o boto selecionado anteriormente.

Observe que os objetos TEdit esto desalinhados, o Dephi nos oferece um recurso para
realizar rapidamente um alinhamento entre objetos.
Primeiro deveremos selecionar os objetos que queremos alinhar. Pressione a tecla Shift
enquanto voc d um clique em cada um dos TEdit, selecionando todos ao mesmo tempo
como mostra a figura a seguir.

Pgina: 21

DELPHI - BSICO

Depois disto, pressione o boto direito do mouse em cima de um TEdit, para aparecer o popmemu. Escolha Align..., aparecendo a janela Alignment.

Escolha Space equally (igualmente espaado) para alinhamento horizontal, e Tops (topo)
para o alinhamento vertical.

Pgina: 22

DELPHI - BSICO
Aps o alinhamento, nosso Formulrio estar conforme a figura abaixo:

Insira os objetos restantes da maneira que preferir, posicionando-os de acordo com a figura
abaixo:

Agora, altere as propriedades assinaladas dos Objetos conforme a figura a seguir:

Neste exemplo de projeto, digitaremos um nmero em Edit1, outro em Edit2, e quando for dado
um Click em Button1, o resultado da multiplicao aparecer em Edit3. Para limpar os
Quadros de texto, usaremos o Button2.

Pgina: 23

DELPHI - BSICO
O projeto ir trabalhar basicamente com dois eventos :

Click em Button1 (=)


Click em Button2 (Limpar)

Ento, para escrevermos o cdigo, daremos dar um Duplo Click no Button1 - janela Unit ser
mostrada. Entre com o cdigo mostrado na figura a seguir:

Alterne para o procedimento do Button2. E entre com os comandos a seguir:

Pgina: 24

DELPHI - BSICO
Execute o projeto. Para utiliz-lo, entre com um nmero em Edit1, outro em Edit2 e d um Click
em =, e o resultado da multiplicao aparecer em Edit3.
Note que alternamos os campos ativos com a tecla Tab. A ordem de tabulao corresponder
ordem em que os controles foram colocados no formulrio. Esta ordem determinada pela
propriedade TabOrder dos controles, caso o seu projeto no esteja, coloque-o na seguinte
ordem:
Objeto
Edit1
Edit2
Edit3
Button1
Button2

TabOrder
0
1
2
3
4

Para alterar esta propriedade basta selecionar o controle, e na janela Object Inspector, procure
TabOrder e altere o seu valor, o Delphi no aceita controles com TabOrder de mesmo valor.
Execute o projeto e observe a alterao.
Note que podemos alterar o valor de Edit3 mesmo aps a multiplicao ter sido efetuada. Para
evitar isso, defina a propriedade TabStop=False para Edit3 e ver que o usurio no ter mais
acesso com a tecla Tab ao Edit3.

Existem, nas aplicaes para Windows, botes de comando que so acionados com a tecla
Enter ou com um Click neles. No nosso projeto este boto ser o Button1, por isso, a
propriedade Default foi selecionada para True. Fazendo aparecer um contorno mais espesso
no boto, dando a indicao que se a tecla Enter for acionada, a procedure associada a este
boto ser executada.

Pgina: 25

DELPHI - BSICO
PROPRIEDADES

BorderStyle
Retorna ou d o estilo de borda de um objeto;
objeto.BorderStyle := [valor]

Existem 6 tipos de bordas:


1 - bsDialog

O formulrio no possui os botes de


maximizar e nem de minimizar. No
redimensionvel.

2 - bsNone

Nenhuma

Pgina: 26

DELPHI - BSICO
3 - bsSingle

Fixa Simples, o formulrio s dimensionvel


atravs dos botes de minimizar e maximizar.

4 - bsSizeable

Redimensionvel

5 - bsSizableToolWindow

6 - bsToolWindow

Semelhante bsToolWindow,
mas dimensionvel.

No mostra os botes de maximizar e


de minimizar. No redimensionvel, e
mostra somente o boto de fechar e a
barra de ttulo com a fonte reduzida. E
o formulrio no aparece na barra de
tarefa do Windows 95.

As Bordas Fixas no podem ser dimensionadas em tempo de execuo. Ou seja, o usurio


no poder mudar o tamanho do formulrio.

Pgina: 27

DELPHI - BSICO

Default
Retorna ou d o valor de um boto de comando em um formulrio;
object.Default :[= booleano]
Default=

False
True

Quando esta propriedade de um TButton estiver como True o Delphi chamar o evento Click
sempre que a tecla Enter for pressionada.
Ex:

Desejo que o boto BtnMultiplicar seja o default:


btnMultiplicar.Default := True;

Desejo saber se o boto cmdMultiplicar default ou no, e o resultado ser armazenado


na varivel booleana Estado:
Estado := btnMultiplicar.Default;

Tabstop
Retorna ou d o valor ao objeto indicado;
objeto.TabStop: [= booleano]
TabStop =

False
True

Ex:
Para alterar a ordem de tabulao dos botes em tempo de execuo basta incluir estas
linhas em algum procedimento:
btnMultiplicar.TabStop := 0;
btnDividir.TabStop := 1;
btnSomar.TabStop := 2;
btnSubtrair.TabStop := 3;
Para saber qual a ordem de tabulao do objeto txtNum1 e armazen-la em uma
varivel que conter a ordem de tabulao do objeto:
Ordem_Tab:= editNum1.TabStop;
No ambiente Windows comum mudarmos o foco entre os controles com a tecla Tab. Quando
no quisermos que o usurio acesse determinado controle usando Tab, definimos a
propriedade TabStop desse controle como False.
Pgina: 28

DELPHI - BSICO

Name
Nome que dado ao objeto como referncia para o cdigo e definio de propriedades. Em
tempo de execuo, retorna o nome usado por um controle;
objeto.Name
Ex:

Desejo exibir o Name do Formulrio em um Edit:


editNome_Form.Text := frmCalculadora.Name;

Caption
objeto.Caption :[= string]
Determina o texto mostrado na barra de ttulo do formulrio, o texto dentro de um controle ou
um ttulo na barra de menu.
Ex:
Alterar o Caption do boto Limpar aps o seu uso, basta inserir esta linha no
procedimento cmdLimpar_Click:
btnLimpar.Caption := Iniciar

Text
Retorna o texto que est escrito na rea de edio de um quadro de texto (TextBox), ou
escreve um String nesta rea;
objeto.Text :[= string];

MTODO

Setfocus
D o foco ao objeto indicado;
objeto.SetFocus
Fixa o foco a um formulrio ou controle. Somente pode ser usado para um formulrio ou
controle visveis.
Pgina: 29

DELPHI - BSICO
VARIVEIS NO DELPHI
Varivel um local nomeado da memria, onde so guardados dados que podem ser mudados
em tempo de execuo. O nome de uma varivel pode ter at 255 caracteres, tem que
comear com uma letra, no pode conter caracteres brasileiros e ser nica. O nome pode
conter nmeros e sublinhados e no pode ser uma palavra reservada.
Existem vrios tipos de variveis, dependendo do tipo de dados que queremos que ela
armazene.

Tipos
Inteiros
ShortInt
Integer
LongInt
Byte
Word
Tipos
Booleanos
Boolean
ByteBool
WordBoll
LongBoll
Tipos
Reais
Real
Single
Double
Extended
Comp

Nmero de
Bytes
1
2
4
1
2

Faixa
-128 a 127
-32768 a 32767
-2147483648 a 2147483647
0 a 255
0 a 65535

1
1
2
4

1 byte booleano
Byte - sized Booleano
Word - sized Booleano
Double - word - sized Booleano

6
4
8
10
8

2,9.10-39 a 1,7.1038
1,5.10-45 a 3,4.1038
5.10-324 a 1,7.10308
3,4.10-4932 a 1,1.104932
-263+1 a 263-1

Pgina: 30

DELPHI - BSICO

Formas de Declarar uma Varivel


As variveis so declaradas usando-se a palavra reservada Var, o nome da varivel, dois
pontos e o tipo
Var
Valor1: Real;

Elas podem ser declaradas em trs locais diferentes, conforme a sua abrangncia:
1 - Varivel Local; ela ser utilizada somente pelo procedimento onde est declarada,
terminado o procedimento ela desaparecer da memria. declarada logo aps o cabealho
do procedimento.
2 - Varivel a nvel de Unidade (Unit); a varivel ser utilizada por todos os
procedimentos e funes da unidade.
declarada logo aps a palavra reservada
implementation.
3 - Varivel a nvel de projeto; a varivel que poder ser utilizada por toda a aplicao,
ou seja, poder ser utilizada por outras unidades. declarada na seo interface da unidade.
FORMATAO DE NMEROS
A funo FloatToStr, transforma um nmero em texto, mas no padroniza a sua apresentao.
Caso necessitemos formatar um dado a ser exibido, usaremos a funo;
FormatFloat(formato , expresso), onde:
- formato = a maneira como dever ser mostrada a expresso.
- expresso = expresso numrica ou string a ser formatado.

Formatando nmeros:
Formato
0
0,00
#.##0
#.##0,0
$#.##0;($#.##0)
$#.##0,00;($#.##0,00)
0%
0,00E+00

5 positivo
5
5,00
5
5,0
$5
$5,00
500%
5,00E+00

5 negativo
-5
-5,00
-5
-5,0
($5)
($5,00)
-500%
-5,00E+00

5 decimal
1
0,50
1
0,5
$1
$0,50
50%
5,00E-1
Pgina: 31

DELPHI - BSICO
Em formato o nmero 0 ser mostrado ou trocado pelo caractere em sua posio, j o nirus
(#) no ser mostrado. Podemos inserir smbolos na funo Format, como no exemplo: $ , %
ou E.

Formatando Data e Hora:


Para formatar data e hora usamos a funo:
FormatDateTime (formato , data);
Formato

Exibido

d/m/yy
dd-mm-yyyy
dd-ddd
hh:mm AM/PM
h:mm:ss a/p
d/m/yy h:mm

10/7/96
01-Jun-1996
02-dom
08:50 AM
8:50:20 a
03/12/95 9:30

MODIFICANDO A CALCULADORA
No Formulrio da calculadora, selecione o boto de comando Button1 e pressione a tecla
Delete. O boto de igual desaparecer do formulrio, mas o seu cdigo continuar na janela
Unit. Selecione a janela Unit, e observe que a procedure TfrmCalculadora.Button1Click
continua no mesmo lugar.

Agora, deixe o formulrio TfrmCalculadora como o exemplo a seguir:

Na figura aparecem as propriedades Name de cada objeto

Pgina: 32

DELPHI - BSICO
Para que o Button5 exiba o smbolo correto da diviso, primeiro altere a sua fonte para
Symbol. Depois, abra o Mapa de caracteres do Windows e procure pelo smbolo da diviso na
fonte Symbol, e ento utilize o recurso de copiar e colar na propriedade Caption deste boto de
comando. Provavelmente o caractere que aparecer na caixa de propriedade no ser o
mesmo do boto, mas no se preocupe com este problema.
Chame o procedimento para o Button1 dando um duplo clique no boto de comando. Note
que antes este procedimento executava uma multiplicao, agora dever executar uma soma.
Usaremos tambm a funo FormatFloat para formatar a apresentao do resultado.
As duas variveis Valor1 e Valor2 que antes pertenciam a apenas um procedimento, agora
devero ser utilizadas pelos procedimentos das outras operaes. Para que isso ocorra, retireas do procedimento TfrmCalculadora.Button1Click e declare-as na seo Implementation da
Unidade.

Substitua o tipo de operao em Button1Click, e nos demais botes, utilizando as ferramentas


de Copiar e Colar.

Pgina: 33

DELPHI - BSICO

Teste os vrios formatos de apresentao dos nmeros, alterando o formulrio de


apresentao da funo FormatFloat.
Um projeto em Delphi trabalha com vrios arquivos. Um arquivo para cada Formulrio, outro
para Unidade e um arquivo para o Projeto. Os arquivos de Unidades possuem a extenso
.PAS, o arquivo do Projeto .DPR e o do Formulrio, .DFM. Quando salvamos nosso projeto o
Delphi solicita apenas os nomes dos arquivos de Unidade e Projeto, o do formulrio ele cria
automaticamente.

Vamos salvar o nosso projeto Calculadora.


No menu, selecione File / Saveall e aparecer o quadro de dilogo de salvar do Windows,
pedindo para dar um nome ao arquivo do Formulrio, extenso .pas, d o nome de calculadora
e clique em Salvar. A seguir, aparecer o mesmo quadro pedindo para dar um nome ao
arquivo de projeto, extenso .dpr, d o nome de calculador.dpr e clique em Salvar. Os nomes
dos arquivos da Unidade e do Projeto devero ser diferentes, apesar da extenso j o ser.

Pgina: 34

DELPHI - BSICO

O nosso projeto est salvo. Agora, precisamos escolher um cone que o representar na tela
do Windows. No menu principal do Delphi, selecione Project / Options..., e escolha a pgina
Application:

Pgina: 35

DELPHI - BSICO
Clique no boto Load Icon... , e procure o cone Finance.ico, no diretrio \Images\Icons do
Delphi, escolha Abrir para voltar janela Project Options. D um ttulo ao programa e pronto, o
programa j possui um cone e um ttulo associados. Verifique no Explorando.

Execute novamente o projeto para o Delphi gerar um novo arquivo executvel contendo as
ltimas alteraes realizadas. Agora, voc tem um programa executvel em qualquer
microcomputador que possua o sistema Windows 95, sem necessariamente ter o DELPHI
instalado.

Pgina: 36

DELPHI - BSICO

EXEMPLO II - JOGO DA VELHA

Para iniciar um novo projeto, selecione New Application do menu File. Caso voc ainda no
tenha salvo o seu projeto corrente, o Delphi abrir as janelas necessrias para salvar o projeto.
E s ento iniciar o novo projeto.
Vamos iniciar um projeto de Jogo da Velha, onde o usurio ir jogar contra o computador que
no pensa as suas jogadas, pois ele trabalha com jogadas aleatrias, e ao final da partida
ser mostrado um quadro de mensagem informando quem ganhou a partida.
Insira um boto de comando no Formulrio dimensionando-o como um quadrado, como mostra
a figura.

Selecione o Boto, Copie-o (Ctrl+C) e Cole (Ctrl+V) mais oito botes iguais. Formando um
total de nove botes.

Pgina: 37

DELPHI - BSICO
Estes botes de comando esto nomeados de Button1 a Button9, de cima para baixo. Arrasteos de forma que fiquem como a figura abaixo.

Nosso jogo ir modificar a propriedade Caption desses botes, mas para iniciar o jogo, todos
devem estar em branco. Primeiro devemos selecionar todos ao mesmo tempo, para isso,
posicione o ponteiro do mouse em um canto do Formulrio e depois arraste-o at que o
retngulo pontilhado envolva todos os botes.

V at a janela Object Inspector e deixe a propriedade Caption em branco. Qualquer


propriedade que for alterada enquanto a seleo estiver ativa, servir para todos os botes.
Altere tambm as propriedades Name, Caption e BorderStyle do Formulrio.

Pgina: 38

DELPHI - BSICO

Uma Unit possui as seguintes sees:

Cabealho
Interface
Implementao
Inicializao

O cabealho identifica o nome da Unit. Ele bem compacto, contendo a palavra reservada
Unit e o nome da unidade, que no precisa ser o mesmo nome do arquivo .PAS, que a contm.
Na seo Interface declaramos as variveis e cdigos que podem ser usados por cdigos de
outras unidades e lista todas as outras Units que ela precisa ver. Se esta Unit precisar
utilizar algum recurso de outra Unit, deveremos referenciar esta outra Unit na clusula uses da
seo de interface. Na seo Implementation so declarados os cdigos e variveis que
pertenam exclusivamente unidade.

UNIDADE <nome da unidade>;


INTERFACE
Seo de interface

IMPLEMENTATION
Seo de implementao

FIM.
Na seo de Interface da nossa unidade est sendo definido o tipo TPainel (o nosso
Formulrio) como sendo um Formulrio (TForm) e, a seguir, so listados todos os controles,
seus tipos, e procedimentos pertencentes a este Formulrio.

Pgina: 39

DELPHI - BSICO
A figura abaixo mostra a listagem da Unit do nosso projeto:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs;
type
TPainel = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
procedure JogoNovo;
procedure Verificar;
Os procedimentos devem primeiro ser declarados para depois serem implementados, declare
os procedimentos JogoNovo e Verificar como mostrado acima. A implementao de um
procedimento nada mais que a construo do seu cdigo.
Devemos declarar tambm a varivel Botao na seo Implementation. Esta varivel uma
matriz unidimensional com nove elementos do tipo TButton, ou seja, cada varivel dessa
possui as mesmas propriedades de um boto de comando. Esta matriz poderia conter
nmeros inteiros (array [1..9] of Integer;) ou strings.

Pgina: 40

DELPHI - BSICO
Quando o projeto iniciar, o Formulrio ser carregado na memria, neste momento ocorre um
evento OnCreate. Neste evento colocaremos um procedimento de inicio do jogo. D um duplo
clique no Formulrio para ter acesso ao editor de cdigo (Unit), ou selecione o Formulrio, v
at a janela Object Inspector escolhendo o indicador Events, e d um duplo clique em
OnCreate. Aparecendo a janela Unit com o cabealho do procedimento.

Entre com o cdigo mostrado na figura abaixo:

Pgina: 41

DELPHI - BSICO
No procedimento acima, temos a procedure Randomize que inicializa o gerador de nmeros
aleatrios utilizando como base o relgio do sistema. Nas prximas linhas atribumos valores
varivel Botao[ ], associando-a aos botes do Formulrio. E logo a seguir chamada a
procedure JogoNovo.
Digite a procedure JogoNovo na seo Implementation, como segue. Declare tambm a
varivel NumeroVezes que poder ser utilizada por todos os procedimentos desta Unidade.

No cabealho, observamos que o nome da procedure composto do nome do objeto que


contm a procedure e o nome da procedure, declarada anteriormente.

O procedimento JogoNovo, inicia um novo jogo apagando todas as legendas dos botes e
fazendo uma nova jogada aleatoriamente.
As variveis M: Real; e i: Integer; so de uso exclusivo deste procedimento. Findo o
procedimento, elas deixaro de existir.

Pgina: 42

DELPHI - BSICO
Para apagar as legendas usamos a instruo for...to, que ir em loop apagando as legendas.
Aqui usamos a varivel Botao [i] para identificar os botes do Formulrio, com o index i do loop
for..to. A instruo for...to, pode ser tambm for...downto, para decrementar o valor da
varivel de controle (i).
No exemplo, usamos somente uma declarao aps o do, se fossem necessrias mais
declaraes, teramos que usar begin..end; como uma maneira de agrupar estas declaraes,
indicando que todas fazem parte do loop for...to, como mostra o exemplo abaixo :

for i:=1 to 3 do
begin
Botao[i].Caption:='';
Botao[i+1].Caption:='';
Botao[i+2].Caption:='';
end;
Na linha M:= Int (Random *10);, atribumos um valor inteiro varivel M entre 1 e 10.
A procedure Random gera um nmero do tipo Real X sendo, 0<= X <1, multiplicamos este
nmero por 10 e pegamos a sua parte inteira, que apesar de ser um nmero inteiro do tipo
Real, no podendo us-lo para indicar um boto.
Primeiro convertemos este nmero em um String usando a funo FloatToString, e depois
convertemos o String em um nmero do tipo Inteiro com a funo StringToInt.
O prximo passo fazer o cdigo dos botes, d um duplo clique no Button1 para a janela de
cdigo aparecer, e copie o exemplo. Faa o mesmo para os demais botes.

Pgina: 43

DELPHI - BSICO
O evento OnClick nos botes que dar partida ao programa. O procedimento associado a
este evento, incrementar o nmero de jogadas (NumeroVezes), mudar a legenda do boto e
chamar o procedimento para verificar se o jogo terminou.
Construa o procedimento Verificar na seo de implementao da unidade, como segue:

procedure TPainel.Verificar ();


label 1,2;
var i: Integer;
Begin
if (Button1.Caption='X') and
and (Button3.Caption='X')
if (Button4.Caption='X') and
and (Button6.Caption='X')
if (Button7.Caption='X') and
and (Button9.Caption='X')
if (Button1.Caption='X') and
and (Button7.Caption='X')
if (Button2.Caption='X') and
and (Button8.Caption='X')
if (Button3.Caption='X') and
and (Button9.Caption='X')
if (Button1.Caption='X') and
and (Button9.Caption='X')
if (Button3.Caption='X') and
and (Button7.Caption='X')

(Button2.Caption='X')
then goto 1;
(Button5.Caption='X')
then goto 1;
(Button8.Caption='X')
then goto 1;
(Button4.Caption='X')
then goto 1;
(Button5.Caption='X')
then goto 1;
(Button6.Caption='X')
then goto 1;
(Button5.Caption='X')
then goto 1;
(Button5.Caption='X')
then goto 1;

repeat i:=StrtoInt(FloattoStr(Int (Random *10))) until


Botao[i].Caption='' ;
Botao[i].Caption:='0';
if (Button1.Caption='0') and
and (Button3.Caption='0')
if (Button4.Caption='0') and
and (Button6.Caption='0')
if (Button7.Caption='0') and
and (Button9.Caption='0')
if (Button1.Caption='0') and
and (Button7.Caption='0')
if (Button2.Caption='0') and
and (Button8.Caption='0')
if (Button3.Caption='0') and
and (Button9.Caption='0')
if (Button1.Caption='0') and
and (Button9.Caption='0')
if (Button3.Caption='0') and
and (Button7.Caption='0')
if NumeroVezes= 4 then

(Button2.Caption='0')
then goto 2;
(Button5.Caption='0')
then goto 2;
(Button8.Caption='0')
then goto 2;
(Button4.Caption='0')
then goto 2;
(Button5.Caption='0')
then goto 2;
(Button6.Caption='0')
then goto 2;
(Button5.Caption='0')
then goto 2;
(Button5.Caption='0')
then goto 2;
Pgina: 44

DELPHI - BSICO
Begin
ShowMessage ('Partida Empatada');
JogoNovo;
Exit;
End;
Exit;
1:
Begin
ShowMessage ('Voc Ganhou');
JogoNovo;
Exit;
End;
2:
Begin
ShowMessage ('Eu Ganhei');
JogoNovo;
Exit;
End;
End;
Logo aps o cabealho, temos as declaraes locais. Usamos a declarao label para definir
os locais de desvio da instruo goto. E tambm declaramos a varivel i como do tipo integer.
A instruo repeat declarao until expresso; repete a declarao enquanto a expresso for
verdadeira. No nosso exemplo, o programa selecionar um boto aleatoriamente, at que seja
encontrado um boto vazio - Caption:= ''.
O Boto encontrado anteriormente ser preenchido com 0,
computador.

indicando a jogada do

A procedure ShowMessage, mostra um quadro de mensagem com o boto de Ok. O programa


fica parado at que o usurio d um clique em Ok, retornando linha seguinte no
procedimento.
O Windows possui quadros padronizados de mensagem que servem para emitir aviso e
recolher opes de tratamento dessas mensagens. Podemos incrementar o nosso programa do
Jogo da Velha, criando um quadro de mensagem com vrios botes e que retorne uma
resposta do usurio, indicando qual boto foi escolhido. Para isso utilizamos a funo
MessageBox.
Esta funo pertence biblioteca do Windows (API). O Delphi a relaciona ao objeto do tipo
TApplication.
MessageBox (Mensagem ,Ttulo, Tipo);

Pgina: 45

DELPHI - BSICO
Onde:
mensagem - expresso mostrada dentro do quadro de dilogo.
tipo - somatria de nmeros, conforme o que queremos que seja exibido no Quadro de
Mensagem, seguindo a tabela Tipo.
ttulo - ttulo do Quadro de Mensagem (barra de ttulo).
Mude o cdigo do procedimento Verificar, como mostrado abaixo.

1:
Begin
Resposta:=Application.MessageBox
('Voc ganhou, quer Jogar Novamente?','Vencedor',36);
if Resposta = 7 then Close;
JogoNovo;
Exit;
End;
2:
Begin
Resposta:=Application.MessageBox
('Eu ganhei, quer Jogar Novamente?','Vencedor',36);
if Resposta = 7 then Close;
JogoNovo;
Exit;
End;

Argumento Tipo para a funo MessageBox


Valor

Significado

0
1
2
3
4
5

Somente o boto de OK
Botes de OK e Cancelar
Botes Anular, Repetir e Ignorar
Botes Sim, No, Cancelar
Botes Sim, No
Botes Repetir e Cancelar

16
32
48
64

Sinal de Stop
Sinal de Pesquisa
Sinal de Aviso
cone de Informao

0
256
512

Primeiro boto com foco


Segundo boto com foco
Terceiro boto com foco

Teste o projeto alterando o valor de tipo para Messagebox, faa a sua soma escolhendo um
item de cada seo.
Pgina: 46

DELPHI - BSICO
A varivel Resposta, conter a resposta do usurio que segue o padro da tabela abaixo.

Valor
1
2
3
4
5
6
7

Significado
Boto OK foi pressionado
Boto Cancelar foi pressionado
Boto Anular foi pressionado
Boto Repetir foi pressionado
Boto Ignorar foi pressionado
Boto Sim foi pressionado
Boto No foi pressionado

No nosso caso, o programa verificar se o boto No foi pressionado, e se foi, fechar o


Formulrio principal, encerrando o programa.

Pgina: 47

DELPHI - BSICO

EXEMPLO III - BLOCO DE NOTAS

O nosso prximo projeto ser um editor de texto simples do tipo caractere, com ele poderemos
alterar o tipo e tamanho da fonte utilizada em todo o texto, recortar, colar e copiar partes
selecionadas, salvar e abrir nosso texto utilizando as caixas de dilogo padro fornecidas pelo
Delphi.
Monte o formulrio conforme o exemplo:

Defina a propriedade Align do componente Memo como alCliente. Esta propriedade faz com
que o Memo ocupe toda a rea do cliente do Formulrio, mesmo que ela seja redimensionada.
O Delphi possui componentes visveis e no visveis. Os componentes visveis so aqueles
que durante a execuo do programa so vistos pelo usurio. At aqui todos os componentes
que trabalhamos so visveis, como TEdit, TButton, TForm e outros.
Os componentes no visveis, no aparecem na janela do usurio em tempo de execuo. So
eles, Timer, Menus, Caixas de dilogo comuns e controle de acesso a dados.
O nosso exemplo de Bloco de Notas, usar um menu e quatro caixas de dilogo.
Para comear a editar o menu, d um duplo clique no controle MainMenu que est dentro do
Formulrio, para que a janela Menu Designer aparea.

Pgina: 48

DELPHI - BSICO

nesta janela que iremos construir o menu do nosso exemplo. Observe que o primeiro ttulo j
est selecionado.
V at a janela Object Inspector e mude a propriedade Caption para &Arquivo e pressione
Enter - para acesso via teclado, usamos o & comercial antes da letra que queremos que seja
o atalho. Este procedimento, cria o menu Arquivo e move a barra de destaque para baixo, para
podermos digitar o primeiro item do menu Arquivo. Repare que o Delphi coloca um nome para
este menu baseado na propriedade Caption, neste caso Name:=Arquivo.

Monte as demais opes do nosso menu seguindo a janela Menu Designer mostrada abaixo.
Para criar um separador no menu, digite apenas um sinal de menos ( - ) na propriedade
Caption do item abaixo de Salvar.

Pgina: 49

DELPHI - BSICO

Terminado o menu Arquivo, inicie o menu Editar, como segue abaixo. Defina as teclas de
atalho na propriedade ShortCut dos itens de menu.

Quando chegarmos ao item Formatar Fonte..., exiba o menu local (d um clique com o boto
direito em cima do item) e escolha Create Submenu, para criar um submenu deste item.

Pgina: 50

DELPHI - BSICO

O sub-menu de Formatar Fonte..., dever estar igual a figura mostrada abaixo. Como o
Delphi no reconhece caracteres acentuados e nem brasileiros, o nome que ele dar para o
item Itlico ser Itlico, suprimindo a letra acentuada ( Name:= Itlico).

Feche a Menu Designer, voltando ao Formulrio principal. Insira nele as caixas de dilogo que
iro formatar a fonte exibida no componente Memo, e as caixas que iro operar com o disco
(HD).

Pgina: 51

DELPHI - BSICO

Acabamos de desenhar o nosso Formulrio, colocando todos os componentes a ele


pertencentes. Tanto os visveis como os no visveis. Mesmo os componentes no visveis
estando em cima do Memo, no atrapalharo a apresentao do texto.
Salve seu trabalho para darmos incio construo do cdigo.

As caixas de dilogo so mostradas atravs do mtodo Execute. Quando usamos o mtodo


Execute, ele responde True se o usurio tiver selecionado Ok, indicando que o programa
dever responder s alteraes da caixa de dilogo exibida. Se o usurio no quiser efetuar
as mudanas, ser retornado False.

Pgina: 52

DELPHI - BSICO
D um clique no item Novo do nosso menu, para chamar o procedimento associado. Este
procedimento ir limpar a caixa Memo1 e desabilitar as opes de edio do texto. Estas
opes estaro desabilitadas at que se tenha um texto para Recortar, Copiar ou Colar. Siga o
cdigo mostrado abaixo:

procedure TPrincipal.Novo1Click(Sender: TObject);


begin
Memo1.Clear;
Recortar1.Enabled:=False;
Copiar1.Enabled:=False;
Colar1.Enabled:=False;
end;

A opo Abrir trabalhar com a caixa de dilogo OpenDialog, verificando o valor de Execute e
carregando o contedo do arquivo selecionado, na propriedade Lines do objeto Memo.

procedure TPrincipal.Abrir1Click(Sender: TObject);


begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.Filename);
end;
Digite o cdigo para as outras caixas de dilogo. Elas trabalham alterando as propriedades do
Memo aps as mudanas realizadas pelo usurio.

procedure TPrincipal.Salvar1Click(Sender: TObject);


begin
if SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.Filename);
end;
procedure TPrincipal.Fonte1Click(Sender: TObject);
begin
FontDialog1.Font:=Memo1.Font;
{inicializa a FontDialog com a font de Memo}
if FontDialog1.Execute then
Memo1.Font:=FontDialog1.Font;
end;

Pgina: 53

DELPHI - BSICO
A linha entre chaves indica um comentrio, e no ser tratada pelo compilador do
Delphi.
procedure TPrincipal.Cor1Click(Sender: TObject);
begin
ColorDialog1.Color:=Memo1.Color;
if ColorDialog1.Execute then
Memo1.Font.Color:=ColorDialog1.Color;
end;

Quando o programa comea a ser executado, o evento OnCreat ocorre com o Formulrio, no
procedimento deste evento, iremos apagar o contedo do Memo e desabilitar as opes do
menu Editar.

procedure TForm1.FormCreate(Sender: TObject);


begin
Memo1.Clear;
Recortar1.Enabled:=False;
Copiar1.Enabled:=False;
Colar1.Enabled:=False;
end;

As opes Recortar e Copiar do menu Editar, estaro ativas assim que o Memo contiver algum
texto. Cada vez que ocorre uma mudana no Memo, o evento OnChange gerado.

procedure TPrincipal.Memo1Change(Sender: TObject);


begin
Recortar1.Enabled:=True;
Copiar1.Enabled:=True;
end;

Os recursos de Recortar, Colar e Copiar utilizam o objeto TClipBoard. Com ele ns usamos a
rea de transferncia do Windows e podemos trocar informao entre programas. O objeto
TMemo possui mtodos prprios de trabalhar com o Clipboard, eles esto nos procedimentos
para os itens do menu Editar mostrados abaixo.

procedure TPrincipal.Recortar1Click(Sender: TObject);


begin
Memo1.CutToClipboard;
Colar1.Enabled:=True; {habilita o item Colar}
end;
Pgina: 54

DELPHI - BSICO
procedure TPrincipal.Copiar1Click(Sender: TObject);
begin
Memo1.CopyToClipboard;
Colar1.Enabled:=True;
end;

procedure TPrincipal.Colar1Click(Sender: TObject);


begin
Memo1.PasteFromClipboard;
end;
As opes Negrito e Itlico, formataro o texto e mudando tambm a propriedade Checked do
item no menu, indicando que elas esto selecionadas. Os procedimentos associados trabalham
juntos com o procedimento Fonte que verificar o estado das opes alterando as
propriedades da fonte do Memo.
Comece declarando o procedimento Fonte na seo de definio do tipo TPrincipal - Nosso
Formulrio. E depois, implemente-a na seo Implementation.

procedure
procedure
procedure
procedure
procedure
procedure
procedure
procedure
procedure
procedure
procedure

Novo1Click(Sender: TObject);
Abrir1Click(Sender: TObject);
Salvar1Click(Sender: TObject);
Fonte1Click(Sender: TObject);
Cor1Click(Sender: TObject);
FormCreate(Sender: TObject);
Memo1Change(Sender: TObject);
Recortar1Click(Sender: TObject);
Copiar1Click(Sender: TObject);
Colar1Click(Sender: TObject);
Fonte;

private
{ Private declarations }
public
{ Public declarations }
end;

Pgina: 55

DELPHI - BSICO
implementation
{$R *.DFM}
procedure TPrincipal.Fonte ();
begin
if (Negrito1.Checked=False) and (Itlico1.Checked=False) then
Memo1.Font.Style:= [];
if (Negrito1.Checked=True) and (Itlico1.Checked=False) then
Memo1.Font.Style:= [fsBold];
if (Negrito1.Checked=False) and (Itlico1.Checked=True) then
Memo1.Font.Style:= [fsItalic];
if (Negrito1.Checked=True) and (Itlico1.Checked=True) then
Memo1.Font.Style:= [fsBold, fsItalic];
end;
procedure TPrincipal.Negrito1Click(Sender: TObject);
begin
Negrito1.Checked:= Not Negrito1.Checked;
Fonte;
end;
procedure TPrincipal.Itlico1Click(Sender: TObject);
begin
Itlico1.Checked:= Not Itlico1.Checked;
Fonte;
end;

Quando o usurio clicar no menu Sair, fechar o formulrio, finalizando a execuo do


programa pois este o nico formulrio do nosso aplicativo. Isto feito com o uso do mtodo
Close.
procedure TForm1.Sair1Click(Sender: TObject);
begin
Close;
end;

Salve seu trabalho, e teste o programa pressionando F9.


Ns j aprendemos a associar um cone ao nosso projeto, mas agora iremos aprender a
desenhar um utilizando o aplicativo Image Editor do Delphi. Para inicializ-lo, v at a opo
Tools do menu principal do Delphi, e escolha Image Editor.

Pgina: 56

DELPHI - BSICO

Escolha a opo New do menu File, e IconFile.

Pgina: 57

DELPHI - BSICO
Na janela de propriedades, escolha uma matriz de 32 x 32 pixels e 16 cores.

Desenhe um cone semelhante ao da figura abaixo, utilizando recursos semelhantes ao


programa Paint do Windows.

Salve o seu cone e memorize o nome completo incluindo o caminho. E feche o aplicativo
Image Editor.
Pgina: 58

DELPHI - BSICO
O nosso Formulrio possui no canto superior esquerdo o cone padro do Delphi. Para trocar
este cone pelo nosso cone da caneta, deveremos alterar a propriedade Icon do Formulrio e
carregar o cone que acabamos de desenhar.

Use este mesmo cone para representar o Bloco de Notas no Windows, da mesma forma
descrita para a Calculadora.

Pgina: 59

DELPHI - BSICO

EXEMPLO IV - RELGIO DESPERTADOR


Este projeto contm outro componente no visvel - o TTimer. Este componente gera o evento
OnTimer a intervalos regulares determinados em sua propriedade Interval. Esta propriedade
esta expressa em milisegundos, ou seja, para que o evento OnTimer ocorra a cada segundo:
Interval:=1000. Se Interval:=0 o Timer estar desativado.
Devemos ter cuidado na programao do Timer, porque mesmo ele sendo capaz de gerar um
evento a cada milisegundo, o procedimento que trata o evento pode demorar mais do que o
valor de Interval, ocorrendo perda de algumas execues do procedimento ligado a ele.
Construa o Formulrio como mostrada abaixo.

A propriedade Caption dos Label1 e Label3 dever estar em branco. No Label1, ser
apresentada a hora do sistema, e em Label3 a data atual.
O componente RadioGroup permite construir um grupo de botes de opo, utilizamos estes
botes quando precisarmos selecionar opes mutuamente excludentes. S poder haver um
boto de opo selecionado por vez, em cada grupo ou no Formulrio, caso o boto esteja fora
de algum grupo.
As opes de escolhas do RadioGroup esto na propriedade Items. Quando selecionamos
esta propriedade, a janela String list editor mostrada, onde poderemos editar os botes de
opo do grupo. Entre com as duas opes, como mostrado a seguir.

Pgina: 60

DELPHI - BSICO

Feito o Formulrio, vamos digitar o cdigo para os eventos associados.


Declare primeiro as variveis Ligado e Tecla. Ligado indicar qual o boto de opo est
selecionado, e Tecla armazenar um caractere digitado no teclado.
implementation
var
Ligado: Boolean;
Tecla: Char;
{$R *.DFM}
Quando o Formulrio for criado, selecionaremos o boto Desligado, utilizando a sintaxe
RadioGroup1.ItemIndex:= 0, a propriedade ItemIndex, indica qual o boto do grupo estar
selecionado.

Pgina: 61

DELPHI - BSICO
Colocaremos a data do sistema em Label3 usando a funo FormatDateTime, de acordo com a
tabela mostrada no projeto da Calculadora.
procedure TForm1.FormCreate(Sender: TObject);
begin
RadioGroup1.ItemIndex := 0;
Label3.Caption:=FormatDateTime('dddd,dd "de" mmmm
,Date); {a funo Date retorna a data do sistema}
end;

"de"

yyy'

A propriedade ItemIndex do RadioGroup1 ser igual a 1 se o boto Ligado for selecionado, e


igual a 0, caso Desligado esteja selecionado.
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex = 1 then
Ligado:=True
else
Ligado:=False;
end;
Quando o usurio digita algo em um quadro Edit, o evento KeyPress ocorre. No procedimento
a seguir, realizada uma validao dos caracteres para definir a hora de acionamento do
despertador. Caso no seja um caractere vlido, soado um alarme e este caractere excludo
do Edit.
O evento KeyPress envia para a procedure, mostrada abaixo, a varivel Key do tipo Char, e
ser esta varivel que o programa verificar.

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


begin
Tecla:=(Key);
if ((Tecla < '0') or (Tecla > '9')) and (Tecla <> ':') then
begin
Beep;
Key:=chr(0); {a funo chr(X:byte), retorna o caractere
correspondente ao nmero X na tabela ASCII}
end;
end;

Pgina: 62

DELPHI - BSICO
Quando o evento Timer ocorrer (no caso a cada segundo - Interval:=1000), ser feita uma
verificao no contedo do Edit1 e se o alarme est Ligado ou no. O Timer tambm atualiza a
hora mostrada no Label1. Se a hora no Edit1 for menor ou igual a hora do sistema e a varivel
Ligado verdadeira, o Beep soar.

procedure TForm1.Timer1Timer(Sender: TObject);


begin
if (Edit1.Text <= TimeToStr(Time))and (Ligado) then
begin
Beep;
Beep;
end;
Label1.Caption:=TimeToStr(Time);
end;

Pgina: 63

DELPHI - BSICO

MTODOS GRFICOS
Embora o uso dos mtodos grficos - que permitem desenhos de linhas, crculos e retngulos sejam complexos, poder ser divertido e til para quem deseja sofisticar seus programas. A
seguir, conheceremos tais recursos atravs de exemplos simples.
O Sistema de coordenadas do Delphi, possui o seu ponto de origem (0,0) no canto superior
esquerdo da tela, ao contrrio do que ns estamos acostumados desde Descartes.
A escala utilizada no Delphi o Pixel, que representa um ponto visvel na tela, de acordo com
a resoluo do monitor.
As funes e procedimentos para desenho, esto agrupadas em um objeto da classe TCanvas,
o Delphi cria para ns um objeto deste tipo de nome Canvas. com este objeto que
desenhamos na tela pois, a tela realmente um objeto da classe TCanvas.

DESENHO DE PONTO
Para desenhar um ponto usamos a propriedade Pixels, do objeto Canvas;
Canvas.Pixels [x,y]:= cor;
Onde:
Canvas - o objeto do tipo TCanvas, declarado desta forma, o ponto ser desenhado na
rea do cliente - Formulrio.
x,y - coordenadas horizontal e vertical, respectivamente. Elas so absolutas, ou seja, a
partir da origem.
cor - especifica uma cor para o ponto.
O exemplo abaixo desenha um ponto nas coordenadas (50,50) do formulrio na cor vermelha,
quando o boto for selecionado.

Pgina: 64

DELPHI - BSICO

CORES
Para determinarmos a cor de um grfico, temos 3 formas diferentes de atribuir valores para o
parmetro cor, so elas:
a) RGB - (NRed, NGreen, NBlue), onde NRed, NGreen e NBlue pode variar de 0 a 255.
Ponto vermelho: Canvas.Pixels[x,y,]:= RGB(255,0,0);
b) $00bbggrr - onde bb, gg e rr variam em hexadecimal de 00 a FF.
Ponto Amarelo: Canvas.Pixels[x,y]:= $0000FFFF;
c) Usando uma das constantes vlidas para o objeto TColor.
- Para cores fixas :clAqua, clBlack, clBlue, clDkGray, clFuchsia, clGray, clGreen, clLime,
clLtGray, clMaroon, clNavy, clOlive, clPurple, clRed, clSilver, clTeal, clWhite, and
clYellow.
- Para cores definidas pelo sistema: clActiveBorder, clActiveCaption, clAppWorkSpace,
clBackground, clBtnFace, clBtnHighlight, clBtnShadow, clBtnText, clCaptionText,
clGrayText,
clHighlight,
clHighlightText,
clInactiveBorder,
clInactiveCaption,
clInactiveCaptionText, clMenu, clMenuText, clScrollBar, clWindow, clWindowFrame, and
clWindowText.
Exemplo: Ponto Azul - Canvas.Pixels[x,y]:= clBlue:

Pgina: 65

DELPHI - BSICO
DESENHO DE LINHA
Para desenharmos no Windows, usamos a propriedade Pen, que nada mais que uma caneta
invisvel. Podemos alterar o modo como esta caneta desenha em nossa tela.
O Delphi indica a posio desta caneta atravs da propriedade PenPos.
Uma linha desenhada utilizando-se os mtodos MoveTo e LineTo para mover a Pen (caneta).
MoveTo posiciona a caneta em um determinado lugar no Formulrio. LineTo traa uma linha,
que vai da posio corrente (PenPos) at as coordenadas especificadas.
Copie o procedimento abaixo, inserindo-o no mesmo Formulrio do exemplo do ponto.
procedure TForm1.Button1Click(Sender: TObject);
begin
With Canvas do
begin
MoveTo(0,0);
LineTo(100,ClientHeight);
{ClienteHeight:=Altura da
rea de cliente no
Formulrio}
LineTo (200,150);
end;
end;

Quando queremos alterar vrias propriedades ou mtodos de um mesmo objeto, ns no


precisamos indicar o seu nome em todos as linhas, basta usarmos a instruo With. Esta
instruo significa que entre as palavras reservadas Begin .. End, o uso do objeto fica implcito
para qualquer acesso a uma de suas propriedades ou mtodos.
No exemplo acima, utilizamos este recurso com o objeto TCanvas e seus mtodos MoveTo e
LineTo.

Pgina: 66

DELPHI - BSICO
O tipo TCanvas usa como propriedades outros dois tipos de objetos: o TPen e TBrush. O TPen
a nossa caneta, este tipo possui propriedades que modificam a forma das linhas a serem
desenhadas, so elas:
Color - define a cor da linha
Width - define a espessura da linha - em pixels
Style - determina o tipo de linha.
Modifique o exemplo anterior, como mostrado a seguir:

procedure TForm1.Button1Click(Sender: TObject);


begin
With Canvas do
begin
MoveTo(0,0);
LineTo(100,ClientHeight);
Pen.Color:=clBLue;
LineTo (200,150);
end;
Note que a segunda linha desenhada da cor azul.

Vamos montar exemplos que usem as outras duas propriedades - Width e Style.
procedure TForm1.Button1Click(Sender: TObject);
var
Estilo: array [0..6] of TPenStyle;
i: Integer;
SX: Integer;
SY: Integer;
begin
Estilo[0]:= psSolid;
Estilo[1]:= psDash;
Estilo[2]:= psDot;
Estilo[3]:= psDashDot;
Estilo[4]:= psDashDotDot;
Estilo[5]:= psClear;
Estilo[6]:= psInsideFrame;
SX := ClientWidth;
SY := ClientHeight;
With Canvas do
begin
SY:=Trunc(SY/8); {a procedure Trunc, transforma um
valor do tipo Real em tipo Inteiro}
for i:= 0 to 6 do
Pgina: 67

DELPHI - BSICO
begin
Pen.Style:= Estilo[i];
MoveTo(0,(i*SY)+20);
LineTo(SX,(i*SY)+20);
end;
end;
end;
Comeamos declarando uma matriz - Estilo - com o tipo TPenStyle.
armazenaremos todos os estilos da caneta.

Nesta matriz

ClientWidth e ClientHeight, retornam um valor do tipo inteiro indicando o tamanho da rea do


cliente no Formulrio, quando este nmero dividido ele passa a ser um tipo Real, ento ns
precisamos convert-lo novamente em Inteiro para que os mtodos MoveTo e LineTo possam
aproveit-lo.

Canvas.Pen.Style:= psDot;
Canvas.Pen.Style:= psDot;
ou
With Canvas do
begin
Pen.Style:= psDot;
Pen.Color:=clBlue;
end;
Antes de executar o exemplo acima, altere a propriedade Color de Form1 para clWhite
(Color:=clWhite) para uma visualizao melhor das linhas, teremos ento todos os estilos de
linha desenhados no Formulrio mostrado abaixo:

Pgina: 68

DELPHI - BSICO
Altere o procedimento anterior, para serem mostradas as vrias espessuras de linha.

procedure TForm1.Button1Click(Sender: TObject);


var
i: Integer;
SX: Integer;
SY: Integer;
begin
SX := ClientWidth;
SY := ClientHeight;
With Canvas do
begin
SY:=Trunc(SY/8); {a procedure Trunc, transforma um
valor do tipo Real em tipo Inteiro}
{Os comentrios ficam entre chaves}
for i:= 0 to 6 do
begin
Pen.Width:= i+1;
MoveTo(0,(i*SY)+20);
LineTo(SX,(i*SY)+20);
end;
end;
end;

Para desenharmos retngulos usamos o mtodo Retangle do TCanvas. Como parmetros so


utilizadas as coordenadas do canto superior esquerdo e inferior direito do retngulo.

Pgina: 69

DELPHI - BSICO
Canvas.Retangle (X1, Y1 , X2, Y2);

Digite o exemplo abaixo.

procedure TForm1.Button1Click(Sender: TObject);


begin
With Canvas do
begin
Rectangle (10,10,110,110);
Rectangle (130,10,330,110);
end;
end;

Observe que o desenho ficou por trs do boto, isto ocorre por que o boto est acima do
Formulrio e o desenho faz parte da tela do Formulrio, seria como uma borracha em cima de
um papel desenhado.
Para preenchermos este retngulos, usamos o tipo TBrush que como TPen, est contido em
TCanvas. As propriedades mais comuns do TBrush so:
Color - define a cor do interior da figura
Style - indica o padro de preenchimento
Pgina: 70

DELPHI - BSICO
As cores so as mesmas da Pen e os estilos so: bsSolid, bsClear, bsBDiagonal, bsFDiagonal,
bsCross, bsDiagCross, bsHorizontal e bsVertical.

Faa o exemplo a seguir.

procedure TForm1.Button1Click(Sender: TObject);


begin
With Canvas do
begin
Brush.Style:=bsFDiagonal;
Brush.Color:=clBlack;
Rectangle (10,10,110,110);
Brush.Color:=clRed;
Brush.Style:=bsHorizontal;
Rectangle (130,10,330,110);
end;
end;

Pgina: 71

DELPHI - BSICO
O desenho de elipses feito com o mtodo Ellipse. A elipse ou o crculo so desenhados
usando-se as duas coordenadas de um retngulo delimitador - imaginrio - onde a figura
estar inscrita. Siga o exemplo a seguir.

procedure TForm1.Button1Click(Sender: TObject);


begin
With Canvas do
begin
Rectangle (10,10,100,80);
Ellipse (10,10,100,80);
Ellipse (110,10,200,80);
end;
end;

Pgina: 72

DELPHI - BSICO

EXEMPLO V - CATLOGO
Neste projeto de catlogo telefnico, trabalharemos com acesso a arquivos do tipo aleatrio.
Ele ser constitudo por trs Units e dois Formulrios. Duas Units sero associadas aos
formulrios e a outra Unit conter apenas cdigos de acesso ao disco (HD) sem estar
associada a nenhum formulrio.
Inicie um novo projeto e crie o Formulrio, inserindo e modificando as propriedades dos
objetos, como a figura abaixo.

Altere a propriedade Filter do controle SaveDialog. Ser ento mostrada a janela Filter Editor,
edite-a como mostra o modelo abaixo.

Pgina: 73

DELPHI - BSICO
D um duplo clique no controle MainMenu e edite o menu.

Deveremos inserir um novo formulrio ao nosso projeto que ser utilizado para selecionar um
determinado registro no nosso arquivo de dados. Para inserir um novo formulrio ao projeto,
escolha a Opo New Form do menu File ou selecione o boto
Monte este novo Formulrio como mostrado abaixo.

na barra de ferramentas.

Este novo formulrio ir apresentar ao usurio os nomes de pessoas - registros no arquivo contidos no catlogo atravs do componente ComboBox (caixa combinada).
O ComboBox, um controle de edio associado uma lista contendo itens disponveis para a
escolha do usurio. O usurio poder tanto digitar uma opo no quadro de edio, quanto
escolher uma opo fornecida pela lista associada.
A propriedade Style, determina o tipo de ComboBox que iremos trabalhar, que pode ser:
csDropDown - Cria uma lista drop-down com uma caixa de texto, para entrada de texto
manualmente. Todos os itens so Strings de qualquer comprimento.
CsSimple - Cria uma caixa de texto associada a uma caixa de lista suspensa. Esta lista no
aparecer em tempo de execuo a menos que o ComboBox seje dimensionado para
acomod-la.
Pgina: 74

DELPHI - BSICO
CsDropDownList - Cria uma lista drop-down com uma caixa de texto, mas o usurio no poder
entrar com texto manualmente.
csOwnerDrawFixed - Cria uma lista drop-down com uma caixa de texto, para entrada de texto
manualmente. Mas cada item do ComboBox ter seu comprimento em caracteres determinado
pela propriedade ItemHeight.
CsOwnerDrawVariable - Cria uma lista drop-down com uma caixa de texto, para entrada de
texto manualmente. Os itens neste ComboBox podem ter comprimento varivel.
Vamos alterar a propriedade Style do nosso quadro combo, para csDropDownList, pois no
queremos que o usurio altere o contedo do combo. Evitando que o usurio entre com um
nome de pessoa inexistente.
INSERINDO UMA NOVA UNIDADE
Uma Unit pode estar vinculada a um formulrio ou no, ns iremos criar uma Unit no
vinculada a nenhum formulrio. Escolha a opo New... do menu File e aparecer a janela
New Itens, escolha Unit.

O Delphi criar uma nova Unit no vinculada a nenhum formulrio, j com o cabealho pronto.
Onde iremos digitar as rotinas de acesso ao disco.

Pgina: 75

DELPHI - BSICO

TIPOS
No Delphi ns podemos criar nossos prprios tipos de dados, para fazer isto, declare o seu tipo
de dado dentro de um bloco Type, antes do bloco de definio de variveis Var:
type
TMeusValores = ShortInt;
var
Venda, Custo : TMeusValores;
interessante definir um tipo de varivel, porque quando tivermos uma famlia de variveis
relacionadas e for necessrio mudar o tipo de todas elas, basta alterar a declarao de
definio de tipo destas variveis:
type
TMeusValores = LongInt;
Venda e Custo eram variveis ShortInt, e aps a nova definio passam a ser LongInt.

REGISTROS
Para armazenar os dados de uma pessoa (Nome, Endereo e Telefone), usamos um registro.
Registro um tipo de dado que rene alguns itens de tipos diferentes, nosso tipo registro ter
o nome de TPessoasReg. Em um projeto podem existir vrias variveis do tipo TPessoasReg.

Pgina: 76

DELPHI - BSICO
Declare o novo tipo na seo Interface da Unit nova (ArqUnit - nome salvo em disco).

unit ArqUnit;
interface
type
{registro com dados pessoais}
TPessoasReg=record
CNome: String[30];
CTelefone: String[15];
CEndereco: String[40];
end;
TPessoas = file of TPessoasReg;
var
PesArq: Pessoas;
O Delphi possui um tipo denominado arquivo, que permite escrever e ler arquivos em disco.
Para declarar um tipo arquivo, associamos o nome da varivel a um tipo de dado previamente
existente. No nosso caso: TPessoasReg.
Na listagem acima definimos alm do tipo TPessoasReg, o tipo Tpessoas, definindo-o como
um tipo de arquivo formado por registros do tipo TPessoasReg.
Os campos so declarados como String de tamanhos fixos pois, caso no fossem declarados
os tamanhos, eles iriam ocupar o espao de 255 Bytes.
Logo aps, informamos ao Delphi que existe um tipo de arquivo composto por esse registro, e
declaramos uma varivel do tipo desse arquivo de registros, essa varivel conter o nome do
arquivo aberto em disco.
Algumas procedures e functions, precisam de parmetros para trabalharem, ns declaramos
esses parmetros no cabealho da procedure, indicando um nome de referncia, o seu tipo de
dado e o prefixo var. Primeiro declaramos as procedures na seo Interface e depois
implementamos na seo Implementation.

procedure AbrirArq(var A:Pessoas; var NomeArq:String;


var N:Boolean);
procedure FecharArq(var A:Pessoas);
procedure GravarArq(var A:Pessoas;var RegN:Integer;
var Reg:PessoasReg);
procedure LerArq(var A:Pessoas;var RegN:Integer;
var Reg:PessoasReg);
Pgina: 77

DELPHI - BSICO
implementation
procedure AbrirArq(var A:Pessoas; var NomeArq:String;
var N:Boolean);
begin
Assign (A, NomeArq);
if N then
Rewrite (A)
else
Reset (A);
end;
procedure FecharArq (var A:Pessoas);
begin
Close (A);
end;
procedure GravarArq (var A:Pessoas;var RegN:Integer;
var Reg:PessoasReg);
begin
Seek (A,RegN);
Write (A,Reg);
end;
procedure LerArq (var A:Pessoas;var RegN:Integer;
var Reg:PessoasReg);
begin
Seek (A,RegN);
Read (A,Reg);
end;
Antes de abrir um arquivo para leitura e gravao, ns temos que associ-lo a uma varivel do
mesmo tipo dos registros contidos no arquivo em disco. Para isso usamos a procedure Assign.
Assign diz ao Delphi que todas as operaes com a varivel tero ligao com um arquivo em
particular.
Assign(varivel, nome do arquivo);
Aps a associao, abriremos o arquivo, que pode ser de duas formas:
1) Reset - abre o um arquivo existente para leitura ou gravao.
2) Rewrite - abre um arquivo novo para leitura ou gravao. Caso j exista o arquivo,
todos os dados anteriores sero perdidos.
Reset(nome do arquivo);
Rewrite(nome do arquivo);

Pgina: 78

DELPHI - BSICO
Para gravar ou ler um registro, usamos as funes Write e Read, informando a varivel do
arquivo e em qual varivel estar o registro.
Write(PessArq, Reg);
Read(PessArq, Reg);

PONTEIRO DE REGISTROS
O ponteiro do arquivo indica qual o registro ser afetado com a prxima operao de leitura ou
gravao. Sempre que um arquivo aberto, o ponteiro posicionado no incio do arquivo.
Cada operao de leitura ou gravao, move o ponteiro um registro frente. Ou seja, se o
registro 3 for lido, o ponteiro estar apontando para o registro 4, e a prxima operao ser
realizada com o registro 4.
Para acessar um registro aleatoriamente, usamos a procedure Seek. Esta procedure posiciona
o ponteiro no registro que quisermos, antes de uma leitura ou gravao.
Seek(PessArq, RegN);
Os registros em um arquivo so numerados seqencialmente a partir do registro 0.
Existem mais duas funes teis para manipulao de arquivos, FileSize e FilePos. A primeira
indica quantos registros o arquivo tem, e a segunda indica a posio do ponteiro.
Para ligarmos as Units, devemos colocar o nome das Units acessadas na seo uses.
Uma vez nomeada uma unidade na seo uses de outra unidade em que esteja trabalhando,
voc poder referenciar qualquer coisa na seo de interface da unidade nomeada.
Poderemos acessar as variveis e procedures da outra unidade.
O nosso formulrio frmCatalogo (Unit Catalogo), ter acesso aos procedimentos da Unit IrPara
e ArqUnit. Ento, declaramos estas duas unidades logo aps s unidades j colocadas pelo
Delphi.

unit Catalogo;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, Menus, StdCtrls,
ArqUnit, IrPara;

Pgina: 79

DELPHI - BSICO
Declare as variveis que iremos utilizar, como mostrado abaixo.
private
{ Private declarations }
ArqNovo : String;
ArqAtual: String;
Novo: Boolean;
ArquivoAberto: Boolean;
public
{ Public declarations }
end;

Comece a implementao dos procedimentos associados aos objetos e seus eventos,


seguindo as listagens abaixo.
procedure TfrmCatalogo.Sair1Click(Sender: TObject);
begin
Close;
end;
procedure TfrmCatalogo.Novo1Click(Sender: TObject);
begin
Nome.Text:='';
Telefone.Text:='';
Endereco.Text:='';
Novo:=True;
ArqNovo:='Temp.dat';
ArqAtual:= ArqNovo;
ArqUnit.AbrirArq (PesArq, ArqNovo, Novo);
ArquivoAberto:=True;
end;
procedure TfrmCatalogo.Abrir1Click(Sender: TObject);
begin
Nome.Text:='';
Telefone.Text:='';
Endereco.Text:='';
if OpenDialog1.Execute then
begin
ArqAtual:=OpenDialog1.Filename;
Novo:=False;
ArqUnit.AbrirArq (PesArq, ArqAtual, Novo)
end
else
Exit;
ArquivoAberto:=True;
end;

Pgina: 80

DELPHI - BSICO
Para se referir a um procedimento em outra unidade, ns informamos primeiro o nome da
unidade e depois o nome do procedimento: ArqUnit.AbrirArq(...);.
procedure TfrmCatalogo.btnNovoClick(Sender: TObject);
var
Reg: ArqUnit.PessoasReg;
RegN: Integer;
begin
Nome.SetFocus;
if ArquivoAberto=false then
begin
ShowMessage ('Abra primeiro um arquivo');
Exit;
end;
if btnNovo.Caption='&Novo Registro' then
begin
Nome.Text:='';
Telefone.Text:='';
Endereco.Text:='';
btnNovo.Caption:='A&dicionar';
end
else
begin
with Reg do begin
CNome:=Nome.Text;
CTelefone:=Telefone.Text;
CEndereco:=Endereco.Text;
end;
frmProcurar.Lista.Items.Add (Nome.Text);
RegN:= FileSize(PesArq);
ArqUnit.GravarArq (PesArq, RegN, Reg);
btnNovo.Caption:='&Novo Registro';
end;
end;
procedure TfrmCatalogo.btnAtualizarClick(Sender: TObject);
var
Reg : PessoasReg;
RegN :integer;
begin
with Reg do begin
CNome:=Nome.Text;
CTelefone:=Telefone.Text;
CEndereco:=Endereco.Text;
end;
frmProcurar.Lista.Items.Add (Nome.Text);
RegN:= FilePos(PesArq)-1;
ArqUnit.GravarArq (PesArq, RegN, Reg);
end;
Pgina: 81

DELPHI - BSICO
procedure TfrmCatalogo.FormCreate(Sender: TObject);
begin
ArquivoAberto:=False;
end;

procedure TfrmCatalogo.Salvar1Click(Sender: TObject);


begin
if SaveDialog1.Execute then
begin
ArqNovo:=SaveDialog1.Filename;
ArqUnit.FecharArq (PesArq);
RenameFile(ArqAtual,ArqNovo);{a funo RenameFile,}
Novo:=False;
{renomeia um arquivo}
ArqUnit.AbrirArq (PesArq, ArqNovo, Novo);
end;
end;

procedure TfrmCatalogo.btnProcurarClick(Sender: TObject);


begin
frmProcurar.ShowModal;
end;
Para mostrar outro Formulrio, usamos o mtodo Show ou ShowModal. Show abre uma janela
onde podemos alternar com outras janelas do aplicativo, enquanto ShowModal no aceita uma
troca da janela ativa. Com ShowModal o usurio s poder ir para outra janela, aps ter
fechado a janela Modal.
Comece a construo do cdigo para o Formulrio frmProcurar, informando ao Delphi que ela
ir acessar a ArqUnit.
unit IrPara;
interface
uses
Windows, Messages, SysUtils, Classes,
Forms, Dialogs, StdCtrls, ArqUnit;

Graphics,

Controls,

Declare as variveis ReN e Reg.


private
{ Private declarations }
RegN: Integer;
Reg: PessoasReg;
Pgina: 82

DELPHI - BSICO
Siga a listagem abaixo para os eventos associados.
procedure TfrmProcurar.FormActivate(Sender: TObject);
begin
Lista.Clear; {limpa o contedo do ComboBox}
Seek (PesArq,0);
while Not Eof (PesArq) do {enquanto no chegar ao
arquivo, faa...}
begin
Read(PesArq,Reg);
Lista.Items.Add (Reg.CNome);
end;
end;

final do

procedure TfrmProcurar.btnCancelarClick(Sender: TObject);


begin
frmProcurar.Close;
end;
procedure TfrmProcurar.btnOkClick(Sender: TObject);
begin
RegN:=Lista.ItemIndex;
ArqUnit.LerArq (PesArq,RegN,Reg);
With frmCatalogo do
begin
Nome.Text:=Reg.CNome;
Endereco.Text:=Reg.CEndereco;
Telefone.Text:=Reg.CTelefone;
end;
frmProcurar.Close;
end;
Para preencher um quadro combo com dados, temos duas possibilidades:
1) Usar o mtodo Add para a sua propriedade Items. Em tempo de execuo.
2) Editar a propriedade Items em tempo de projeto.
Por fim, declare Catalago na seo Implementation. Porque a unidade IrPara tambm se
referencia Catalogo, mas se Catalogo for declarada na seo uses da interface, o Delphi
gerar um erro de referncia circular.
implementation
uses
Catalogo;
{$R *.DFM}

Pgina: 83

DELPHI - BSICO

Pgina: 84

DELPHI - BSICO

LISTA DE EXERCCIOS

1.

Qual a diferena entre um programa feito para trabalhar sob o DOS e outro construdo atravs do
Delphi?

2.

O que encontramos na Paleta de Componentes?

3.

Qual a funo da janela Object Inspector?

4.

Quais os passos para desenvolvermos um programa em Delphi aps a anlise do projeto?

5.

No primeiro programa que desenvolvemos, coloque um boto de comando que apague o contedo
do label, e outro que finalize o programa.

6.

Na calculadora, mesmo redefinindo a propriedade TabStop do Edit de resultado, o usurio poder


alterar o resultado da operao. Que outro controle poderamos utilizar no lugar de um TEdit para
exibir o resultado sem que o usurio possa alterar seu valor? Altere o projeto.

7.

O cone escolhido para representar o projeto, no estar presente no formulrio. Qual propriedade
deveremos alterar para que o cone representante do projeto tambm esteje no formulrio?
Responda e execute.

8.

Altere os botes do Jogo da Velha para o tipo BitBtn, e reconstrua o projeto para alterar as
propriedades Kind e Caption, exibindo nos botes os cones -

9.

No Jogo da Velha, sempre o computador inicia uma nova partida. Altere o cdigo para que o
programa pergunte ao usurio quem iniciar uma nova partida.

10. No projeto Bloco de Notas, quando escolhemos a opo Sair, o programa no pergunta se
queremos salvar as alteraes realizadas no texto. Inclua uma varivel booleana na seo
Implementation, alterando o seu valor no procedimento Memo1Change e verificando-a no
momento de encerrar o programa.
11. Inclua mais um boto no Relgio Despertador com a opo de Soneca, soando o Beep dez
minutos aps o primeiro despertar.
12. Construa um projeto que mostre todos os tipos de preenchimentos (hachuras) dentro de crculos
em um nico formulrio.
13. Substitua o controle ComboBox por um ListBox no exemplo de Catlogo, com pesquisa pelo
nmero do telefone.
14. No ltimo exemplo, crie mais uma tabela de Estoque, e a cada venda realizada os valores de
estoque devero ser atualizados.
15. Crie mais duas tabelas, uma de Fornecedores e outra de Compras, semelhantes a Clientes e
Vendas, e acrescente os campos ao seu critrio.

Pgina: 85

Você também pode gostar