Buscar

Criando componente para validação de CPF

nome

Jakson Wendt

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

Criando componente para validação de CPF

Antes de tudo, precisamos entender que componentes são objetos que possuem propriedades e eventos. Um dos principais benefícios de criarmos componentes é a reutilização de código, ou seja, uma determinada rotina pode ser usada em muitos sistemas desenvolvidos.

Vamos usar como exemplo, os botões que utilizamos. Eles são aplicados praticamente em todos os sistemas e não precisamos nos preocuparmos em criá-los (do ponto de vista da existência em si, pois são objetos já prontos).

No exemplo a seguir, iremos criar um componente que será usado na validação de CPFs.

Siga os seguintes passos:

1º) No menu Component, escolha a opção New Component.

2º) Será exibida a seguinte caixa de diálogo:



Ancestor type: Sempre que um componente é construído, a criação é baseada em um componente ancestral, ou seja, ele deverá herdar características de um componente existente. Para esse exemplo, selecione TComponent. Essa classe possui as propriedades e métodos necessários a quaisquer componentes.

Class Name: O nome da nova classe (Class Name) será TCPF, geralmente é padronizado o primeiro caractere com a letra “T”.

Em Pallete Page podemos escolher em qual paleta de componentes nosso novo componente está disponível.

Em Unit file name pode ser definido o local onde será criada a Unit do componente.

Pressione o Botão OK.

Será exibido o código fonte de seu componente. Note que automaticamente foi criada uma rotina chamada Register, essa rotina é padrão em todos os componentes. Ela permite que esse novo componente (TCPF) seja registrado na paleta especificada (Samples).

Vamos criar uma nova propriedade para esse componente. Essa nova propriedade será do tipo Boolean (Verdadeiro / Falso) e o nome dela será Verdadeiro. Ela vai ler os dados do atributo FVerdadeiro e também vai gravar os dados no atributo FVerdadeiro. Após terminar a sua declaração pressione a combinação de teclas CTRL + SHIFT + C, então o atributo FVerdadeiro será criado.

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.

Faça a seguinte implementação para o método Verificar:

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.

Acrescente a seguinte instrução ao código do seu 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.

Como ultimo passo na definição do nosso evento, precisamos determinar em que ponto do programa esse evento será executado.

Em nosso exemplo, ele será executado quando a propriedade FVerdadeiro torna-se falsa. Quando isso ocorrer o componente deverá verificar quais são as instruções presentes no evento OnFalso e executá-las.

Faça a alteração a seguir no código fonte.

  //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.

Instalando o componente

Para instalar o componente vá até o menu Componente / Install Component. Em Unit File name selecione a unit do componente criado anteriormente. E clique em Ok.



Será exibida a seguinte janela.



Clique sobre o botão Compile e pronto seu componente está instalado. Obs. Caso o código contenha erros, o erro será exibido em código fonte nesse momento.

Testando o componente

Coloque em um formulário um TEdit, um TButton e o componente TCPF (Samples). No onclick do botão, coloque:

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.



Publicidade

Vote no artigo




Quantidade de votos: 2 votos
Aceitação: 20%


Detalhes do artigo

Categoria: Componentes
Adicionado dia: 28/09/09
Por: Jakson Wendt
Visualizado: 13661 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009