Fórum Dica para Formatar número de telefone com 8 ou 9 dígitos, com ou sem DDD #547091
28/02/2016
0
Ela permite formatar números com 8 ou 9 dígitos, com ou sem o DDD, e prevê também a possibilidade do usuário digitar o "0" no início e código da operadora.
Para usar, basta chamar no OnExit do Edit/DBEdit do telefone.
Ex: EditTelefone.Text := FormatarTelefone (EditTelefone.Text);
function FormatarTelefone(Telefone : String):String;
function SomenteNumero(snum : String) : String;
VAR s1, s2: STRING;
i: Integer;
BEGIN
s1 := snum;
s2 := '';
FOR i := 1 TO Length(s1) DO
IF s1[i] IN ['0'..'9'] THEN
s2 := s2 + s1[i];
result := s2;
End;
var sTel : String;
bZero : Boolean;
iDigitos : Integer;
begin
//Obs: mascara prevê tratamento apenas para números brasileiros
//Obs2: Esta função não leva em conta o código do país (Ex: 55, ou +55)
sTel := SomenteNumero(Telefone); //Remove qualquer formatação que o usuário possa ter colocado.
if sTel='' then
Result := ''
else
begin
if sTel[1]='0' then //Verifica se foi adicionado o 0 no início do número
begin
bZero:= True;
sTel := Trim( copy(sTel,2,Length(sTel)) ); //Remove para fazer a formatação depois adiciona
end
else
bZero := False;
iDigitos := Length(sTel);
//Formata de acordo com a quantidade de números encontrados.
case iDigitos of
8 : Result := FormatMaskText('9999-9999;0;_',sTel); //8 digitos SEM DDD (ex: 34552318)
9 : Result := FormatMaskText('9 9999-9999;0;_',sTel); //9 digitos SEM DDD (ex: 991916889)
10 : Result := FormatMaskText('(99) 9999-9999;0;_',sTel); //8 Digitos (convencional, ex: 7734552318)
11 : Result := FormatMaskText('(99) 9 9999-9999;0;_',sTel); //9 Digitos (novos números, ex: 77991916889)
12 : Result := FormatMaskText('99(99)9999-9999;0;_',sTel); //Se foram 12 digitos possívelmente digitou a operadora também
13 : Result := FormatMaskText('99(99)9 9999-9999;0;_',sTel); //Se foram 13 digitos possívelmente digitou a operadora também
else
Result := Telefone; //Mantém na forma que o usuário digitou
end;
if bZero then //Para ficar com a preferência do usuário, se ele digitou o "0" eu mantenho.
Result := '0'+Result;
end;
end;
Maicon Saraiva
Curtir tópico
+ 5Post mais votado
18/10/2019
Parabéns!
Amaury Pereira
Gostei + 1
Mais Posts
02/11/2020
Pedro
Gostei + 0
05/10/2021
Felipe Pinheiro
Obrigado por compartilhar.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)