ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Criar afterPost em runtime

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
ric_rio2
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 1 de Outubro de 2018
Mensagens: 108

MensagemEnviada: Sex Out 25, 2019 1:09 pm    Assunto: Criar afterPost em runtime Responder com Citação

Boa tarde..
Estou meio enrolado para criar o evento afterpost (tQuery) em runtime.
Minha ideia é criar uma function que retorne um objeto do Tipo TQuery.
Ficaria assim..:

Código:
Function Cria_Query_DB(pNome : String) : TQuery;
begin
  Result:= Tquery.Create(Nil);
  Result.Name:= pNome;
  Result.DatabaseName := DMS_ALIAS;
  Result.RequestLive:= True;
  Result.AfterPost:= ???????
  Result.Close;
  Result.Sql.Clear;
end;



Mas não estou conseguindo criar o evento e passa-lo para o Result.afterPost.
O evento ficaria assim..:

Código:
Procedure AfterPost_Query(DataSet : TDataSet);
begin
     DBISaveChanges((DataSet As TQuery).Handle);
end;


Quando eu tento fazer..:
Result.AfterPost:= AfterPost_Query();

Não sei o que colocar dentro das chaves.. na realidade nem sei se estou passando corretamente o evento para o Result.AfterPost..

Algum dos senhores poderia dar uma luz?? Smile
Desde já agradeço a atenção de todos
Abraços.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Out 25, 2019 2:21 pm    Assunto: Responder com Citação

Boa tarde,

Para atribuir ao evento você precisa criar um método, que seria uma procedure (ou function) associada a uma classe. Ex:

Código:
type
  TForm1 = class(TForm)
    // ...
  private
    { Private declarations }
    Procedure AfterPost_Query(DataSet : TDataSet);
  end;

Procedure TForm1.AfterPost_Query(DataSet : TDataSet);
begin
   DBISaveChanges((DataSet As TQuery).Handle);
end;

Result.AfterPost:= Form1.AfterPost_Query;


Se preferir você pode criar uma classe com um "class method", sendo que dessa forma não é necessário instanciar um objeto. Ex:

Código:
  TMinhaClasse = class
  private
    class procedure AfterPost(DataSet: TDataSet);
  end;

class procedure TMinhaClasse.AfterPost(DataSet: TDataSet);
begin
   DBISaveChanges((DataSet As TQuery).Handle);
end;

Result.AfterPost := TMinhaClasse.AfterPost;


Espero que ajude

_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos-residencial
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
ric_rio2
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 1 de Outubro de 2018
Mensagens: 108

MensagemEnviada: Sex Out 25, 2019 6:01 pm    Assunto: Responder com Citação

Boa tarde imex
Cara..
Valeu mesmo..
Estava tentando do primeiro modo que tu falou mas não estava indo.. Não sei porque..
Ai fiz do segundo modo que tu demonstrou e foi de boa.. Smile
TMinhaClasse = class etc.. Smile

Valeu mesmo
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB