É comum fazermos uso do evento OnExit quando queremos validar o conteúdo de
um Edit. E essa pode ser uma boa prática quando necessitamos verificar o que foi
digitado apenas quando o usuário terminar de fazer a entrada de dados, como, por
exemplo, um Edit que vai receber o CPF ou CNPJ.
Ao colocarmos um código qualquer no evento OnExit ele sempre será executado
quando o usuário sair do Edit, o que acontece quando ele pressiona a tecla TAB,
clica com o mouse em um outro Edit ou pressiona um botão OK, por exemplo.
No entanto, existem algumas situações especiais em que o evento OnExit não é
gerado. Quer um exemplo? Você está no Edit e, ao invés de clicar no botão OK,
você pressiona as teclas ALT + O (considerando que o botão OK tem a tecla O como
atalho). É como se você tivesse pressionado o botão OK, porém, sem perder o foco
que está no Edit. Só mais um exemplo: Os botões do tipo SpeedButton não recebem
foco, então, mesmo que clique com o mouse sobre um SpeedButton, o foco
continuará no Edit e, conseqüentemente, o evento OnExit não será gerado.
E a solução?
A solução para esse pequeno inconveniente é simples. Basta você colocar o
seguinte código no evento OnClick do botão.
procedure TForm1.Button1Click(Sender: TObject);
begin
ActiveControl := nil;
...
end;
Com isso você força a saída de qualquer Edit ou outro componente que esteja
com o foco, gerando assim o evento OnExit.
PARTE II
PARTE II
Nenhum comentário:
Postar um comentário