Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
makarioszen

Qual a diferença entre TEdit(sender) e (sender as TEdit)??

Recommended Posts

Boa Tarde Senhores!!!

Sou novo no fórum e queria saber se existe diferença nestas declarações TEdit(sender) e (sender as TEdit)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso dai se chama "Typecasting"

você tratar um objeto como um objeto diferente mas relacionado.

o operador "is" é como você estivesse perguntando se?

e o operador "as" é você está se referindo como


{Aqui você está dizendo que o button1 está sendo enviado como um Objeto}
procedure TForm1.Button1Click(Sender: TObject);
begin
if sender is TEdit then {Aqui você perguntou se o Sender que está sendo chamado no momento é da classe TEdit}
Label1.Caption:= 'Até mais mundo!'
else
(sender as TButton).Caption := 'Olá mundo!'; {Aqui você pegou o Sender como um TButton}
end;

Typecasting é muito útil para fazer ações dependendo do que for acionado, alguns exemplos:

Todas as vezes que o usuário pressionar qualquer botão fazer alguma ação, verificar componentes(muito útil para limpar todos os componentes em que você escreve tipo Edit e memo)

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão é: E se o sender não for um TButton?

Sender é o objeto que chamou o evento..

Logo, poderiamos colocar o seguinte código no evento OnChange (por exemplo) para todas as TEdits de um form:

[COLOR="Red"][B]TEdit[/B][/COLOR]([COLOR="Blue"][B]Sender[/B][/COLOR]).Text := [COLOR="Orange"][b]'Texto da TEdit'[/b][/COLOR];

Isso vai fazer com que ao digitar qualquer coisa em qualquer TEdit o texto dela vá para "Texto da TEdit".. porque Sender retorna qual TEdit foi, se foi a 1, a 2, etc..

Então dizemos que um componente da classe TEdit, no caso a edit que chamou o evento vai receber o valor "Texto da TEdit".

Se esta parte não ficou muito clara, por favor avise para que eu tente explicar melhor.. (não tenho muita pratica na parte de POO)

Já o (sender as TEdit) funciona assim:

Sender é, como podemos ver na declaração do evento, uma variavel do tipo TObject, e não do tipo TEdit..

Então colocamos (Sender as TEdit) para definir (como o amigo acima falou) que o Sender vai ser um TEdit para trabalharmos com suas propriedades. Poderás ver que, caso Sender não seja um tipo TEdit vai retornar o seguinte erro:

Project Project1.exe raised exception class EInvalidCast with message 'Invalid class typecast'. Process stopped. Use Step or Run to continue.

Espero que tenha ajudado.

Qualquer dúvida poste! ^_^

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×