Onde validar CPF

Delphi

14/08/2012

Oi galera, eu vi na internet e até no site da DevMedia umas funções pra validar CPF e CNPJ, até ai tudo bem, mas eu fiquei na dúvida onde geralmente colocamos estas funções?

Por exemplo, como eu valido o cpf no meu dbedit44?

Obrigada
Carla Batista

Carla Batista

Curtidas 0

Respostas

Deivison Melo

Deivison Melo

14/08/2012

No evento OnValidate...
GOSTEI 0
Bruno Leandro

Bruno Leandro

14/08/2012

voce pode colocar no OnExit

ai caso nao seja valido setar o focus para o componente exemplo

procedure Tform.dbedit1Exit(Sender: TObject);
begin
if not(validaCPF(dbedit1.text)) then
begin
showmessage(cpf invalido);
dbedit1.setfocus;
end;
end;
GOSTEI 0
Carla Batista

Carla Batista

14/08/2012

Oi Deivison, onde fica este evento? Obrigada.
GOSTEI 0
Carla Batista

Carla Batista

14/08/2012

Oi Bruno, sua dica funcionou por aqui, mas fiquei muito curiosa o que é o onValidate?

Obrigada mesmo!
GOSTEI 0
Marco Salles

Marco Salles

14/08/2012

este evento é do field ... Caso vc o tenha definido

quando vc da duplo click no DataSet (clientdataset , Table , Query ..etc...)

Esses objetos tem Eventos e para acessa-los vc tem que clicar seu dataset e no seu
Editor de Fields , selecionar o Field que vc quer (no caso o CNPJ) e no Objecto Inspector
dar duplo clique no evento OnValidate

Porém particularmente tanto o evento onexit quanto o evento Validate podem conduzir a resultados
insatisfatório se não forem realizados rotinas de retaguarda . Por exemplo , vc colocar o codigo
no onexit e ai clica em um controle que não recebe o foco (um spedButon) por exemplo que deveria executar
tla codigo somente se o CNPJ estivesse correto . Porém como o SppedButton não recebe o foco , o foco continua
não é movido e independemente se o CNPJ estoer correto ou não o código passa a ser executado

Siada para isto tem , so estou alertando que requer atenção e cuidados e testes quando se utiliza POE para
realizar tarefas importantes no Sistema

Modo sofisticado e certo para Validações é de longe CustomAtributos , porém isto ja é uma outra história

[]sds
GOSTEI 0
Carla Batista

Carla Batista

14/08/2012

Oi Marco, agora entendi, por isso eu não achei, estava procurando no form e até mesmo no dbedit :(

Quando coloco este tipo de evento nos filds fica lento ou não?

Eu fiz no onexit do dbedit6 funcionou, qual é o melhor ou o mais correto?

Obrigada pela ajuda!!!
GOSTEI 0
Marco Salles

Marco Salles

14/08/2012

Quanto a lentidão eu desconheço qq diretriz neste sentido . Portanto minha opinião aqui que é irredudante

Quanto a ser mais correto , todos dois são corretos desde que vc mantenha cuidados . Como qualquer programação
Orientada a eventos POE, é necessário mais teste para detectar possiveis situações de comportamento do Usuário
Como eu disse para vc , No Onexit ele valida se o evento for disparado , Mas se tiver alguma tecla de atalho que
Comita os dados sem Mudar o Foco ??? Da mesma forma no Onvalidate tb tem alguns incovenientes .São situações que
vc deve testar antes de homologar o seu sistema .

Ha outras forma tb , no evento Beforepost , beforeEdit do DataSet tb (De modo simples a que eu prefiro) caso o CNPJ for inválido , ele aborta a operação e comunica . Outra forma é utilizando o Customatributtes , mas como eu disse ,é um conceito mais aplicado a POO.

[]sds
GOSTEI 0
Marco Salles

Marco Salles

14/08/2012

Quanto a lentidão eu desconheço qq diretriz neste sentido . Portanto minha opinião aqui que é irredudante

Quanto a ser mais correto , todos dois são corretos desde que vc mantenha cuidados . Como qualquer programação
Orientada a eventos POE, é necessário mais teste para detectar possiveis situações de comportamento do Usuário
Como eu disse para vc , No Onexit ele valida se o evento for disparado , Mas se tiver alguma tecla de atalho que
Comita os dados sem Mudar o Foco ??? Da mesma forma no Onvalidate tb tem alguns incovenientes .São situações que
vc deve testar antes de homologar o seu sistema .

Ha outras forma tb , no evento Beforepost , beforeEdit do DataSet tb (De modo simples a que eu prefiro) caso o CNPJ for inválido , ele aborta a operação e comunica . Outra forma é utilizando o Customatributtes , mas como eu disse ,é um conceito mais aplicado a POO.

[]sds
GOSTEI 0
Carla Batista

Carla Batista

14/08/2012

Oi Marco, obrigada pela ajuda Marco, então onde eu colocar estará certo!!! Eu me perdi um pouco no final, rs :).. mas tudo bem, já que não tem lentidão, não tem problemas vou colocar em qualquer um dos dois e ir testando, obrigada mesmo!

Quem puder fechar o chamado eu agradeço. até mais pessoal.
GOSTEI 0
Marco Salles

Marco Salles

14/08/2012

Blz Carlinha , vou fechar então
GOSTEI 0
Deivison Melo

Deivison Melo

14/08/2012

Tópico dado como resolvido!
GOSTEI 0
POSTAR