GARANTIR DESCONTO

Fórum MaskEdit quando todo preenchido focar outro campo automatico #345754

10/09/2007

0

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?


Jpauloss

Jpauloss

Responder

Posts

10/09/2007

Dbergkamps10

ola.
tente assim:
Edit1.MaxLength:=10;
if Edit1.GetTextLen=10 then
Perform(WM_NEXTDLGCTL,0,0);


espero ter ajudado


Responder

Gostei + 0

10/09/2007

Jpauloss

ola. tente assim:
Edit1.MaxLength:=10;
if Edit1.GetTextLen=10 then
Perform(WM_NEXTDLGCTL,0,0);
espero ter ajudado


Em que evento coloco esse código?


Responder

Gostei + 0

10/09/2007

Jpauloss

[quote:e9e249284c=´dbergkamps10´]ola. tente assim:
Edit1.MaxLength:=10;
if Edit1.GetTextLen=10 then
Perform(WM_NEXTDLGCTL,0,0);
espero ter ajudado


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?


Responder

Gostei + 0

10/09/2007

Martins

[quote:df1629aa52=´jpauloss´][quote:df1629aa52=´dbergkamps10´]ola. tente assim:
Edit1.MaxLength:=10;
if Edit1.GetTextLen=10 then
Perform(WM_NEXTDLGCTL,0,0);
espero ter ajudado


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.


Responder

Gostei + 0

10/09/2007

Jpauloss

[quote:3b89ff1ed8=´jpauloss´][quote:3b89ff1ed8=´jpauloss´][quote:3b89ff1ed8=´dbergkamps10´]ola. tente assim:
Edit1.MaxLength:=10;
if Edit1.GetTextLen=10 then
Perform(WM_NEXTDLGCTL,0,0);
espero ter ajudado


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.


Responder

Gostei + 0

10/09/2007

Jpauloss

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.


Responder

Gostei + 0

10/09/2007

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.


Responder

Gostei + 0

11/09/2007

Jpauloss

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.


Responder

Gostei + 0

11/09/2007

Martins

[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.


Responder

Gostei + 0

11/09/2007

Crskuca

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;


Responder

Gostei + 0

13/09/2007

Martins

Pronto uma solução interessante para o problema do colega.

Valew!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar