Dica para Formatar número de telefone com 8 ou 9 dígitos, com ou sem DDD
28/02/2016
0
Após pesquisar e não encontrar uma solução eficiente, resolvi criar a função abaixo.
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);
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
+ 5
Responder
Post mais votado
Mais Posts
Clique aqui para fazer login e interagir na Comunidade :)