Você está na página 1de 37

LTP2 Aula02 - 24/03/2009 13:18

LTP II - POO

Aulas da Primeira Etapa


Pr-requisitos: Disponvel para download em: Clique em:

Material baseado na apostila de Fbio Jos de Gondra Ramos Delphi 2005 for win 32
LTP II - POO ................................................................................................................................................................... 1 Aula01 ............................................................................................................................... Erro! Indicador no definido. Objetivo ........................................................................................................................................................................... 3 Conceitos ......................................................................................................................................................................... 3 Captulo I Definies ............................................................................................................................................ 3 Sistema Operacional:............................................................................................................................................... 3 Linguagem .............................................................................................................................................................. 3 Linguagem Estruturada ........................................................................................................................................... 3 Linguagem Orientada a Objeto ................................................................................................................................ 3 Constantes .............................................................................................................................................................. 4 Variveis................................................................................................................................................................. 4 Operadores .............................................................................................................................................................. 5 Operadores de Atribuio ........................................................................................................................................ 5 Operadores Aritmticos ........................................................................................................................................... 5 Operadores Relacionais ........................................................................................................................................... 6 Operadores Lgicos ................................................................................................................................................ 6 Operador Set ........................................................................................................................................................... 6 Dados ..................................................................................................................................................................... 6 Banco de Dados ...................................................................................................................................................... 6 Rotina ..................................................................................................................................................................... 6 Procedimento .......................................................................................................................................................... 6 Comandos ............................................................................................................................................................... 7 Estruturas ................................................................................................................................................................ 7 Tempo de Projeto .................................................................................................................................................... 7 Tempo de Execuo ................................................................................................................................................ 7 Capitulo ll - Componentes Bsicos da Orientao a Objetos .................................................................................... 8 Classe ..................................................................................................................................................................... 8 Objeto ..................................................................................................................................................................... 9 Instncia de uma Classe........................................................................................................................................... 9 Propriedade ............................................................................................................................................................. 9 Mtodo ................................................................................................................................................................... 9 Mensagem .............................................................................................................................................................. 9 Interface .................................................................................................................................................................. 9 Evento ...................................................................................................................................................................10 Rotina de Tratamento .............................................................................................................................................10 Capitulo III - Apresentao do Delphi 2005 .............................................................................................................10 Tela de Abertura ....................................................................................................................................................10 VCL Form Application for WIN 32 ........................................................................................................................10 Object Inspector .....................................................................................................................................................11 Caixa de Estruturas (Structure) ...............................................................................................................................12 Paleta de Componentes...........................................................................................................................................12 Gerente do Projeto (Project Manager) .....................................................................................................................13 Formulrio (Janela do Windows) ............................................................................................................................13 Unit .......................................................................................................................................................................14 Estrutura de uma Unit.............................................................................................................................................15 Captulo IV - Os Primeiros Contatos .......................................................................................................................15 Captulo V - Estruturas ............................................................................................................................................18 Estrutura de Bloco ..................................................................................................................................................19 Estruturas de Deciso .............................................................................................................................................21 Estruturas de Loop ou Lao: ...................................................................................................................................29 Estruturas Consecutivas:.........................................................................................................................................31 Estruturas de Exceo ............................................................................................................................................32

Pgina 1 de 37

Delphi
Pgina 2 de 37

Capitulo XIV - Usando Mensagens ..........................................................................................................................33 Mensagens Simples ................................................................................................................................................33 Mensagens de Dilogo ...........................................................................................................................................33 Captulo XV - Rotinas Especiais (Procedures e Funes) ........................................................................................36

Pgina 2 de 37

Delphi
Pgina 3 de 37

Objetivo
Nesta aula sero vistos os seguintes tpicos: Programao Orientada a Objeto Introduo ao Ambiente de Desenvolvimento (programao visual). Janelas Menu Principal e Object Inspector Objeto - Definio de Propriedades, Mtodos e Eventos Componente Form (formulrio) e Paletas de componentes. Aplicao do tipo Windows - Formulrio e Componentes. Aplicao do tipo Console (Console Application). Mdulos Program e Unit de uma Aplicao Console.

Conceitos Captulo 1 Definies


Sistema Operacional:
Conjunto de softwares (programas) capazes de controlar as diversas funes de um hardware. Exemplos: WINDOWS, LlNUX, DOS, UNIX ... etc.

Linguagem
Conjunto de cdigos capazes de descrever uma ao a ser realizada por um processador ou sistema computacional.

Linguagem Estruturada
toda linguagem onde as linhas de comando seguem uma seqncia lgica continua ou em rotinas interligadas entre si. Exemplos: PASCAL, CLIPPER, BASIC, FORTRAN, COBOL, C ... etc

Linguagem Orientada a Objeto

Existem muitas diferenas entre: um programa que roda sob o DOS e um programa que roda sob o Windows.
Vejamos a principal: Quando programamos em DOS, nosso programa responsvel pelo fluxo de processamento. Temos que definir claramente no s as instrues, mas tambm, em que ordem deve ser executada. Em Windows no bem assim. Nosso programa no controla o fluxo de processamento, ele responde e trata eventos que ocorrem no sistema. Existem muitos eventos que podem ocorrer, sendo que os principais so aqueles gerados pelo usurio atravs do mouse e do teclado. A coisa acontece mais ou menos assim: O usurio clica o mouse e o Windows verifica que aplicao estava debaixo do mouse no momento em que foi clicado. Em seguida ele manda uma mensagem para a aplicao informando que ocorreu um clique e as coordenadas do cursor do mouse na tela no momento do clique. A aplicao ento responde mensagem executando uma funo de acordo com a posio do mouse na tela. Estes eventos que so disparados pelo usurio so aes reconhecidas pelos controles. O controle nada mais do que um objeto adicionado ao formulrio (janela). Caixas de texto, botes, rtulos, botes de opo, botes de check so exemplos de controles. De maneira prtica, podemos pensar no objeto como sendo uma estrutura agrupada de dados e funes (um pequeno programa) para manipular estes dados. Como as funes so sempre ntimas dos dados e todo o sistema funciona de maneira mais segura e confivel. Alm disso, a POO utiliza conceitos como encapsulamento e herana que facilitam muita programao e manuteno dos programas. Os dados de um objeto costumam ser chamados de variveis de instncia e as funes de mtodos. As variveis de instncia definem as propriedades (as vezes chamada de atributos) do objeto e os mtodos definem seu comportamento. O Delphi uma linguagem de programao do tipo OO (orientada a objetos), logo gera programas orientados

Pgina 3 de 37

Delphi
Pgina 4 de 37

