Escolar Documentos
Profissional Documentos
Cultura Documentos
DELPHI - BSICO
Delphi 3.0
PRIMEIROS PASSOS
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.
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 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
Pgina: 11
DELPHI - BSICO
DELPHI - BSICO
Aps voc alterar estas quatro propriedades (Caption, Height, Name e Width) do formulrio,
ela estar assim:
Pgina: 13
DELPHI - BSICO
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.
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.
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.
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.
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:
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 :
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:
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]
2 - bsNone
Nenhuma
Pgina: 26
DELPHI - BSICO
3 - bsSingle
4 - bsSizeable
Redimensionvel
5 - bsSizableToolWindow
6 - bsToolWindow
Semelhante bsToolWindow,
mas dimensionvel.
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:
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:
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
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.
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.
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.
Pgina: 33
DELPHI - BSICO
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
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.
Pgina: 38
DELPHI - BSICO
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.
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.
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.
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:
(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;
(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
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;
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
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
Pgina: 47
DELPHI - BSICO
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
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:
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.
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.
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.
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.
DELPHI - BSICO
procedure TPrincipal.Copiar1Click(Sender: TObject);
begin
Memo1.CopyToClipboard;
Colar1.Enabled:=True;
end;
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;
Pgina: 56
DELPHI - BSICO
Pgina: 57
DELPHI - BSICO
Na janela de propriedades, escolha uma matriz de 32 x 32 pixels e 16 cores.
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
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
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'
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.
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;
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:
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
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.
Pgina: 69
DELPHI - BSICO
Canvas.Retangle (X1, Y1 , X2, Y2);
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.
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.
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.
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;
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;
Graphics,
Controls,
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
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.
3.
4.
5.
No primeiro programa que desenvolvemos, coloque um boto de comando que apague o contedo
do label, e outro que finalize o programa.
6.
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