MaskEdit quando todo preenchido focar outro campo automatico
Tenho Um MaskEdit e queria quando estivesse todo preenchido já focasse o campo seguinte. Tem como fazer isso?
No caso do MaskEdit preenchido teria como dar um SetFocus para o campo seguinte?
No caso do MaskEdit preenchido teria como dar um SetFocus para o campo seguinte?
Jpauloss
Curtidas 0
Respostas
Dbergkamps10
10/09/2007
ola.
tente assim:
espero ter ajudado
tente assim:
Edit1.MaxLength:=10; if Edit1.GetTextLen=10 then Perform(WM_NEXTDLGCTL,0,0);
espero ter ajudado
GOSTEI 0
Jpauloss
10/09/2007
ola.
tente assim:
espero ter ajudado
Edit1.MaxLength:=10; if Edit1.GetTextLen=10 then Perform(WM_NEXTDLGCTL,0,0);
Em que evento coloco esse código?
GOSTEI 0
Jpauloss
10/09/2007
[quote:e9e249284c=´dbergkamps10´]ola.
tente assim:
espero ter ajudado
Edit1.MaxLength:=10; if Edit1.GetTextLen=10 then Perform(WM_NEXTDLGCTL,0,0);
Em que evento coloco esse código?[/quote:e9e249284c]
Coloquei assim:
cod.MaxLength:=9; if cod.GetTextLen=9 then descricao.SetFocus;
Mas quando digito o primeiro número ele já pula para o edit ´descricao´.
Que faço?
GOSTEI 0
Martins
10/09/2007
[quote:df1629aa52=´jpauloss´][quote:df1629aa52=´dbergkamps10´]ola.
tente assim:
espero ter ajudado
Edit1.MaxLength:=10; if Edit1.GetTextLen=10 then Perform(WM_NEXTDLGCTL,0,0);
Em que evento coloco esse código?[/quote:df1629aa52]
Coloquei assim:
cod.MaxLength:=9; if cod.GetTextLen=9 then descricao.SetFocus;
Mas quando digito o primeiro número ele já pula para o edit ´descricao´.
Que faço?[/quote:df1629aa52]
Você colocou esse código em qual evento? No Onchange?
Acho q vc deve fazer a verificação no evento OnChange do componente OK!
Bons códigos.
GOSTEI 0
Jpauloss
10/09/2007
[quote:3b89ff1ed8=´jpauloss´][quote:3b89ff1ed8=´jpauloss´][quote:3b89ff1ed8=´dbergkamps10´]ola.
tente assim:
espero ter ajudado
Edit1.MaxLength:=10; if Edit1.GetTextLen=10 then Perform(WM_NEXTDLGCTL,0,0);
Em que evento coloco esse código?[/quote:3b89ff1ed8]
Coloquei assim:
cod.MaxLength:=9; if cod.GetTextLen=9 then descricao.SetFocus;
Mas quando digito o primeiro número ele já pula para o edit ´descricao´.
Que faço?[/quote:3b89ff1ed8]
Você colocou esse código em qual evento? No Onchange?
Acho q vc deve fazer a verificação no evento OnChange do componente OK!
Bons códigos.[/quote:3b89ff1ed8]
Coloquei no OnChange mesmo e deu esse problema. Está pulando quando digito o primeiro ele já pula pra o edit seguinte.
GOSTEI 0
Jpauloss
10/09/2007
O problema são os pontos da máscara. Fiz um teste sem os pontos e pegou legal.
Vocês tem alguma ideia?
A máscara ta assim: 9.9.9.9.9
No primeiro número que é digitado já pula para o outro edit.
Vocês tem alguma ideia?
A máscara ta assim: 9.9.9.9.9
No primeiro número que é digitado já pula para o outro edit.
GOSTEI 0
Dbergkamps10
10/09/2007
ola,
coloque o lenght do edit contando com os pontos da mascara. Se for:
9.9.9.9.9, não coloque 5 e sim 9.
captou?
espero ter ajudado.
coloque o lenght do edit contando com os pontos da mascara. Se for:
9.9.9.9.9, não coloque 5 e sim 9.
captou?
espero ter ajudado.
GOSTEI 0
Jpauloss
10/09/2007
ola,
coloque o lenght do edit contando com os pontos da mascara. Se for:
9.9.9.9.9, não coloque 5 e sim 9.
captou?
espero ter ajudado.
Já fia o teste com 5 e com 9, da no mesmo.
GOSTEI 0
Martins
10/09/2007
[quote:f90b45dc63=´dbergkamps10´]ola,
coloque o lenght do edit contando com os pontos da mascara. Se for:
9.9.9.9.9, não coloque 5 e sim 9.
captou?
espero ter ajudado.
Já fia o teste com 5 e com 9, da no mesmo.[/quote:f90b45dc63]
Do jeito q está não vai funcionar mesmo, verifiquei e veja q o tamanho dessa mascara será sempre 9, mesmo q vc não a preencha ela terá esse tamanho os caracteres digitados são colocados no lugar do _.
Faça um teste.
ShowMessage( IntToStr( MaskEdit1.GetTextLen ) );
Acho q vc deve procurar uma outra maneira de fazer isso.
GOSTEI 0
Crskuca
10/09/2007
Acho que vou conseguir resolver o seu problema casa nao tenha resolvido.
Eu uso uma funcao para todas as mascaras.
function MontaMascara(aux:string; Tipo:Integer ):string;
begin
case tipo of
1:begin //monta a mascara de telefone (00)8888-9999
case length(AUX) of
1:AUX:=´(´+AUX;
3:AUX:=aux+´)´;
8:AUX:=aux+´-´;
end;
end;
2:begin // monta a mascara do CPF 999.999.999-99
case length(AUX) of
3:AUX:=AUX+´.´;
7:AUX:=aux+´.´;
11:AUX:=aux+´-´;
end;
end;
3:begin // monta a mascara do CGC 00.999.999/9999-99
case length(AUX) of
2:AUX:=AUX+´.´;
6:AUX:=aux+´.´;
10:AUX:=aux+´/´;
15:AUX:=aux+´-´;
end;
end;
4:begin // monta a mascara do CEP 04412-090
case length(AUX) of
5:AUX:=AUX+´-´;
end;
END;
END;
RESULT:=AUX;
END;
procedure TfrmCliente.ClienteCgcCpfChange(Sender: TObject);
begin
if drgPessoa.ItemIndex = 0 then
begin
TDBEDIT(SENDER).Text:=MontaMascara(TDBEdit(SENDER).Text,2); //monta a mascara
TDBEdit(Sender).SelStart := MaxInt; // RETORNA O CURSOR NO LUGAR CERTO
TDBEdit(SENDER).MaxLength:=14; //tamanho maximo do campo
if TDBEdit(SENDER).GetTextLen=14 then Perform(WM_NEXTDLGCTL,0,0);
end
else
begin
TDBEDIT(SENDER).Text:=MontaMascara(TDBEdit(SENDER).Text,3); //monta a mascara
TDBEdit(Sender).SelStart := MaxInt; // RETORNA O CURSOR NO LUGAR CERTO
TDBEdit(SENDER).MaxLength:=18; //tamanho maximo do campo
if TDBEdit(SENDER).GetTextLen=18 then Perform(WM_NEXTDLGCTL,0,0);
end;
end;
Eu uso uma funcao para todas as mascaras.
function MontaMascara(aux:string; Tipo:Integer ):string;
begin
case tipo of
1:begin //monta a mascara de telefone (00)8888-9999
case length(AUX) of
1:AUX:=´(´+AUX;
3:AUX:=aux+´)´;
8:AUX:=aux+´-´;
end;
end;
2:begin // monta a mascara do CPF 999.999.999-99
case length(AUX) of
3:AUX:=AUX+´.´;
7:AUX:=aux+´.´;
11:AUX:=aux+´-´;
end;
end;
3:begin // monta a mascara do CGC 00.999.999/9999-99
case length(AUX) of
2:AUX:=AUX+´.´;
6:AUX:=aux+´.´;
10:AUX:=aux+´/´;
15:AUX:=aux+´-´;
end;
end;
4:begin // monta a mascara do CEP 04412-090
case length(AUX) of
5:AUX:=AUX+´-´;
end;
END;
END;
RESULT:=AUX;
END;
procedure TfrmCliente.ClienteCgcCpfChange(Sender: TObject);
begin
if drgPessoa.ItemIndex = 0 then
begin
TDBEDIT(SENDER).Text:=MontaMascara(TDBEdit(SENDER).Text,2); //monta a mascara
TDBEdit(Sender).SelStart := MaxInt; // RETORNA O CURSOR NO LUGAR CERTO
TDBEdit(SENDER).MaxLength:=14; //tamanho maximo do campo
if TDBEdit(SENDER).GetTextLen=14 then Perform(WM_NEXTDLGCTL,0,0);
end
else
begin
TDBEDIT(SENDER).Text:=MontaMascara(TDBEdit(SENDER).Text,3); //monta a mascara
TDBEdit(Sender).SelStart := MaxInt; // RETORNA O CURSOR NO LUGAR CERTO
TDBEdit(SENDER).MaxLength:=18; //tamanho maximo do campo
if TDBEdit(SENDER).GetTextLen=18 then Perform(WM_NEXTDLGCTL,0,0);
end;
end;
GOSTEI 0
Martins
10/09/2007
Pronto uma solução interessante para o problema do colega.
Valew!!!
Valew!!!
GOSTEI 0