 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
mr.solutions Aprendiz

Registrado: Terça-Feira, 2 de Setembro de 2008 Mensagens: 278
|
Enviada: Qua Mai 27, 2009 11:33 am Assunto: FORMATAR CNPJ E CPF NO MESMO EDIT |
|
|
Olá pessoal, eu sei que ja tem esse topico no site, umas das duvidas mais procuradas, o meu problema e o seguinte e uso uma função apenas para preencher os campos CNPJ/CPF na minha tabela
ou seja se for cliente CNPJ ele fica 00.000.000/0000-00 e se for CPF ele fica 000.000.000-00, bom até ai tudo bem...ele trabalha certinho mas na hora de verificar se o cpf´ou cnpj e valido ai nao funciona...o que quero colocar é que preciso validar os dois com essa formatação no mesmo edit...
eis a função que estou usando
function DeletaCaract(texto, excluir : string ) : string;
begin
while Pos(excluir, texto) > 0 do
Delete(texto, Pos(excluir, texto), 1);
result := texto;
end;
{formata CNPJ/CPF inserindo simbolos necessários}
Function Formata_CNPJ_CPF(Texto: String): String;
Begin
// Limpar simbolos padrões do CNPJ e CPF
Texto:=DeletaCaract(Texto,'-');
Texto:=DeletaCaract(Texto,'/');
Texto:=DeletaCaract(Texto,'.');
// 14 digitos significa CNPJ
If length(Texto)=14 then
begin
result :=
copy(Texto, 1, 2) + '.' +
copy(Texto, 3, 3) + '.' +
copy(Texto, 6, 3) + '/' +
copy(Texto, 9, 4) + '-' +
copy(Texto, 13, 2);
end;
// 11 digitos significa CPF
If length(Texto)=11 then
begin
result := copy(Texto, 1, 3) + '.' +
copy(Texto, 4, 3) + '.' +
copy(Texto, 7, 3) + '-' +
copy(Texto, 10, 2);
End;
{ excluir caractere especifico }
end;
e no evento onexit do EDIT para formatação estou usando assimmm.....
dm.table1.FieldByName('CPFCNPJ').AsString := Formata_CNPJ_CPF(dm.table1.FieldByName('CPFCNPJ').AsString);
ele formata correto...agora so falta verificar os dois se são validos...aguardo a ajuda...de vcs....
Att mr.solutions. |
|
| Voltar ao Topo |
|
 |
naldosouza Novato

Registrado: Terça-Feira, 22 de Julho de 2008 Mensagens: 17
|
Enviada: Qua Mai 27, 2009 12:02 pm Assunto: bem a maneira que eu uso é assim |
|
|
coloque um Combobox1 e um MaskEdit
no combobox1 coloque FISICA
JURIDICA
--------------------------------------------------------------------------------
function TestaCNPJ(const cCNPJ: string): boolean;
var
i, soma, mult: integer;
CGC: string;
begin
ChkCNPJ := false;
CGC := LimpaString(cCNPJ);
if Length(CGC) <14> 9 then mult := 2;
end;
mult := soma mod 11;
if mult <= 1 then mult := 0 else mult := 11 - mult;
if mult <CharToInt> 9 then mult := 2;
end;
mult := soma mod 11;
if mult <= 1 then mult := 0 else mult := 11 - mult;
ChkCNPJ := mult = CharToInt(CGC[14]);
end;
--------------------------------------------------------------
function TestaCpf( xCPF:String ):Boolean;
{Testa se o CPF é válido ou não}
Var
d1,d4,xx,nCount,resto,digito1,digito2 : Integer;
Check : String;
Begin
d1 := 0; d4 := 0; xx := 1;
for nCount := 1 to Length( xCPF )-2 do
begin
if Pos( Copy( xCPF, nCount, 1 ), '/-.' ) = 0 then
begin
d1 := d1 + ( 11 - xx ) * StrToInt( Copy( xCPF, nCount, 1 ) );
d4 := d4 + ( 12 - xx ) * StrToInt( Copy( xCPF, nCount, 1 ) );
xx := xx+1;
end;
end;
resto := (d1 mod 11);
if resto < 2 then
begin
digito1 := 0;
end
else
begin
digito1 := 11 - resto;
end;
d4 := d4 + 2 * digito1;
resto := (d4 mod 11);
if resto < 2 then
begin
digito2 := 0;
end
else
begin
digito2 := 11 - resto;
end;
Check := IntToStr(Digito1) + IntToStr(Digito2);
if Check <> copy(xCPF,succ(length(xCPF)-2),2) then
begin
Result := False;
end
else
begin
Result := True;
end;
end;
-----------------------------------------------------------------------------
if combobox1.Text='FISICA' then
begin
MaskEdit1.EditMask:='999.999.999-99;0;_';
MaskEdit1.Text:=DadoCPFCNPJ.ASString;
TestaCpf(MaskEdit1.Text);
abort;
end;
if combobox1.Text='JURIDICA' then
begin
MaskEdit1.EditMask:='99999999/9999-99;0;_';
MaskEdit1.Text:=DadoCPFCNPJ.ASString;
TestaCNPJ(MaskEdit1.Text);
abort;
end;
----------------------------------------------------------------- |
|
| Voltar ao Topo |
|
 |
