Olá pessoal, neste artigo vou demonstrar como trabalhar com 3 controles bem interessantes dessa fantástica suíte de componentes ACBr. Algumas semanas atrás postei um artigo sobre como instalar esses componentes no Dephi 2010.Esse controles são de fácil utilização, não requerem muitas linhas de codificação e são extremamente úteis no nosso dia a dia.

Segue abaixo a descrição das funcionalidades de cada um:

ACBrEnterTab: Componente utilizado para simular o acionamento da tecla TAB, ou seja, avançar o foco para o próximo componente do form seguindo a ordem doTabOrder.

ACBrValidador: Componente utilizado para diversos tipos de validações numéricas,entre elas: CEP, CNPJ, Insc. Estad., CPF, Cartão de Crédito, etc...

ACBrExtenso:Componente utilizado para escrever valores monetários por extenso a partir de um valor numérico. Ex.: (1,00) -> Resultado “Um real”.

Vamos criar um novo projeto no delphie adicionar os seguintes componentes.

3 - TLabel (Para identificar nossos Edits)

4 - TEdit (Receber as informações)

3 - TButton (Para disparar os devidos eventos)

1 - TACBrValidador

1 - TACBrEnterTab

1 -TACBrExtenso

O form deve ficar semelhante a figura 1. No mesmo formpodemos trabalhar com os 3 componentes, assim o exemplo fica bem simples.


Figura 1: Exibe o layout final do form.

Nosso form possui 3 edits, no 1º edit(edtDocumento) será informado um CNPJ para testarmos o componente ACBrValidador, no 2º edit (edtValorMonetario) será informado o valor monetário para que o componente ACBrExtenso converta em valor por extenso e exiba essa informação no 3º edit (edtValorExtenso).

Agora vamos configurar os componentes:

- 1ºACBrEnterTab: Esse componente é o mais fácil, basta setar sua propriedade “EnterAsTab” para o valor true como mostra a figura 2, com isso já podemos mudar o foco entre osedits apenas pressionado a tecla enter.


Figura 2: Mostra a propriedade EnterAsTab alterada.

- 2º ACBrValidador: Nesse componente vamos alterar a propriedade “AjustarTamanho” para true, caso o CNPJ digitado não esteja com a quantidade correta de números o componente completa com zeros. Nesse exemplo alterei a propriedade “PermiteVazio” para true, com isso podemos deixar em branco o edit e pressionar o botão VALIDAR e não será disparado uma exceção. O último passo será informar o tipo de documento que será validade na propriedade “TipoDocto”nesse exemplo selecionamos “docCNPJ”.


Figura 3: Mostra todas propriedadesque foram alteradas.

Observação: Notem que a propriedade “IgnorarChar” possui alguns caracteres, esses serão ignorados durante a validação, sendo assim podemos digitar o CNPJ com o “-“ e não será disparada nenhuma exceção.

- 3º ACBrExtenso: Nesse componente não vou alterar nenhuma propriedade, pois ele já carrega os valores necessários para a conversão em extenso. A propriedade “Formato” indica se será utilizado o padrão de moeda do Brasil (Real) ou a moeda dos EUA (Dólar), as propriedades abaixo informam como o componente deve se portar com valores no plural e por último em “ZeroAEsquerda” indica se valor por extenso deve considerar zeros a esquerda. Ex.: (0,90) resultado “Zero Reais e Noventa Centavos”.


Figura 4: Mostra os valores que foram carregados automaticamente.

Com os componentes devidamente configurados vamos codificar, não será necessário digitar muitas linhas, como já citado o componente ACBrEnter já está pronto basta executar (F9) à aplicação e podemos perceber que ao pressionar a tecla enter o foco muda entre os edits.

No evento OnClick do botão “VALIDAR” será digitado o código para validar o CNPJ, caso não seja validado será alterada a cor do texto do edtDocumento e será exibida uma mensagem de erro.

Listagem 1: Exibe o código para validação do CNPJ.

procedure TForm1.btnValidarClick(Sender: TObject);
begin
     //Informa o valor a ser validado para o ACBrValidador
   ACBrValidador.Documento := edtDocumento.Text;
     //Verifica se foi validado
   if not ACBrValidador.Validar then
   begin
      //Caso não seja validado, muda a fonte do texto para clRed e dispara a    
      //mensagem de erro.
      edtDocumento.Font.Color := clRed;
      MessageDlg(ACBrValidador.MsgErro, mtError, [mbOK], 0);
   end
   else
   begin
      //Caso seja valdiado, muda a fonte do texto para clBlack e formata o valor.
      edtDocumento.Font.Color := clBlack;
      edtDocumento.Text := ACBrValidador.Formatar;
   end;
end;

No evento OnClick do botão “ESCREVER POR EXTENSO” vou passar o valor monetário como parâmetro para função ValorToExtensoque pertence ao componente ACBrExtenso essa mesma função devolve o valor por extenso, depois é só atribuir esse valor para o edtExtenso.

Listagem 2: Exibe o código para conversão do valor monetário em valor por extenso.

procedure TForm1.btnEscreverExtensoClick(Sender: TObject);
begin
     //Primeiro passo o valor monetário como parâmetro para o componente ACBrExtenso
     //Depois atríbuo a valor por extenso para o edtExtenso
   edtExtenso.Text := ACBrExtenso.ValorToTexto(StrToFloat(edtValorMonetario.Text));
end;

Pronto; agora é só rodar a aplicação. Vou testar a validação com um CNPJ inválido onde após pressionar o botão “VALIDAR” será exibido uma mensagem de erro e a cor dos números ficará vermelha.


Figura 5: Exibe o teste com um CNPJ inválido.

No próximo teste vou informar um valor monetário (1,99) no campo Valor Monetário e após pressionar o botão “ESCREVER POR EXTENSO” será exibido a conversão por extenso no campo Valor emExtenso.


Figura 6: Exibe o teste com o valor por extenso.

Observação: É importante lembrar que, o valor monetário tem que ser informado usando “,” para separar as casas decimais e não é aceito cifrão “R$”, caso não seja seguido essas regras será disparada uma exception interna do Delphi.

Bom pessoal essa aplicação pode ser melhorada, aí vai da criatividade de cada um, nesse exemplo modifiquei a cor dos edits para clRed, as mensagem de erro da validação podem ser customizadas e até conter mais informações sobre o erro. Notem como foi simples trabalhar com esses 3 componentes e não exigiu grande complexidade para codificação.

É sempre importante salientar que não estou reinventado a roda, até porque dentro da pasta do ACBr existem vários demos explicando como se usa a maioria dos componentes dessa suíte, mas simplesmente estou simplificando os exemplos.

Espero que tenham apreciado esse artigo e até a próxima.

Abraços...