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:
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
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
Curtir tópico
+ 0
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
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
Clique aqui para fazer login e interagir na Comunidade :)