Fórum Interceptar e desviar um evento #223668

31/03/2004

0

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.


Flaviosan

Flaviosan

Responder

Posts

31/03/2004

Flaviosan

Será que alguem sabe?


Responder

Gostei + 0

31/03/2004

Marco Salles

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


Responder

Gostei + 0

01/04/2004

Flaviosan

Marco Salles, obrigado pela sua atenção.
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.


Responder

Gostei + 0

01/04/2004

Paullus

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:


Responder

Gostei + 0

01/04/2004

Marco Salles

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).



Responder

Gostei + 0

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

Aceitar