Fórum Teclas ALT C #324171

24/06/2006

0

Olá, pessoal estou com o seguinte problema: tenho, no evento OnExit de um edit uma chamada para uma função que valida o conteudo do campo. Acontece que, quando eu utilizo ALT+C para o botão de cancelar e limpar os dados do form, o sistema passar pelo evendo OnExit, apresentando a informação que o campo tem conteudo obrigatorio. Quando eu pressiono com o mouse o botão isso não ocorre por existir uma rotina que trate disso. Queria saber como capturar as teclas ALT+C antes do evento OnExit do edit.
Obrigado.


Ghostrider

Ghostrider

Responder

Posts

24/06/2006

Marco Salles

Queria saber como capturar as teclas ALT+C antes do evento OnExit do edit.


Mais fácil do que capturar , seria no evento OnExit do edit acrescentar a instrução [b:e820fa340e]if not BtCancelar.Focused Then[/b:e820fa340e]. Ficando assim ;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
if not BtCancelar.Focused Then
  begin
 //Sua Rotina Normal
 end;
end;



Responder

Gostei + 0

24/06/2006

Ghostrider

Já coloquei, isso funciona quando voce clica sobre o Botão com o mouse. Quando utiliza ALT + a tecla de atalho do botão não dá certo.


Responder

Gostei + 0

24/06/2006

Marco Salles

Já coloquei, isso funciona quando voce clica sobre o Botão com o mouse. Quando utiliza ALT + a tecla de atalho do botão não dá certo.


amigo...o que deve estar ocorrendo e que voce esta mudando o foco dentro do seu codigo do botão cancelar ...Então antes de mais nada voce deve passar o foco para o botão cancelar e so depois atribuir o novo foco

[b:41ca251cbd]veja[/b:41ca251cbd]

procedure TForm1.Edit1Exit(Sender: TObject); 
begin 
if not BtCancelar.Focused Then 
  begin 
 //Sua Rotina Normal 
 end; 
end; 


procedure TForm1.BtcancelarClick(Sender: TObject);
begin
btcancelar.SetFocus;//passe o foco primeiro para o btcancelar
//sua rotina normal
OutroControle.SetFocus;
end;



Responder

Gostei + 0

25/06/2006

Dopi

Ola ghostrider,

Fazer validações no [i:2143e12109]OnExit[/i:2143e12109] dos componentes não é uma boa... pois sempre o usuário acha um jeito de tirar o foco do componente sem passar por ela...

Faça a validação antes de gravar no BD... e se vc detctar algum erro, vc muda o foco para o componente com problema e aborta a gravação... na verdade o Delphi já provê um ótimo mecanismo para isso... basta usar os ´Constrains´ no FieldsEditor


Responder

Gostei + 0

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

Aceitar