Mudando da seta para a barra de espaco em campos formatados?
Bem pessoal é o seguinte: tenho um campo pra por numeros de telefone, aqui os numeros residenciais podem ter 7 ou 8 numeros, fiz uma formataco assim !\(99\)9999-9999;1;_, nao seio se é o certo, mas funciona. Ex: (88)222 -2222 ou (88)2222-2222. Por default quando nao quero colocar o numero da maneira q coloquei no 1º exemplo tenho que usar a seta para a direita, mas gostaria de colocar isso na barra de espaco. Alguem sabe como fazer isso?? Ajuda ae!!!
Desde já agradeco!!!
lmcduarte2@yahoo.com.br
Desde já agradeco!!!
lmcduarte2@yahoo.com.br
Newbie
Curtidas 0
Respostas
Koplin
07/11/2003
Ao invés de uma máscara eu uso esta função no evento OnExit do edit/DBEdit :
procedure FormataTel(sender: TObject);
var a,b,s:string; i:integer; //configura formato do nº telef...
begin
If(sender is TEdit)or(sender is TDBEdit)Then With sender as tCustomEdit do Begin
s:=tCustomEdit(sender).Text;
s:=RTrim(s);
If(Copy(s,1,1)=´(´)or (Copy(s,5,1)=´-´)Then Exit;
If(s<>´´)Then Begin
i:= Length(s); //se o campo não estiver vazio ou
If not(i in[0,7..10])Then
If (Copy(s,1,1)<>´(´) then Begin // com tam. 9 ou 10 ...
ShowMessage(´Entrada incorreta´);
tCustomEdit(sender).Clear;
tCustomEdit(sender).SetFocus;
Exit;
end;
If i=7 Then Begin
a:= s;
Insert(´-´,a,4);
tCustomEdit(sender).Text:=a;
Exit;
end;
If i=8 Then Begin
a:= s;
Insert(´-´,a,5);
tCustomEdit(sender).Text:=a;
Exit;
end;
a:=Copy((s),1,2);
If i = 9 Then Begin
b:= a + ´-´ + Copy((s),3,3)+ ´-´;
a:=(s);
Delete(a,1,5);
tCustomEdit(sender).Text:=´(0)´ + b + a;
end else
If i = 10 Then Begin
b:= a + ´-´ + Copy((s),3,4)+ ´-´;
a:=(s);
Delete(a,1,6);
TCustomEdit(sender).Text:=´(0)´ + b + a;
end; end; end; end;
No evento faço: FormataTel(sender);
A vantagem é que ele mesmo define para voce se coloca codigo de área ou não e se tem 3 ou 4 digitos
Pode ser melhorado!
procedure FormataTel(sender: TObject);
var a,b,s:string; i:integer; //configura formato do nº telef...
begin
If(sender is TEdit)or(sender is TDBEdit)Then With sender as tCustomEdit do Begin
s:=tCustomEdit(sender).Text;
s:=RTrim(s);
If(Copy(s,1,1)=´(´)or (Copy(s,5,1)=´-´)Then Exit;
If(s<>´´)Then Begin
i:= Length(s); //se o campo não estiver vazio ou
If not(i in[0,7..10])Then
If (Copy(s,1,1)<>´(´) then Begin // com tam. 9 ou 10 ...
ShowMessage(´Entrada incorreta´);
tCustomEdit(sender).Clear;
tCustomEdit(sender).SetFocus;
Exit;
end;
If i=7 Then Begin
a:= s;
Insert(´-´,a,4);
tCustomEdit(sender).Text:=a;
Exit;
end;
If i=8 Then Begin
a:= s;
Insert(´-´,a,5);
tCustomEdit(sender).Text:=a;
Exit;
end;
a:=Copy((s),1,2);
If i = 9 Then Begin
b:= a + ´-´ + Copy((s),3,3)+ ´-´;
a:=(s);
Delete(a,1,5);
tCustomEdit(sender).Text:=´(0)´ + b + a;
end else
If i = 10 Then Begin
b:= a + ´-´ + Copy((s),3,4)+ ´-´;
a:=(s);
Delete(a,1,6);
TCustomEdit(sender).Text:=´(0)´ + b + a;
end; end; end; end;
No evento faço: FormataTel(sender);
A vantagem é que ele mesmo define para voce se coloca codigo de área ou não e se tem 3 ou 4 digitos
Pode ser melhorado!
GOSTEI 0
Sandra
07/11/2003
Ou, poderá usar também como máscara, !\(00\) c000-0000;1;_ na propriedade EditMask do TField.
Observe que o parâmetro 1, salva o campo com a máscara. Se optar por não salvar, utilize 0.
Observe que o parâmetro 1, salva o campo com a máscara. Se optar por não salvar, utilize 0.
GOSTEI 0