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.


Jdteichert

Jdteichert

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


Responder

Gostei + 0

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

Aceitar