Como fazer com que o foco saia do MaskEdit ao final.
--> como fazer com que o foco saia do MaskEdit ao final da digitação.
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
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
Curtidas 0
Respostas
Draven
19/01/2004
Você já tentou usar um While... ou seja quando você estiver digitando os dados você ponde usar uma variável para contar..
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;
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
Paulo Silva
19/01/2004
Mas o problema, é que se a pessoa der um backspace, a variável não será decrementada... e com isso irá se perder....
Creio que há um solução mais prática,
Mas da mesma forma agradeço a ajuda, :wink:
Paulo.
Creio que há um solução mais prática,
Mas da mesma forma agradeço a ajuda, :wink:
Paulo.
GOSTEI 0
Fabio.hc
19/01/2004
Tente assim:
procedure TForm1.MaskEdit1Change(Sender: TObject); begin if Length(MaskEdit1.Text) = 8 then Edit1.SetFocus; end;
GOSTEI 0
Paulo Silva
19/01/2004
Não deu certo...
: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.
: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
Maicongabriel
19/01/2004
[quote:8711a46b12=´paulo silva´]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).[/quote:8711a46b12]
Ele já tentou Fabio! E não funciona mesmo!
Ele já tentou Fabio! E não funciona mesmo!
GOSTEI 0
Maicongabriel
19/01/2004
Bem, eu fiquei curiozo e fui ´Fuçar´...
Mascara do MaskEdit = !99/99/0000;1;_
No OnChange do MaskEdit coloque
Acho que é mais ou menos isso ai!
Onde ´Edit1.SetFocus;´ você troca pela sua função de tabulação.
:D
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
Fabio.hc
19/01/2004
Se a mascara do MaskEdit1 for:
!99/99/0000;1;_
então use esta rotina;
Ou
Se a mascara do MaskEdit1 for:
!99/99/0000;0;_
então use esta rotina;
!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
Paulo Silva
19/01/2004
Ae Fábio, agora sim deu certo. :D
Obrigado pela força,
E a todos que tentaram também!!!
:arrow: Abraços,
Paulo.
Obrigado pela força,
E a todos que tentaram também!!!
:arrow: Abraços,
Paulo.
GOSTEI 0
Fabio.hc
19/01/2004
Só esclarescendo:
A rotina acima funciona para a mascara do MaskEdit1:
!99/99/0000;0;_
e para a mascara do MaskEdit1:
!99/99/0000;1;_
Esta é mais uma dica.
Tente assim:
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
Maicongabriel
19/01/2004
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