a objetos (Programao Orientada a Objetos). As aplicaes para Windows, que precisam de uma janela, empregam o objeto Form do Delphi. Cada Form (assim como todos os objetos visuais) tem uma representao, que vemos no monitor. Todos os componentes, que inclumos no Form, passam a fazer parte do objeto que define o Form, formando no Windows uma janela de um programa.

Constantes
So informaes que possuem um valor predefinido, que no se altera durante um processo. As constantes podem ser classificadas em numricas ou alfanumricas tambm conhecidas como Strings:
Exemplo A:=5 A:=B*30 A:='Delphi' A:='Delphi +'2005' Constante 5 30 Delphi' 'Delphi 2005' Tipo Numrica Numrica String String Caracterstica Aceita clculos numricos Apresenta-se sempre fora de aspas Apresenta-se sempre entre de aspas Aceita clculos lgicos

Variveis
So posies definidas na memria e reservadas para guardar dados ou resultados de clculos. As variveis podem ser:
Tipo Variant Integer Real ou Double String Boolean ou Lgico Descrio Assume Qualquer valor Assume um valor inteiro Assume um valor real Assume um valor string (alfa-numrico) Assume um valor lgico Exemplo V1: variant; I: integer; D: double; S: string: B:boolean;

Com exceo das variveis do tipo Variant, toda varivel possui uma faixa de abrangncia para guardar valores, dependo a capacidade de armazenamento a varivel pode ser:
Faixa de abrangncia De -2.147.483.648 O At 2.147.483.647 4.294.967.295 255 Formato Sinal Positivo/Negativo Positivo Positivo Positivo/Negativo Positivo/Neeativo Positivo/Neeativo Positivo Formato Dgitos 1516 1112 78 1516 1920 1920 1920 Memria Ocupada 1 byte De 2 bytes at 256 bytes De 4 bytes at 4 gigabytes De 4 bytes at 4 gigabytes Bits 32 32 8 64 8 16 16

Varivel lnteger Integer/Longint Longword/Cardinal Byte Int64 Shortint Smallint Word Varivel Real ou Double Real Real48 Single Double Extended Comp Currency Varivel String Char String / ShortString AnsiString WideString

O
_263 -128 -32.768 O

2631
128 32.767 65.535

Faixa de abrangncia De At -5 * 10324 1,7 *1038 -2,9 * 1039 1,7 *1038 -1,5 * 1045 3,4 * 1038 -5 * 10324 1,7 * 10308 4951 -3,6 * 10 1,1 * 104932 63 263-1 _-2 + 1 18 -9 * 10 9 * 1018 Faixa de abrangncia 1 caracter 1,7 *1038 255 caracteres Aproximadamente 231 caracteres Aproximadamente 230 caracteres

Bits 64 48 32 64 80 64 64

Pgina 4 de 37

Delphi
Pgina 5 de 37 Varivel Lgica Boolean BvteBool WordBool LongBool Faixa de valores Verdadeiro False O 1 Diferente de O O Diferente de O O Diferente de O O Formato Tipo associado Byte Byte Word Integer/Longint Bits 8 8 16 32

As variveis sero sempre representadas por letras, podendo ou no, serem seguidas por outras letras ou nmeros e nunca estaro entre de aspas. Exemplos: var Nome: string; A1: integer; Preco_de_custo: currency;

Operadores
So smbolos ou expresses capazes de gerar um clculo lgico ou aritmtico. Os operadores so classificados segundo seu clculo, podendo ser: Atribuio: Atribuir valores a uma varivel ou propriedade de um objeto; Aritmtico: Efetuam clculos aritmticos; Lgicos: Efetuam clculos lgicos; Relacionais: Efetuam clculos relacionais; Set: So operadores predefinidos em funes; @ retoma o endereo de uma varivel, funo, procedimento ou mtodo.

Operadores de Atribuio
Operador : := Exemplo Varivel : Integer Varivel := Valor

Exemplo: var Num1 :integer; begin Num1 := 10; //A varivel Num1 agora tem o valor 10. end.

Operadores Aritmticos
Operador + * / div mod Operao Adio Subtrao Multiplicao Diviso Inteiro da diviso Resto da diviso Tipo do Operando Inteiro, real Inteiro, real Inteiro, real Inteiro, real Inteiro Inteiro Tipo Resultante Inteiro, real Inteiro, real Inteiro, real Real Inteiro Inteiro Exemplo X:= X + Y A:= Result - 1 P := P * 45 X:= X / 2 Y := Total div X Y := Y mod 6

Observao: O operador + quando utilizado com dados string provocar a concatenao destes.

Pgina 5 de 37

Delphi
Pgina 6 de 37

Exemplo: var A,B,C:string; begin A:= 'Curso de '; B:='Delphi'; C:=A+B; //em C tem 'Curso de Delphi'. end.

Operadores Relacionais
Operador = <> > < >= <= Operaco Igualdade Desigualdade Maior que Menor que Maior ou igual Menor ou igual Tipo do operando Expresso Expresso Expresso Expresso Expresso Expresso Tipo Resultante Boolean Boolean Boolean Boolean Boolean Boolean Exemplo A=I X<>Y X>Y X<Y X>=Y X<=Y

Operadores Lgicos
Operador Not And Or Xor Operao Negao Conjunto Disjuno Disjuno Exclusiva Tipo do Operando Boolean Boolean Boolean Boolean Tipo Resultante Boolean Boolean Boolean Boolean Exemplo Not (C) D And (T > 0) A Or B A Xor B

Operador Set
Operador In Operao Membership Tipo do operando Expresso Tipo Resultante Boolean Exemplo A in Setl

Dados
So todas as informaes fornecidas pelo usurio.

Banco de Dados
So meios lgicos de armazenamento de dados. Os bancos de dados geralmente so criados separadamente dos aplicativos e so acessados por estes a partir de ferramentas que interagem com gerenciadores especficos para cada tipo.

Rotina
a descrio de cada parte integrante de um aplicativo. As rotinas visam dividir um aplicativo em pequenas partes capazes de transcrever e executar uma tarefa especfica, como exemplo, suponha que uma distribuidora de livros resolva controlar seus pedidos s editoras e o volume de livros repassados aos seus clientes e para facilitar este trabalho, resolve dividi-lo em sees:
Seo Compras Funes l- Identificar as editoras 2- Identificar os livros das editoras 3- Escolher os livros e comprar l- Identificar os clientes Vendas 2- Separar e entregar os livros escolhidos 2-Sada dos livros Rotinas l-Cadastro de editoras 2-Cadastro de livros 3-Entrada dos livros l Cadastro de clientes

