Como saber se componente tem evento
Olá amigos.
Eu tenho uma dúvida, que eu pesquisei, mas não consegui achar em lugar algum.
Eu preciso fazer uma varredura em um form para executar o evento onchange de vários DBEdit´s. Porém nem todos os DBEdit´s tem código nesse evento. Eu preciso descobrir como eu posso saber se o componente tem código no evento ou não.
Segue o código:
Obrigado a todos
Eu tenho uma dúvida, que eu pesquisei, mas não consegui achar em lugar algum.
Eu preciso fazer uma varredura em um form para executar o evento onchange de vários DBEdit´s. Porém nem todos os DBEdit´s tem código nesse evento. Eu preciso descobrir como eu posso saber se o componente tem código no evento ou não.
Segue o código:
var Comp: TComponent; begin for Comp in Self do if Comp is TDBEdit then TDBEdit(Comp).OnChange(TDBEdit(Comp)); end;
Obrigado a todos
Daniel Grillo
Curtidas 0
Respostas
Daniel Grillo
30/07/2008
Complementando a pergunta anterior.
Para saber se um componente tem uma propriedade em runtime, utiliza-se a função IsPublishedProp. Gostaria de saber se há alguma função similar para eventos.
Para saber se um componente tem uma propriedade em runtime, utiliza-se a função IsPublishedProp. Gostaria de saber se há alguma função similar para eventos.
GOSTEI 0
Daniel Grillo
30/07/2008
Bom galera, procurei mais um pouco. Foram mais ou menos 2 horas de busca, tentativas e erros, mas no fim achei o que eu queria.
Segue o link onde eu achei:
[url]http://delphi.about.com/od/adptips2005/qt/listhandlers.htm[/url]
E meu código ficou assim:
Segue o link onde eu achei:
[url]http://delphi.about.com/od/adptips2005/qt/listhandlers.htm[/url]
E meu código ficou assim:
uses TypInfo; var Comp: TComponent; Method: TMethod; begin for Comp in Self do if Comp is TDBEdit then begin method := GetMethodProp(TDBEdit(Comp), ´OnChange´) ; if Assigned(method.Code) and Assigned(method.Data) then TDBEdit(Comp).OnChange(TDBEdit(Comp)); end; end;
GOSTEI 0
Rodc
30/07/2008
Assim não funciona?
var Comp: TComponent; begin for Comp in Self do if Comp is TDBEdit then if Assigned(TDBEdit(Comp).OnChange) then TDBEdit(Comp).OnChange(TDBEdit(Comp)); end;
GOSTEI 0
Daniel Grillo
30/07/2008
Assim não funciona?
var Comp: TComponent; begin for Comp in Self do if Comp is TDBEdit then if Assigned(TDBEdit(Comp).OnChange) then TDBEdit(Comp).OnChange(TDBEdit(Comp)); end;
Pior que funciona!!
Por que você não postou antes?!
Bom, fica ai registrado os dois métodos, mas o do rodc é mais fácil.
Obrigado
GOSTEI 0
Rodc
30/07/2008
Por que você não postou antes?!
É que eu não tinha entrado no forum antes... rsss...
Abraços
GOSTEI 0
Joaohueder
30/07/2008
Aproveitanto do topico, alguém sabe como pegar o Evento atual ? ou seja ao clicar no botão1 ele mostra botão1onClick por exemplo.
é que quero fazer uma rotina de erros e se ocorrer erros dentro de um evento, mostrar qual evento esta.
Obrigado.
é que quero fazer uma rotina de erros e se ocorrer erros dentro de um evento, mostrar qual evento esta.
Obrigado.
GOSTEI 0