Fórum OnExit #224070
02/04/2004
0
Gostaria de saber como cancelar um envento OnExit.
A situação é a seguinte:
No envento OnExit testo o que foi digitado e se não for satisfeito retorno o foco para o próprio componente. Mas se o usuário quiser cancelar existe um SpeedButton, que não recebe foco, justamente para evitar a chamada do evento OnExit do componete focado, que fecha o formulário.
Até aí tudo bem, o problema é quando o usuário chama este formulário novamente, pois o evento é executado é aparece a mensagem do evento OnExit. No fechamento do formulário não chamo o método Free ou Release, somente o Close, pois é assim que tem ser.
Gostaria de saber como cancelo o evento OnExit pendente (ou os eventos, pois existem vários componentes) quando o usuário clica no botão Cancelar.
A situação é a seguinte:
No envento OnExit testo o que foi digitado e se não for satisfeito retorno o foco para o próprio componente. Mas se o usuário quiser cancelar existe um SpeedButton, que não recebe foco, justamente para evitar a chamada do evento OnExit do componete focado, que fecha o formulário.
Até aí tudo bem, o problema é quando o usuário chama este formulário novamente, pois o evento é executado é aparece a mensagem do evento OnExit. No fechamento do formulário não chamo o método Free ou Release, somente o Close, pois é assim que tem ser.
Gostaria de saber como cancelo o evento OnExit pendente (ou os eventos, pois existem vários componentes) quando o usuário clica no botão Cancelar.
Jdteichert
Curtir tópico
+ 0
Responder
Posts
02/04/2004
Skaarj
Me deparei com esse problema ontem.. Fiz o seguinte:
Coloquei um TTimer com interval = 1;
[b:49ef3e7ae4]OnTimer[/b:49ef3e7ae4]
[b:49ef3e7ae4]OnEnter do componente que recebe o foco qndo o OnExit do exit é exec. [/b:49ef3e7ae4]
Isso fez com que se o foco for proveniente do Edit, volte a ele, senao.. execute o restante..
Espero q ajude.. Nao sei se era bm isso tb..
Coloquei um TTimer com interval = 1;
[b:49ef3e7ae4]OnTimer[/b:49ef3e7ae4]
var bVolta : boolean; begin . . . if Edit1.Focused then bVolta := true else bVolta := false;
[b:49ef3e7ae4]OnEnter do componente que recebe o foco qndo o OnExit do exit é exec. [/b:49ef3e7ae4]
if bVoltaCli then begin Edit1.SetFocus; bVoltaCli := false; end else begin . . .
Isso fez com que se o foco for proveniente do Edit, volte a ele, senao.. execute o restante..
Espero q ajude.. Nao sei se era bm isso tb..
Responder
Gostei + 0
02/04/2004
Marco Salles
Para Desconectar Temporariamente Um Evento Por Exemplo Num Edit
Edit1.OnExit:=Nil;
Para Recnectar o Evento:
Edit1.OnExit:=Edit1Exit;
Coloque as Instruções Onde Achar Conveniente e Depure o Programa
Edit1.OnExit:=Nil;
Para Recnectar o Evento:
Edit1.OnExit:=Edit1Exit;
Coloque as Instruções Onde Achar Conveniente e Depure o Programa
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)