Forum ViSiBLe

Bem Vindo
Se registrares neste fórum, podes fazer parte da nossa comunidade.Prezamos aqui pela participação ACTIVA de cada membro.


Atençao: Nao precisa Confirma a sua conta no hotmail (Basta Registrar e Começar a participar do forum.)
Precisamos de administradores e moderadores!! Clique Aqui!

Anuncio


    Criando um componente para validação de CPF

    Compartilhe

    MrViSiBLe
    Fundador ViSiBLe
    Fundador ViSiBLe

    Número de Mensagens : 3688
    Idade : 24
    Localização : Cuiaba
    Agradecimentos Agradecimentos : 864
    Data de inscrição : 10/12/2008

    Criando um componente para validação de CPF

    Mensagem por MrViSiBLe em 7/21/2010, 06:35

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

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

    [Você precisa estar registrado e conectado para ver esta imagem.]

    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.


    Citação:


    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.


    Citação:


    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:


    Citação:


    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:


    Citação:


    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.


    Citação:


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

    [Você precisa estar registrado e conectado para ver esta imagem.]

    Será exibida a seguinte janela.

    [Você precisa estar registrado e conectado para ver esta imagem.]

    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:


    Citação:


    procedure TForm1.Button1Click(Sender: TObject);
    begin
    CPF1.CPF := Edit1.Text;
    end;



    Citação:


    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.

    [Você precisa estar registrado e conectado para ver esta imagem.]

    Créditos:PlanetaDelphi x)
    Espero que gostem.
    3


    _________________
    MrViSiBLe Gosto? agradeça. clique em [b]+ Ta Ai do lado Olha  >>>>>Nao Custa Nada[/b]
    [Você precisa estar registrado e conectado para ver esta imagem.]
    [Você precisa estar registrado e conectado para ver esta imagem.]
    [Você precisa estar registrado e conectado para ver esta imagem.]
    [Você precisa estar registrado e conectado para ver esta imagem.]

    yulisane
    NOOB
    NOOB

    Número de Mensagens : 1
    Idade : 23
    Localização : Rio de Janeiro
    Agradecimentos Agradecimentos : 0
    Data de inscrição : 23/09/2010

    Re: Criando um componente para validação de CPF

    Mensagem por yulisane em 9/23/2010, 18:46

    to querendo um componente desses, mas uso o delphi 4 ..você poderia me ajudar ?
    é o mesmo procedimento, pra fazer esse componente usando delphi 4 ?

    MrViSiBLe
    Fundador ViSiBLe
    Fundador ViSiBLe

    Número de Mensagens : 3688
    Idade : 24
    Localização : Cuiaba
    Agradecimentos Agradecimentos : 864
    Data de inscrição : 10/12/2008

    Re: Criando um componente para validação de CPF

    Mensagem por MrViSiBLe em 9/23/2010, 21:51

    fixii veio nuna usei o 4 mais o componente que eu to usando e no delphi 7


    _________________
    MrViSiBLe Gosto? agradeça. clique em [b]+ Ta Ai do lado Olha  >>>>>Nao Custa Nada[/b]
    [Você precisa estar registrado e conectado para ver esta imagem.]
    [Você precisa estar registrado e conectado para ver esta imagem.]
    [Você precisa estar registrado e conectado para ver esta imagem.]
    [Você precisa estar registrado e conectado para ver esta imagem.]

    levin777
    NOOB
    NOOB

    Número de Mensagens : 1
    Idade : 29
    Agradecimentos Agradecimentos : 0
    Data de inscrição : 28/10/2010

    Re: Criando um componente para validação de CPF

    Mensagem por levin777 em 10/28/2010, 19:28

    Vlw estava precisando agora vou praticar para aprender a fazer e entender...

    Conteúdo patrocinado

    Re: Criando um componente para validação de CPF

    Mensagem por Conteúdo patrocinado Hoje à(s) 03:29


      Data/hora atual: 12/5/2016, 03:29