Está en la página 1de 46

program nome_programa;

<declaraes>

Curso de Delphi Bsico

begin

Prof. Edson Barros

<comandos>
end.

Nas <declaraes>

1 Aula

o programa

informa

ao

computador as bibliotecas, variveis, funes e


procedimentos que sero usados, enquanto o s

Delphi um produto da Borland / Inprise. Seu propsito

proporcionar

aos

programadores

um

<comandos> representam a lgica do programa.

rpido

desenvolvimento de aplicativos em ambiente Windows.

No ambiente Delphi essa estrutura pode ser observada


do menu em:

Como um ambiente de programao, o Delphi funciona


baseado

em

uma

linguagem

convencional

de

View
Project Source

programao. Sendo assim importante conhecer o s


principais comandos e a estrutura de sua linguagem
que na verdade o TurboPascal.

O importante saber que no Project existe:


uses
Forms,

O texto simples de um programa PASCAL :

Unit1 in 'UNIT1.PAS' {Form1};

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 1

A informao que a Unit1 est no arquivo 'UNIT1.PAS'


significa o local no qual o aplicativo, feito em Delphi, ir

Como os objetos so criados?

encontrar os comandos a serem executados quando

No Delphi o usurio escolhe os objetos que sero

os OBJETOS forem acionados.

colocados em seu programa (ou formulrio), altera


suas propriedades e programa seu evento na Unit.

Mas o que seriam OBJETOS?


Um boto, um formulrio, uma lista de itens ou

Como as propriedades podem ser alteradas?

qualquer outro componente que exista em u m

As propriedades dos objetos so monitoradas no

formulrio.

Object Inspector, onde o usurio pode configur-las.

Todo objeto munido de propriedades, tais como cor


ou formato ou ainda o tipo de letra. Todo objeto pode
ser um gerador de eventos (p.ex: um clculo simples).

Mas qual a ligao de um objeto com a Unit1 do


Project?
Os objetos, que so caracterizados (ou configurados)
pelas suas propriedades, executam seus eventos por
procedimentos (procedures) que esto programadas
nas Units.
______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 2

O prprio Delphi se encarrega de incluir na Unit


E como o usurio pode programar os eventos dos
objetos?

algumas linhas vitais ao bom funcionamento do objeto


escolhido.

Normalmente prprio Object Inspector, no qual existe


uma lista de eventos possveis ao objeto, o caminho

No incio do programa, na parte de declaraes, o


ambiente inclui algo do tipo:

mais fcil abrir no Delphi um procedimento (uma


procedure).

type
TForm1 = class(TForm)
Button1: TButton;

procedure Button1Click(Sender: TObject);


______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 3

Um bloco de comandos limitado entre um begin e


E, em uma parte apropriada ao texto de programao,

um e n d . Um bloco pode ser tratado como uma

aparece:

simples instruo no meio de um outro comando.

procedure TForm1.Button1Click(Sender:TObject);
begin

As variveis a serem usadas na procedure, function ou


programa devem ser declaradas!

end;

A procedure um miniprograma. Com uma procedure


o usurio pode declarar variveis e executar operaes

Ex:
procedure blablabla;
var

complexas em um simples apertar de boto.

a, b, c: double;
x, y: integer;

Nesse estgio bom o usurio possuir algumas

nome: string;

noes de PASCAL bsico .

begin
...

Todo comando em PASCAL se encerra no ;.

O comando de atribuio := .

end;

Entre outros, os tipos mais usados de variveis so:


- Com ponto flutuante: Real, Double
- Valores inteiros: Byte, Integer, Longint
- Para texto: Char, String

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 4

- Informao do tipo lgica: Boolean


Uma referncia inicial rpida para incio de atividade
Quando a informao flui das variveis para os objetos

interessante conhecer pelo menos os objetos Label,

(campos

Button e Edit.

necessrio

propriedades

dos

objetos)

pode

ser

algum tipo de converso (p.ex: de texto

para nmero, ou vice-versa), sendo assim existem


algumas funes teis tais como: StrToFloat, StrToInt,
FloatToStr, IntToStr, etc.

O Label um campo de texto que pode exibir


rpidas informaes em sua propriedade Caption.

No processo de criao de um aplicativo Delphi


aparecem alguns arquivos no diretrio em uso. Por
enquanto importante saber que cada um dos
arquivos ou ter origem com o nome da unit ou com o

O Button a simulao grfica de um boto.


Normalmente usado para acionar eventos.

nome do project.

Tambm importante conhecer alguns


bsicos, principalmente do menu Standard.

objetos

O E d i t um
informaes. Os

campo destinado a

dados

so

coletar

armazenados na

propriedade Text.

Atividade prtica
______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 5

begin

(1) Criar um aplicativo com dois botes que informe

Label1.Caption:='Apertado o Boto 1';


end;

quando um deles foi apertado.

procedure TForm1.Button2Click(Sender: TObject);


begin
Label1.Caption:='Apertado o Boto 2';
end;

(2) Alterar a propriedade Hint e ShowHint dos botes do


aplicativo anterior.
ShowHint = True
No formulrio foram criados os seguintes objetos:

Hint = Boto de teste

Button1: TButton;
Button2: TButton;
Label1: Tlabel;

Tambm foram incluidosas declaraes dos eventos:


procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: Tobject);

As procedures de eventos sero:

(3) Incluir no aplicativo anterior alguma forma para


cadastrar o nome do usurio.

procedure TForm1.Button1Click(Sender: TObject);


______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 6

Soluo:
(3.a) Incluir objetos Label2 e Edit1.

uses
SysUtils, WinTypes, WinProcs, Messages,
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;

(3.b) No objeto Label2 alterar a propriedade Caption

procedure Button1Click(Sender: TObject);

para:

procedure Button2Click(Sender: TObject);

Digite seu nome e aperte um boto

private
{ Private declarations }
public