Procedimento
cada uma das aes realizadas por uma rotina:

Pgina 6 de 37

Delphi
Pgina 7 de 37

Exemplo:
Rotina Procedimentos Verificar se editora j foi cadastrada Se no foi cadastrada, ento pegar uma nova ficha Transcrever os dados da editora para a ficha Confirmar a veracidade dos dados 5. Se dados conferem ento colocar a ficha no arquivo. 1. 2. 3. 4.

Cadastro de editoras

procedure CadastroEditores; var // a possveis variveis begin //os possveis comandos end;

Comandos
So termos, palavras reservadas, que servem para transcrever os procedimentos humanos aplicados a uma rotina para linguagem compreendida pelo computador. Exemplos: procedure,var, begin, end, if, for, while etc

Estruturas
So comandos que dispostos em certa ordem executam uma funo comum. Geralmente as estruturas apresentam um incio e um fim e dentre estes so descritos procedimentos. As estruturas podem ser classificadas em: 1. Estrutura de bloco: a estrutura que controla o projeto e cada procedimento nele descrito, determinando seu incio e fim. O bloco tambm pode conter declaraes de constantes, tipos, variveis, procedimentos, e funes; estas declaraes tm que preceder a parte de declarao do bloco. 2. Estruturas de deciso: Provocam desvios no fluxo do projeto de acordo com a entrada fornecida pelo usurio ou resultante de um clculo. 3. Estruturas de loop ou lao: Provocam a repetio de um ou vrios procedimentos de acordo com uma condio previamente descrita. 4. Estruturas consecutivas: Executa uma sucesso de declaraes constituintes. 5. Estruturas de exceo: Desvia o fluxo do projeto quando ocorre um erro na execuo normal de um programa ou outro evento a interrompa.

Tempo de Projeto
o tempo utilizado pelo desenvolvedor durante a confeco do projeto.

Tempo de Execuo
o tempo utilizado pelo usurio final para execuo do projeto aps o trmino da sua confeco ou pelo desenvolvedor para realizao de testes.

Pgina 7 de 37

Delphi
Pgina 8 de 37

Capitulo ll - Componentes Bsicos da Orientao a Objetos


Classe
Vamos considerar que classe um tipo de dado definido pelo programador tendo como idia base as variveis compostas do tipo record do Pascal . Exemplo de definio de um tipo record com criao da varivel: type Circulo = record Raio : integer; end; var recCirculo: Circulo;

Exemplo de definio de uma classe (class) com a criao da varivel do tipo objeto. importante ressaltar que neste momento a varivel ainda est vazia, posteriormente vai ser utilizado um comando para que ela passe a referenciar um objeto do tipo TCirculo: type TCirculo = class FRaio : integer; end; var objCirculo: TCirculo;

Outro exemplo de classe (class): type TCadAluno = class FNome : string[20]; FNota1 : real; FNota2 : real; FNota3 : real; FNota4 : real; end; var objAluno: TCadAluno;

A grande diferena entre record e class (classe) que na classe possvel ter diversas functions e procedures, o que no acontece no record. A classe normalmente constituda de atributos e mtodos (funes e procedimentos). Outro exemplo: type TFrmPrincipal = class(TForm) Panel1: TPanel; Label1: TLabel; Labe12: TLabel; end; var frmPrincipal: TFrmPrincipal;

Pgina 8 de 37

Delphi
Pgina 9 de 37

Objeto
Pode-se pensar que no fundo um objeto um programa reduzido, dentro da sua aplicao, com caractersticas (dados) e comportamentos (mtodos) definidos por uma determinada classe. Um objeto criado a partir de uma instncia da classe. Exemplo:
object BitBtnl: TBitBtn Left = 168 Top=240 Width= 199 Height= 31 Caption = '&Confirmar e encaminhar' TabOrder=4 OnClick = BitBtnlClick GIyph.Data == {76060000424D} end;

Instncia de uma Classe


o objeto (um programa) propriamente dito, criado a partir da classe desejada.

Propriedade
Define as caractersticas de um objeto criado a partir de uma classe. Cada objeto tem os seus atributos inicializados com determinados valores para conferir-lhe determinadas caractersticas. Exemplo:

Mtodo
Define o comportamento dos objetos de uma determinada classe.

Mensagem
Define a comunicao entre objetos.

Interface
Define como o objeto ser visto ou o como poder ser utilizado por um outro programa. Tambm pode-se afirmar que atravs da sua interface tem-se o comportamento de um objeto (Protocolo).

Pgina 9 de 37

Delphi
Pgina 10 de 37

Evento
um gatilho que quando disparado pelo usurio realiza um procedimento tambm chamado de rotina de tratamento. Exemplo: procedimento ligado ao evento OnClick do objeto Button1 montado sobre o formulrio Form1 procedure TForml.ButtonlClick(Sender: TObject); begin Forml.Color:=clYellow; end;

Rotina de Tratamento
a ao a ser realizada aps o disparo de um evento. Exemplo: ao ligada ao evento OnClick do objeto Button1 que vai ser executada ao acionar o boto. procedure TForm1.Button1Click(Sender: TObject); begin Forml.Color:=clYellow; end;

Capitulo III - Apresentao do Delphi 2005


Tela de Abertura

Mdulos carregados

VCL Form Application for WIN 32

Pgina 10 de 37

Delphi
Pgina 11 de 37

Object Inspector
a conexo entre a parte visual (Form) e a parte codificada (Unit) de sua aplicao. O Object Inspector usado para configurar, em tempo de projeto, as propriedades e eventos de um objeto. Cada objeto tem uma seqncia de propriedades e eventos listados. Para fazer alguma configurao num componente primeiro necessrio selecion-lo. Para selecionar um componente basta clicar sobre ele ou selecion-lo atravs da caixa de combinao na parte de cima da janela.

No Object Inspector encontram-se duas abas: Properties (propriedades) e Events (eventos), onde a primeira determina as caractersticas do objeto selecionado e a segunda indica quais so os eventos suportados por este objeto. Acima das abas exibido o nome e classe do objeto que est selecionado no Form.

Pgina 11 de 37

Delphi
Pgina 12 de 37

Caixa de Estruturas (Structure)


a regio do DELPHI onde se apresentam todos os objetos dispostos em um formulrio (Form).

Paleta de Componentes
a principal barra de ferramenta, pois contm barras que classificam e guardam os componentes (objetos) que sero utilizados durante o desenvolvimento de projetos em Delphi.

Os componentes contidos nas abas da paleta de componentes so alvos de nosso estudo, portanto, sero apresentados conforme sua necessidade nos captulos a seguir.

Pgina 12 de 37

