Fórum Ajuda com uma função! #279582

29/04/2005

0

Amigos, tenho uma função que pega as teclas Key_Press de todos os Forms meus, fiz uma função que todos os OnKeyPress de TODOS os Forms meus acessam ela, eis meu código:

function Key_Press(Key: Char): Char;
begin
  with Screen.ActiveForm do begin
    Key := AnsiUpperCase(Key)[Length(Key)];
    if (Key = 13) then begin
      Key := 0;
      Perform(Wm_NextDlgCtl, 0, 0);
    end;
    if (Key = 27) then begin
      Key := 0;
      try
        if (FindComponent(´BitBtnCancelar´) <> nil) and (TBitBtn(FindComponent(´BitBtnCancelar´)).Enabled) then
          TBitBtn(FindComponent(´BitBtnCancelar´)).Click
        else
          Close;
      except
        Close;
      end;
    end;
    Result := Key;
  end;
end;


Meu problema está da seguinte maneira...

Todos os meus Forms são MDIChild, e todos no OnClose estão como [b:179ea83147]Action := caFree;[/b:179ea83147]

Meu problema, é que por exemplo, tenho o Form1 que chamo o Form2, ou seja, 2 Forms MDIChild, e quando eu aperto a tecla ESC [b:179ea83147]muito rápido[/b:179ea83147], dá erro de exception... se eu apertar devagar, não dá este erro!

Pois bem... acho que está dando este erro, pois está tentando dar um Close, num Form que já foi fechado... mas, como vou arrumar isso? pois se eu debugar, ele não dá o erro, pois não tem como eu apertar o ESC muito rápido.. :)

Bem pessoal.. acho que expliquei o meu problema.. que tenho que concordar é [b:179ea83147]muito louco!!!!![/b:179ea83147]

Alguem sabe como posso solucionar isso? Ou melhorar minha função?


Desde já agradeço

[]s


Titanius

Titanius

Responder

Posts

30/04/2005

Eduprp

Ola colega

Bem não entendi muito bem o que vc quer fazer, uma vez que é difícil que o usuário fique teclando esc muito rapidamente, mas vc pode colocar um sleep(500) na função quando a tecla pressionada for esc.
Sim vai causar uma pausa e demorar a executar mas isso simularia o pressionamento mais lento do esc.
Não sei se é a melhor solução mas acho que daria certo.

Eduardo Pereira


Responder

Gostei + 0

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

Aceitar