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]