# PEX - Validação de Campos

### Validar Campo Data ao Sair do Formulário

Neste tópico veremos como validar um campo de data ao sair do formulário utilizando PEX.

#### Exemplo de Código

```pascal
if aoFormularios.GetJSON('ID_DO_CAMPO').GetDt('TEXTO') = 0 then begin aoMensagem.SetStr('MENSAGEM', 'O campo de data é obrigatório!'); AbortarOperacao; end;
```

No exemplo acima, o código verifica se o campo de data está vazio (igual a 0) e, caso esteja, exibe uma mensagem e aborta a operação.

### Validar Campo Somente Leitura

Neste tópico veremos como validar um campo que está como somente leitura, mas que é obrigatório no processo.

Quando um campo é configurado como somente leitura, o usuário não consegue preenchê-lo manualmente, mas pode ser necessário garantir que ele esteja preenchido por algum evento ou processo automático.

#### Exemplo de código

```
1if aoFormularios.GetJSON('ID_DO_CAMPO').GetStr('TEXTO') = '' then begin aoMensagem.SetStr('MENSAGEM', 'O campo obrigatório não foi preenchido!'); AbortarOperacao; end;
```

No exemplo acima, o código verifica se o campo está vazio e, caso esteja, exibe uma mensagem e aborta a operação.

### Validar Campos ou Dados via PEX

Este tópico tem a finalidade de abordar os principais validadores presentes no PEX, como bem sabemos, o PEX nas versões maiores que 12 possuem um assistente PEX, no PEX existem também muitas rotinas e/ou funções publicadas que podem ser acessadas via menu de contexto, conforme imagem abaixo:

As funções abordadas serão:

- TSTR.Testa\_CNPJ(Codigo);
- TSTR.Testa\_CPF(Codigo);
- TSTR.of\_IsNotNullEMA(asText);
- TSTR.of\_IsNullEMA(asText);
- TSTR.of\_VerificaEmail(asTexto, abVerificaNull);
- TSTR.of\_TemNumero(s);
- TSTR.of\_TemTexto(s, abValida);
- TSTR.of\_UFValido(asUF);
- TSTR.of\_IsCodigoBarra(Codigo);

#### Valida CNPJ

Esta função deve ser utilizada com uma variável do PEX, variável do processo e/ou formulário do processo afim de validar um CPNJ, retornando False (Booleana) no caso de digitado um CPNJ inválido por engano ou algo do gênero.

```pascal
var CNPJ : string; Resposta : Boolean; begin CPNJ := '07297774000175'; //CNPOJ Informado em um formulario e/ou variavel do tipo texto Resposta := TSTR.Testa_CNPJ(CNPJ); -- Retorna True ou False para varaivel boleana end;
```