Ir para o conteúdo principal

Formatação no PEX (Telefone Fixo / Celular)

Neste tópico será abordado o tema referente ao evento PEX, com o intuito de formatar o campo TELEFONE, verificando se é um TELEFONE FIXO ou CELULAR, dependendo da quantidade de caracteres digitado.

Para acessar o PEX de um formulário basta marcar a opção Ao Sair e clicar no botão com três pontos.
Segue a imagem abaixo: 

image-1640263139450.png

Segue o código que será aplicado Ao sair - PEX: 

//PEX PARA TRATATIVA DE CAMPO FORMATADO COMO TELEFONE FIXO OU CELULAR
CONST
  CS_FONE = '4';

VAR 
  liTamanho : Integer;
  lsMascara : String;

begin
  liTamanho := length(aoFormularios.GetJSON(CS_FONE).GetStr('TEXTO')); //Conta a quantidade de caracteres digitada.
  lsMascara := '('+ copy(aoFormularios.GetJSON(CS_FONE).GetStr('TEXTO'),0,2)+') '+copy(aoFormularios.GetJSON(CS_FONE).GetStr('TEXTO'),3,liTamanho-6)+'-'+ copy(aoFormularios.GetJSON(CS_FONE).GetStr('TEXTO'),liTamanho-3,liTamanho); //Insere a máscara (parênteses, espaçamento e traço) conforme a quantidade de caracteres digitados.
  aoFormularios.GetJSON(CS_FONE).SetStr('TEXTO', lsMascara); //Preenche o campo digitado ao sair dele, já com a máscara atribuída.

  // Esta parte abaixo, formata a mensagem de erro caso a quantidade de caracteres digitados for maior que o limite máximo.
  if length(aoFormularios.GetJSON(CS_FONE).GetStr('TEXTO')) < 14 then
     begin
     aoFormularios.GetJSON(CS_FONE).SetStr('TEXTO', '');
     aoMensagem.SetStr('MENSAGEM', 'Você precisa digitar a quantidade mínima de caracteres');
     aoMensagem.SetStr('TIPO', 'ALERTA');
     aoMensagem.SetInt('TIMEOUT', 8000{Milissegundos});
     end;
  
  // Esta parte abaixo, formata a mensagem de erro caso a quantidade de caracteres digitados for menor que o limite mínimo.     
  if length(aoFormularios.GetJSON(CS_FONE).GetStr('TEXTO')) > 15 then
     begin
     aoFormularios.GetJSON(CS_FONE).SetStr('TEXTO', '');
     aoMensagem.SetStr('MENSAGEM', 'Você ultrapassou a quantidade máxima de caracteres');
     aoMensagem.SetStr('TIPO', 'ALERTA');
     aoMensagem.SetInt('TIMEOUT', 8000{Milissegundos});
     end;
end;