(3.c) Limpar a prorpiedade Text do objeto Edit1.

{ Public declarations }
end;

(3.d) Alterar a Unit1 para:


unit Unit1;

var
Form1: TForm1;
Nome: string;

interface
______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 7

implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
resp1: string;
begin
Nome:= Edit1.Text;
resp1:= Nome + ', voc apertou 1';
Label1.Caption:= resp1;
end;

Algumas observaes:
procedure TForm1.Button2Click(Sender: TObject);
var

- A varivel Nome foi declarada de uma forma Global;

resp2: string;
begin
Nome:= Edit1.Text;

- As variveis resp1 e resp2 foram declaradas apenas

resp2:= Nome + ', voc apertou 2';

para uso Local, ou seja apenas as respectivas

Label1.Caption:= resp2;

procedures podem acess-las.

end;
end.

O formulrio resultado ser:

- A propriedade Caption do Label1 foi alterada por uma


expresso de caracteres (strings).

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 8

(4) Elaborar um aplicativo que, em funo do boto

(4.b) Atribuir o valor 0 (zero) na propriedade Text do

acionado, soma ou subtrai ou multiplique dois valores

Edit1 e Edit2. Alterar a propriedade Enabled do Edit3

cadastrados.

para False.

1 sugesto: Usar um objeto Edit com a propriedade


Enabled com valor False para exibir a resposta.

(4.c) Fazer para soma:

2 sugesto: Mudar a propriedade Caption do objeto


Form com um texto apropriado.

procedure TForm1.Button1Click(Sender: TObject);


var
a,b,c: double;

Soluo:

begin

(4.a) Criar um formulrio parecido com o abaixo:

a:= StrToFloat(Edit1.Text);
b:= StrToFloat(Edit2.Text);
c:= a+b;
Edit3.Text:= FloatToStr(c);
end;

(4.d) Para subtrao a procedure ser parecida, basta


mudar a linha da conta para:
procedure TForm1.Button2Click(Sender: TObject);

...
c:= a-b;

...
______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 9

(4.e) Para multiplicao a procedure tambm ser

Um pouco mais de teoria

parecida, basta mudar a linha da conta para:


procedure TForm1.Button3Click(Sender: TObject);

...

O ltimo exerccio empregou alguns operadores


aritmticos. Na verdade no Delphi existem os seguintes

c:= a*b;

operadores:

...

O resultado ser:

Soma

Subtrao

Multiplicao

Diviso

DIV

Diviso Inteira

MOD Resto de Diviso Inteira

Existem

algumas

funes

prprogramadas

da

linguagem destinadas aos clculos mais diversos.

Embora algumas das limitaes matemticas das


funes, que existiam nas verses mais remotas do
Nota: O Edit3 exibir a resposta da operao escolhida,

TurboPascal, j tenham sido sanadas no Delphi

porm no ser permitido alter-lo diretamente.


______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 10

importante o programador saber empregar as funes

(6) Elaborar um programa para calcular a distncia de

prprogramadas a moda antiga!

dois pontos no espao.

So elas:

(7) Fazer um programa para calcular a raiz Nsima de


um nmero.

ABS(X)

Retorna o mdulo de X

COS(X)

Retorna o cosseno de X (em radianos)

SIN(X)

Retorna o seno de X (em radianos)

ARCTAN(X) Retorna

arcotangente

de

(em

radianos)
SQR(X)

Retorna o quadrado de X (X2)

SQRT(X)

Retorna a raiz quadrada de X (X)

EXP(X)

Retorna o valor de eX, onde e=2,7182818...

LN(X)

Retorna o logaritmo natural (base e)

PI

Constante real de valor =3,1415926536...

ODD(X)

Valor True se X for mpar e False se par.

Exerccos propostos
(5) Fazer um aplicativo para calcular a rea e o
permetro de uma circunferncia, sendo seu raio dado.

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 11

uma que ser adotada quando a condio assumir


valor verdadeiro, e outra quando a condio for falsa.

Curso de Delphi Bsico


Prof. Edson Barros

Em Delphi a sintaxe do comando if :


if <condio>
then <comando_VERDADE>
else <comando_FALSO>;

2 Aula

Quando h a necessidade de se escrever mais de uma

Em toda linguagem de programao existem estruturas


lgicas conhecidas como estruturas de controle.
Basicamente essas estruturas so: os comandos de
condio e os comandos de looping.

instruo nos comandos depois do then ou do else


deve-se usar um bloco de comandos limitado entre u m
begin e um end.
if <condio>
then begin

Sendo o comando de condio um dos comandos


mais interessantes na programao, pois reproduz na

<comando>;
<comando>;
<comando>;

mquina a faculdade humana da tomada de decises

...

em funo de condies lgicas explicitas. O comando

end

ramifica a lgica do programa em duas alternativas:

else begin
<comando>;

<comando>;
______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 12

else <rotina_02>

...

else if <condio3>

end;

O comando if termina no seu ; . Se o usurio colocar

then <rotina_03>

um ; antes da clusula e l s e o programa no

else <rotina_04>;

entender o comando dessa clusula como sendo

Outro comando de deciso que tambm pode ser


empregado o comando c a s e. Esse comando

parte do if.

usado quando se precisa escrever o texto cdigo com o


Portanto o comando if tambm poderia ser usado

propsito de lidar com muitas possibilidades para


mesma varivel, seja ela char ou integer ou outro tipo

assim:

escalar.

if <condio>
then <comando_VERDADE>;

case <varivel> of
<valor_1>:<rotina_1>;
<valor_2>:<rotina_2>;

Quando, devido necessidade de processamento,

...

agrupamos vrias selees, formamos uma seleo

<valor_N>:<rotina_N>;

aninhada. Normalmente tal formao ocorre quando

else <rotina_sobras>;

uma determinada ao ou bloco deve ser executado s e

end;

e somente se um conjunto de possibilidades ou