Delphi
Pgina 13 de 37

Gerente do Projeto (Project Manager)


Mostra todo o projeto disposto em forma de rvore permitindo acesso a pgina de cdigos ou formulrio, bem como permite a localizao de objetos, procedimentos e funes contidas no projeto.

Formulrio (Janela do Windows)

Form: O mesmo que formulrio, a regio onde sero dispostos os objetos, nas linguagens estruturadas representariam a tela do projeto.

Pgina 13 de 37

Delphi
Pgina 14 de 37

Unit
a regio onde se escrevem os procedimentos, a parte estrutural do Delphi tambm chamada de pgina de cdigos.

Pgina 14 de 37

Delphi
Pgina 15 de 37

Estrutura de uma Unit


unit <identificador>; interface {Especifica o que ser exportado pela UNIT a fim de ser utilizados por outros mdulos} [uses <lista de units>;] <sees de declarao> implementation {Declarao de Variveis, Constante e tipos locais a UNIT e Implementao dos mtodos. [uses <lista de units>;] <definies> [initialization {Cdigo executado automaticamente quando um aplicativo que utiliza a UNIT executado} <instrues>] [finalization {Cdigo executado automaticamente quando um aplicativo que utiliza a UNIT finalizado} <instrues>] end.

Captulo IV - Os Primeiros Contatos


Para entender o funcionamento de uma linguagem orientada a objeto, imagine a seguinte proposio: - Em uma rua movimentada foi colocado um semforo para controlar o trfego de veculos e prximo a este existe uma cabine de onde um agente o trnsito determina o momento em que as luzes devero ser acesas.

- Assim de acordo com o boto pressionado pelo agente de uma determinada luz do semforo ascende e as demais apagam. - Podemos ento dizer que cada boto um objeto utilizado pelo agente, da mesma forma, o semforo tambm pode ser considerado como objeto. - Se o semforo um objeto ento ele possui algumas propriedades, por exemplo: o semforo possui luzes que podem ascender em cores distintas desse modo cor seria uma propriedade do semforo e a cor acessa seria sua caracterstica.

Pgina 15 de 37

Delphi
Pgina 16 de 37

Resumindo temos:
Obieto Boto Verde Boto Amarelo Boto Vermelho Evento

Clcar Clicar Clicar

Procedimento Cor do semforo = Verde Cor do semforo = Amarelo Cor do semforo = Vermelho

Prtica 01: O primeiro projeto

Obieto Buttonl Button2 Button3

Pronriedade Caption = Verde Caption = Amarelo Caption = Vermelho

Evento OnClick OnClick OnClick

Procedimento Panel1.Color:=clgreen; Panel1.Color:=clyellow; Panel1.Color:=clred;

Uma vez montado o projeto pressione

ou F9 para execut-lo.

Prtica 02: Alterando algumas propriedades do formulrio.

Para alterar a cor, "propriedade color", usaremos os botes 1,2 e 3, conforme descrito a seguir:
Objeto Propriedade Evento Procedimento

Pgina 16 de 37

Delphi
Pgina 17 de 37

Buttonl Button2 Button3

Caption = Amarelo Caption = Verde Caption = Vermelho

OnClick OnClick OnClck

F ormI.Color:=clyellow; Form1.Color:=clgreen; Form1.Color:=clred;

Para alterar a altura, "propriedade height", usaremos os botes 4 e 5, conforme descrito a seguir:
Objeto Button6 Button7 Propriedade Caption = Maior Altura Caption = Menor Altura Evento OnClick OnClck Procedimento Form1.Height:=Form1.Height + 1; Form1.Height:=Form1.Height 1;

Para alterar o largura, "propriedade width", usaremos os botes 6 e 7, conforme descrito a seguir:
Objeto Button6 Button7 Propriedade Caption = Maior Largura Caption = Menor Largura Evento OnClick OnClck Procedimento Form1.Width:=Form1.Width + 1; Form1.Width:=Form1.Width - l ;

Para alterar o posicionamento do formulrio , "propriedade top", usaremos os botes 8 e 9, conforme descrito a seguir:
Objeto Button6 Button7 Propriedade Caption = Mais Alto Caption = Mais Baixo Evento OnClick OnClck Procedimento Form1.Top:=Form1.Top + 1; Form1.Top:=Form1.Top 1 ;

Uma vez montado o projeto pressione

ou F9 para execut-lo.

Prtica 03 - Exerccio 01: O objetivo dessa prtica alterar algumas propriedades do objeto TPanel, clicando sobre os botes.

Complete a tabela e escreva os procedimentos conforme o formulrio a seguir:

Objeto Buttonl Button2 Button3 Button4

Propriedade Caption Caption Caption Caption

Valor

Evento OnClick OnClick OnClick OnClick

Procedimento

Pgina 17 de 37

Delphi
Pgina 18 de 37

Captulo V - Estruturas
Estrutura um conjunto de aes interligadas entre si contendo um comando que caracteriza o seu incio e um outro seu fim as estruturas controlam todo o projeto, provocam tomadas de decises, controlam repeties, deviam o fluxo do projeto e controlam as possveis excees. As estruturas podem ser classificadas em: 1. Estrutura de Bloco: a estrutura que controla o projeto e cada procedimento nele descrito, determinando seu incio e fim. O bloco tambm pode conter declaraes de constantes, tipos, variveis, procedimentos, e funes; estas declaraes tm que preceder a parte de declarao do bloco. 2. Estruturas de Deciso: Provocam desvios no fluxo do projeto de acordo com a entrada fornecida pelo usurio ou resultante de um clculo. 3. Estruturas de Loop ou lao: Provocam a repetio de um ou vrios procedimentos de acordo com uma condio previamente descrita. 4. Estruturas Consecutivas: Executa uma sucesso de declaraes constituintes. 5. Estruturas de Exceo: Desvia o fluxo do projeto quando ocorre um erro na execuo normal de um programa ou outro evento a interrompa.

Pgina 18 de 37

Delphi
Pgina 19 de 37

Estrutura de Bloco
Esta estrutura sempre composta pelos comandos Begin End, onde o primeiro determina o incio da estrutura e o segundo o seu fim. Um ponto e vrgula aps um comando indicam que ainda existem comandos ou declaraes pertencentes a estrutura, porm quando o comando End sucedido do ponto e vrgula indica o fim da estrutura. O uso do ponto ao final aps o End, indica o fechamento do projeto. Exemplo 01: Para entender a estrutura de bloco tomemos como exemplo um fato cotidiano de acordar, pegar o carro e ir at ao trabalho.

Programa Principal
Rotina Despertar; Inicio Acordar; Forrar a cama; Sair do quarto; Fim; Rotina Asseio; Inicio Escovar os dentes; Tomar banho; Fim; Rotina Alimentao; Inicio; Preparar a comida; Sentar a mesa; Comer; Fim; Rotina Trabalhar; Inicio; Pegar o carro; Ir ao trabalho; Estacioanar o carro; Trabalhar; Fim;

Inicio Despertar; Asseio; Alimentao; Trabalhar; Fim;

Pgina 19 de 37

Delphi
Pgina 20 de 37

Exemplo 02: Somar 02 nmeros e mostrar o resultado: Rotina somar dois nmeros; Declarar A,B,C como variveis numricas; Inicio Perguntar qual o primeiro nmero; Ler o nmero e guardar em A; Perguntar qual o segundo nmero; Ler o nmero e guardar em B; Fazer C = A + B; Mostrar C; Fim;

Prtica 04: Baseado no exemplo 02, montaremos um projeto para somar dois nmeros inteiros.
Objeto Form1 Label1 Label2 Label3 Editl Edit2 Button1 Propriedade Caption Caption Caption Caption Text Text Caption Valor Soma de dois nmeros Primeiro nmero: Segundo nmero: Resultado: Vazio (null) Vazio (null) Somar Evento Procedimento

OnKeyPress OnKeyPress OnClick

Edit1KeyPress Edit2KeyPress Button1Click

Formulrio:

Procedimentos: procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin Varivel Key Tipo Caracter if not (key in ['0'..'9']) then key:=#0; Gurada a tecla pressionada

Pgina 20 de 37

Delphi
Pgina 21 de 37

end; procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9']) then key:=#0; Verifica se a tecla end; pressionada est entre 0 e 9 procedure TForm1.Button1Click(Sender: TObject); var A,B,C:integer; begin A:=strtoint(edit1.Text); B:=strtoint(edit2.Text); C:=A+B; Label3.Caption:='Resultado:'+inttostr(C); end;

Variveis A,B e C do tipo inteira Funo strtoint(string):integer; Converte um valor string em um valor inteiro

Comentrios:

Funo inttostr(integer):string; Converte um valor inteiro em um valor string

Pratica 05 Exerccio 02: Monte um projeto capaz de calcular a mdia aritmtica entre 4 nmeros inteiros quaisquer. Condies propostas: Deve-se travar o teclado evitando-se a digitao de caracteres no numricos.

Estruturas de Deciso
Muitas vezes em um projeto o processador precisa decidir entre dois ou mais valores, para tanto o desenvolvedor dever dirigir o fluxo do projeto de acordo com a entrada fomecida pelo usurio ou resultante de um clculo. As estruturas de deciso utilizam operadores relacionais, podendo tambm fazer uso de operadores lgicos. As estruturas de decises podem ser classificadas em: Estrutura de deciso nica, utilizam a estrutura If .. Then . Else; Estrutura de deciso mltipla, utiliza a estrutura Case .. Else ... End;

Estrutura If .. Then ... Else : (Se ... Ento ... Seno ... ) Na estrutura If ... Then ... Else a deciso nica e quando for verdadeira os comandos que estiverem aps o Then sero executados, enquanto os comandos que estiverem aps o Else sero desprezados. Caso a condio seja falsa os comando existente aps o Then sero desprezados sendo executados apenas os comandos que estiverem aps o Else.

Pgina 21 de 37

Delphi
Pgina 22 de 37

Visualizao da estrutura

Entrada

If ... Then Processamento do Then Else

Processamento do Else

Para entender melhor esta estrutura de deciso imagine um interruptor de uma lmpada. Quando o interruptor fechado permite a passagem da corrente eltrica, acendendo a lmpada e quando ele aberto, interrompe-se a passagem da corrente eltrica e a lmpada no acende. Assim: Incio Configurar a posio do interruptor; A posio o interruptor para acender? Sim; ento acender a lmpada (executar rotina) No: seno apagar a lmpada (executar rotina) Fim

Pgina 22 de 37

Delphi
Pgina 23 de 37

Pratica 06: Acendendo uma lmpada: Baseado na explicao acima monte o seguinte projeto. Formulrio:

Obieto Form1 Panel1 Panel1 RadioGroup1 RadioGroup1 RadioGroup1

Propriedade
Caption Caption Color Caption Items

Valor Pratica 06 Vazio (null) clBlack Interruptor Acender a lmpada Apagar a lmpada

Evellt

Procedimento

OnClick

RadioGroup1Click

ItemIndex

Procedimentos: procedure TForm1.RadioGrouplClick(Sender: TObject); begin if RadioGroupl.ItemIndex=O tben panell.Color:=clyellow else panell.Color:=clblack; end;

Comentrios:

Prtica 07: O objetivo desta prtica descobrir se um nmero par ou mpar, calcular sua raiz quadrada, definir se exata ou inexata e separar a parte inteira da parte decimal. Formulrio:

Pgina 23 de 37

Delphi
Pgina 24 de 37

Obieto Form1 Label1 Label2 Label3 Label4 Label5 Edit1 Edit2 Edit3 Edit4 Buttonl GrounBoxl GrouoBoxl RadioButtonl RadioButton2

Pronriedade Caption Caption Caption Caption Caption Caption Text Text Text Text Caption Cantion Enabled Caption Caption

Valor Prtica 07 Digite um nmero: Resultado: Raiz: Parte inteira: Parte decimal: Vazio (null) Vazio (null) Vazio (null) Vazio (null) Verificar Resultados: False Exata Inexata

Evento

Procedimento

OnKeyPress

Edit1KeyPress

OnClick

Button1Click

Procedimentos: procedure TF orm I.Button 1 Click(Sender: TObject); var valoremreal:real; valordaraiz:real; parteinteira:real; partefracionaria:real; begin valoremreal:= strtofloat( edit1.Text); valordaraiz:= sqrt( valoremreal); edit2.Text:= floattostr(valordaraiz); parteinteira:= int(valordaraiz); partefracionaria:= valordaraiz - parteinteira; if strtoint(edit1.Text) mod 2 = 0 then label2.Caption:= edit1.Text + ' um nmero par' else label2.Caption:= editl.Text + ' um nmero impar'; if partefracionaria=0 then begin radiobutton1.Checked:= true; edit3.Text:= f1oattostr(parteinteira); edit4.Text:= '0'; end

Pgina 24 de 37

Delphi
Pgina 25 de 37

else begin radiobutton2.Checked:= true; edit3.Text:= floattostr(parteinteira); edit4.Text:= floattostr(partefracionaria); end; end; procedure TForm1.EditlKeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'.:9']) then key:=#O; end;

