LANÇAMENTO! Curso de Delphi 2009, clique aqui e confira!

type
TCPF = class(TComponent)
private
FVerdadeiro: boolean;
protected
public
published
property Verdadeiro: boolean read FVerdadeiro write FVerdadeiro;
end;
Em seguida crie outra propriedade com o nome de CPF, ela será do tipo String. Essa propriedade irá ler a valor do atributo FCPF e ao escrever o método Verificar será executado.
published
property Verdadeiro: boolean read FVerdadeiro write FVerdadeiro;
property CPF: string read FCPF write Verificar;
end;
Após declarar essa propriedade pressione a combinação de teclas CTRL + SHIFT + C para ir até a implementação do método.
procedure TCPF.Verificar(const Value: string);
var
n, s1, s2, dv1, dv2: Integer;
NumTemp, caracter: string;
begin
FCPF:= Value;
NumTemp := '';
FVerdadeiro := false;
//Verifica se quantidade de caracteres correspondem
//aos digitos de um CPF
for n := 1 to 12 do
begin
caracter := copy(Value, n, 1);
If (caracter >= '0') and (caracter <= '9') then
NumTemp := NumTemp + caracter;
if caracter = '-' then
NumTemp := NumTemp + caracter
end;
if Length(NumTemp) <> 12 then
exit;
//Calcula somatória 1
S1 := 0;
for n := 1 to 9 do
s1 := s1 + (StrToInt(Value[n]) * n);
dv1 := (s1 mod 11) mod 10;
//Calcula somatória 2
s2 := 0;
for n := 2 to 9 do
s2 := s2 + (StrToInt(Value[n]) * (n-1));
s2 := s2 + (dv1 * 9);
dv2 := (s2 mod 11) mod 10;
if (dv1 = StrToInt(Value[11])) and (dv2 = StrToInt(Value[12])) then
FVerdadeiro := True
else
FVerdadeiro := False;
end;
Agora iremos implementar um evento para o componente.
published
property Verdadeiro: boolean read FVerdadeiro write FVerdadeiro;
property CPF: string read FCPF write Verificar;
property OnFalso: TNotifyEvent read FOnFalso write FOnFalso;
end;
Após a declaração pressiona CTRL + SHIFT + C.
//Compara digitos verificadores
if (dv1 = StrToInt(Value[11])) and (dv2 = StrToInt(Value[12])) then
FVerdadeiro := True
else
begin
FVerdadeiro := False;
if Assigned(FOnFalso) then
FOnFalso(Self);
end;
Salve a Unit e feche-a.
procedure TForm1.Button1Click(Sender: TObject); begin CPF1.CPF := Edit1.Text; end;No evento OnFalso do componente CPF1 coloque:
procedure TForm1.CPF1Falso(Sender: TObject);
begin
ShowMessage('CPF inválido!');
end;
Para testar o componente, compile o programa e digite um CPF no formato XXXXXXXXX-XX.
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009
LANÇAMENTO! Curso de Delphi 2009, clique aqui e confira!