Академический Документы
Профессиональный Документы
Культура Документы
SUMRIO
PRIMEIROS PASSOS.............................................................................................................................................................2
ANATOMIA DE UMA JANELA ..................................................................................................................................................3
BARRA DE MENU, BARRA DE FERRAMENTAS E PALETA DE COMPONENTES..........................................................................4
Barra de Ferramentas......................................................................................................................................................4
PALETA DE COMPONENTES....................................................................................................................................................4
JANELAS DO DELPHI...............................................................................................................................................................6
MEU PRIMEIRO PROGRAMA...........................................................................................................................................8
ADAPTAR AS PROPRIEDADES DOS OBJETOS............................................................................................................................9
ESCREVER O CDIGO PARA OS EVENTOS ASSOCIADOS.........................................................................................................12
EXEMPLO I - CALCULADORA........................................................................................................................................17
PROPRIEDADES...................................................................................................................................................... 23
BorderStyle.....................................................................................................................................................................23
Default............................................................................................................................................................................24
Tabstop...........................................................................................................................................................................25
Name...............................................................................................................................................................................25
Caption...........................................................................................................................................................................26
Text.................................................................................................................................................................................26
MTODO.................................................................................................................................................................. 26
Setfocus..........................................................................................................................................................................26
VARIVEIS NO DELPHI.........................................................................................................................................................26
Formas de Declarar uma Varivel................................................................................................................................29
FORMATAO DE NMEROS................................................................................................................................................30
Formatando Data e Hora:.............................................................................................................................................30
MODIFICANDO A CALCULADORA.........................................................................................................................................31
DEPURAO........................................................................................................................................................................36
MTODOS GRFICOS.......................................................................................................................................................67
DESENHO DE PONTO............................................................................................................................................................67
CORES..................................................................................................................................................................................68
DESENHO DE LINHAS...........................................................................................................................................................68
DESENHO DE RETNGULOS..................................................................................................................................................72
DESENHO DE ELIPSES...........................................................................................................................................................73
FIGURAS...............................................................................................................................................................................74
EXEMPLO V - CATLOGO...............................................................................................................................................79
INSERINDO UMA NOVA UNIDADE.........................................................................................................................................81
TIPOS DE DADOS..................................................................................................................................................................82
REGISTROS...........................................................................................................................................................................82
PONTEIRO DE REGISTROS.....................................................................................................................................................84
BANCO DE DADOS SIMPLES...........................................................................................................................................91
DATABASE DESKTOP............................................................................................................................................................91
LISTA DE EXERCCIOS...................................................................................................................................................111
Pgina: 1
DELPHI 4
Delphi 4
PRIMEIROS PASSOS
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 Delphi trabalha com eventos que do incio alguma rotina de trabalho, ou seja, o
programa fica parado at que um evento ocorra. Ele utiliza o modelo orientado objetos,
permitindo alm do uso de objetos existentes, tambm a criao de outros tantos.
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: 2
DELPHI 4
Um carro um objeto que possui propriedades e mtodos. A tabela abaixo lista algumas
propriedades e comportamentos do objeto real carro.
Propriedades Mtodos
cor dar partida
comprimento mudar marcha
potncia do motor acelerar
tipo de pintura 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.
Barra de Ttulo - Acima da moldura superior como nome da janela e documento corrente.
Pgina: 3
DELPHI 4
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
abertos 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
PALETA DE COMPONENTES
Pgina: 4
DELPHI 4
1 - Click Duplo no cone da paleta de componentes. Insere o controle no centro do
formulrio com um tamanho padro.
Pgina: 5
DELPHI 4
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.
Controles
Existem vrios tipos de objetos no Delphi, entre eles, formulrios e controles. Controles so
todos os objetos que compem um formulrio. Um controle qualquer objeto que o usurio
possa manipular desde que no seja uma janela (formulrio).
Object Inspector
Nesta janela escolhemos como sero as caractersticas 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
objeto possui um conjunto especfico de propriedades, com seus valores, associadas a eles.
Ao trabalharmos nos diferentes objetos, a janela Object Inspector nos permitir mudar as
propriedades do objeto com o qual estamos trabalhando. Esta janela possui alm da
divisria Properties a divisria Events onde esto listados todos os eventos possveis de
ocorrerem com o objeto selecionado.
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 programa, neste caso em tempo de execuo.
Pgina: 6
DELPHI 4
Caixa de Objeto - Est caixa mostra o objeto atualmente selecionado, atravs dela tambm
poderemos selecionar todos os objetos do formulrio ativo, alterando as suas
propriedades, basta dar um clique na seta, que um menu de cortina se abre, 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 (classe) 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.
Coluna de Valores - Exibe o valor da propriedade correspondente.
Pgina: 7
DELPHI 4
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
apresentao desta mensagem atravs de outros botes.
Existem trs passos principais para a escrita de uma aplicao no Delphi que iremos seguir:
2 - Ao passar o ponteiro do mouse sobre o controle, nos ser mostrado o seu nome e
tipo.
Pgina: 8
DELPHI 4
4 - Observe que, quando o controle estiver selecionado, poderemos arrast-lo e
dimension-lo dentro do formulrio utilizando os botes dimensionadores. Enquanto
movemos o controle, nos mostrada a posio, e quando dimensionamos aparecem as
dimenses.
Para alterar as propriedades 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 novo valor.
Pgina: 9
DELPHI 4
Selecionar a propriedade Width e dar o valor de 180.
A propriedade Caption a palavra que aparecer como ttulo da janela, com at 255
caracteres.
Aps voc alterar estas quatro propriedades (Caption, Height, Name e Width) do formulrio,
ele estar assim:
Pgina: 10
DELPHI 4
Aps alterarmos a propriedade Caption do controle Label este ficar pequeno, pois a
propriedade AutoSize True, ou seja, o tamanho do Label estar sempre de acordo com o
contedo de Caption.
Pgina: 11
DELPHI 4
O cdigo escrito na janela Code editor, para acess-la, selecione o boto Iniciar e na
janela Object Inspector, chame a divisria Events dando 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.
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. O parmetro Sender
informa ao Delphi qual componente recebeu o evento que chamou a execuo deste
procedimento.
Pgina: 12
DELPHI 4
O Code Editor tambm pode ser acessado 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 o Code Editor quando acessado desta forma, isto no impede
que criemos outros cdigos utilizando mais de um evento para o mesmo componente.
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.
Abra o Code Editor para o boto de comando e digite o cdigo conforme a figura a seguir.
Repare que ao digitar o ponto aps LblMensagem, e aguardar alguns instantes, o Delphi
exibir uma lista de propriedades e mtodos do controle Label.
Pgina: 13
DELPHI 4
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 compile e
execute o projeto. Em seguida, selecione o boto Iniciar para ver o resultado.
Para alternar a visualizao entre o Formulrio e o Code Editor, utilize o boto Toggle
Form/Unit ( ) na barra de ferramentas ou a tecla F12.
Pgina: 14
DELPHI 4
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 dentro do componente.
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 o tamanho do
TLabel.
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: 15
DELPHI 4
Observe na figura acima que o texto no coube na rea de exibio do Label e nem no
Formulrio, ns temos duas opes para que este texto aparea integralmente. A primeira,
alterar para True, a propriedade WordWrap do Label, esta propriedade insere uma
mudana de linha quando o texto atinge a margem direita do objeto. A segunda,
redimensionar o Label e o Formulrio. Como mostram as figuras a seguir.
Pgina: 16
DELPHI 4
EXEMPLO I - CALCULADORA
Para iniciar um novo projeto, escolha a opo New Application do menu File. No
salvando o projeto Iniciar anterior.
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.
Logo aps, basta ir inserindo os controles (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 na Paleta de
Componentes.
Observe que os objetos Edit 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 Edit, selecionando todos ao mesmo tempo
como mostra a figura a seguir.
Pgina: 17
DELPHI 4
Depois disto, pressione o boto direito do mouse em cima de um Edit, para aparecer o pop-
menu. Escolha Align..., aparecendo ento a janela Alignment.
Escolha Space equally (igualmente espaado) para alinhamento horizontal, e Tops (topo)
para o alinhamento vertical.
Insira os objetos restantes da maneira que preferir, posicionando-os de acordo com a figura
a seguir:
Pgina: 18
DELPHI 4
Neste exemplo de projeto, digitaremos um nmero em Edit1, outro em Edit2, e quando for
dado um Clique em Button1, o resultado da multiplicao aparecer em Edit3. Para limpar
os Quadros de texto (Edit), usaremos o Button2.
Ento, para escrevermos o cdigo, daremos dar um Duplo Clique no Button1 - o Code
Editor ser exibido.
Aps digitar Valor1:=, pressione Ctrl+Espao para exibir a lista, procure a funo
StrToFloat (transforma uma string em nmero com ponto flutuante) em seguida pressione
Enter.
Pgina: 19
DELPHI 4
Outra ferramenta o Code Parameters (parmetros de cdigo), que mostra uma lista dos
parmetros exigidos pela rotina ou funo. Esta lista aparece logo aps a abertura de
parntese.
Pgina: 20
DELPHI 4
Execute o projeto. Para utiliz-lo, entre com um nmero em Edit1, outro em Edit2 e d um
Clique 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 TabOrder
Edit1 0
Edit2 1
Edit3 2
Button1 3
Button2 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.
Pgina: 21
DELPHI 4
O usurio pode alterar o valor de Edit3 mesmo aps a multiplicao ter sido efetuada. Para
evitarmos isso, defina as propriedades TabStop:=False e ReadOnly:=True para o Edit3 e
ver que o usurio no ter mais acesso ao texto em Edit3.
Existem, nas aplicaes para Windows, botes de comando que so acionados com a tecla
Enter ou com um Clique. 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, ocorrer o evento
OnClick no boto.
Pgina: 22
DELPHI 4
PROPRIEDADES
BorderStyle
objeto.BorderStyle := [valor]
Default
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.
btnMultiplicar.Default := True;
Pgina: 24
DELPHI 4
Estado := btnMultiplicar.Default;
Tabstop
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;
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.
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
editNome_Form.Text := frmCalculadora.Name;
Pgina: 25
DELPHI 4
Caption
objeto.Caption :[= string]
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
objeto.SetFocus
Fixa o foco a um formulrio ou controle. Somente pode ser usado para um formulrio ou
controle visvel.
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.
Pgina: 26
DELPHI 4
Pgina: 27
DELPHI 4
Pgina: 28
DELPHI 4
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.
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.
Pgina: 29
DELPHI 4
FORMATAO DE NMEROS
Formatando nmeros:
Formato Exibido
d/m/yy 10/5/98
dd-mm-yyyy 18-Ago-1998
dd-ddd 02-dom
hh:mm AM/PM 08:50 AM
h:mm:ss a/p 8:50:20 a
d/m/yy h:mm 03/07/98 9:30
Pgina: 30
DELPHI 4
MODIFICANDO A CALCULADORA
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 copie e cole para a propriedade Caption deste boto.
Provavelmente o caractere que aparecer na caixa de propriedade no ser o mesmo do
boto, pois a fonte da Object Inspector no Symbol, 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,
Pgina: 31
DELPHI 4
retire-as do procedimento TfrmCalculadora.Button1Click e declare-as na seo
Implementation da Unidade.
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. E outros arquivos de apoio que
so:
Pgina: 32
DELPHI 4
Quando salvamos nosso projeto, o Delphi solicita apenas os nomes dos arquivos de
Unidade e Projeto, os outros ele cria automaticamente.
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: 33
DELPHI 4
Pgina: 34
DELPHI 4
Compile o projeto utilizando a opo Compile Calculadora do menu Project (
), gerando um novo arquivo executvel contendo as ltimas alteraes
realizadas sem executar o projeto. Agora, voc tem um programa executvel em qualquer
microcomputador que possua o sistema Windows, sem necessariamente ter o DELPHI ou
de suas bibliotecas instalados.
Pgina: 35
DELPHI 4
DEPURAO
Quando o Delphi compila o programa (Ctrl+F9) e encontra algum erro de sintaxe ele mostra
a linha onde est o erro, dando uma dica do problema, na parte inferior da janela do Code
Editor.
Pgina: 36
DELPHI 4
Agora nos foi apresentado um erro onde o tipo de dado requerido um (String) mas o
fornecido outro (Integer). Para corrigir isto devemos transformar do contedo da varivel
T em String utilizando a funo IntToStr() na seguinte linha.
- Lista.Items.Add (IntToStr(T));
Aps esta correo, o compilador no detectar mais nenhum erro de sintaxe. Portanto,
execute este exemplo pressionando F9.
Pgina: 37
DELPHI 4
A funo digitada est incorreta pois ela no varia em funo do valor de i, altere ento a
seguinte linha:
- T:= 3*5+i;
Para inserir um Breakpoint, d um clique na barra do lado esquerdo da linha que deseja ser
a parada. Quando desejar remover o Breakpoint basta dar um novo clique na mesma
posio.
Pgina: 38
DELPHI 4
Quando for dado um clique no boto o programa ir parar e ser mostrada a janela do Code
Explorer. Para executar o programa passo-a-passo pressione F8, at a linha indicada na
figura abaixo como linha corrente.
Para verificarmos o valor atual de uma varivel basta posicionar o ponteiro em cima dela e
aguardar uns instantes para o Delphi nos mostrar o seu valor.
Pgina: 39
DELPHI 4
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.
Selecione o Boto, Copie-o (Ctrl+C) e Cole (Ctrl+V) mais oito botes iguais. Formando um
total de nove botes.
Estes botes de comando esto nomeados de Button1 a Button9, de cima para baixo.
Arraste-os de forma que fiquem como a figura a seguir.
Pgina: 40
DELPHI 4
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.
UNIDADE (UNIT)
Cabealho
Interface
Implementao
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.
Pgina: 41
DELPHI 4
INTERFACE
Seo de interface
IMPLEMENTATION
Seo de implementao
FIM.
Na seo de Interface da nossa unidade est sendo definido o tipo TFrmPainel (o nosso
Formulrio) pertencente classe TForm, a seguir, so listados todos os controles, seus
tipos, e procedimentos pertencentes a este formulrio.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs;
type
TFrmPainel = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmPainel: TFrmPainel;
implementation
{$R *.DFM}
end.
O projeto Jogo da Velha, utiliza dois procedimentos que no esto associados a nenhum
controle, so eles JogoNovo e Verificar, Estes procedimentos devem primeiro ser primeiro
declarados para depois serem implementados, declare os procedimentos JogoNovo e
Verificar na definio de tipo do formulrio como mostra a listagem abaixo. Logo mais,
Pgina: 42
DELPHI 4
faremos a implementao destes procedimentos que nada mais do 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 dessas
possui as mesmas propriedades de um boto de comando. Esta matriz poderia conter
nmeros inteiros (array [1..9] of Integer;) ou strings.
Pgina: 43
DELPHI 4
Quando o projeto iniciar, o formulrio ser carregado na memria, neste momento ocorre
um evento OnCreate. Neste evento colocaremos um procedimento de incio do jogo. D um
duplo clique no formulrio para ter acesso ao editor de cdigo, ou selecione o formulrio, v
at a janela Object Inspector escolhendo o indicador Events, e d um duplo clique em
OnCreate. Aparecendo o editor de cdigo com o cabealho do procedimento.
Pgina: 44
DELPHI 4
O procedimento JogoNovo, inicia um novo jogo apagando todas as legendas dos botes e
fazendo uma nova jogada aleatoriamente.
Pgina: 45
DELPHI 4
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.
Para converter um nmero real em inteiro, podemos utilizar as funes Trunc ou Round.
Trunc, retorna a parte inteira de um nmero, enquanto Round arredonda um nmero real.
No nosso cdigo utilizamos a funo Trunc para retornar o ndice do boto que ter sua
legenda alterada.
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: 46
DELPHI 4
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.
label 1,2;
var I: integer;
begin
if (Button1.Caption='X') and (Button2.Caption='X')
and (Button3.Caption='X') then goto 1;
if (Button4.Caption='X') and (Button5.Caption='X')
and (Button6.Caption='X') then goto 1;
if (Button7.Caption='X') and (Button8.Caption='X')
and (Button9.Caption='X') then goto 1;
if (Button1.Caption='X') and (Button4.Caption='X')
and (Button7.Caption='X') then goto 1;
if (Button2.Caption='X') and (Button5.Caption='X')
and (Button8.Caption='X') then goto 1;
if (Button3.Caption='X') and (Button6.Caption='X')
and (Button9.Caption='X') then goto 1;
if (Button1.Caption='X') and (Button5.Caption='X')
and (Button9.Caption='X') then goto 1;
if (Button3.Caption='X') and (Button5.Caption='X')
and (Button7.Caption='X') then goto 1;
Pgina: 47
DELPHI 4
if (Button1.Caption='O') and (Button2.Caption='O')
and (Button3.Caption='O') then goto 2;
if (Button4.Caption='O') and (Button5.Caption='O')
and (Button6.Caption='O') then goto 2;
if (Button7.Caption='O') and (Button8.Caption='O')
and (Button9.Caption='O') then goto 2;
if (Button1.Caption='O') and (Button4.Caption='O')
and (Button7.Caption='O') then goto 2;
if (Button2.Caption='O') and (Button5.Caption='O')
and (Button8.Caption='O') then goto 2;
if (Button3.Caption='O') and (Button6.Caption='O')
and (Button9.Caption='O') then goto 2;
if (Button1.Caption='O') and (Button5.Caption='O')
and (Button9.Caption='O') then goto 2;
if (Button3.Caption='O') and (Button5.Caption='O')
and (Button7.Caption='O') then goto 2;
if NumeroVezes= 4 then
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.
Pgina: 48
DELPHI 4
O Windows possui quadros padronizados de mensagem que servem para emitir avisos 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.
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).
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;
Pgina: 49
DELPHI 4
Argumento Tipo para a funo MessageBox
Valor Significado
0 Somente o boto de OK
1 Botes de OK e Cancelar
2 Botes Anular, Repetir e Ignorar
3 Botes Sim, No, Cancelar
4 Botes Sim, No
5 Botes Repetir e Cancelar
16 Sinal de Stop
32 Sinal de Pesquisa
48 Sinal de Aviso
64 cone de Informao
0 Primeiro boto com foco
256 Segundo boto com foco
512 Terceiro boto com foco
Teste o projeto alterando o valor de tipo para Messagebox, faa a sua soma escolhendo um
item de cada seo.
A varivel Resposta, conter a resposta do usurio que segue o padro da tabela abaixo.
Valor Significado
1 Boto OK foi pressionado
2 Boto Cancelar foi pressionado
3 Boto Anular foi pressionado
4 Boto Repetir foi pressionado
5 Boto Ignorar foi pressionado
6 Boto Sim foi pressionado
7 Boto No foi pressionado
Pgina: 50
DELPHI 4
Primeiro apague as linhas entre begin...end dos procedimentos relativos aos botes exceto
o Button1Click. Compile o projeto (Ctrl+F9) para que o Delphi exclua estes procedimentos
do editor de cdigo - qualquer procedimento "vazio" ser excludo.
No Code Explorer, de um clique com o boto direito e no menu, escolha Rename e altere o
nome do procedimento Button1Click para ButtonClick.
Pgina: 51
DELPHI 4
Por ltimo vamos alterar a procedure ButtonClick para que ela reconhea o boto que
recebeu o evento OnClick, alterando sua Caption.
Pgina: 52
DELPHI 4
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.
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 ele seja
redimensionado.
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.
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
Pgina: 53
DELPHI 4
queremos que seja o atalho. Este procedimento, cria o menu Arquivo e move a barra de
destaque para o lado, d um clique logo abaixo da opo Arquivo inserindo um item deste
menu. 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.
Terminado o menu Arquivo, inicie o menu Editar, como segue abaixo. Defina as teclas de
atalho na propriedade ShortCut dos itens de menu.
Pgina: 54
DELPHI 4
O sub-menu de Formatar Fonte..., dever estar igual a figura mostrada abaixo. Como o
Delphi no reconhece caracteres brasileiros, o nome que ele dar para o item Itlico ser
Itlico, suprimindo do Name o caractere ( 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). Os componentes destas caixas esto na paleta Dialogs do Delphi.
Pgina: 55
DELPHI 4
Pgina: 56
DELPHI 4
A opo Abrir trabalhar com a caixa de dilogo OpenDialog, verificando o valor retornado
por Execute e carregando o contedo do arquivo selecionado, na propriedade Lines do
objeto Memo.
Digite o cdigo para as outras caixas de dilogo. Elas trabalham alterando as propriedades
do Memo aps as mudanas realizadas pelo usurio.
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.
Pgina: 57
DELPHI 4
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.
Pgina: 58
DELPHI 4
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;
Pgina: 59
DELPHI 4
Pgina: 60
DELPHI 4
Salve o seu cone memorizando o nome completo incluindo o caminho. E feche o aplicativo
Image Editor.
O 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.
Pgina: 61
DELPHI 4
Use este cone para representar o Bloco de Notas no Windows, da mesma forma descrita
para a Calculadora.
Pgina: 62
DELPHI 4
Este projeto contm um 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, ou se Inteval for muito pequeno pode ocorrer travamento do programa.
A propriedade Caption dos Label1 e Label2 dever estar em branco. No Label1, ser
apresentada a hora do sistema, e em Label2 a data atual.
Pgina: 63
DELPHI 4
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}
Pgina: 64
DELPHI 4
Quando o Formulrio for criado, o boto Desligado ser selecionado atravs da linha
RadioGroup1.ItemIndex:= 0. A propriedade ItemIndex, indica qual o boto do grupo est
selecionado.
O evento KeyPress envia para a procedure, o parmetro Key do tipo Char, sendo esta
varivel verificada pelo programa.
Pgina: 65
DELPHI 4
Quando o evento Timer ocorrer (no caso a cada segundo - Interval:=1000), ser feita uma
verificao do 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: 66
DELPHI 4
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 alguns destes 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.
DESENHO DE PONTO
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.
Pgina: 67
DELPHI 4
CORES
O Delphi possui trs formas diferentes de atribuir valores para o parmetro cor de um objeto
grfico, so elas:
a) RGB - (NRed, NGreen, NBlue), onde NRed, NGreen e NBlue pode variar de 0 a 255.
- Para cores fixas :clAqua, clBlack, clBlue, clDkGray, clFuchsia, clGray, clGreen,
clLime, clLtGray, clMaroon, clNavy, clOlive, clPurple, clRed, clSilver, clTeal, clWhite,
e 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, e clWindowText.
DESENHO DE LINHAS
Para desenharmos no Delphi, usamos a propriedade Pen do objeto TCanvas, que nada
mais que uma caneta invisvel. Podemos alterar o modo como esta caneta desenha em
nossa tela.
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.
Pgina: 68
DELPHI 4
Copie o procedimento abaixo, inserindo-o no mesmo formulrio do exemplo do ponto.
Canvas.Pen.Style:= psDot;
Canvas.Pen.Color:=clBlue;
ou
With Canvas.Pen do
begin
Style:= psDot;
Color:=clBlue;
end;
No exemplo acima, utilizamos este recurso com o objeto Canvas e seus mtodos MoveTo e
LineTo.
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.
Vamos montar exemplos que usem as outras duas propriedades - Width e Style.
Pgina: 70
DELPHI 4
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: 71
DELPHI 4
DESENHO DE RETNGULOS
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 estes retngulos, usamos o tipo TBrush que como TPen, uma
propriedade do TCanvas. As propriedades mais comuns do TBrush so:
Pgina: 72
DELPHI 4
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;
DESENHO DE ELIPSES
Pgina: 73
DELPHI 4
FIGURAS
Entre com o cdigo a seguir para o boto at o ponto indicado, pressionando Ctrl+j e
escolha case statement.
Pgina: 74
DELPHI 4
implementation
var
sinal:integer;
{$R *.DFM}
Pgina: 75
DELPHI 4
end;
3:begin
picture.loadfromfile ('c:\...\frame4.bmp');
sinal:=0;
end;
end;
end;
end;
Executando o programa:
Ao invs de cada figura ser carregada do disco quando necessitarmos, poderemos incluir
todas de uma s vez no aplicativo.
Vamos ento alterar o programa anterior copiando o controle Image e colando mais outros
trs Image, todos na mesma posio. Incluindo tambm um controle Timer para que a
mudana ocorra automaticamente.
Pgina: 76
DELPHI 4
Digite o cdigo a seguir:
Como prximo passo vamos incluir um controle ScrollBar ( ) que ir controlar a variao
da propriedade Interval do Timer.
Pgina: 77
DELPHI 4
Altere as propriedades da ScrollBar de acordo com a figura a seguir:
Onde:
Kind - especifica se a scrollbar ser horizontal ou vertical.
LargeChange - determina o quanto muda a posio quando o usurio clica a barra
de rolagem em um de seus lados.
Max - especifica o valor mximo da posio.
Min - especifica o valor mnimo da posio.
SmallChange - determina o quanto muda a posio quando o usurio clica nas setas
da barra de rolagem.
Digite a procedure a seguir para o evento OnChange da ScrollBar, que ocorre quando
mudamos a posio da barra de rolagem.
Pgina: 78
DELPHI 4
EXEMPLO V - CATLOGO
Altere a propriedade Filter do controle SaveDialog. Ser ento mostrada a janela Filter
Editor, edite-a como mostra o modelo abaixo.
Pgina: 79
DELPHI 4
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 do nosso arquivo de dados. Para inserir um novo formulrio ao
projeto, escolha a opo New Form do menu File ou selecione o boto ( ) na barra de
ferramentas. Monte este novo Formulrio como mostrado abaixo.
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 seja dimensionado para
acomod-la.
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.
Pgina: 80
DELPHI 4
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.
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 ou o boto ( ) na
barra de ferramentas 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: 81
DELPHI 4
TIPOS DE DADOS
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, aps a nova definio passam a ser LongInt.
REGISTROS
Declare o novo tipo na seo Interface da nova Unit (DiscoUnt - nome salvo em disco).
unit DiscoUnt;
interface
type
{registro com dados pessoais}
TPessoasReg=record
CNome: string[30];
CTelefone: string[15];
CEndereco: string[40];
end;
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.
Pgina: 82
DELPHI 4
Na listagem acima definimos alm do tipo TPessoasReg, o tipo TPessoas, definindo-o como
um tipo de arquivo formado por registros do tipo TPessoasReg.
Logo aps, informamos ao Delphi que existe um tipo de arquivo composto por esse registro,
e tambm declaramos uma varivel do tipo desse arquivo de registros, essa varivel
conter o nome do arquivo aberto em disco.
implementation
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.
Reset(nome do arquivo);
Rewrite(nome do arquivo);
Para gravar ou ler um registro, usamos as funes Write e Read, informando a varivel do
arquivo e em qual varivel estar ou conter o registro.
Write(PessArq, Reg);
Read(PessArq, Reg);
PONTEIRO DE REGISTROS
O ponteiro do arquivo indica qual 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.
Seek(PessArq, RegN);
Pgina: 84
DELPHI 4
Para ligarmos as Units, devemos colocar o nome das Units acessadas na seo uses. Uma
vez declarada uma unidade na seo uses de outra unidade em que esteja trabalhando,
voc poder referenciar qualquer coisa na seo de interface da unidade nomeada. Feita
esta ligao, poderemos acessar as variveis e procedures da outra unidade.
unit Catalogo;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, Menus, StdCtrls,
ProcurarUnt,DiscoUnt;
Declare as variveis que iremos utilizar na unidade CatalogoUnt, como mostrado abaixo.
private
{ Private declarations }
ArqNovo,ArqAtual: string;
Novo,ArquivoAberto: boolean;
public
{ Public declarations }
end;
Pgina: 85
DELPHI 4
procedure TfrmCatalogo.Abrir1Click(Sender: TObject);
begin
Nome.Text:='';
Telefone.Text:='';
Endereco.Text:='';
if OpenDialog1.Execute then
begin
ArqAtual:=OpenDialog1.Filename;
Novo:=False;
DiscoUnt.AbrirArq (PesArq, ArqAtual, Novo)
end
else
Exit;
ArquivoAberto:=True;
end;
Pgina: 86
DELPHI 4
end;
Pgina: 87
DELPHI 4
procedure TfrmCatalogo.btnAtualizarClick(Sender: TObject);
var
Reg : TPessoasReg;
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;
DiscoUnt.GravarArq (PesArq, RegN, Reg);
end;
Para mostrar outro Formulrio, usamos o mtodo Show ou ShowModal. Show abre uma
janela que pode ser alternada entre 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.
Pgina: 88
DELPHI 4
Comece a construo do cdigo para o formulrio frmProcurar, informando ao Delphi que
ela ir acessar a unidade DiscoUnt.
unit ProcurarUnt;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls,DiscoUnt;
private
{ Private declarations }
RegN: integer;
Reg: TPessoasReg;
Pgina: 89
DELPHI 4
implementation
uses
CatalogoUnt;
{$R *.DFM}
Pgina: 90
DELPHI 4
Na tabela do exemplo acima, o mais sensato determinar o campo Cdigo como nossa
chave primria.
Alm de determinarmos os campos e a chave primria da nossa tabela, tambm teremos
que definir o tipo de dado, comprimento, formato e o domnio para cada campo desta
tabela.
Tipo de Dado: refere-se ao contedo do dado, podendo ser numrico, alfabtico, data, hora
ou cadeia de caracteres longa ou curta.
Formato: refere-se forma com que os dados devero ser editados ou apresentados,
definindo-se as posies de smbolos.
DATABASE DESKTOP
Pgina: 91
DELPHI 4
No grupo de programas do Delphi, encontramos o utilitrio Database Desktop, que permite
a criao e manipulao de banco de dados de diversos formatos.
O nosso prximo exemplo, gerenciar duas tabelas. Uma com o cadastro dos clientes e
outra com as vendas realizadas para estes clientes.
Pgina: 92
DELPHI 4
Escolha o tipo Paradox 7. Aparecendo ento a janela Create Paradox 7 Table.
Digite o nome para o primeiro campo (CODIGO) e mude para tipo de campo (Type) usando
a tecla Tab. Com o campo Type selecionado, de um clique com o boto direito do mouse
nele, para ser exibido o menu pop-up com todos os valores para o tipo de campo. As letras
sublinhadas correspondem letra de atalho para cada tipo de dado. O nosso campo
CODIGO ser definido como tipo Alpha. Apesar de ser um campo com nmeros ns no
iremos realizar nenhum clculo matemtico com ele, por isso o definimos como Alpha.
O campo CODIGO ser a nossa chave primria para a identificao dos clientes na tabela
Clientes. Para definir um campo como chave primria, pressione qualquer tecla quando o
campo Key estiver selecionado, marcando este campo com um * - asterisco.
Pgina: 93
DELPHI 4
Pgina: 94
DELPHI 4
Salve-a como Clientes.db.
Logo aps, abra uma nova tabela no mesmo formato, e construa-a como mostrado abaixo.
Para que a tabela Vendas se relacione com a tabela Clientes, deveremos definir o campo
CODIGO como ndice secundrio na tabela Vendas.
Pgina: 95
DELPHI 4
Ser ento solicitado um nome para este ndice, digite INDCODIGO.
Salve a tabela como Vendas.db. Saia do Database Desktop, atravs do menu File, opo
Exit.
Volte ao Delphi, e exclua o formulrio Form1 que o Delphi cria junto com um novo projeto.
No menu Project, escolha a opo Remove from Project..., ou o boto ( ) na barra de
ferramentas, e exclua Form1 no salvando o arquivo. Pois o Form Wizard criar um novo
formulrio automaticamente.
Pgina: 96
DELPHI 4
DBNavigator
O nosso primeiro formulrio ter duas divises, uma para cada tabela. A primeira conter os
dados relativos a um cliente, e a segunda as compras realizadas por este cliente. Inicie o
Form Wizard, seguindo as opes mostradas nas figuras a seguir; pressionando o boto
Next para continuar com o assistente.
Pgina: 97
DELPHI 4
Estas opes criam um formulrio com duas divises, usando componentes TTable. Um
componente TTable realiza a conexo entre o formulrio e uma tabela do banco de dados.
Ele um componente visvel somente em tempo de projeto - semelhante ao componente
TTimer.
Inclua a tabela Clientes.db, como sendo a master query. Ou seja, a tabela que ir
comandar a apresentao do dados.
Selecione o boto >> para incluir todos os campos da tabela Clientes.db no formulrio.
Pgina: 98
DELPHI 4
A opo Vertical posiciona os campos dentro do formulrio, um acima do outro.
Pgina: 99
DELPHI 4
Defina a tabela Vendas.db como a tabela de detalhes.
Inclua todos os campos da tabela Vendas, e a seguir, escolha o formato Grid para a
apresentao da tabela Vendas.
Selecione os campos que faro a ligao entre as duas tabelas, escolhendo INDCODIGO
como ndice. Em Detail Fields e Master Fields, selecione o campo CODIGO como campo
de juno em ambas as tabelas e pressione Add. Como mostrado a seguir.
Pgina: 100
DELPHI 4
Pressione Next e finalize o Form Expert. O seu formulrio estar como a figura a seguir.
Pgina: 101
DELPHI 4
Comece alterando o tamanho do Panel3 referente aos dados dos clientes. E redesenhe o
formulrio como a figura abaixo.
Pgina: 102
DELPHI 4
Para formatar a entrada de dados, ou seja, definir o formato do dado, para a tabela
Clientes.db, d um clique duplo em Table1 para acessar o editor de campos (fields edit).
Selecione o campo CEP e no Object Inspector, procure a propriedade Edit Mask. Esta
propriedade abre o quadro de dilogo Input Mask Editor onde poderemos escolher uma
mscara para o campo CEP, escolha Long Zip Code e na caixa Input Mask elimine um
dgito 9, como mostra as figuras a seguir.
Faa o mesmo para o campo Telefone, escolhendo a mscara Phone. Feche a Input Mask
Edit.
1 - Caption:=Sai&r; Kind:=bkCLose
Pgina: 103
DELPHI 4
A propriedade Kind do BitBtn determina qual desenho ser mostrado na face do boto.
Esta propriedade tambm implementa algumas funes ao boto eliminando linhas de
cdigo, neste caso no ser necessrio nenhuma linha de cdigo para fechar o formulrio.
Finalmente, mude a propriedade Active dos dois componentes TTable (Table1 Table2) de
False para True. Isto tornar o Table ativo tanto em tempo de projeto quanto em tempo de
execuo. Ao ativarmos o Table, os controles TEdit mudaro seu contedo, passando a
exibir o primeiro registro da tabela a eles ligada.
Este segundo formulrio servir para cadastrar vendas. O usurio selecionar um nome de
cliente j cadastrado, a partir de um quadro combo, digitar a data da venda e escolher um
produto, atravs de botes de opo, definindo tambm a quantidade de itens de um
mesmo produto e o valor total da venda.
Insira um novo formulrio ao projeto escolhendo a opo New Form do menu File ou o
boto ( ). Monte este novo formulrio utilizando os componentes descritos na figura
abaixo.
Pgina: 104
DELPHI 4
Selecione todos os TEdit, dando um clique em cada um enquanto pressiona a tecla Shift, e
altere a propriedade DataSource de todos ao mesmo tempo para dsrVendas. Depois
selecione um por vez e altere a propriedade DataField correspondente a cada TEdit.
D um clique duplo em tblVendas para editar o campo Data. Repare que a janela Fields
Editor aparece vazia sem nenhum campo listado. Clique com o boto direito do mouse no
Fields Editor e escolha a opo Add Fields..., selecione todos os campos e pressione Ok,
para inserir todos os campos da tabela Vendas.db no Fields Editor.
Pgina: 105
DELPHI 4
No formulrio que estamos projetando - Vendas, o nome dos clientes vir da tabela Clientes
e quando inserirmos a venda, o nome do cliente escolhido ser vinculado a esta venda na
tabela Vendas atravs da chave primria CODIGO.
Pgina: 106
DELPHI 4
Propriedade Uso
DataSource Indica qual tabela associada.
DataField Indica o campo associado.
ListSource Determina a tabela que fornecer os dados
para a lista.
KeyField Indica qual o campo da tabela acima ser
usado como vnculo.
ListField Indica qual campo ser mostrado na lista do
quadro combo.
Propriedade Valor
Data Source dsrVendas
Data Field CODIGO
ListSource dsrClientes
KeyField CODIGO
ListField NOME
A lista de clientes ser vinculada atravs do campo CODIGO mas estar exibindo ao
usurio, o campo NOME.
Pgina: 107
DELPHI 4
Altere outras propriedades conforme a tabela mostrada abaixo:
Propriedade Valor
DataSource dsrVendas
DataField PRODUTO
Columns 3
Caption vazia
O prximo formulrio ser a abertura do programa. A partir dele sero chamados os dois
formulrios construdos anteriormente.
Pgina: 108
DELPHI 4
A propriedade Hint dos SpeedButtons, contm o texto que ser mostrado quando o mouse
ficar parado por alguns instantes sobre o boto. Define ShowHint:=True, para ativar esta
funo.
implementation
{$R *.DFM}
Pgina: 109
DELPHI 4
Pgina: 110
DELPHI 4
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
esteja 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 - e .
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. Construa um exemplo semelhante ao da luz em movimento, mas que a figura ao invs
de ser desenhada em outro aplicativo, seja desenha por instrues (ellipse e rectangle)
contidas dentro do programa em Delphi.
14. Substitua o controle ComboBox por um ListBox no exemplo de Catlogo, com pesquisa
pelo nmero do telefone.
15. No ltimo exemplo, crie mais uma tabela de Estoque, e a cada venda realizada os
valores de estoque devero ser atualizados.
16. Crie mais duas tabelas, uma de Fornecedores e outra de Compras, semelhantes a
Clientes e Vendas, e acrescente os campos ao seu critrio.
Pgina: 111