cara eu criei uma simples e generica...geralmente gosto de coisa generica q 
serve pra qualquer coisa ae criei uma funcao chamada mascara:
   
  function Mascara(Valor,Mascara : String) : String;
var
p : Byte;
resultado : String[40];
begin
if Valor = '' then
 begin
     exit;
 end;
for P := 1 to Length(Valor) do
 begin
     if Valor[P] in [',','.','/','-'] then
       delete(Valor,P,1);
 end;
for P := 1 to Length(Mascara) do
 begin
   if Mascara[p] <> '#' then
     begin
       Valor := Copy(Valor,1,P-1)+ Mascara[p] + Copy(Valor,P, Length(valor));
     end
 end;
Result := valor;
end;

   
  no evento OnExit de um edit ou qualquer outro  coloque assim
  //telefone
  edit1.text := mascara(edit1.text ,'(##)####-####');
  //cpf
  edit1.text := mascara(edit1.text,'###.###.###-##');
   
   
   
   
   
   
   
   
   
   
   
   
  

Rubem Nascimento da Rocha <[EMAIL PROTECTED]> escreveu:
          
Estou retificando parte do código da dica:

const
SinalMais = '+';
AbreParenteses = '(';
FechaParenteses = ')';
HifenTraco = '-';
SinalPonto = '.';

{$WRITEABLECONST ON}
MascaraTelefone : string = '0000\-0000;0;_';
MascaraTelefoneDDD : string = '\(00\)0000-0000;0;_';
MascaraTelefoneIntl : string = '\+00\-00\-0000\-0000;0;_';

MascaraCPF : string = '000\.000\.000\-00;0;_';
MascaraCNPJ : string = '00\.000\.000\/0000\-00;0;_';
{$WRITEABLECONST OFF}

TelefoneNulo = '999999999999';
CPFNulo = '99999999999';
CNPJNulo = '99999999999999';

{===================== FORMATAÇÃO DE TELEFONES ==============================}

function DesformataTelefone(const s: string): string;
begin
// Inicializa resultado
Result := s;

// Retira todos os tokens mais usados em telefones
Result := StringReplace(Result, SinalMais, EmptyStr, [rfReplaceAll]);
Result := StringReplace(Result, SinalPonto, EmptyStr, [rfReplaceAll]);
Result := StringReplace(Result, AbreParenteses, EmptyStr, [rfReplaceAll]);
Result := StringReplace(Result, FechaParenteses, EmptyStr, [rfReplaceAll]);
Result := StringReplace(Result, HifenTraco, EmptyStr, [rfReplaceAll]);

// Se telefone não tem somente números, retorna telefone nulo
if StrToIntDef(Result, -1) = -1 then
Result := TelefoneNulo;
end;

function FormataTelefone(const s: string): string;
begin
Result := DesformataTelefone(s);
if Length(Result)> 10 then
Result := FormatMaskText(MascaraTelefoneIntl, s)
else if Length(Result)> 8 then
Result := FormatMaskText(MascaraTelefoneDDD, s)
else if Length(Result) = 8 then
Result := FormatMaskText(MascaraTelefone, s);
end;

________________________________

To: delphi-br@yahoogrupos.com.br
From: [EMAIL PROTECTED]
Date: Sat, 23 Feb 2008 21:48:44 -0300
Subject: RES: [delphi-br] [DICA] Formatação de telefones, CPF e CNPJ

Prezado Rubem,

Vamos combinar: Cri-Cri somos eu e você, o Cara aí é chato demais e bota
chato nisso. Sem querer ofender Sr. João Morais....hehehehe.

Um grande abraço e parabéns por ter postado AQUI essa dica que vai ser de
grande utilidade para muitos de nós.

João Carlos

De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Joao Morais
Enviada em: sábado, 23 de fevereiro de 2008 18:24
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br] [DICA] Formatação de telefones, CPF e CNPJ

Rubem Nascimento da Rocha wrote:
>
> Confesso que na pressa na digitação do código, eu cometi uma tremenda
gafe,
> mas o que importa é que o código é eficiente e funciona! E tb espero que
vc
> tenha chegado a essa conclusão.

Exatamente.

> Se não chegou, é sinal de que tenho um desafeto!

Capaz. Não crio esse tipo de coisa, não me leva a lugar algum.

Agora, se aceitas um comentário, acho que as dicas ficariam bem em um
site. Enquanto aqui elas têm grande visibilidade, porém momentânea, ao
serem publicadas elas seriam indexadas e seriam encontradas para sempre.
Opinião pessoal.

> 2) Encontrei alguém mais cri-cri do que eu!

Concordo em parte.

--
Joao Morais

> ________________________________
>
> To: delphi-br@yahoogrupos.com.br 
> From: [EMAIL PROTECTED] 
> Date: Sat, 23 Feb 2008 15:59:39 -0300
> Subject: Re: [delphi-br] [DICA] Formatação de telefones, CPF e CNPJ
>
> Rubem Nascimento da Rocha wrote:
>> AbreAspas = '(';
>> FechaAspas = ')';
>
> Abre o quê?
>
> --
> Joao Morais
>

[As partes desta mensagem que não continham texto foram removidas]

__________________________________________________________
Veja mapas e encontre as melhores rotas para fugir do trânsito com o Live 
Search Maps!
http://www.livemaps.com.br/index.aspx?tr=true

                         

       
---------------------------------
Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! 

[As partes desta mensagem que não continham texto foram removidas]

Responder a