Comentrios:

Pratica 08 - Exerccio 03: Monte um projeto onde o usurio informe o nome do aluno e 04 notas, obtendo como sada, a mdia aritmtica das notas fornecidas e situao em que o aluno se encontra, baseando-se na condio abaixo. Condies propostas: O aluno ser aprovado se obter uma mdia >= 6.

Estrutura Case of Else End: (Caso ... de ... Seno ... Fim) Na estrutura Case ... of ... Else .. End a deciso baseada em mltipla escolha sendo executados apenas os comandos que satisfaam a condio.

Ateno: A estrutura Case ... of ... Else ... End, s aceita condies com valores inteiros. Para entender melhor o funcionamento desta estrutura imagine um semforo controlando o fluxo de veculos, a cada cor acessa uma mensagem enviada ao motorista e como apenas uma cor acende por vez, o motorista nunca receber mais que uma mensagem ao mesmo tempo.

Pgina 25 de 37

Delphi
Pgina 26 de 37

Pratica 09: Controlando o trnsito.

Formulrio:

Objeto Form1 Image1 Image1 Timer1 RadioGroup1 RadioGroup1 RadioGroup1 Shape1 Shape2 Shaue3 Shape1 Shape2 Shape3

Propriedade Caption Picture Autosize Enabled Caotion Items ltemlndex Shape Shape Shape Brush.Color Brush.Color Brush.Color

