Fórum Como fazer com que o foco saia do MaskEdit ao final. #207442
19/01/2004
0
Eu tenho um maskedit com máscara de data (__/__/____). Preciso que caia em um edit quando ele for todo preenchido sem usar enter ou tab.
Eu tentei usar a função Length para fazer a verificação, porém não funcionou pois o Length já de cara já contava 10... (contou os caracteres da máscara).
Preciso de ajuda,
Grato.
Paulo
Paulo Silva
Curtir tópico
+ 0Posts
19/01/2004
Draven
Enquanto a variável não chegar a dez ele continua digitando, se chegou a dez o foco sai do campo, e claro que isso é feito no evento Keypress
var Cont : integer;
cont := 0;
while cont <> 10 do
begin
cont := cont + 1;
end;
edit1.setfocus;
Gostei + 0
19/01/2004
Paulo Silva
Creio que há um solução mais prática,
Mas da mesma forma agradeço a ajuda, :wink:
Paulo.
Gostei + 0
19/01/2004
Fabio.hc
procedure TForm1.MaskEdit1Change(Sender: TObject); begin if Length(MaskEdit1.Text) = 8 then Edit1.SetFocus; end;
Gostei + 0
19/01/2004
Paulo Silva
:arrow: Como disse na primeira mensagem, se fizer isso ele conta no Length 10 caracteres logo de cara... ele já considera a máscara como caracter digitado.
Mas agradeço você também pela ajuda,
Caso alguém tenha a solução favor postar,
No aguardo, e quebrando a cabeça,
Paulo.
Gostei + 0
19/01/2004
Maicongabriel
Ele já tentou Fabio! E não funciona mesmo!
Gostei + 0
19/01/2004
Maicongabriel
Mascara do MaskEdit = !99/99/0000;1;_
No OnChange do MaskEdit coloque
if Length(Trim(MaskEdit1.Text)) = 10 then begin try StrToDate(MaskEdit1.Text); Edit1.SetFocus; except showmessage(´Data inválida!´); end; end;
Acho que é mais ou menos isso ai!
Onde ´Edit1.SetFocus;´ você troca pela sua função de tabulação.
:D
Gostei + 0
19/01/2004
Fabio.hc
!99/99/0000;1;_
então use esta rotina;
procedure TForm5.MaskEdit1Change(Sender: TObject); var data:string; begin Data:=trim(copy(MaskEdit1.Text,7,4)); if Length(data) = 4 then Edit1.SetFocus; end;
Ou
Se a mascara do MaskEdit1 for:
!99/99/0000;0;_
então use esta rotina;
procedure TForm5.MaskEdit1Change(Sender: TObject); var data:string; begin Data:=trim(copy(MaskEdit1.Text,5,4)); if Length(data) = 4 then Edit1.SetFocus; end;
Gostei + 0
19/01/2004
Paulo Silva
Obrigado pela força,
E a todos que tentaram também!!!
:arrow: Abraços,
Paulo.
Gostei + 0
19/01/2004
Fabio.hc
procedure TForm1.MaskEdit1Change(Sender: TObject); begin if Length(MaskEdit1.Text) = 8 then Edit1.SetFocus; end;
A rotina acima funciona para a mascara do MaskEdit1:
!99/99/0000;0;_
e para a mascara do MaskEdit1:
!99/99/0000;1;_
procedure TForm1.MaskEdit1Change(Sender: TObject); begin if Length(trim(MaskEdit1.Text)) = 10 then Edit1.SetFocus; end;
Esta é mais uma dica.
Gostei + 0
19/01/2004
Maicongabriel
procedure TForm1.MaskEdit1Change(Sender: TObject); begin if Length(trim(MaskEdit1.Text)) = 10 then Edit1.SetFocus; end;
Eu postei esse mesma dica acima, porem com um bloco ´try except end´ dentro, validando a data !
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)