Como saber se componente tem evento

30/07/2008

0

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:
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

Daniel Grillo

Responder

Posts

30/07/2008

Daniel Grillo

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.


Responder

30/07/2008

Daniel Grillo

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:
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;



Responder

30/07/2008

Rodc

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; 



Responder

30/07/2008

Daniel Grillo

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


Responder

30/07/2008

Rodc

Por que você não postou antes?!

É que eu não tinha entrado no forum antes... rsss...
Abraços


Responder

04/08/2008

Joaohueder

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.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar