Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 17 de Outubro de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
62 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Detalhes de tratamento de eventos
Publicado por Admin : Quinta, Dezembro 19, 2002 - 07:58 GMT-3 (13075 leituras)
Comentários comentar   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Administrador Um evento é uma forma que um componente tem de notificar o formulário de algum acontecimento. Se você clica com o mouse em um botão, por exemplo, ele deve notificar o formulário desse clique, para que o código do formulário possa fazer alguma coisa em resposta.

 Quando o componente aciona um evento, ele executa um procedimento de evento, um procedimento que faz parte da classe de formulário. Quando você cria um procedimento na página de eventos, você está associando um evento de um componente com um procedimento de evento do formulário.

     Eliminando um Procedimento de Evento      
Se você quiser eliminar um procedimento de evento, não apague o corpo dele no código.  

Apague apenas os comandos entre o begin e o end, e declarações de variáveis (var), se houver. 

Quando você compila o programa, ou quando salva o projeto, o Delphi nota que o procedimento está vazio, e o remove automaticamente do programa. 

     Nomes de procedimentos
O nome de um procedimento de evento é usado para declarar esse procedimento na classe do formulário. Pode ser qualquer nome, desde que siga as regras de identificadores em Delphi. 

     

Quando você cria um procedimento de evento, clicando duas vezes no componente ou em um evento qualquer, o Delphi atribui um nome padrão, da forma NomeComponenteNomeEvento. Se você tem um botão chamado btnFechar no formulário, e clicar duas vezes, o Delphi cria um procedimento chamado 'btnFecharClick' (note que o On é omitido): 

     procedure TForm1.btnFecharClick(Sender:TObject)'       begin       end; 

     Para mudar o nome do procedimento, clique na página de eventos do Object Inspector, no evento desejado e digite o novo nome. Mas você não deve mudar o nome diretamente no texto da unidade. Se fizer isso, o Delphi não conseguirá localizar mais o procedimento e mostrará várias mensagens de erro. O nome é declarado em vários lugares: na declaração da classe de formulário, na página de eventos e na unidade. Se você alterar em um dos lugares, tem que alterar todos.
 

     Associando um Procedimento Existente
Se depois de criar um procedimento, você criar um novo componente que vai fazer a mesma  coisa, você pode ligá-lo a um procedimento já existente. Por exemplo, um botão e um item de menu que estejam associados à mesma ação. 

     Para fazer isso, selecione o componente que você quer associar, clique no evento e no botão de seta . Aparece na lista os nomes dos procedimentos compatíveis com aquele evento. Um procedimento é compatível se ele tem exatamente o mesmo número de parâmetros e o mesmo tipo de dados e passagem para cada parâmetro correspondente. 

     Para desvincular um procedimento do componente, clique no nome do evento e tecle [Delete]. O componente não vai mais chamar aquele procedimento. 

     Identificando qual controle acionou o evento
No Delphi você pode associar um mesmo procedimento de evento com dois ou mais componentes. Se você selecionar vários componentes e criar um procedimento de evento, ele estará associado dessa forma. 

O problema é saber qual dos componentes acionou o evento. O Delphi fornece essa informação para o procedimento através do parâmetro 'Sender'. Essa variável é uma referência ao componente que acionou o evento, como se fosse um nome diferente para o componente dentro do procedimento, e através dele podemos acessar as propriedades e métodos do componente. 

'Sender' é declarado como 'TObject', o que quer dizer que ele é um objeto genérico do Delphi, que pode ser um componente qualquer. Se você quiser acessar uma propriedade específica de um componente, por exemplo, Color, precisa dizer ao Delphi que temos certeza que 'Sender' é um componente Edit. Por exemplo:       (Sender as TEdit).Color := clYellow; 

A expressão Sender as TEdit força o Delphi a tratar 'Sender' como um objeto da classe TEdit, ou seja, um componente Edit. Usando essa expressão, podemos acessar propriedades do componente. Outra sintaxe poderia ser usada:       with Sender as TEdit do       Color := clYellow;
       

     Associando um Procedimento em Tempo de Execução
A associação entre procedimentos e eventos pode ser feita também durante a execução do programa. Para isso, basta usar o nome do evento como uma propriedade e atribuir um valor que é o nome do procedimento de evento. Por exemplo, para associar o evento OnEnter com o procedimento "EditRecebeuFoco", basta usar o seguinte comando:  editOperando1.OnEnter := EditRecebeuFoco;
 

     Tratando Eventos com Componentes Dinâmicos
Um componente criado dinamicamente não tem nenhum tratamento de eventos definido, mas   como eventos podem ser alterados como propriedades, você pode criar um procedimento de evento manualmente e durante a execução, associar esse procedimento ao componente. 
Para isso abra o projeto CRIACOMPP, caso ele não esteja aberto.      

Dentro da definição da classe do formulário, na parte private (ou public, não importa no caso), acrescente uma declaração de método:  procedure TrataClick(Sender:TObject); 

Agora, na seção de implementação, crie o corpo do método 'TrataClick', da seguinte forma:       procedure TFormCriaComp.TrataClick(Sender:TObject);       begin         ShowMessage('Você clicou no botão '+ (Sender as TButton).Caption);       end; 

Esse método assume que 'Sender' é um componente da classe TButton, e mostra uma mensagem com a propriedade Caption do Sender. 

A cada vez que criarmos um componente, vamos associar esse método ao evento OnClick do componente. Para isso, volte ao procedimento 'FormMouseDown' e acrescente a linha abaixo depois de Visible := True: 

     OnClick := TrataClick; 

Quando você usa o nome do evento como uma propriedade, o valor atribuído deve ser o nome de um método do formulário. Agora, quando você clicar em um dos botões criados, o procedimento 'TrataClick' será executado e vai mostrar o Caption desse botão numa mensagem. 

     Nota: a variável OnClick é do tipo procedure, um tipo de dados que permite fazer referência a procedimentos. Veremos isso em detalhe posteriormente.  Autor    : Celso Rodrigues

Contato : celso@finta.com.br       



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados