Teclas ALT C
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.
Obrigado.
Ghostrider
Curtidas 0
Respostas
Marco Salles
24/06/2006
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;
GOSTEI 0
Ghostrider
24/06/2006
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.
GOSTEI 0
Marco Salles
24/06/2006
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;
GOSTEI 0
Dopi
24/06/2006
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
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
GOSTEI 0