Buscar

Você sabe o que é type cast ?

nome

Eder Rueda Fernandes

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

Você sabe o que é Type Cast ?

Olá Pessoal, bem vindos ao meu novo artigo aonde vou
descrever o uso, importância e facilidades de executar
tarefas utilizando Type Cast.
Todos os exemplos que estarei demonstrando eu usei
o Delphi 7, que também podem ser implementados utilizando
o Delphi 2005/2006 VCL. (win32)

============
O que é Type Cast
============

Na verdade o nome Type Cast pode ter várias formas de ser explicada.
Mas a mais simples é que ele é um recurso na qual você consegue referenciar
em poucas linhas um objeto dentro do seu projeto.
Normalmente fazemos isso usando o operador "as".
Outro item interessante é o "Sender" que sempre acompanha o evento
de clique dos objetos. É uma variavel do tipo "TObject"... classe de onde
vem todos os objetos.

============
Como Usar?
============

Bom... vamos montar alguns exemplos e ver na prática o que um
Type Cast pode fazer.

Estarei colocando 2 exemplos daqui pra frente.
Creio que pelo menos 1, vai ser útil para muitos de vocês.

Vamos lá...

============
Exemplo 1
============

Neste primeiro exemplo utilizaremos o "Sender" de forma implícita.
Vamos iniciar um novo projeto indo em File -> New -> Application. (Delphi 7... lembrem-se)
Neste projeto acrescentem 1 Button e 1 Label. (Apenas isso)
Ele deve ficar parecido como o abaixo.




No evento de clique do botão(cliquem 2x nele) vamos inserir o código abaixo.



Após isso rodem a aplicação (F9).
Ao clicarem no botão vão perceber que o label irá mudar o seu caption
(uia... grande coisa... uheauhuh)

Agora façam o seguinte... retornem ao design da sua aplicação.
E insira váááááááááários labels.
Ele deve ficar como o abaixo.



Sem mudar o código rodem novamente a aplicação(F9) e cliquem no botão(hummmmm)
Então... se vocês fizeram tudo certinho, vão perceber que independente de quantos
labels vocês colocarem no projeto ele vai trocar o caption para "Exemplo".

Sabe qual foi o interessante disso? Raciocine como vc faria para sua
aplicação fazer isso sem type cast...

Label1.caption := 'Exemplo';
Label2.caption := 'Exemplo';
Label3.caption := 'Exemplo';
Label4.caption := 'Exemplo';
Label5.caption := 'Exemplo';

... e isso até um milhão... :D

****************
Entendendo o código
****************

Na verdade o que fizémos foi o seguinte.
Varremos todos os componentes dentro de "Self", que é o nosso Form1(no meu caso).
E toda vez que ele passar por um objeto/componente que for da classe TLabel ele
irá fazer com que aquele objeto em específico que é da classe TLabel troque o seu caption
por 'Exemplo'.
É importante mencionar que para este tipo de operação é muito importante testar o tipo da classe.
Se você não fizer isso... pode tentar fazer com que um edit por exemplo que não possui caption
tente limpar-se. (ex: edit1.caption:='';) (Obviamente isto não existe, portanto... erro no projeto).


============
Exemplo 2
============

Agora sim... vamos usar o "Sender"... :-P
A príncipio vamos dar um exemplo beeem simples pra facilitar o entendimento.
Crie um novo projeto indo em File -> New -> Application (Delphi seteeee)
Neste projeto vamos inserir apenas 1 button.
Seu form deve ficar como o abaixo.



E vamos colocar essa quantidade enorme de linhas de código, no evento
de clique no botão.(2 cliques nele) :D



Agora rodem a aplicação(F9).
Cliquem no botão e... (uia.... tudo isso)
Voltem para o design do projeto e insiram alguns buttons.
Ele deve ficar +/- assim.



Agora copiem o evento do Button1 para todos os outros.
A imagem abaixo mostra como fazer isso.
É só clicar no botão e ir em Events do Object Inspector.
E trocar o evento OnClick. Observem...



Repita o procedimento de forma que todos os buttons
apontem o OnClick para Button1Click.
Rodem novamente a aplicação (F9).
E cliquem nos botões. (hummmm)

Reparem que cada botão sabe qual é seu name,
mesmo usando o evento do button1. Ueh, como ?

****************
Entendendo o código
****************

Bom.. para entendermos o que fizémos precisamos primeiro
entender o que é o "Sender".
"Sender" na verdade é o identificador do objeto.
Portanto cada vez que chamamos o evento de clique no botão
passamos o sender... daí ele exibe o name do botão com aquela
identificação.
Por isso ele sabe quem eh quem.

Novamente... como vc faria isso sem Type Cast ?

ShowMessage( Button1.Name );
ShowMessage( Button2.Name );
ShowMessage( Button3.Name );
ShowMessage( Button4.Name );
ShowMessage( Button5.Name );

... e isso até um megazilhão. :D

Quando poderia ter feito em 1 linha. :-P

============
Concluíndo...
============

Então pessoal... mostrei acima uma forma de vocês reduzirem
muuuito a quantidade de linhas de código dos seus projetos
em 2 exemplos beeem simples.
Há milhares de formas de se usarem apenas estes 2 exemplos.
Alguns deles poderiam ser na verificação se o conteúdo de algum
edit é válido.. ou limpar os edits todos de uma vez.
Com certeza isso vai ser útil para a maioria de vocês.
Aos que tiverem dúvidas
eder_fernandes@hotmail.com.

Abraços e que venham os coments... :D

Publicidade

Vote no artigo




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes do artigo

Categoria: Outros
Adicionado dia: 03/06/06
Por: Eder Rueda Fernandes
Visualizado: 44852 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009