como trabalhar com eventos ?

Delphi

04/01/2007

tenho a seguinte duvida:

ex:
tenho uma TADOQuery que é criada em tempo de execução
  qry := TADOQuery.Create(self);
  try
    // codigo à ser executado
    ...
  finally
    FreeandNil(qry);
  end;


um metodo qualquer:
procedure MetodoQualque;
begin
  // ...
end;



[b:619ba90f53]duvida:[/b:619ba90f53]
como executar o metodo:´MetodoQualque´ no evento AfterPost da Query ´qyr´ em tempo de execução


Fabiano Góes

Fabiano Góes

Curtidas 0

Respostas

Renato.pavan

Renato.pavan

04/01/2007

[quote:0d2e904909=´Fabiano Góes´]como executar o metodo:´MetodoQualque´ no evento AfterPost da Query ´qyr´ em tempo de execução[/quote:0d2e904909]

Basta vc criar seu ´MetodoQualquer´ com os mesmos parametros qdo o metodo é criado diretamente no AfterPost da query.
Exemplo
procedure MetodoQualquer(DataSet: TDataSet);
begin
   //
end;


Depois na sua query criada dinamicamente vc atribui ao afterPost a procedure ´´MetodoQualquer´.
Exemplo
qry := TADOQuery.Create(self); 
  try 
    qry.AfterPost := MetodoQualquer; 
  finally 
    FreeandNil(qry); 
  end; 


Espero ter ajudado em sua duvida.

[]´s

Renato


GOSTEI 0
Massuda

Massuda

04/01/2007

A procedure que trata um evento deve ser obrigatoriamente um método de uma classe, não pode ser um procedure ´solta´ na unit, como você fez. Normalmente, a procedure utilizada é um método de um form ou data module.


GOSTEI 0
Michael

Michael

04/01/2007

Um breve comentário: ao se criar componentes em run-time, deve-se tomar cuidado na hora de escolher o seu [b:c80701acfe]Owner[/b:c80701acfe]. Se vc mesmo for destruí-lo, como no exemplo deste post, então use [b:c80701acfe]nil [/b:c80701acfe]no lugar de [b:c80701acfe]Self[/b:c80701acfe]. Do contrário, quando o objeto referenciado por [b:c80701acfe]Self [/b:c80701acfe]- neste caso, aparentemente o form - for destruído, ele tentará liberar o [b:c80701acfe]TQuery[/b:c80701acfe], inclusive enviado notificações para todos os componentes da sua lista interna, gerando um overhead desnecessário.

Regra: se vc mesmo cria e destroi, use [b:c80701acfe]nil [/b:c80701acfe]no construtor.

qry := TADOQuery.Create(nil);
try
  qry.AfterPost := MetodoQualquer;
  // Faz alguma coisa com qry
finally
  FreeandNil(qry);
end;


[]´s


GOSTEI 0
Douglas Carvalho

Douglas Carvalho

04/01/2007

Queria aprender mais sobre comandos sql no delphi tipo apagar editar incluir salvar alguém pode me passar materiais relacionados a isso desde ja agradeço
GOSTEI 0
POSTAR