mr.solutions Aprendiz

Registrado: Terça-Feira, 2 de Setembro de 2008 Mensagens: 278
|
Enviada: Qua Mai 27, 2009 12:21 pm Assunto: Re: bem a maneira que eu uso é assim |
|
|
| naldosouza escreveu: | coloque um Combobox1 e um MaskEdit
no combobox1 coloque FISICA
JURIDICA
--------------------------------------------------------------------------------
function TestaCNPJ(const cCNPJ: string): boolean;
var
i, soma, mult: integer;
CGC: string;
begin
ChkCNPJ := false;
CGC := LimpaString(cCNPJ);
if Length(CGC) <14> 9 then mult := 2;
end;
mult := soma mod 11;
if mult <= 1 then mult := 0 else mult := 11 - mult;
if mult <CharToInt> 9 then mult := 2;
end;
mult := soma mod 11;
if mult <= 1 then mult := 0 else mult := 11 - mult;
ChkCNPJ := mult = CharToInt(CGC[14]);
end;
--------------------------------------------------------------
function TestaCpf( xCPF:String ):Boolean;
{Testa se o CPF é válido ou não}
Var
d1,d4,xx,nCount,resto,digito1,digito2 : Integer;
Check : String;
Begin
d1 := 0; d4 := 0; xx := 1;
for nCount := 1 to Length( xCPF )-2 do
begin
if Pos( Copy( xCPF, nCount, 1 ), '/-.' ) = 0 then
begin
d1 := d1 + ( 11 - xx ) * StrToInt( Copy( xCPF, nCount, 1 ) );
d4 := d4 + ( 12 - xx ) * StrToInt( Copy( xCPF, nCount, 1 ) );
xx := xx+1;
end;
end;
resto := (d1 mod 11);
if resto < 2 then
begin
digito1 := 0;
end
else
begin
digito1 := 11 - resto;
end;
d4 := d4 + 2 * digito1;
resto := (d4 mod 11);
if resto < 2 then
begin
digito2 := 0;
end
else
begin
digito2 := 11 - resto;
end;
Check := IntToStr(Digito1) + IntToStr(Digito2);
if Check <> copy(xCPF,succ(length(xCPF)-2),2) then
begin
Result := False;
end
else
begin
Result := True;
end;
end;
-----------------------------------------------------------------------------
if combobox1.Text='FISICA' then
begin
MaskEdit1.EditMask:='999.999.999-99;0;_';
MaskEdit1.Text:=DadoCPFCNPJ.ASString;
TestaCpf(MaskEdit1.Text);
abort;
end;
if combobox1.Text='JURIDICA' then
begin
MaskEdit1.EditMask:='99999999/9999-99;0;_';
MaskEdit1.Text:=DadoCPFCNPJ.ASString;
TestaCNPJ(MaskEdit1.Text);
abort;
end;
----------------------------------------------------------------- |
vou testar |
|
| Voltar ao Topo |
|
 |
mr.solutions Aprendiz

Registrado: Terça-Feira, 2 de Setembro de 2008 Mensagens: 278
|
Enviada: Qua Mai 27, 2009 12:29 pm Assunto: Re: bem a maneira que eu uso é assim |
|
|
| naldosouza escreveu: | coloque um Combobox1 e um MaskEdit
no combobox1 coloque FISICA
JURIDICA
--------------------------------------------------------------------------------
function TestaCNPJ(const cCNPJ: string): boolean;
var
i, soma, mult: integer;
CGC: string;
begin
ChkCNPJ := false;
CGC := LimpaString(cCNPJ);
----------------------------------------------------------------- |
da um erro nesta linha |
|
| Voltar ao Topo |
|
 |
mr.solutions Aprendiz

Registrado: Terça-Feira, 2 de Setembro de 2008 Mensagens: 278
|
Enviada: Qua Mai 27, 2009 3:06 pm Assunto: Re: bem a maneira que eu uso é assim |
|
|
| mr.solutions escreveu: | | naldosouza escreveu: | coloque um Combobox1 e um MaskEdit
no combobox1 coloque FISICA
JURIDICA
--------------------------------------------------------------------------------
function TestaCNPJ(const cCNPJ: string): boolean;
var
i, soma, mult: integer;
CGC: string;
begin
ChkCNPJ := false;
CGC := LimpaString(cCNPJ);
----------------------------------------------------------------- |
da um erro nesta linha |
TENHO QUE CRIAR ALGUMA FUNÇÃO OU VARIAVEL NAS SECOES PRIVATE OU PUBLIC???? |
|
| Voltar ao Topo |
|
 |
valdoedri Profissional


