curso de delphi (pt_br).pdf

Upload: dscruz2009

Post on 06-Jul-2018

273 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    1/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 1

    Curso de Delphi Básico

     Prof. Edson Barros

    1ª Aula

    Delphi é um produto da Borland / Inprise. Seu propósito

    é proporcionar aos programadores um rápido

    desenvolvimento de aplicativos em ambiente Windows.

    Como um ambiente de programação, o Delphi funciona

    baseado em uma linguagem convencional de

    programação. Sendo assim é importante conhecer os

    principais comandos e a estrutura de sua linguagem

    que é na verdade o TurboPascal.

    O texto simples de um programa PASCAL é:

     program  nome_programa;

     begin

    end.

    Nas o programa informa ao

    computador as bibliotecas, variáveis, funções e

    procedimentos que serão usados, enquanto os

    representam a lógica do programa.

    No ambiente Delphi essa estrutura pode ser observada

    do menu em:

    View

      Project Source

    O importante é saber que no Project existe:uses

      Forms,

      Unit1 in 'UNIT1.PAS' {Form1};

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    2/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 2

     A informação que a Unit1  está no arquivo 'UNIT1.PAS'

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

    encontrar os comandos a serem executados quando

    os OBJETOS forem acionados.

    Mas o que seriam OBJETOS?

    Um botão, um formulário, uma lista de itens ou

    qualquer outro componente que exista em um

    formulário.

    Todo objeto é munido de propriedades, tais como cor 

    ou formato ou ainda o tipo de letra. Todo objeto podeser um gerador de eventos (p.ex: um cálculo simples).

    Mas qual é a ligação de um objeto com a Unit1 do

    Project?

    Os objetos, que são caracterizados (ou configurados)pelas suas propriedades, executam seus eventos por 

    procedimentos (procedures) que estão programadas

    nas Units.

    Como os objetos são criados?

    No Delphi o usuário escolhe os objetos que serão

    colocados em seu programa (ou formulário), altera

    suas propriedades e programa seu evento na Unit.

    Como as propriedades podem ser alteradas?

     As propriedades dos objetos são monitoradas no

    Object Inspector, onde o usuário pode configurá-las.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    3/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 3

    E como o usuário pode programar os eventos dos

    objetos?

    Normalmente próprio Object Inspector, no qual existe

    uma lista de eventos possíveis ao objeto, é o caminho

    mais fácil abrir no Delphi um procedimento (uma

    procedure).

    O próprio Delphi se encarrega de incluir na Unitalgumas linhas vitais ao bom funcionamento do objeto

    escolhido.

    No início do programa, na parte de declarações, o

    ambiente inclui algo do tipo:

    type

      TForm1 = class(TForm)

      Button1: TButton;

      procedure Button1Click(Sender: TObject);

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    4/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 4

    E, em uma parte apropriada ao texto de programação,

    aparece:

     procedure TForm1.Button1Click(Sender:TObject);

     begin

    end ;

     A procedure é um miniprograma. Com uma procedure

    o usuário pode declarar variáveis e executar operações

    complexas em um simples apertar de botão.

    Nesse estágio é bom o usuário possuir algumas

    noções de PASCAL básico .

    Todo comando em PASCAL se encerra no “;”.

    O comando de atribuição é “:= “.

    Um bloco de comandos é limitado entre um “begin” e

    um “end ”. Um bloco pode ser tratado como uma

    simples instrução no meio de um outro comando.

     As variáveis a serem usadas na procedure, function ou

    programa devem ser declaradas!

    Ex:

     procedure blablabla;

    var

    a, b, c: double;

    x, y: integer;

    nome: string;

     begin

    ...

    end;

    Entre outros, os tipos mais usados de variáveis são:

    - Com ponto flutuante: Real, Double

    - Valores inteiros: Byte, Integer, Longint

    - Para texto: Char, String

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    5/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 5

    - Informação do tipo lógica: Boolean

    Quando a informação flui das variáveis para os objetos

    (campos propriedades dos objetos) pode ser 

    necessário algum tipo de conversão (p.ex: de texto

    para número, ou vice-versa), sendo assim existem

    algumas funções úteis tais como: StrToFloat, StrToInt,FloatToStr, IntToStr, etc.

    No processo de criação de um aplicativo Delphi

    aparecem alguns arquivos no diretório em uso. Por 

    enquanto é importante saber que cada um dosarquivos ou terá origem com o nome da unit ou com o

    nome do project.

    Também é importante conhecer alguns objetos

    básicos, principalmente do menu Standard.

    Uma referência inicial rápida para início de atividade é

    interessante conhecer pelo menos os objetos Label,

    Button e Edit.

     O Label  é um campo de texto que pode exibir 

    rápidas informações em sua propriedade Caption.

     O Button  é a simulação gráfica de um botão.

    Normalmente é usado para acionar eventos.

      O E d i t   é um campo destinado a coletar 

    informações. Os dados são armazenados na

    propriedade Text.

    Atividade prática

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    6/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 6 

    (1) Criar um aplicativo com dois botões que informe

    quando um deles foi apertado.

    No formulário foram criados os seguintes objetos:

    Button1: TButton;Button2: TButton;

    Label1: Tlabel;

    Também foram incluidosas declarações dos eventos:

     procedure Button1Click(Sender: TObject);

     procedure Button2Click(Sender: Tobject);

     As procedures de eventos serão:

     procedure TForm1.Button1Click(Sender: TObject);

     begin

    Label1.Caption:='Apertado o Botão 1';end ;

     procedure TForm1.Button2Click(Sender: TObject);

     begin

    Label1.Caption:='Apertado o Botão 2';

    end ;

    (2) Alterar a propriedade Hint e ShowHint dos botões do

    aplicativo anterior.

    ShowHint = True

    Hint = Botão de teste

    (3) Incluir no aplicativo anterior alguma forma para

    cadastrar o nome do usuário.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    7/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 7 

    Solução:

    (3.a) Incluir objetos Label2 e Edit1.

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

    para:

    “Digite seu nome e aperte um botão”

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

    (3.d) Alterar a Unit1 para:unit Unit1;

    interface

    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;

       procedure Button1Click(Sender: TObject);

       procedure Button2Click(Sender: TObject);

      private

      { Private declarations }

      public

      { Public declarations }

      end ;

    var

      Form1: TForm1;

      Nome: string;

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    8/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 8

    implementation

    {$R *.DFM}

     procedure TForm1.Button1Click(Sender: TObject);

    var

    resp1: string;

     begin

    Nome:= Edit1.Text;

    resp1:= Nome + ', você apertou 1';

    Label1.Caption:= resp1;

    end ;

     procedure TForm1.Button2Click(Sender: TObject);

    var

    resp2: string;

     begin

    Nome:= Edit1.Text;

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

    Label1.Caption:= resp2;

    end ;

    end .

    O formulário resultado será:

     Algumas observações:

    - A variável Nome foi declarada de uma forma “Global”;

    - As variáveis resp1 e resp2 foram declaradas apenas

    para uso “Local”, ou seja apenas as respectivas

    procedures podem acessá-las.

    - A propriedade Caption do Label1  foi alterada por uma

    expressão de caracteres (strings).

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    9/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 9

    (4) Elaborar um aplicativo que, em função do botão

    acionado, soma ou subtrai ou multiplique dois valores

    cadastrados.

    1ª sugestão: Usar um objeto Edit  com a propriedade

    Enabled com valor False para exibir a resposta.

    2ª sugestão: Mudar a propriedade Caption do objeto

    Form com um texto apropriado.

    Solução:

    (4.a) Criar um formulário parecido com o abaixo:

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

    Edit1 e Edit2. Alterar a propriedade Enabled do Edit3

    para False.

    (4.c) Fazer para soma:

     procedure TForm1.Button1Click(Sender: TObject);

    var

    a,b,c: double;

     begin

    a:= StrToFloat(Edit1.Text);

    b:= StrToFloat(Edit2.Text);

    c:= a+b;

    Edit3.Text:= FloatToStr(c);

    end ;

    (4.d) Para subtração a procedure será parecida, basta

    mudar a linha da conta para:

     procedure TForm1.Button2Click(Sender: TObject);

    ...

    c:= a-b;

    ...

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    10/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 10

    (4.e) Para multiplicação a procedure também será

    parecida, basta mudar a linha da conta para: procedure TForm1.Button3Click(Sender: TObject);

    ...

    c:= a*b;

    ...

    O resultado será:

    Nota: O Edit3 exibirá a resposta da operação escolhida,

    porém não será permitido alterá-lo diretamente.

    Um pouco mais de teoria

    O último exercício empregou alguns operadores

    aritméticos. Na verdade no Delphi existem os seguintes

    operadores:

    + Soma

    - Subtração

    * Multiplicação

    / Divisão

    DIV Divisão Inteira

    MOD Resto de Divisão Inteira

    Existem algumas funções préprogramadas da

    linguagem destinadas aos cálculos mais diversos.

    Embora algumas das limitações matemáticas das

    funções, que existiam nas versões mais remotas doTurboPascal, já tenham sido sanadas no Delphi é

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    11/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 11

    importante o programador saber empregar as funções

    préprogramadas “a moda antiga”! 

    São elas:

     ABS(X) Retorna o módulo de X

    COS(X) Retorna o cosseno de X (em radianos)

    SIN(X) Retorna o seno de X (em radianos)

     ARCTAN(X) Retorna o arco tangente de X (emradianos)

    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.

    Exercícos propostos

    (5) Fazer um aplicativo para calcular a área e o

    perímetro de uma circunferência, sendo seu raio dado.

    (6) Elaborar um programa para calcular a distância de

    dois pontos no espaço.

    (7) Fazer um programa para calcular a raiz Nésima de

    um número.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    12/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 12

    Curso de Delphi Básico

     Prof. Edson Barros

    2ª Aula

    Em toda linguagem de programação existem estruturas

    lógicas conhecidas como “estruturas de controle” .

    Basicamente essas estruturas são: os comandos de

    condição e os comandos de looping.

    Sendo o comando de condição um dos comandos

    mais interessantes na programação, pois reproduz na

    máquina a faculdade humana da tomada de decisões

    em função de condições lógicas explicitas. O comando

    ramifica a lógica do programa em duas alternativas:

    uma que será adotada quando a condição assumir 

    valor verdadeiro, e outra quando a condição for falsa.

    Em Delphi a sintaxe do comando if  é:

    if 

      then 

      else ;

    Quando há a necessidade de se escrever mais de uma

    instrução nos comandos depois do then ou do else

    deve-se usar um bloco de comandos limitado entre um

    “begin” e um “end”.

    if 

      then begin

      ;

      ;

      ;

      ...  end 

      else  begin

      ;

      ;

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    13/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 13

      ...

      end ;

    O comando if  termina no seu “;” . Se o usuário colocar 

    um “;” antes da cláusula e l se   o programa não

    entenderá o comando dessa cláusula como sendo

    parte do if .

    Portanto o comando i f   também poderia ser usado

    assim:

    if 

      then ;

    Quando, devido à necessidade de processamento,

    agrupamos várias seleções, formamos uma seleção

    aninhada. Normalmente tal formação ocorre quando

    uma determinada ação ou bloco deve ser executado se

    e somente se um conjunto de possibilidades ou

    combinações de situações for satisfeito.if 

      then if 

      then 

      else 

      else if   then 

      else ;

    Outro comando de decisão que também pode ser 

    empregado é o comando case . Esse comando é

    usado quando se precisa escrever o texto código com o

    propósito de lidar com muitas possibilidades para

    mesma variável, seja ela char ou integer ou outro tipo

    escalar.

    case  of

      :;

      :;

      ...

      :;

      else ;

    end ;

    Há ainda situações que podem ser resolvidas com

    variáveis booleanas usadas estrategicamente nas

    procedures com algumas propriedades lógicas.

    ...

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    14/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 14

    var

    teste: boolean;...

    teste:= (valor_a > valor_b) or (valor_c = 0);

    Edit3.Enabled:= not(teste);

    Os operadores boleanos existentes no Delphi são:

    And, Or , Xor  e o Not.

    No menu Standard os objetos CheckBox, RadioButton

    e RadioGroup  podem ser uma boa alternativa para o

    usuário transmitir suas opções ao aplicativo.

    O CheckBox  o  RadioButton possuem a

    propriedade Checked  que retorna True  se o usuáriotiver “ticado”   o objeto. Caso o espaço desses objetos

    estiver em branco, a propriedade Checked  retorná

    False.

    Parecendo um objeto GroupBox  , RadioGroup 

    agrupa de forma inteligente vários RadioButtons em

    um objeto.

    Atividade prática

    (1) Criar um aplicativo para verificar a situação de um

    aluno: APROVADO, quando a nota for igual ou superior 

    a 5.0, ou REPROVADO quando ela for menor.

     procedure TForm1.Button1Click(Sender: TObject);

    var

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    15/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 15

    Nota: double;

     beginNota:= StrToFloat(Edit1.Text);

    if Nota >= 5

      then Label2.Caption:='APROVADO!'

      else Label2.Caption:='REPROVADO!';

    end ;

    O mesmo exercício poderia ter o fonte:

     procedure TForm1.Button1Click(Sender: TObject);

    var

    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 exercício anterior com um procedimento

    que selecione o botão de cálculo quando o usuário

    digitar a tecla Enter  ↵.

    Solução: Incluir o evento OnKeyPress abaixo no Edit1.

     procedure  TForm1.Edit1KeyPress (Sender: Tobject;

    var Key: Char);

     begin

    if Key=#13 then Button1.SetFocus;

    end;

    (3) Melhorar o aplicativo, supondo que os alunos

    também podem ser reprovados se a sua freqüência for 

    menor que 75%.

    Usando o operador lógico and o fonte será:

     procedure TForm1.Button1Click(Sender: TObject);

    var

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    16/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 16 

    Nota, Freq: double;

     beginNota:= StrToFloat(Edit1.Text);

    Freq:= StrToFloat(Edit2.Text);

    if (Nota >= 5) and  (Freq >= 75)

      then Label2.Caption:='APROVADO!'

      else Label2.Caption:='REPROVADO!';

    end ;

    Ou usando o operador lógico or  o fonte será:

     procedure TForm1.Button1Click(Sender: TObject);

    var

    Nota, Freq: double;

     begin

    Nota:= StrToFloat(Edit1.Text);

    Freq:= StrToFloat(Edit2.Text);

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

      then Label2.Caption:='REPROVADO!'

      else Label2.Caption:='APROVADO!';

    end ;

    Observação: Um problema que pode atrapalhar o bom

    funcionamento desse aplicativo é o fato de que um

    usuário desavisado poderia digitar caracteres texto no

    lugar de números para a nota!

    Esse problema pode ser resolvido com as funções

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

    do objeto Edit em uso.

     A função ord()  retorna o valor ASCII de um caracter 

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

    dado um número ASCII.

    (4) Melhorar o exercício anterior de forma que oscampos de nota e freqüência só aceitem valores

    numéricos.

    Solução: Incluir o evento OnKeyPress abaixo no Edit1 e

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

    var Key: Char);

     begin

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    17/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 17 

    if (((ord(Key)ord(‘9’))

    and  ((ord(Key)ord(8)) and  (ord(Key)ord(‘,’)))then Key:=chr(0);

    end;

    Observações:

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

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

    (5) Elaborar um programa para efetuar a divisão entre

    dois números. Se o usuário digitar “0” o aplicativo

    deverá avisar que houve uma operação ilegal.

    unit Uifav;interface

    usesSysUtils, WinTypes, WinProcs, Messages, Classes,Graphics, Controls, Forms, Dialogs, StdCtrls;type

      TForm1 = class(TForm)  Label1: TLabel;  Edit1: TEdit;  Label2: TLabel;  Edit2: TEdit;  Button1: TButton;  Button2: TButton;  Label3: TLabel;  Edit3: TEdit;  Button3: TButton;   procedure EditZZKeyPress(Sender: TObject; varKey: Char);

       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}

     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 ;

     procedure TForm1.Button1Click(Sender: TObject);var

    numerador,denominador,resposta:double; begin

    numerador := StrToFloat(Edit1.Text);denominador:= StrToFloat(Edit2.Text);if (denominador = 0)then showmessage('Divisão por ZERO!!!')else begin

      resposta := numerador/denominador;

      Edit3.Text:= FloatToStr(resposta);  end ;end ;

     procedure TForm1.Button2Click(Sender: TObject); begin

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    18/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 18

    Edit1.Clear;Edit2.Clear;

    Edit3.Clear;end ;

     procedure TForm1.Button3Click(Sender: TObject); begin

    Close;end ;

    end .

    O formulário resultado será:

    Observações:

    (5.a) Na propriedade Caption  dos botões empregou-se

    o caracter “&” antes das letras de chamada assimsendo, a combinação das teclas Alt  e D   acionará a

    divisão, a combinação Alt + L  limpará os Edit, e Alt + S

    encerrará.

    (5.b) A mensagem “Divisão por ZERO!!!” usou a

    procedure ShowMessage().(5.c) O comando Close destina-se a fechar o formulário.

    (5.d) Os objetos Edit  pertencem a uma categoria de

    objetos que podem ser limpos com o comando Clear .

    (6) Elaborar um formulário que o botão de saida sófique visível de um CheckBox permitir.

    Solução: Criar um formulário com um CheckBox e um

    Button. Alterar a propriedade Visible do Button para

    False. Programar as procedures abaixo.

     procedure TForm1.CheckBox1Click(Sender: TObject);

     begin

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    19/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 19

    if CheckBox1.Checked

    then Button1.Visible:= True

    else Button1.Visible:= False;

    end ;

     procedure TForm1.Button1Click(Sender: TObject);

     begin

    Close;

    end ;

    Quando o programa for executado deverá aparecer sem

    o botão de encerramento.

    O aplicativo só exibirá o botão quando o CheckBox

    estiver selecionado.

     As propriedades dos objetos que guardam valores

    booleanos podem ser alteradas em linhas de

    comando. Seu uso amplia os recursos de

    programação.

    (7) Elaborar um aplicativo com um RadioButton e um

    Button, sendo que ao apertar o botão o RadioButton

    muda de estado.

     procedure TForm1.Button1Click(Sender: TObject);

     begin

    RadioButton1.Checked:=not(RadioButton1.Checked);

    end ;

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    20/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 20

    (8) Elaborar um programa que verifique se os números

    inteiros informados pelo usuário estão nas faixas

    abaixo:

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

     procedure TForm1.Button1Click(Sender: TObject);

    var

    numero: integer;

     begin

    numero:= StrToInt(Edit1.Text);

    case numero

    of

      1 : Label2.Caption:='Valor UM';

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

      5 : Label2.Caption:='Valor CINCO';

      else  Label2.Caption:='Fora dos limites';

    end ;

    end ;

    (9) Elaborar um formulário para definir o estado civil da

    pessoa cadastrada.

    Botão Limpar 

     procedure TForm1.Button2Click(Sender: TObject); begin

    RadioGroup1.ItemIndex:=-1;Label2.Caption:='';Edit1.Clear;Edit1.SetFocus;end ;

    Botão Classificar 

     procedure TForm1.Button1Click(Sender: TObject);var

    msg: string; begin

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    21/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 21

    case RadioGroup1.ItemIndex of0: msg:= ', é feliz e não 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 ;

    Exercícos propostos

    (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

    equação do 2º grau.

    (12) Fazer um programa para calcular a situação do

    aluno, em função de sua média e freqüência, sabendo

    que:

    [a] Freqüência menor que 75% só não será reprovaçãose a média for igual a DEZ.

    [b] Méida menor que 3,0 o aluno está REPROVADO!

    [c] Média menor que 5,0 e maior ou igual a 3,0 o aluno

    estará direto em RECUPERAÇÃO.

    [d] Média maior ou igual a 5,0 e menor que 7,5 o alunoterá que fazer EXAME.

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

    APROVADO.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    22/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 22

    Curso de Delphi Básico

     Prof. Edson Barros

    3ª Aula

     As estruturas lógicas de “controle”  do tipo comandos de

    looping variam quanto a sua funcionalidade. No Delphi

    pode-se repetir comandos de várias fórmas. A

    linguagem de programação permite, entre outras

    técnicas, a repetição de comandos (ou blocos) com:- uso de variável de controle

    - teste no início do laço lógico

    - teste no final do laço lógico

    Os comandos for , while e repeat são os usados para aelaboração de rotinas. Cada comando funciona de

    maneira diferente e se adapta em casos específicos.

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

    valor da variável de controle crescente ou decrescente,sendo assim temos:

    for := to 

      do ;

    ou

    for := downto 

      do ;

    O comando for  pode ser usado para cálculos de séries

    matemáticas, vetores e matrizes, controle de listas

    assim como das linhas de memorandos.

     A variável de controle do comando for   dever ser 

    obrigatoriamente escalar , não importando se é um tipo

    da linguagem ou definido pelo usuário.

    Um exemplos de um tipo escalar  não usual com o for  é

    a geração automática de letras ordenadas.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    23/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 23

    Uma estrutura de looping bastante freqüênte nas

    linguagens de programação é o comando while.Essencialmente o comando funciona ENQUANTO a

    condição no início do looping for VERDADEIRA.

    Como o comando de repetição com condição no início,

    o while...do, é o comando de looping mais completo,pois a condição representa “condição de execução”  do

    laço, permitido executar ou não. Ou seja, isso significa

    que o procedimento pode ser repetido um número

    indefinido de vezes, de zero a muitas.

     A sintaxe do comando while é:

     while  do

      ;

    Como a condição é um valor do tipo boolean, o controle

    do looping pode ser uma propriedade de um objeto,

    uma simples condição ou uma variável boleana.

    Também o comando repeat  funciona controlado por 

    valores boleanos, é o comando de repetição comcondição no final.

    O repeat...until é o comando de looping cuja condição

    representa “condição de interrupção”  do laço. Ou seja,

    a condição é invertida se comparada com o comandowhile...do.

    Isso significa que o procedimento será executado pelo

    menos uma vez, independente do valor da condição

    (VERDADEIRO ou FALSO).

    Em Delphi a sintaxe do comando repeat é:

    repeat

     

    until ;

    Os três comandos (for , while e repeat) são a maneira

    estruturada de construir um looping.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    24/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 24

    Comparação entre as Estruturas de Repetição

    Comando Condição Quantidade deexecuções

    Condição de Existência

    While no início indefinido condição verdadeira

    Repeat no fim mínimo 1 condição falsa

    For não tem |vf-vi|+1 vi < vf para Tovi > vf para DownTo

    No menu Standard os objetos ListBox e Memo podemser exemplos de uso de comandos de repetição em

    aplicativo.

    O ListBox  , assim como o Memo , que servem

    para diversos propósitos, podem ter o acesso de suas

    linhas por comandos de repetição.

    Atividade prática

    (1) Criar um aplicativo, usando um objeto ListBox, para

    gerar uma lista de valores crescentes.

     procedure TForm1.Button1Click(Sender: TObject);

    var

      vc,valor1,valor2: integer;

     begin

      valor1:=StrToInt(Edit1.Text);

      valor2:=StrToInt(Edit2.Text);  for vc:=valor1 to valor2 do

      ListBox1.Items.Add(IntToStr(vc));

    end;

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    25/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 25

    (2) Alterar o fonte do exercício anterior para gerar a lista

    decrescente:Solução: Basta alterar a linha do comando for  para:

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

    (4) Dado o número de repetições “N” e a variável

    parâmetro “X”, o programa irá calcular a somatória “S”da série: S = X + X/2 + X/3 + ... + X/N

     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 série para incorporar uma troca alternada

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

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    26/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 26 

     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;

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

     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 exercício (1) usando o comando while.

    Solução: Usando o mesmo formulário o texto fonte deve

    ser alterado para:

     procedure TForm1.Button1Click(Sender: TObject);var

      vc,valor1,valor2: integer; begin

      valor1:=StrToInt(Edit1.Text);  valor2:=StrToInt(Edit2.Text);  vd:= valor1  while vc

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    27/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 27 

    (8) Refazer o exercício (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

    alfabética algumas palavras cadastradas.

    unit Listform;interface

    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 ;

    end .

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    28/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 28

    Curso de Delphi Básico

     Prof. Edson Barros

    4ª Aula

    Nesse estágio de conhecimento do Delphi o ditado “sei 

    que nada sei”   parece ter um significado especial. O

    usuário começa a entender como usar as ferramentas,

    embora perceba que sabe lidar com um número muito

    baixo delas.

     A quantidade elevada de objetos, suas muitas

    propriedades e métodos, as particularidades da

    linguagem de programação Pascal, além dos recursos

    do próprio ambiente Delphi representa um volume

    substancial de recursos para o programador.

    Nos aplicativos os usuários não usam apenas osobjetos do menu Standard . No menu Additional

    existem componentes que podem proporcionar um

    visual mais agradável ao aplicativo executando

    operações equivalentes.

    Menu Additional

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    29/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 29

    O botão BitBtn  funciona de forma análoga ao

    Button, porém em sua apresentação aparece um ícone

    que lembra algum procedimento.

    Com o objeto S h a p e   pode-se usar formas

    geométricas nos aplicativos.

    O objeto Image  possibilita no aplicativo a exibição

    de imagens, seja como tela de fundo ou informação de

    um banco de dados.

    Atividade prática

    (1) Criar um formulário que um elemento Shap se

    desloque quando um botão é acionado.

     procedure TForm1.BitBtn1Click(Sender: TObject);

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    30/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 30

     begin

    Shape1.Left:=Shape1.Left+5;

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

    end ;

    No menu Dialogs  o usuário pode acionar menus de

    préprogramados do Windows.

    Os menu de fontes, o FontDialog  , proporciona a

    facilidade de ajuste da fonte no aplicativo do usuário.

    O menu de cores, o ColorDialog  , pode ser usado

    para resgatar qualquer cor da palheta de cores.

    O menu para abrir arquivos é o OpenDialog  .

    O menu para salvar arquivos é o SaveDialog  .

    O menu para gerar impressão é oPrintDialog  .

    No menu St andar d   há ainda dois objetos quepermitem a ciração de menus pelo usuário: o

    MainMenu e o PopMenu.

    O MainMenu   é o menu que aparece em

    aplicativos, logo abaixo do título das janelas do

    Windows.

    O PopMenu  é o menu que aparece quando o

    botão de dados do mouse é clicado em algum objeto.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    31/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 31

    Atividade prática

    (2) O próximo 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 ;

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    32/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 32

     procedure Tpipocar.Sair1Click(Sender: TObject); begin

    CLOSE;end ; procedure Tpipocar.Exibir1Click(Sender: TObject); begin

    SHOWMESSAGE('Programa feito em linguagem DELPHI');end ;end .

    (3) O próximo programa desenvolve a série matemática

    da raiz quadrada.

    unit Pj_serie;

    interfaceuses

    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

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    33/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 33

    {$R *.DFM}PROCEDURE AVISO1;

    BEGINSHOWMESSAGE('Entrada inválida!!!');END; procedure Tserie.SaidaClick(Sender: TObject); begin

    CLOSE;end ; procedure Tserie.Mensagem1Click(Sender: TObject); begin

    SHOWMESSAGE('Exemplo da série Raiz Quadrada');

    end ; procedure Tserie.BtLimparClick(Sender: TObject); begin

    LISTARESP.CLEAR;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

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    34/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 34

    Curso de Delphi Básico

     Prof. Edson Barros

    5ª Aula

    Procedures e Functions podem ser programadas

    diretamente pelo usuário. As procedures  geralmente

    são destinada a programação de eventos, como os que

    são codificados nas Units. As functions  retornam um

    valor como resultado do processamento. O usuário

    praticamente pode criar “comandos” com as

    procedures e as fuctions, sendo possível chamá-los

    em outras partes do programa.

    Uma funct ion   préprogramada interessante é o

    StrToIntDef , que funciona como o StrToInt, porémretorna um valor padrão caso haja erro na conversão.

    Atividade prática

    (1) Fazer um comando que some dois valores com

    ponto decimal.function Soma(Valor1, Valor2: Double):Double;

     begin

    Soma:= Valor1 + Valor2;

    end ;

    .. .

    a:= Soma(b,c);

    .. .

    (2) Fazer um programa para testar a função StrToIntDef.

     procedure TForm1.Button1Click(Sender: TObject);

     begin

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

    end ;

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    35/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 35

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    36/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 36 

    VARIAVEIS ESTRUTURADAS  RI VEIS ESTRUTUR D S

    O DELPHI oferece bons recursos para manipulação de

    dados agrupados. Um conjunto de dados, referenciávelpor um mesmo identificador, é conhecido como

    “variável composta” , ou  “variável estruturada” .

     As variáveis estrutu radas podem ainda ser 

    classificadas em: “variáveis compostas homogêneas” ,e “ variáveis compostas heterogêneas” . Nos espaços

    destinados a declarações, a estrutura apropriada para

    definição das variáveis homogêneas é o comando

    array , enquanto para variáveis heterogêneas é o

    comando record.

    Qualquer tipo de dado, seja padrão ou definido pelo

    usuário, pode ser estendido por um array, que usa umtipo de subintervalo como índice, razão pela qual são

    conhecidas como variáveis indexadas!

    Os limites do subintervalo, tanto o inferior como o

    superior, representam uma numeração de índices,reservados na memória.

    Variáveis do tipo array podem armazenar vários valores

    de um mesmo tipo, sendo que cada índice será

    equivalente a uma variável.

     Sua declaração segue basicamente o formato abaixo:

    : array [..,...] of ;

    O índice de uma variável estruturada pode ser uma

    variável em vez de um literal. Tal facilidade permite a

    elaboração de tabelas com elevados aglomerados de

    álculos.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    37/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 37 

    Array unidimensional

    Quando uma variável array  possui um único índice é

    conhecida como vetor, ou ainda array simples ou

    unidimensional. Em DELPHI esse tipo de estrutura

    pode ser usado quando se deseja trabalhar valores de

    componentes do tipo ListBox ou Memo na memória.

    (3) A procedure abaixo resgata em uma variável

    indexada uma lista de notas de uma turma, que pode

    ter até 50 alunos matriculados, cadastrada em um

    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 ;

    Array multidimensional

    Quando uma variável array possui mais de um índice é

    conhecida como array multidimensional.

    Particularmente para dois índices o array pode ser identificado com matrizes, ou até tabelas. Esse tipo de

    estrutura pode ser usado quando se deseja trabalhar 

    dados complexos, ricos em abstrações matemáticas.

    (4) A procedure abaixo gera valores aleatórios, sendo

    inteiros positivos e menores que 100, nas posições de

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

     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 ;

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    38/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 38

    Sintaxe e funcionamento do comando record

    O nome record, que significa registro em inglês,

    lembra a estrutura lógica de um registro propriamente

    dito que é usado como unidade de dado em arquivos.

    Nos arquivos, os registros são compostos por campos,

    ou itens, que armazenam tipos diferentes de

    informação (texto, número, etc).

     Analogamente, em DELPHI, os tipos record, que até

    podem até ser usados para definir registros de

    arquivos, destinam-se a construção de conjuntos de

    itens de tipos diferentes que estão logicamente

    relacionados.

    Ou seja cada elemento do record  tem seu próprio tipo

    de dado e sua declaração lista todos estes campos,

    dando a cada um deles um nome que será usado para

    acessá-lo.

    Um declaração record segue o formato abaixo:

    , ,...,:

      record 

      : ;

      : ;

      ...

      : ;

      end ;

    (5) Abaixo encontra-se a declaração de uma variável

    composta heterogênea.

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

    O comando record pode ser um interessante substitutopara complexas declarações feitas com array

    multidimensional.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    39/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 39

    Um array de record pode apresentar definições maisclaras, com itens que signifiquem propriedades das

    variáveis.

    Na verdade, as classes e os objetos do DELPHI podem

    ser considerados como uma extensão 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 ;...

    O comando With pode melhorar esse programa como

    se segue:

    (7) Exemplo:

    ...

    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 também vale para objetos do Delphi:

    (8) Exemplo:

    ...

     with Label1 do  begin

      Caption:=‘Exemplo do with’;

      Visible:=True;  end ;...

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    40/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 40

    (9) Exemplo de herança

    unit Prop_pai;

    interface

    usesSysUtils,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;

    var  PropPaterna: TPropPaterna;

    implementation

    {$R *.DFM}

    procedure TPropPaterna.BotaoFimClick(Sender: TObject);beginhalt;end;

    procedure TPropPaterna.FormCreate(Sender: TObject);beginColor:=TabelaCor.BackgroundColor;Font.Color:=TabelaCor.ForegroundColor;end;

    procedure TPropPaterna.TabelaCorChange(Sender: TObject);beginColor:=TabelaCor.BackgroundColor;Font.Color:=TabelaCor.ForegroundColor;end;

    procedure TPropPaterna.ChkBoxCorClick(Sender: TObject);beginChkBoxCor.ParentColor:=ChkBoxCor.Checked;ChkBoxCor.ParentFont:=ChkBoxCor.Checked;end;

    end.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    41/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 41

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

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    42/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 42

    (11) Outro exemplo...

     procedure TForm1.Button1Click(Sender: TObject);

     begin

    MessageDlg('Salvar mudanças?', mtConfirmation,mbYesNoCancel,

    0);

    end ;

    (12) Outro exemplo...

     procedure TForm1.Button1Click(Sender: TObject);

     begin

    if MessageDlg('Bem vindo ao aplicativo. Sair agora?',

      mtInformation, [mbYes, mbNo], 0) = mrYes

    then

      begin

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

      Close;

      end;

    end;

     Alguns botões:

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

    mbAll.

     Algumas MessageDlg:

    mtWarning, mtError, mtInformation, mtConfirmation e

    mtCustom.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    43/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 43

    (13) Exemplo de criação de alguns formulários:

    unit Uformu;

    interface

    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;

    var

      Form1: TForm1;

    implementation

    {$R *.DFM}

     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;

    end.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    44/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 44

     procedure TForm1.Button1Click(Sender: TObject);

     begin

      Form1.Hide;

      Unit2.Form2.Show;

    end;

    var

      ButtonSelected: Word; begin

    if

    MessageDlgPos('Color the form green?', mtConfirmation,

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

     then Color := clLime;

    end ;

    :

     procedure TForm1.Button1Click(Sender: TObject);

     begin

    MessageDlgPos('Are you there?', mtConfirmation,

    mbYesNoCancel, 0, 200, 200);

    end ;

    Lista de Arquivos

    Exercício c/ 2 formulários

     Arquivosformulários modal

    propriedades dos objetos

    Atividade prática

    (1) Criar um formulário que um elemento Shap se

    desloque quando um botão é acionado.

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    45/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg 45

    Caros colegas de Delphi,

    Esse material È parte integrante de meu curso de

    Delphi Básico.

    Estou cedendo graciosamente acreditando que

    estamos todos no mesmo barco, na deliciosa aventura

    de desvendar o potencial do Delphi.

    Peço apenas algumas considerações:

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

    fonte de origem.

    2º) Ter a decencia de não o comercializar, mas o usar 

    para ajudar outros.

    3º) Compartilhar comigo algumas dicas e truques,

    como estou fazendo!

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

     As informações compiladas nos arquivos são de

    natureza didática. O autor, embora tenha se

    preocupado em gerar um material de boa qualidade,

    não se responsabiliza se o seu uso proporcionar 

    algum dano ou prejuizo!

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

  • 8/17/2019 Curso de Delphi (pt_BR).pdf

    46/46

     ______________________________________________________________________________________([email protected])__ 

    Curso de Delphi Básico - DATEM - Universidade Mackenzie (2ºsem/1998)

     Pg46 

    Boa sorte,

    Edson Barros

    22/set/1998

    [email protected] 

    [email protected]

    ICQ 18846110