Em nossas aplicações sempre precisamos adicionar códigos para validar algum campo no formulário.


O RadCORE traz um atributo para reduzir essa codificação.


Vamos ter como exemplo o cadastro de usuários. Aqui, adicionei 3 validações:


- LOGIN

- EMAIL

- NOVA SENHA


Observe a propriedade "HINT" de cada componente citado acima( respectivamente ):


[[valid:blank]]     : Indica ao RadCORE que este campo NÃO PODE FICAR EM BRANCO.

[[valid:email]]     : Validar um EMAIL. 

[[valid:pass]]      : Validar uma SENHA ( observe em "mkm_validate" os critérios atuais de validação ).

[[valid:date]]      : Validar uma DATA.

[[valid:cpf]]       : Validar um CPF.

[[valid:cnpj]]      : Validar um CNPJ.

[[valid:min-99]]    : Validar a digitação mínima de "99" caracteres.

[[valid:max-99]]    : Validar a digitação máxima de "99" caracteres.



Validação de Registro


[[valid:not-exists]]: Validar se o conteúdo do campo no "uniDBEdit" atual já foi cadastrado para evitar duplicidade.


variações:


valid:not-exists<str> where:DEL<>'S' : Validar se o conteúdo do campo no "uniDBEdit" atual já foi cadastrado ( sendo seu conteúdo STRING ) para evitar duplicidade e somente se o campo "DEL" for diferente de 'S'


valid:blank=Loja ifvisible:rcBlock40 : Validar se o conteúdo do campo "Loja" não estiver vazio e somente se o componente "rcBlock40" estiver visível.


Nota: também há o parâmetro "ifenabled".



Outras variações possíveis que irão reduzir ainda mais a codificação:


[[valid:=nn or >nn<int>]]

[[valid:>dd/mm/aaaa]]

[[valid:>=nn and <=nn]]

[[valid:>nn.nn and <=nn]]


Nota: Os modelos acima podem ser testados no "frmCadCLIENTES" presente em projetos RC BRASIL / GLOBAL e para os brasileiros, há o exemplo de validação múltipla de CPF ou CNPJ no mesmo campo.




Também é possível fazer a validação apenas se o campo for preenchido, ou seja, é permitido ficar em branco.


[[valid:email notblank]] 



Também é possível adicionar uma string que representa o nome do campo que está em branco para ser exibido ao usuário.


[[valid:blank=Email]] 



Também é possível fazer a validação de um campo com base no conteúdo de outro:


      "ifnotempty:aaaaa" e "if>0:aaaaa" 


      Onde "aaaaa" é o nome de um componente de edição.


      Existem 2 campos e você só quer que o segundo campo seja validado se o primeito tiver um conteúdo maior que zero ou que o primeiro não esteja vazio:



      [[valid:blank=Email if>0:edInvoiceNumber]]

      [[valid:blank=Email ifnotempty:edInvoiceNumber"  



Nota: Veja alguns exemplos no "frmDEMO_FORMS"




Limpeza Manual da Validação 


No exemplo acima, no botão "Remove Mask" vc poderá ver como limpar a validação.


rc_ClearValidation( self );



Validando apenas os componentes dentro de um "parent"


É possível passar um parâmetro indicando para ser validado apenas os componentes que estão dentro de um determinado "parent"( UniContainerPanel, UniScrollBox... )


  if not rc_FormValidate( Self, rcBlock46 ) then

  begin

     Abort;

  end;


No exemplo acima, apenas os componentes dentro de "rcBlock46" serão validados.



Validação condicional


No cadastro de clientes temos um exemplo de Validação condicional no campo "edCnpjCpf":



[[valid:cpfcnpj &edTipoPessoa="F J"]] : Criticar um CPF / CNPJ válido de acordo com o conteúdo de "edTipoPessoa", ou seja, 

    se o for pessoa física, vai criticar CPF, se não, CNPJ.



> CPF e CNPJ são tipos de documentos usados no Brasil para identificar uma pessoa ou uma empresa, respectivamente.


> Na unit "mkm_validate.pas" você poderá adicionar novas validações além das existentes.


Ao clicar no Botão "btnSaveReg" será executado no "frmBaseCRUD" a função de validação dos campos:




Lembre: 

Por padrão, a chamada a função "rc_Validade" está apenas no "frmBaseCRUD". 

Se você precisar validar outras operações em outros formulários que não herdam de "frmBaseCRUD" basta você copiar para onde deseja.


Nota: É necessário que exista um componente "uniSweetAlert" no seu form/frame de origem com o nome "rcSweetAlert" para que as mensagens de validação e controle de foco funcionem.



Created with the Personal Edition of HelpNDoc: News and information about help authoring tools and software