Registrado: Segunda-Feira, 7 de Março de 2005 Mensagens: 523 Localização: Campo Grande MS
|
Enviada: Qua Mai 27, 2009 3:33 pm Assunto: |
|
|
Formatar CPF
| Código: | Function FormataCPF(Numero: String): String;
var
tmp,resultado: String;
indx, indx1: integer;
begin
if Length(Numero) < 10 Then
begin
result := '';
exit;
end;
for indx := 1 to Length(Numero) do
begin
if Numero[indx] in ['0'..'9'] Then
resultado := resultado + Numero[indx];
end;
if Length(Resultado) < 11 Then
resultado := StringOfChar('0', 11 - Length(Resultado)) + resultado;
tmp := Copy(resultado,1,3) + '.';
tmp := tmp + Copy(resultado,4,3) + '.';
tmp := tmp + Copy(resultado,7,3) + '-';
tmp := tmp + Copy(resultado,10,2);
Result := tmp;
end;
// Usar
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text := FormataCPF(edit1.text);
end; |
Formatar CNPJ
| Código: | Function FormataCNPJ(Numero: String): String;
var
tmp,resultado: String;
indx, indx1: integer;
begin
if Length(Numero) < 12 Then
begin
result := '';
exit;
end;
for indx := 1 to Length(Numero) do
begin
if Numero[indx] in ['0'..'9'] Then
resultado := resultado + Numero[indx];
end;
if Length(Resultado) < 14 Then
resultado := StringOfChar('0', 14 - Length(Resultado)) + resultado;
tmp := Copy(resultado,1,2) + '.';
tmp := tmp + Copy(resultado,3,3) + '.';
tmp := tmp + Copy(resultado,6,3) + '/';
tmp := tmp + Copy(resultado,9,4) + '-' + Copy(resultado,13,2);
Result := tmp;
end;
// Usar
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text := FormataCNPJ(edit1.text);
end; |
T+ _________________ Tudo posso Naquele que me fortalece ! ! ! |
|
| Voltar ao Topo |
|
 |
mr.solutions Aprendiz

Registrado: Terça-Feira, 2 de Setembro de 2008 Mensagens: 278
|
Enviada: Qua Mai 27, 2009 6:20 pm Assunto: |
|
|
| valdoedri escreveu: | Formatar CPF
| Código: | Function FormataCPF(Numero: String): String;
var
tmp,resultado: String;
indx, indx1: integer;
begin
if Length(Numero) < 10 Then
begin
result := '';
exit;
end;
for indx := 1 to Length(Numero) do
begin
if Numero[indx] in ['0'..'9'] Then
resultado := resultado + Numero[indx];
end;
if Length(Resultado) < 11 Then
resultado := StringOfChar('0', 11 - Length(Resultado)) + resultado;
tmp := Copy(resultado,1,3) + '.';
tmp := tmp + Copy(resultado,4,3) + '.';
tmp := tmp + Copy(resultado,7,3) + '-';
tmp := tmp + Copy(resultado,10,2);
Result := tmp;
end;
// Usar
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text := FormataCPF(edit1.text);
end; |
Formatar CNPJ
| Código: | Function FormataCNPJ(Numero: String): String;
var
tmp,resultado: String;
indx, indx1: integer;
begin
if Length(Numero) < 12 Then
begin
result := '';
exit;
end;
for indx := 1 to Length(Numero) do
begin
if Numero[indx] in ['0'..'9'] Then
resultado := resultado + Numero[indx];
end;
if Length(Resultado) < 14 Then
resultado := StringOfChar('0', 14 - Length(Resultado)) + resultado;
tmp := Copy(resultado,1,2) + '.';
tmp := tmp + Copy(resultado,3,3) + '.';
tmp := tmp + Copy(resultado,6,3) + '/';
tmp := tmp + Copy(resultado,9,4) + '-' + Copy(resultado,13,2);
Result := tmp;
end;
// Usar
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text := FormataCNPJ(edit1.text);
end; |
T+ |
obrigado pela atenção de todos vcs...
a primeira dica deu erro em uma linha a qual ja mostrei em cima...
essa outra função que o nosso amigo mandou ela funciona perfeitamente...so que não valida os campos, apenas preenche como é p preencher e é necessario um dbedit para CPF e um para CNPJ...
certo, eu quero validar CNPJ/CPF no mesmo DBedit...sendo que a formatação eu tenho ,.... Preciso verificar se são válidos...os dois no mesmo dbedit ou edit |
|
| Voltar ao Topo |
|
 |
mr.solutions Aprendiz

Registrado: Terça-Feira, 2 de Setembro de 2008 Mensagens: 278
|
Enviada: Seg Jun 22, 2009 3:15 pm Assunto: |
|
|
| ola pessoal ninguem tem nenhum exemplo não??? |
|
| Voltar ao Topo |
|
 |
Tusa Novato

Registrado: Sábado, 6 de Março de 2004 Mensagens: 47
|
Enviada: Qui Ago 27, 2009 8:41 pm Assunto: Re: FORMATAR CNPJ E CPF NO MESMO EDIT |
|
|
Como faço para usar uma function.
Em qual evento devo incluir. |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|