Valor Pratica 09
'c:\delphi 2005\pratica 09\ carroLbmp'

Evento OnActivate

Procedimento FormlActivate

True False Semforo Pare Ateno Siga O stCircle stCircle stCircle clBtnface clBtnface clRed

OnTimer OnClick

Timer1Timer RadioGroup1Click

Variveis:
Seo var Varivel Carro Tipo integer

Procedimentos: procedure TForm1.FormActivate(Sender: TObject); begin carro:=0; end; procedure TForm1.Timer1Timer(Sender: TObject); begin case carro of 0:begin image1.Picture.LoadFromFile('c:\delphi 2005\pratica 09\carro1.bmp'); carro:=1; end;

Pgina 26 de 37

Delphi
Pgina 27 de 37

1:begin image1.Picture.LoadFromFile('c:\delphi 2005\pratica 09\carro2.bmp'); carro:=0; end; end; end;

procednre TFormLRadioGrouplClick(Sender: TObject); begin case radiogroupl.Itemlndexof 0:begin timer1.Enabled:=false; shape1.Brush.Color;=clbtnface; shape2.Brush.Color:=clbtnface; shape3.Brush.Color:=clred; end; l:begin timer1.Enabled:=true; timerl.Interval:=500; shape1.Brush.Color:=clbtnface; shape2.Brush.Color:=clyellow; shape3.Brush.Color:=clbtnface; end; 2:begin timer1.Enabled:=true; timer1.Interval:=50; shape1.Brush.Color:=clgreen; shape2.Brush.Color:=clbtnface; shape3.Brush.Color:=clbtnface; end; end; end;

Comentrios:

Pratica 10: Promovendo descontos Esta prtica visa calcular o valor a ser cobrado por uma empresa de cpias de acordo com a quantidade de xrox retiradas em um ms conforme a tabela abaixo;
Quantidade de cpias At 50 De 51 a 100 De 101 a 150 Acima de 150 Valor por cpia R$0,10 R$0,08 R$0,06 R$0,05

Pgina 27 de 37

Delphi
Pgina 28 de 37

Formulrio:

Objeto Forml LabeledEditl LabeledEditl LabeledEdit2 LabeledEdit2 LabeledEdit3 LabeledEdit3 LabeledEdit4 LabeledEdit4 Labell Label2 Label3 StaticText1 StaticText1 StaticText2 StaticText2 StaticText3 StaticText3 BitBtnl

Propriedade Caption EditLabelCaption LabelPosition EditLabelCaption LabelPosition EditLabelCaption LabelPosition EditLabelCaption LabelPosition Caption Caption Caption Caption BorderStyle Caotion BorderStvle Caption BorderStvle Caption

Valor Pratica 10 Quantidade de xerox na primeira semana lpLeft Quantidade de xerox na segunda semana lpLeft Quantidade de xerox na terceira semana lpLeft Quantidade de xerox na quarta semana lpLeft Total de xerox: Valor por xerox: Total a pagar: O sbsSuken O sbsSuken O sbsSuken Calcular

Evento OnKeyPress

Procedimento Testatecla

OnKeyPress

Testatecla

OnKeyPress

Testatecla

OnKeyPress

Testatecla

BitBtnl

Glyph

C:\Arquivos de programas\ arquivos comuns\ borland shared\images\buttons\ calcular- OnClick bmp

BitBtnlClick

