Interceptar e desviar um evento
Olá Pessoal.
Eu tenho a seguinte duvida: é possivel interceptar um evento e desviar para um procedimento feito por mim? Deixa eu explicar melhor, por ex.: o evento BeforeInsert de uma query ou table qulaquer, quando dou um insert na tabela, antes de executar a ação é chamado o evento BeforeInsert, certo? O que eu quero é que esse evento seja interceptado e que seja executado um procedimento personalizado, tipo ´InsertPersonalizado´. Será que é possivel?
Agradeço antecipadamente.
Eu tenho a seguinte duvida: é possivel interceptar um evento e desviar para um procedimento feito por mim? Deixa eu explicar melhor, por ex.: o evento BeforeInsert de uma query ou table qulaquer, quando dou um insert na tabela, antes de executar a ação é chamado o evento BeforeInsert, certo? O que eu quero é que esse evento seja interceptado e que seja executado um procedimento personalizado, tipo ´InsertPersonalizado´. Será que é possivel?
Agradeço antecipadamente.
Flaviosan
Curtidas 0
Respostas
Flaviosan
31/03/2004
Será que alguem sabe?
GOSTEI 0
Marco Salles
31/03/2004
quando dou um insert na tabela, antes de executar a ação é chamado o evento BeforeInsert, certo?
É Chamado Se Voce Tiver Definido... Não é Necessário :!:
Mas Alguns Eventos Ocorrem Antes... Quando Damos Um Comando De Inserção Geralmente a Ordem Dos Eventos é:
1)BeforeScroll;
2)OnDataChange
3)AfterScroll
4)BeforeInsert etc...
Voce Pode Incerptar o Evento BeforeScroll Utilizando O Evento OndataChange
Exemplo:
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin if DataSource1.State in [dsinsert] then InsertPersonalizado; end;
Agora o Outro Ponto De Sua Dúvida e Desconectar Temporariamente Um Evento...Isto Geralmente é Usado Para Evitar Recursões Infinitas, Ou Evitar Problemas De Efeitos Colaterais...Num Sei Se Aplica No Seu Caso...
Para Desconectar o Evento OnBeforeInsert: Table1.BeforeInsert:=Nil; Para Reconectar: Table1.BeforeInsert:=Table1BeforeInsert;
P:S Para Compilar, o Evento BeforeInsert Tem Que Estar Definido...
GOSTEI 0
Flaviosan
31/03/2004
Marco Salles, obrigado pela sua atenção.
Me responda uma coisa, na primeira parte da sua resposta,
voce quis dizer que antes de um insert ser executado ele passa por todos esses eventos? Se eu realizar alguma operação no evento AfterScroll ele sera executato antes da inserção?
Mais uma coisa, no evento BeforeInsert se eu usar um comando Exit para sair do procedimento ele não realizara o insert?
Agradeço muito se puder me ajudar.
Me responda uma coisa, na primeira parte da sua resposta,
Mas Alguns Eventos Ocorrem Antes... Quando Damos Um Comando De Inserção Geralmente a Ordem Dos Eventos é:
1)BeforeScroll;
2)OnDataChange
3)AfterScroll
4)BeforeInsert etc...
Voce Pode Incerptar o Evento BeforeScroll Utilizando O Evento OndataChange
voce quis dizer que antes de um insert ser executado ele passa por todos esses eventos? Se eu realizar alguma operação no evento AfterScroll ele sera executato antes da inserção?
Mais uma coisa, no evento BeforeInsert se eu usar um comando Exit para sair do procedimento ele não realizara o insert?
Agradeço muito se puder me ajudar.
GOSTEI 0
Paullus
31/03/2004
Mais uma coisa, no evento BeforeInsert se eu usar um comando Exit para sair do procedimento ele não realizara o insert?
Agradeço muito se puder me ajudar.
Se você usar o comando exit ele simplesmente vai sair do procedimento que está sendo executado passando em seguida para o próximo (o Insert), ou seja, ele deixa de executar o restante do corpo do seu procedimento e em seguida executa a inserção.
Se você quiser parar o procedimento tente dar um Cancel (apesar de eu não ter certeza se vai funcionar).
:wink:
GOSTEI 0
Marco Salles
31/03/2004
voce quis dizer que antes de um insert ser executado ele passa por todos esses eventos?
Sim...Desde Que Voce Programe Algo Nestes Eventos
Se eu realizar alguma operação no evento AfterScroll ele sera executato antes da inserção?
Sim...Mas Voce Deve Tomar O Cuidado Porque Este Evento é Dispardo Em Várias Situações e Não Na Situação Particular Em Que Um Registro
Esta Sendo Inserido No Banco..Por Exemplo Qundo Voce Dá Um Comando Table1.Next, Este Evento Também é Disparado...
Mais uma coisa, no evento BeforeInsert se eu usar um comando Exit para sair do procedimento ele não realizara o insert?
Esta O Paullus Respondeu:
Se você usar o comando exit ele simplesmente vai sair do procedimento que está sendo executado passando em seguida para o próximo (o Insert), ou seja, ele deixa de executar o restante do corpo do seu procedimento e em seguida executa a inserção.
Se você quiser parar o procedimento tente dar um Cancel (apesar de eu não ter certeza se vai funcionar).
GOSTEI 0