combinaes de situaes for satisfeito.

H ainda situaes que podem ser resolvidas com


variveis booleanas usadas estrategicamente nas

if <condio1>

procedures com algumas propriedades lgicas.

then if <condio2>
then <rotina_01>

...

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 13

var

estiver em branco, a propriedade Checked retorn

teste: boolean;

False.

...
teste:= (valor_a > valor_b) or (valor_c = 0);
Edit3.Enabled:= not(teste);

Parecendo um objeto GroupBox

Os operadores boleanos existentes no Delphi so:

, RadioGroup

agrupa de forma inteligente vrios RadioButtons e m


um objeto.

And, Or, Xor e o Not.

Atividade prtica
No menu Standard os objetos CheckBox, RadioButton
e RadioGroup podem ser uma boa alternativa para o

(1) Criar um aplicativo para verificar a situao de u m

usurio transmitir suas opes ao aplicativo.

aluno: APROVADO, quando a nota for igual ou superior


a 5.0, ou REPROVADO quando ela for menor.

O CheckBox

o RadioButton

possuem a

propriedade Checked que retorna True se o usurio


tiver ticado o objeto. Caso o espao desses objetos
procedure TForm1.Button1Click(Sender: TObject);
var
______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 14

Nota: double;

Soluo: Incluir o evento OnKeyPress abaixo no Edit1.

begin
Nota:= StrToFloat(Edit1.Text);

procedure TForm1.Edit1KeyPress (Sender:

if Nota >= 5

var Key: Char);

then Label2.Caption:='APROVADO!'

begin

else Label2.Caption:='REPROVADO!';

if Key=#13 then Button1.SetFocus;

end;

Tobject;

end;

O mesmo exerccio poderia ter o fonte:

(3) Melhorar o aplicativo, supondo que os alunos

procedure TForm1.Button1Click(Sender: TObject);

tambm podem ser reprovados se a sua freqncia for

var

menor que 75%.

Nota: double;
begin
Nota:= StrToFloat(Edit1.Text);
if Nota >= 5
then Label2.Caption:='APROVADO!';
if Nota < 5
then Label2.Caption:='REPROVADO!';
end;

(2) Melhorar o exerccio anterior com um procedimento

Usando o operador lgico and o fonte ser:

que selecione o boto de clculo quando o usurio

procedure TForm1.Button1Click(Sender: TObject);

digitar a tecla Enter .

var

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 15

Nota, Freq: double;

usurio desavisado poderia digitar caracteres texto no

begin

lugar de nmeros para a nota!

Nota:= StrToFloat(Edit1.Text);
Freq:= StrToFloat(Edit2.Text);
if (Nota >= 5) and (Freq >= 75)

Esse problema pode ser resolvido com as funes

then Label2.Caption:='APROVADO!'

ord() e chr() em um comando if no evento OnKeyPress

else Label2.Caption:='REPROVADO!';

do objeto Edit em uso.

end;

Ou usando o operador lgico or o fonte ser:

A funo ord() retorna o valor ASCII de um caracter

procedure TForm1.Button1Click(Sender: TObject);

qualquer, enquanto a chr() gera o caracter quando for

var

dado um nmero ASCII.

Nota, Freq: double;


begin
Nota:= StrToFloat(Edit1.Text);

(4) Melhorar o exerccio anterior de forma que o s

Freq:= StrToFloat(Edit2.Text);

campos de nota e freqncia s aceitem valores

if (Nota < 5) or (Freq < 75)

numricos.

then Label2.Caption:='REPROVADO!'
else Label2.Caption:='APROVADO!';

Soluo: Incluir o evento OnKeyPress abaixo no Edit1 e

end;

no Edit2.
procedure TForm1.EditZZKeyPress (Sender: Tobject;

Observao: Um problema que pode atrapalhar o bom


funcionamento desse aplicativo o fato de que u m

var Key: Char);


begin

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 16

if (((ord(Key)<ord(0)) or (ord(Key)>ord(9))
and ((ord(Key)<>ord(8)) and (ord(Key)<>ord(,)))
then Key:=chr(0);
end;

Observaes:
(4.a) O valor ord(8) corresponde a tecla BackSpace.

procedure Button1Click(Sender: TObject);


procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}

(4.b) O valor chr(0) corresponde ao caracter null


(5) Elaborar um programa para efetuar a diviso entre
dois nmeros. Se o usurio digitar 0 o aplicativo
dever avisar que houve uma operao ilegal.

procedure TForm1.EditZZKeyPress(Sender: TObject;


var Key: Char);
begin
if ((ord(Key)< ord('0')) or (ord(Key) >ord('9')))
and ((ord(Key)<>ord( 8 )) and (ord(Key)<>ord(',')))
then Key:=chr(0);
end;

unit Uifav;
interface
procedure TForm1.Button1Click(Sender: TObject);
uses
var
SysUtils, WinTypes, WinProcs, Messages, Classes,
numerador,denominador,resposta:double;
Graphics, Controls, Forms, Dialogs, StdCtrls;
begin
type
numerador := StrToFloat(Edit1.Text);
TForm1 = class(TForm)
denominador:= StrToFloat(Edit2.Text);
Label1: TLabel;
if (denominador = 0)
Edit1: TEdit;
then showmessage('Diviso por ZERO!!!')
Label2: TLabel;
else begin
Edit2: TEdit;
resposta := numerador/denominador;
Button1: TButton;
Edit3.Text:= FloatToStr(resposta);
Button2: TButton;
end;
Label3: TLabel;
end;
Edit3: TEdit;
Button3: TButton;
procedure TForm1.Button2Click(Sender: TObject);
procedure EditZZKeyPress(Sender: TObject; var
begin
Key: Char);
______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 17

Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
end;

(5.a) Na propriedade Caption dos botes empregou-se


o caracter & antes das letras de chamada assim
sendo, a combinao das teclas Alt e D acionar a

procedure TForm1.Button3Click(Sender: TObject);


begin
Close;
end;

diviso, a combinao Alt + L limpar os Edit, e Alt + S


encerrar.
(5.b) A mensagem Diviso por ZERO!!! usou a

end.

procedure ShowMessage().
O formulrio resultado ser:

(5.c) O comando Close destina-se a fechar o formulrio.


(5.d) Os objetos Edit pertencem a uma categoria de
objetos que podem ser limpos com o comando Clear.

(6) Elaborar um formulrio que o boto de saida s


fique visvel de um CheckBox permitir.

Soluo: Criar um formulrio com um CheckBox e u m


Button. Alterar a propriedade Visible do Button para
False. Programar as procedures abaixo.
Observaes:

procedure TForm1.CheckBox1Click(Sender: TObject);


begin

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 18

if CheckBox1.Checked
then Button1.Visible:= True
else Button1.Visible:= False;
end;

procedure TForm1.Button1Click(Sender: TObject);


begin

As propriedades dos objetos que guardam valores

Close;

booleanos podem ser alteradas em linhas

de

end;

comando.

de

Seu

uso

amplia

os

recursos

programao.
Quando o programa for executado dever aparecer sem
o boto de encerramento.

(7) Elaborar um aplicativo com um RadioButton e u m


Button, sendo que ao apertar o boto o RadioButton
muda de estado.
procedure TForm1.Button1Click(Sender: TObject);
begin
RadioButton1.Checked:=not(RadioButton1.Checked);

O aplicativo s exibir o boto quando o CheckBox

end;

estiver selecionado.

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 19

numero:= StrToInt(Edit1.Text);
case numero of
1

: Label2.Caption:='Valor UM';

2..4: Label2.Caption:='entre DOIS e QUATRO';


5
else

: Label2.Caption:='Valor CINCO';
Label2.Caption:='Fora dos limites';

end;

(8) Elaborar um programa que verifique se os nmeros

end;

inteiros informados pelo usurio esto nas faixas


abaixo:

(9) Elaborar um formulrio para definir o estado civil da

(a) igual a 1; (b) entre 2 e 4; (c) igual a 5.

pessoa cadastrada.

Boto Limpar
procedure TForm1.Button2Click(Sender: TObject);
begin
RadioGroup1.ItemIndex:=-1;
Label2.Caption:='';
Edit1.Clear;
Edit1.SetFocus;
end;

procedure TForm1.Button1Click(Sender: TObject);


var

Boto Classificar

procedure TForm1.Button1Click(Sender: TObject);


var
msg: string;
begin
begin
______________________________________________________________________________________(prof_edson@uol.com.br)__
numero: integer;

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 20

case RadioGroup1.ItemIndex of
0: msg:= ', feliz e no sabe!';
1: msg:= ', j juntou os trapos?';
2: msg:= ', est livre novamente.';
3: msg:= ', a vida continua...';
else msg:= ' precisa informar';
end;
Label2.Caption:= Edit1.Text + msg;
end;

(10) Fazer um aplicativo para calcular o quadrante de


um ponto qualquer Po(Xo,Yo).
2 Quadrante

1 Quadrante

3 Quadrante

4 Quadrante

(11) Elaborar um programa para calcular as raizes da


equao do 2 grau.

(12) Fazer um programa para calcular a situao do


aluno, em funo de sua mdia e freqncia, sabendo
que:
[a] Freqncia menor que 75% s no ser reprovao
se a mdia for igual a DEZ.
[b] Mida menor que 3,0 o aluno est REPROVADO!
[c] Mdia menor que 5,0 e maior ou igual a 3,0 o aluno
estar direto em RECUPERAO.
[d] Mdia maior ou igual a 5,0 e menor que 7,5 o aluno
ter que fazer EXAME.

Exerccos propostos

[e] Nota maior ou igual a 7 , 5 o aluno estar


APROVADO.

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 21

Curso de Delphi Bsico


Prof. Edson Barros

Em Delphi a sintaxe do comando for pode ser ou com o


valor da varivel de controle crescente ou decrescente,
sendo assim temos:

for <vc>:= <valor1> to <valor2>


do <comando>;

3 Aula

ou
for <vc>:= <valor1> downto <valor2>

As estruturas lgicas de controle do tipo comandos de

do <comando>;

looping variam quanto a sua funcionalidade. No Delphi


pode-se repetir comandos de vrias frmas. A

O comando for pode ser usado para clculos de sries

linguagem de programao permite, entre outras

matemticas, vetores e matrizes, controle de listas

tcnicas, a repetio de comandos (ou blocos) com:

assim como das linhas de memorandos.

- uso de varivel de controle


- teste no incio do lao lgico

A varivel de controle do comando for dever ser

- teste no final do lao lgico

obrigatoriamente escalar, no importando se um tipo


da linguagem ou definido pelo usurio.

Os comandos for, while e repeat so os usados para a


elaborao de rotinas. Cada comando funciona de

Um exemplos de um tipo escalar no usual com o for

maneira diferente e se adapta em casos especficos.

a gerao automtica de letras ordenadas.

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 22

Uma estrutura de looping bastante freqnte nas

Tambm o comando repeat funciona controlado por

linguagens de programao o comando while.

valores boleanos, o comando de repetio com

Essencialmente o comando funciona ENQUANTO a

condio no final.

condio no incio do looping for VERDADEIRA.


O repeat...until o comando de looping cuja condio
Como o comando de repetio com condio no incio,

representa condio de interrupo do lao. Ou seja,

o while...do, o comando de looping mais completo,

a condio invertida se comparada com o comando

pois a condio representa condio de execuo do

while...do.

lao, permitido executar ou no. Ou seja, isso significa


que o procedimento pode ser repetido um nmero

Isso significa que o procedimento ser executado pelo

indefinido de vezes, de zero a muitas.

menos uma vez, independente do valor da condio


(VERDADEIRO ou FALSO).

A sintaxe do comando while :


Em Delphi a sintaxe do comando repeat :
while <condio> do

repeat

<comando>;

<comando>
until <condio>;

Como a condio um valor do tipo boolean, o controle


do looping pode ser uma propriedade de um objeto,

Os trs comandos (for, while e repeat) so a maneira

uma simples condio ou uma varivel boleana.

estruturada de construir um looping.

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 23

Comparao entre as Estruturas de Repetio


Comando

Condio

While
Repeat
For

no incio
no fim
no tem

Quantidade de
execues
indefinido
mnimo 1
|vf-vi|+1

Condio de Existncia
condio verdadeira
condio falsa
vi < vf para To
vi > vf para DownTo

Atividade prtica
(1) Criar um aplicativo, usando um objeto ListBox, para
gerar uma lista de valores crescentes.

No menu Standard os objetos ListBox e Memo podem


ser exemplos de uso de comandos de repetio e m
aplicativo.

procedure TForm1.Button1Click(Sender: TObject);


var
vc,valor1,valor2: integer;

O ListBox

, assim como o Memo

, que servem

begin

para diversos propsitos, podem ter o acesso de suas

valor1:=StrToInt(Edit1.Text);

linhas por comandos de repetio.

valor2:=StrToInt(Edit2.Text);
for vc:=valor1 to valor2 do
ListBox1.Items.Add(IntToStr(vc));
end;

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 24

(2) Alterar o fonte do exerccio anterior para gerar a lista

(4) Dado o nmero de repeties N e a varivel

decrescente:

parmetro X, o programa ir calcular a somatria S

Soluo: Basta alterar a linha do comando for para:

da srie: S = X + X/2 + X/3 + ... + X/N

... for vc:=valor1 downto valor2 do ...

(3) Elaborar programa para gerar uma lista de N


valores que variam de acordo com um passo P dado
(p.ex: 2, 3 ou ainda 0.5, 0.75, etc).

procedure TForm1.Button1Click(Sender: TObject);


var
vc,qtde: integer; passo: double;
begin
qtde := StrToInt(Edit1.Text);
passo:= StrToFloat(Edit2.Text);
for vc:= 1 to qtde do
ListBox1.Items.Add(FloatToStr(vc*passo));
end;

procedure TForm1.Button1Click(Sender: TObject);


var
n,vc: integer;
x,s: double;
begin
n:= StrToInt(Edit1.Text);
x:= StrToFloat(Edit2.Text);
s:= 0;
for vc:= 1 to n do
s:= s + x/vc;
Label3.Caption:=FloatToStr(s);
end;

(5) Alterar a srie para incorporar uma troca alternada


de sinal, ou seja: S = X - X/2 + X/3 - X/4 + ... X/N.

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 25

procedure TForm1.Button1Click(Sender: TObject);


var
n,vc,t: integer;
x,s: double;
begin
n:= StrToInt(Edit1.Text);
x:= StrToFloat(Edit2.Text);
s:= 0;
t:= 1;
for vc:= 1 to n do
begin
s:= s + t*x/vc;
t:=-t;
end;
Label3.Caption:=FloatToStr(s);
end;

procedure TForm1.Button1Click(Sender: TObject);


var
vc,valor1,valor2: char;
begin
valor1:= Edit1.Text;
valor2:= Edit2.Text;
for vc:=valor1 to valor2 do
ListBox1.Items.Add(vc);
end;

(7) Refazer o exerccio (1) usando o comando while.

Soluo: Usando o mesmo formulrio o texto fonte deve


ser alterado para:

(6) Gerar uma lista de letras em ordem crescente.


procedure TForm1.Button1Click(Sender: TObject);
var
vc,valor1,valor2: integer;
begin
valor1:=StrToInt(Edit1.Text);
valor2:=StrToInt(Edit2.Text);
vd:= valor1
while vc <= valor2 do
begin
ListBox1.Items.Add(IntToStr(vc));
vc:=vc+1;
end;
end;

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 26

(8) Refazer o exerccio (1) usando o comando repeat.


procedure TForm1.Button1Click(Sender: TObject);
var
vc,valor1,valor2: integer;
begin
valor1:=StrToInt(Edit1.Text);
valor2:=StrToInt(Edit2.Text);
vc:= valor1
repeat
ListBox1.Items.Add(IntToStr(vc));
vc:=vc+1;
until vc =>valor2;
end;

(9) Criar um programa para classificar em ordem


alfabtica algumas palavras cadastradas.

uses
SysUtils, WinTypes, WinProcs, Messages, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TFormulario = class(TForm)
Listagem: TListBox;
Botao1: TButton;
Botao2: TButton;
Botao3: TButton;
Entrada: TEdit;
procedure Botao1Click(Sender: TObject);
procedure Botao2Click(Sender: TObject);
procedure Botao3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Formulario: TFormulario;
implementation
{$R *.DFM}
procedure TFormulario.Botao1Click(Sender: TObject);
begin
Listagem.Items.Add(Entrada.Text);
Entrada.Clear;
end;
procedure TFormulario.Botao2Click(Sender: TObject);
begin
Listagem.Sorted:=True;
end;
procedure TFormulario.Botao3Click(Sender: TObject);
begin
Listagem.Clear;
Listagem.Sorted:=False;
end;

unit Listform;
interface

end.

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 27

Nos aplicativos os usurios no usam apenas o s

Curso de Delphi Bsico


Prof. Edson Barros

objetos do menu S t a n d a r d . No menu Additional


existem componentes que podem proporcionar u m
visual mais agradvel ao aplicativo executando
operaes equivalentes.

4 Aula

Menu Additional

Nesse estgio de conhecimento do Delphi o ditado sei


que nada sei parece ter um significado especial. O
usurio comea a entender como usar as ferramentas,
embora perceba que sabe lidar com um nmero muito
baixo delas.

A quantidade elevada de objetos, suas muitas


propriedades e mtodos, as

particularidades da

linguagem de programao Pascal, alm dos recursos


do prprio ambiente Delphi representa um volume
substancial de recursos para o programador.
______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 28

O objeto Image
O boto BitBtn

funciona de forma anloga ao

Button, porm em sua apresentao aparece um cone

possibilita no aplicativo a exibio

de imagens, seja como tela de fundo ou informao de


um banco de dados.

que lembra algum procedimento.

Atividade prtica
(1) Criar um formulrio que um elemento Shap s e
desloque quando um boto acionado.

Com o objeto S h a p e

pode-se usar formas

geomtricas nos aplicativos.

procedure TForm1.BitBtn1Click(Sender: TObject);


______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 29

begin

O menu para salvar arquivos o SaveDialog

Shape1.Left:=Shape1.Left+5;

If Shape1.Left > 180 then Image1.Visible:=True;


end;

No menu Dialogs o usurio pode acionar menus de

O menu para gerar impresso oPrintDialog

prprogramados do Windows.
No menu S t a n d a r d h ainda dois objetos que
permitem a cirao de menus pelo usurio: o
MainMenu e o PopMenu.

Os menu de fontes, o FontDialog

, proporciona a

facilidade de ajuste da fonte no aplicativo do usurio.

O MainMenu

menu

que

aparece

em

aplicativos, logo abaixo do ttulo das janelas do


Windows.

O menu de cores, o ColorDialog

, pode ser usado


O PopMenu

para resgatar qualquer cor da palheta de cores.

o menu que aparece quando o

boto de dados do mouse clicado em algum objeto.


O menu para abrir arquivos o OpenDialog

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 30

Atividade prtica
(2) O prximo programa destina-se a ilustrar alguns
desses objetos.

unit Pipoca;
interface
uses
SysUtils, WinTypes, WinProcs, Messages,
Classes, Graphics, Controls,
Forms, Dialogs, Menus, StdCtrls;
type
Tpipocar = class(TForm)
PopupMenu1: TPopupMenu;

LblMensagem: TLabel;
Fontes1: TMenuItem;
Cores1: TMenuItem;
Memo1: TMemo;
FontDialog1: TFontDialog;
ColorDialog1: TColorDialog;
N1: TMenuItem;
Sair1: TMenuItem;
MainMenu1: TMainMenu;
Operar: TMenuItem;
Fontes2: TMenuItem;
Cores2: TMenuItem;
Info: TMenuItem;
N2: TMenuItem;
Sair2: TMenuItem;
Exibir1: TMenuItem;
procedure Fontes1Click(Sender: TObject);
procedure Cores1Click(Sender: TObject);
procedure Sair1Click(Sender: TObject);
procedure Exibir1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
pipocar: Tpipocar;
implementation
{$R *.DFM}
procedure Tpipocar.Fontes1Click(Sender: TObject);
begin
FONTDIALOG1.FONT:=MEMO1.FONT;
IF FONTDIALOG1.EXECUTE
THEN MEMO1.FONT:=FONTDIALOG1.FONT;
end;
procedure Tpipocar.Cores1Click(Sender: TObject);
begin
COLORDIALOG1.COLOR:=MEMO1.COLOR;
IF COLORDIALOG1.EXECUTE
THEN MEMO1.COLOR:=COLORDIALOG1.COLOR;
end;

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 31

procedure Tpipocar.Sair1Click(Sender: TObject);


begin
CLOSE;
end;
procedure Tpipocar.Exibir1Click(Sender: TObject);
begin
SHOWMESSAGE('Programa feito em linguagem DELPHI');
end;
end.

(3) O prximo programa desenvolve a srie matemtica


da raiz quadrada.

unit Pj_serie;
interface
uses
SysUtils,WinTypes,WinProcs,Messages,Classes,
Graphics,Controls,Forms,Dialogs,Menus,StdCtrls;
type
Tserie = class(TForm)
BtCalculo: TButton;
BtLimpar: TButton;
ListaResp: TListBox;
LblInicio: TLabel;
VlInicio: TEdit;
LblFim: TLabel;
VlFim: TEdit;
Saida: TButton;
MainMenu1: TMainMenu;
OpMenu: TMenuItem;
Calcular1: TMenuItem;
Limpar1: TMenuItem;
N1: TMenuItem;
Sair1: TMenuItem;
Informaes1: TMenuItem;
Mensagem1: TMenuItem;
procedure SaidaClick(Sender: TObject);
procedure Mensagem1Click(Sender: TObject);
procedure BtCalculoClick(Sender: TObject);
procedure BtLimparClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
serie: Tserie;
INICIO,FIM: INTEGER;
implementation
______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 32

{$R *.DFM}
PROCEDURE AVISO1;
BEGIN
SHOWMESSAGE('Entrada invlida!!!');
END;
procedure Tserie.SaidaClick(Sender: TObject);
begin
CLOSE;
end;
procedure Tserie.Mensagem1Click(Sender: TObject);
begin
SHOWMESSAGE('Exemplo da srie Raiz Quadrada');
end;
procedure Tserie.BtLimparClick(Sender: TObject);
begin
LISTARESP.CLEAR;
end;

LISTARESP.ITEMS.ADD(ITEM+' => '+TEXTO);


END;
end;
end.

procedure Tserie.BtCalculoClick(Sender: TObject);


VAR
RAIZ:REAL;
TEXTO,ITEM:STRING;
LOOP,STATUS:INTEGER;
TESTE:BOOLEAN;
begin
VAL(VLINICIO.TEXT,INICIO,STATUS);
VAL(VLFIM.TEXT,FIM,STATUS);
TESTE:=NOT(STATUS=0)
OR (INICIO>FIM)
OR (INICIO<0)
OR (FIM<0);
IF TESTE
THEN AVISO1
ELSE FOR LOOP:=INICIO TO FIM
DO BEGIN
RAIZ:=SQRT(LOOP);
STR(RAIZ:14:9,TEXTO);
STR(LOOP:5,ITEM);
______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 33

Uma f u n c t i o n prprogramada interessante o


StrToIntDef, que funciona como o StrToInt, porm
retorna um valor padro caso haja erro na converso.

Curso de Delphi Bsico

Atividade prtica

Prof. Edson Barros


(1) Fazer um comando que some dois valores com
ponto decimal.
function Soma(Valor1, Valor2: Double):Double;

5 Aula

begin

Procedures e Functions podem ser programadas

Soma:= Valor1 + Valor2;


end;

diretamente pelo usurio. As procedures geralmente

...

so destinada a programao de eventos, como os que

a:= Soma(b,c);

so codificados nas Units. As functions retornam u m


valor como resultado do processamento. O usurio
praticamente

pode

criar

comandos

com

as

...

(2) Fazer um programa para testar a funo StrToIntDef.


procedure TForm1.Button1Click(Sender: TObject);

procedures e as fuctions, sendo possvel cham-los

begin

em outras partes do programa.

Label1.Caption:=IntToStr(StrToIntDef(Edit1.Text,0));
end;

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 34

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 35

Qualquer tipo de dado, seja padro ou definido pelo


usurio, pode ser estendido por um array, que usa u m
tipo de subintervalo como ndice, razo pela qual so
VARIAVEIS ESTRUTURADAS

conhecidas como variveis indexadas!

O DELPHI oferece bons recursos para manipulao de


dados agrupados. Um conjunto de dados, referencivel
por um mesmo identificador, conhecido como

Os limites do subintervalo, tanto o inferior como o


superior, representam uma numerao de ndices,
reservados na memria.

varivel composta, ou varivel estruturada.


Variveis do tipo array podem armazenar vrios valores
As

variveis

estruturadas

podem

ainda

ser

classificadas em: variveis compostas homogneas,

de um mesmo tipo, sendo que cada ndice ser


equivalente a uma varivel.

e variveis compostas heterogneas. Nos espaos


destinados a declaraes, a estrutura apropriada para

Sua declarao segue basicamente o formato abaixo:


<varivel>: array [<valor1>..<valor2>,...] of <tipo>;

definio das variveis homogneas o comando


array, enquanto para variveis heterogneas o
comando record.

O ndice de uma varivel estruturada pode ser uma


varivel em vez de um literal. Tal facilidade permite a
elaborao de tabelas com elevados aglomerados de
lculos.

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 36

Array unidimensional

Particularmente para dois ndices o array pode ser

Quando uma varivel array possui um nico ndice


conhecida como vetor, ou ainda array simples ou
unidimensional. Em DELPHI esse tipo de estrutura

identificado com matrizes, ou at tabelas. Esse tipo de


estrutura pode ser usado quando se deseja trabalhar
dados complexos, ricos em abstraes matemticas.

pode ser usado quando se deseja trabalhar valores de


componentes do tipo ListBox ou Memo na memria.

(4) A procedure abaixo gera valores aleatrios, sendo

(3) A procedure abaixo resgata em uma varivel

inteiros positivos e menores que 100, nas posies de

indexada uma lista de notas de uma turma, que pode

uma matriz que pode ter at 12 linhas por 8 colunas.

ter at 50 alunos matriculados, cadastrada em u m


componente do tipo ListBox.
procedure Tform1.Button1Click(Sender: TObject);
var
qtde,vc:integer;
nota: array [1..50] of double;
begin
qtde:=ListBox1.Items.Count;
for vc:= 1 to qtde do
nota[vc]:=StrToFloat(ListBox1.Item[vc-1]);
end;

procedure TForm1.Button1Click(Sender: TObject);


var
linha,coluna: integer;
num_lin,num_col: integer;
item: array [1..12,1..8] of integer;
begin
randomize;
num_lin:= StrToInt(Edit1.Text);
num_col:= StrToInt(Edit2.Text);
for linha:= 1 to num_lin do
for coluna:= 1 to num_col do
item[linha,coluna]:=random(100);
end;

Array multidimensional
Quando uma varivel array possui mais de um ndice
conhecida como array multidimensional.
______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 37

Sintaxe e funcionamento do comando record

O nome record, que significa registro em ingls,


lembra a estrutura lgica de um registro propriamente
dito que usado como unidade de dado em arquivos.

Um declarao record segue o formato abaixo:


<varivel_1>, <varivel_2>,...,<varivel_N>:
record
<item_1>: <tipo_de_varivel>;
<item_2>: <tipo_de_varivel>;

Nos arquivos, os registros so compostos por campos,

...

ou itens, que armazenam tipos

<item_N>: <tipo_de_varivel>;

diferentes de

end;

informao (texto, nmero, etc).


(5) Abaixo encontra-se a declarao de uma varivel
Analogamente, em DELPHI, os tipos record, que at

composta heterognea.

podem at ser usados para definir registros de


arquivos, destinam-se a construo de conjuntos de
itens de tipos diferentes que esto logicamente
relacionados.

funcionario: record
nome: string;
cargo: string;
salario: double;
end;

Ou seja cada elemento do record tem seu prprio tipo


de dado e sua declarao lista todos estes campos,
dando a cada um deles um nome que ser usado para
acess-lo.

O comando record pode ser um interessante substituto


para

complexas

declaraes feitas

com

array

multidimensional.

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 38

Um array de record pode apresentar definies mais


claras, com itens que signifiquem propriedades das

O comando With pode melhorar esse programa como

variveis.

se segue:
(7) Exemplo:

Na verdade, as classes e os objetos do DELPHI podem


ser considerados como uma extenso do comando
record.

(6) Exemplo:
procedure Tform1.Button1Click (Sender: Tobject);
type
aluno = record nome: string;
n_mat: integer;
sexo: boolean;
mensalidade: byte;
end;
var
matriculado: aluno;
indice, total: LongInt;
begin
...
for indice:= 1 to total do
begin
matriculado[indice].nome:= Edit1.Text;
matriculado[indice].n_mat:= StrToInt(Edit2.Text);
matriculado[indice].sexo:=CheckBox.checked;
matriculado[indice].mensalidade:=RadioGroup1.ItemIndex;
end;
...

...
for indice:= 1 to total do
begin
with matriculado[indice] do
begin
nome:= Edit1.Text;
n_mat:= StrToInt(Edit2.Text);
sexo:=CheckBox.checked;
mensalidade:=RadioGroup1.ItemIndex;
end;
end;
...

O comando with tambm vale para objetos do Delphi:

(8) Exemplo:
...
with Label1 do
begin
Caption:=Exemplo do with;
Visible:=True;
end;
...

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 39

var
PropPaterna: TPropPaterna;

(9) Exemplo de herana

implementation
{$R *.DFM}
procedure TPropPaterna.BotaoFimClick(Sender: TObject);
begin
halt;
end;
procedure TPropPaterna.FormCreate(Sender: TObject);
begin
Color:=TabelaCor.BackgroundColor;
Font.Color:=TabelaCor.ForegroundColor;
end;
unit Prop_pai;
procedure TPropPaterna.TabelaCorChange(Sender: TObject);

interface
uses
SysUtils,WinTypes,WinProcs,Messages,Classes,
Graphics,Controls,Forms,Dialogs,StdCtrls,ColorGrd;
type
TPropPaterna = class(TForm)
MsgCor: TLabel;
ChkBoxCor: TCheckBox;
TabelaCor: TColorGrid;
BotaoFim: TButton;
procedure BotaoFimClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TabelaCorChange(Sender: TObject);
procedure ChkBoxCorClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

begin
Color:=TabelaCor.BackgroundColor;
Font.Color:=TabelaCor.ForegroundColor;
end;
procedure TPropPaterna.ChkBoxCorClick(Sender: TObject);
begin
ChkBoxCor.ParentColor:=ChkBoxCor.Checked;
ChkBoxCor.ParentFont:=ChkBoxCor.Checked;
end;
end.

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 40

(10) Exemplo de caixa de mensagens

procedure TForm1.Button1Click(Sender: TObject);


var
Botao:integer;
begin
botao:= Application.MessageBox(
'Gostou do DELPHI?',
'Caixa de Mensagem',
mb_OkCancel+mb_DefButton1);
if botao = IDOK
then Label1.Caption:='Voc escolheu OK';
if botao = IDCANCEL
then Label1.Caption:='Voc escolheu CANCEL';
end;
______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 41

(11) Outro exemplo...


procedure TForm1.Button1Click(Sender: TObject);
begin
MessageDlg('Salvar mudanas?', mtConfirmation,mbYesNoCancel,
0);

end;

Alguns botes:
(12) Outro exemplo...

mbYes, mbOK, mbHelp, mbAbort, mbRetry, mbIgnore e

procedure TForm1.Button1Click(Sender: TObject);

mbAll.

begin
if MessageDlg('Bem vindo ao aplicativo. Sair agora?',
mtInformation, [mbYes, mbNo], 0) = mrYes
then

Algumas MessageDlg:
mtWarning, mtError, mtInformation, mtConfirmation e

begin
MessageDlg('Saindo...', mtInformation, [mbOk], 0);

mtCustom.

Close;
end;
end;

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 42

(13) Exemplo de criao de alguns formulrios:

var
Form1: TForm1;
implementation
{$R *.DFM}

unit Uformu;

procedure TForm1.Button1Click(Sender: TObject);


var
NovoForm:array[1..5] of TForm1;
i:integer;
begin
for i:=1 to 5 do
begin
NovoForm[i]:=TForm1.Create(Application);
with NovoForm[i] do
begin
Caption:='Filhote #'+IntToStr(i);
Top:=Top+33*i;
Left:=Left+5*i;
Show;
end;
end;
end;

interface

end.

uses
SysUtils, WinTypes, WinProcs, Messages, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 43

MessageDlgPos('Are

you

there?',

mtConfirmation,

mbYesNoCancel, 0, 200, 200);


end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Hide;

Lista de Arquivos

Unit2.Form2.Show;
end;

Exerccio c/ 2 formulrios
Arquivos
formulrios modal

propriedades dos objetos


var
ButtonSelected: Word;
begin

Atividade prtica

if
MessageDlgPos('Color the form

green?',

mtConfirmation,

[mbYes, mbNo], 0, 125, 25) := mrYes

(1) Criar um formulrio que um elemento Shap s e

then Color := clLime;


end;

desloque quando um boto acionado.

procedure TForm1.Button1Click(Sender: TObject);


begin

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 44

2) Ter a decencia de no o comercializar, mas o usar


para ajudar outros.

Caros colegas de Delphi,

3) Compartilhar comigo algumas dicas e truques,


como estou fazendo!

Esse material parte integrante de meu curso de


Delphi Bsico.

Estou

cedendo

============== AVISO: =======================

graciosamente acreditando que

As informaes compiladas nos arquivos so de

estamos todos no mesmo barco, na deliciosa aventura

natureza didtica. O autor, embora

tenha

se

de desvendar o potencial do Delphi.

preocupado em gerar um material de boa qualidade,


no se responsabiliza se o seu uso proporcionar

Peo apenas algumas consideraes:

algum dano ou prejuizo!

1) Quando fornecer esse material, por favor, citar a

==========================================

fonte de origem.

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 45

Boa sorte,

Edson Barros

22/set/1998

prof_edson@uol.com.br

prof_edson@yahoo.com

ICQ 18846110

______________________________________________________________________________________(prof_edson@uol.com.br)__

Curso de Delphi Bsico - DATEM - Universidade Mackenzie (2sem/1998)


Pg 46

También podría gustarte