Procedimentos: procedure TForml.testatecla(Sender: TObject; varKey: Char); begin if not (key in ['0' . .'9',#8]) then key;=#O; end; procedure TForml.BitBtnlClick(Sender: TObject); var valor,total:real;

Pgina 28 de 37

Delphi
Pgina 29 de 37

soma:integer; begin if (labelededitl.Text=") or (labelededit2.Text=") or (labelededit3.Text=") or (labelededit4.Text=") then showmessage('Existe pelo menos uma semana sem quantidade!') else begin soma:strtoint(labelededitl.Text)+strtoint(labelededit2.Text)+ strtoint(labelededit3 .Text)+strtoint(labelededit4. Text); case soma of 0 .. .49:valor:= 0.10; 50 .. 99:valor:=0.08; 100 .. 150:valor:=0.06; else valor:=0.05; end; statictextl.Caption:=inttostr( soma); statictext2.Caption:=formatfloat('R$0.00' ,valor); total:= soma * valor; statictext3 .Caption:=formatfloat('R$0.00' ,total); end; end;

Comentrios:

Pratica 11 - Exerccio 04: Uma empresa resolve realizar uma promoo com descontos entre 10 e 40 por cento de acordo com o total a ser pago pelo cliente conforme a tabela a seguir:
Valor total comprado At R$ 100,00 De R$ 101,00 a R$ 250,00 De R$ 251,00 aR$ 300 00 Acima de R$ 300,00 Percentual de desconto 10% 20% 30% 40%

Estruturas de Loop ou Lao:


Muitas vezes em um projeto o desenvolvedor necessita repetir um determinado procedimento de forma controlada, a esta repetio denominamos lao ou loop.dever dirigir o fluxo do projeto de acordo com uma condio previamente descrita. So trs as estruturas de lao: Repeat... Until; (Repita... at) While... do; (Enquanto... faa) For... to... do // For... downto do. (Para... at... faa)

- Repeat Until: O Repeat executa sua sucesso de declaraes constituintes continuamente e testa a expresso depois de cada repetio. Quando o resultado da expresso satisfeita, o repeat termina. A sucesso sempre executada pelo menos uma vez porque expresso no avaliada at depois da primeira repetio.

Pgina 29 de 37

Delphi
Pgina 30 de 37

Prtica 12: Demonstrao do Repeat Until;

Formulrio:

Objeto Labell Editl Buttonl

Propriedade Caotion Text Caoton

Valor Evento Indique o nmero de repeties: Vazio (nuI!) OnKeyPress Aplicar OnClick

Procedimento Edit1KeyPress ButtonlClick

Procedimentos: procedure TForml.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (key< chr(48 or (key > chr(57)) then key:=chr(O); end; procedure TFonn1.ButtonlClick(Sender: TObject); var i:integer; begin i:=l; listbox 1.Clear; repeat listboxl.Items.Add(Repetio num.:'+inttostr(i)); inc(i); until strtoint(editl.Text)< i; end;

Comentrios

While do: Executa sua sucesso de declaraes constituintes continuamente e testa a expresso antes de cada repetio. Quando o resultado da expresso no mais satisfeita, o while termina. Para entender melhor o funcionamento desta estrutura proceda da seguinte maneira. Abra o projeto anterior e altere o procedimento OnClick do objeto Button1 para:

Pgina 30 de 37

Delphi
Pgina 31 de 37

procedure TForm1.Button1Click(Sender; TObject); var i;integer; begin i;=O; listboxl.Clear; while strtoint( editl. Text) > i do begin inc(i); listbox1.Items.Add('Repetio num:'+inttostr(i)); end; end; Comentrios:

For to do 11 For downto do; Executa sua sucesso de declaraes constituintes continuamente at que o valor inicial atinja o valor final, atravs de uma incrementao, (clausula to), ou decrementao, (clausula downto), quando o valor final alcanado, o for termina. Para entender melhor o funcionamento desta estrutura proceda da seguinte maneira. Abra o projeto anterior e altere o procedimento OnClick do objeto Buttoul para; procedure TF orm 1.Button 1 Click(Sender: TObject); var i:integer; begin listboxl.Clear; for i:=l to strtoint(editl.Text) do listbox l.Items.Add('Repetio nO:'+inttostr(i)); end; Comentrios:

Pratica 13 Exerccio 05: Usando a estrutura de lao monte um projeto capaz e fazer a combinao de 15 nmeros aleatrios para gerar cartes da sena

Estruturas Consecutivas:
Executa uma sucesso de declaraes baseadas em condies onde se referendam objetos, classes, campos, procedimentos ou propriedades. Comando: With do (Com .. , faa) Para entender melhor o funcionamento desta estrutura monte o projeto descrito a seguir. Pratica 14: Demonstrao do With . do Formulrio:

Pgina 31 de 37

Delphi
Pgina 32 de 37

Objeto
Form1 Label1 Label2 Label3 Label4 Label5 Label6 Button1

Propriedade
Caption Caption Caption Caption Caption Caotion Caption Caption

Valor
Pratica 14 Tamanho da fonte: Largura da borda: Nome da fonte: Rtulo: Cor da fonte: Cor do painel: Aplicar

Evento

Procedimento

OnClick

Button1Click

Procedimentos: procedure TF orm 1.Button 1 Click(Sender: TObject); begin with panell do begin font.Size:= strtont( editl.Text); font.Color:= colorbox 1.Selected; font.Name:= edit3.Text; Caption:= edit4.Text; Color:= colorbox2.Selected; end; end;

Comentrios:

Estruturas de Exceo
Desvia o fluxo do projeto quando ocorre um erro ou outra interrupo na execuo normal de um programa. Estruturas: try .. except ( Tentar Exceptualmente) try .. finally (Tentar Finalmente)

Try Except - Tenta executar um bloco de comandos caso no consiga, o fluxo geraria uma interrupo que tenderia a interromper a execuo do projeto, com o uso do except um segundo bloco tentar ser executado. Exemplo: try X:""Y/Z; except on EZeroDivide do HandleZeroDivide; end; - Esta declarao tenta dividir Y por Z, mas se uma exceo encontrada chamada uma rotina nomeada HandleZeroDivide de EZeroDivide, (erro:diviso por zero). Try . Finally - Tenta executar um bloco, se uma interrupo provocar uma parada no fluxo de execuo do projeto, o uso do finally o interpretar como fim do processo executando um segundo bloco de comandos. Exemplo: Reset(F); try ... // process file F finally CloseFile(F); end;

Pgina 32 de 37

Delphi
Pgina 33 de 37

Capitulo XIV - Usando Mensagens


As mensagens so funes eSpeCIaIS definidas pelo delphi onde o desenvolvedor passa informaes de advertncia, erro ou instrues ao usurio. As instrues podem ser classificadas em: Mensagens Simples ou Avisos; e Mensagens de Dilogo.

As mensagens simples ou avisos so geralmente utilizados para passar informaes aos usurios onde no se necessitem de confirmao para executar ou cancelar um processamento. As mensagens de dilogo so aquelas que necessitam da confirmao do usurio para execuo ou cancelamento de um processo.

Mensagens Simples
Comando: ShowMessage(dado string);

Mensagens de Dilogo
Comandos: MessageDlg(dado string); e MessageDlgPos(dado string). MessageDlg: Exibe uma caixa de dilogo no centro de tela. Utilize MessageDIg para expor uma caixa de mensagem e obter a resposta do usurio. Sintaxe: MessageDlg(Msg: String; DIgType: TMsgDIgType; Botes: TMsgDIgButtons; HelpCtx: Longint); Descrio Varivel
Msg DlgType Botes HelpCtx

Tipo

Descrio

String o contedo da mensagem TMsgDlgType Indica o propsito da mensagem TMsgDlgButtons Indicam que botes devem aparecer na caixa de menagem Especifica o contexto ID para o tpico de ajuda que dever aparecer quando o Longint usurio clica o boto de ajuda ou aperta F1 enquanto o dilogo exibido

MessageDlg: Devolve o valor do boto que o usurio selecionou. A tabela seguinte lista os valores de TMsgDIgBtn por cada tipo de boto que pode aparecer na caixa de mensagem, e o valor correspondente que devolvido se o usurio seleciona aquele boto:
Boto pressionado
mbOk mbCancel mbYes mbNo mbAbort mbRetry mbIgnore mrOk mrCancel mrYes mrNo mrAbort mrRetry mrIgnore

Resposta

Pgina 33 de 37

Delphi
Pgina 34 de 37

Prtica 19 - Utilizando o comando messagedlg Formulrio:

Objeto Form1

Propriedade Caption Caption Items

RadioGroup1

Valor Pratica 19 Indique o tipo da mensagem Informao Ateno Erro Confirmao

Evento OnClick

Procedimento RadioGroup1Click

Procedimentos: procedure TF orm I.RadioGroupIClick(Sender: TObject); begin case radiogroupLItemlndex of 0 :messagedlg('Voc deve informar todos os dadosl', mtinformation, [mbyes,mbno],O); 1 :messagedlg('Cuidado! risco de perder os dados.', mtwaming, [mbyes,mbno],O); 2 :messagedlg('No posso salvar os dados!',mterror,[mbretry,mbcancel],O); 3 :messagedlg('Confirma excluso dos dados I' ,mtconfirmation, [mbyes,mbno ],0); end; end;

Comentrios:

Prtica 20 - Utilizando o comando messagedlg Formulrio:

Objeto Forml BitBtnl

ProDriedade Caotion Caotion

Valor Pratica 20 Excluir

Evento

Procedimento

Pgina 34 de 37

Delphi
Pgina 35 de 37

Procedimentos: procedure TForml.BitBtnIClick(Sender: TObject); begin if messagedlg('Confirma excluso?' ,mtconfirmation,[ mbyes,mbno },0 )= mryes then showmessage('Excluso confirmada!') else showmessage('Excluso cancelada!'); end;

Comentrios:

Prtica 21 - Utilizando o comando messagedlgpos Formulrio

Qbjeto Forml BitBtnl Labelededitl Labelededit2

Propriedade Caption Caption Caption Caption

Valor Pratica 21 Aplicar Indique a coluna da mensagem Indique a linha da mensagem

Evento Click

Procedimento BitBtn 1 Click

Procedimentos: procedure TForml.BitBtnlClick(Sender: TObject); begin messagedlgpos('Mensagem na linha:'+ labelededit2.Text + ' e na coluna:'+ labelededitl. Text, mtinformation,[mball,mbno],0, strtoint(labelededitl.Text),strtoint(labelededit2. Text; end;

Comentrios:

Exerccio 09 - Na prtica 18, inclua na rotina de excluso uma mensagem de confirmao para deciso do usurio.

Pgina 35 de 37

Delphi
Pgina 36 de 37

Captulo XV - Rotinas Especiais (Procedures e Funes)


Observe a prtica 18, note que existem rotinas que se repetem vrias vezes durante a confeco da pgina de cdigo: // limpeza dos campos // transferncia dos dados da tabela para o formulrio // mostrando os dados Observe agora o procedimento eIocalizarclick, note que os comandos utilizados para ajustar a chave e ndices e configurar os campos de busca so comuns para cada uma das opes case, mudando-se apenas o seu valor. Como sabemos os procedimentos ocorridos na linguagem orientada a objetos so independentes, portanto uma nica rotina escrita poder ser utilizada por diversos objetos e por diversas vezes, quando este procedimento realizar um clculo qualquer (lgico ou aritmtico) e devolver algum valor ao objeto que o disparou teremos uma funo, porm se nenhum valor for devolvido a este objeto teremos uma procedure.

Agora que a procedure j foi criada s cham-Ia, para isso localize o comentrio \\ limpeza dos campos, nos procedimentos da unit de fclientes, substitua as linhas que executam a limpeza por IimparcamposO;, conforme descrio. Para criar a procedure limparcampos, precisamos reservar um espao na memria para sua colocao, assim utilizaremos a clusula Var para sua declarao, a clusula implementation para sua descrio. Abra a pratica 18 e nela o formulrio FClientes, para criar o procedimento limparcampos proceda a seguinte descrio. Na clusula Var inclua: procedure Iimparcampos(); var Fclientes: TFclientes; procedure LimparcamposO; Na clusula implementation inclua: procedure limparcamposO e digite seu contedo. procedure limparcampos(); begin with fclientes do begin ecodigo.Text:= ''; etipo.Itemlndex:= -1 ; ebairro.Text:= ''; ecpf_cnpj.Text:= ''; ecliente.Text:= ''; erg_insestadual.Text:= ''; elogradouro.Text:= ''; ecomplemento.Text:= ''; enumero.Text:= '';

Pgina 36 de 37

Delphi
Pgina 37 de 37

ecidade.Text:= ''; eestado.Text:= ''; ecep.Text:= ''; erelefone.Text:= '' ; end; end;

Agora que a procedure j foi criada s cham-Ia, para isso localize o comentrio \\ limpeza dos campos, nos procedimentos da unit de fclientes, substitua as linhas que executam a limpeza por IimparcamposO;, conforme descrio
Localize I I limpeza dos campos ecodigo.Text:=; etipo.ItemIndex:=-l; ebairro.Text:=; ecpC cnpj.Text:=; ecliente. Text:=; erg_insestadual. Text:=; elogradouro.Text'=""; ecomplemento.Text:=; Enumero.Text:=; ecidade.Text:=; eestado. Text:=; ecep.Text:=; etelefone. Text:= Substitua por Nos Procedimentos

LimparcamposO;

FormActivate NovoClick SalvarClick ExcluirClick

As rotinas Ii transferencia dos dados da tabela para o formulrio e Ii mostrando os dados, fazem a mesma coisa, portanto podem ser substitudas por uma procedure que denominaremos de procedure mostrardadosO, Na clusula Var inclua: procedure mostrardadosO; var Fclientes: TFclientes; procedure LimparcamposO; procedure MostrardadosO;

Na clusula implementation inclua: procedure mostrardadosO e digite seu contedo. procedure MostrardadosO; begin with fclientes do begin ecodigo.Text:= dm. TClientesCodigo. Text; etipo.ItemIndex:=dm.TClientesTipo.Value; ebairro.Text:=dm.TClientesBairro. Text; ecpC cnpj.Text:=dm.TClientesCPC cnpj.Text; ecliente.Text:=dm.TClientesCliente.Text; erg_insestadual.Text:=dm.TClientesRgjnsestaudal.Text; elogradouro.Text:=dm.TClientesLogradouro.Text; ecomplemento.Text:=dm.TClientesComplemento.Text; enumero.Text:=dm.TClientesNumero.Text; ecidade.Text:"'dm. TClientesCidade.Text; eestado.Text:=dm. TClientesEstado.Text; ecep.Text:=dm. TClientesCep.Text; etelefone.Text;=dm. TClientesTelefone.Text; end; end;

Pgina 37 de 37