Skip to content
Mobius One edited this page Aug 12, 2025 · 22 revisions

Home > Format

Warning

Na versão 11.3.1 do Delphi existe um problema interno no FMX Android que embaralha os dígitos, como é possível conferir aqui: RSP-41245 Para resolver isso basta não utilizar o OnTyping mas usar o onExit para formatar os dígitos e no onEnter faz o edit remover a formatação com a função SomenteNumero ou AlfaNumerico

Descrição e Informações gerais

Classes para auxiliar a formatação de valores em campos de texto e rótulos para o usuário, de acordo com o framework da IDE.

Compatibilidade

Símbolo Significado
Incompatível
Não testado
Compatível
Framework Classe Versão do Delphi
- 7 8 2005 2006 2007 2009 2010
XE XE2 XE3 XE4 XE5 XE6 XE7 XE8
10.0 10.1 10.2 10.3 10.4 11.3 12.3 13.0
Firemonkey (FMX) FMXFormat
VCL VCLFormat
Framework Classe Versão do Lazarus
< 2.0 2.0 ~ 2.9 3.0 ~ 3.9 4.0+
LCL lclformat
Tipos de formatos disponíveis:
Tipo anterior Novo tipo Formato
None tfNenhum Remove os caracteres especiais e
devolve texto sem formatação
&Data tfData 99/99/9999 (dia/mês/ano)
--- tfCartao 9999 9999 9999 9999
CEP tfCEP 99.999-999
CEST tfCEST 99.999.99
CFOP tfCFOP 9.999
CNH tfCNH AAAAAAAAAAA
CNPJ tfCNPJ AA.AAA.AAA/AAAA-99
CNPJorCPF tfCPFCNPJ utiliza formato CPF ou CNPJ (Dinâmico)
baseado no total de dígitos
CPF tfCPF 999.999.999-99
CREA tfCREA 999999999-9
CRM tfCRM CRM/LL 999999
Dinheiro tfDinheiro R$ 9.999,99
Hora tfHora 99:99:99
HoraCurta tfHoraCurta 99:99
InscricaoEstadual tfInscricaoEstadual 999.999.999/9999 (diferente por estado)(MG)
NCM tfNCM 9999.99.99
OAB tfOAB LL999999
Peso tfPeso 9,999
Porcentagem tfPorcentagem 9.999,99%
Telefone tfTelefone (99) 9999-9999 ou (99) 99999-9999 (dinâmico)
TituloEleitor tfTituloEleitor 9999 9999 9999 99
Valor tfValor 9.999,99
VeiculoMercosul tfVeiculoMercosul AAAAAAA
VeiculoTradicional tfVeiculoTradicional LLL-9999
obs: Na tabela acima:
'9' representa número,
'L' representa Letra,
'#' representa qualquer caractere,
'A' representa caractere Alfanumérico (letra e/ou número)
Funções da classe
Função Descrição
AlfaNumerico(aStr: string): string; Devolve letras e números bem como caracteres acentuados.
BandeiraCartao(aCartao: string): string; Retorna o nome da bandeira do cartão baseado nos dígitos 'aCartao' informados.
Decimal(aStr: string): string; Devolve somente números mantendo a formatação com separador de milhar e decimais, removendo os demais caracteres
Decimal(aStr: string; aPrecisao: integer): double; Devolve somente números mantendo a formatação com separador de milhar e decimais, removendo os demais caracteres, com precisão de caracteres ajustável. Padrão: 2
Formatar(Formato: TFormato; Texto: string; ExtraArg: variant): string; Formata o valor do "Texto" baseado no tipo de "Formato" definido. Alguns formatos precisam informar o ExtraArg para que a formatação seja correta. Exemplos abaixo
Inteiro(aStr: string): string; Retorna valor formatado como inteiro positivo ou negativo
Primeiros(aStr: string; aDigitos: integer): string; Devolve os primeiros 'aDigitos' contidos no texto
RemoveAcentos(aStr: string): string; Devolve o texto sem acentuação mantendo os outros caracteres.
SomenteNumero(aStr: string): string; Devolve somente os números contidos no texto.
Ultimos(aStr: string; aDigitos: integer): string; Devolve os últimos 'aDigitos' contidos no texto.
ValidaCPF(aCPF: string): boolean; Retorna true se o 'aCPF' informado possuir um formato válido.
ValidaCNPJ(aCPNJ: string): boolean; Retorna true se o 'aCNPJ' informado possuir um formato válido.

Exemplos de Uso

VCL (Delphi) ou LCL (Lazarus)

  • Formatar um edit para mostrar valor monetário de acordo com o sistema operacional:
uses
  VCLFormat;
  
procedure TForm1.Edit1Change(Sender: TObject);
begin
  Edit1.Formatar(Dinheiro);
end;
  • Pegar um valor monetário formatado em um campo edit para salvar no banco de dados sem os caracteres especiais:
uses
  VCLFormat;
  
procedure TForm1.Edit1Change(Sender: TObject);
begin
  Edit1.Formatar(Dinheiro);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  valorpago: Float;
begin
  valorpago := StrToFloatDef(Edit1.Decimal, 0);
end;

FMX (Delphi)

  • Formatar um edit para mostrar valor monetário de acordo com o sistema operacional:
uses
  FMXFormat;
  
procedure TForm1.Edit1Typing(Sender: TObject);
begin
  Edit1.Formatar(Dinheiro);
end;
  • Pegar um valor monetário formatado em um campo edit para salvar no banco de dados sem os caracteres especiais:
uses
  FMXFormat;
  
procedure TForm1.Edit1Typing(Sender: TObject);
begin
  Edit1.Formatar(Dinheiro);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  valorpago: Float;
begin
  valorpago := StrToFloatDef(Edit1.Decimal, 0);
end;

Exemplos com todos os tipos

Atribuição sem classHelper:

⚠ Note que algumas informações foram inseridas com erro nos params para indicar que a classe consegue aproveitar somente a parte que interessa e formatar

  Edit1.Text := Formato.Formatar(tfDate, '18-10.2023'); // ele vai corrigir o dado inserido e converter pra data
  Edit1.Text := Formato.Formatar(tfBits, '1321687465143251968541981');
  Edit1.Text := Formato.Formatar(tfCartao, '1234 5678 9abc def0'); 
  Edit1.Text := Formato.Formatar(tfCEP, '11,001/970'); 
  Edit1.Text := Formato.Formatar(tfCEST, 'abacaxi 9900011');
  Edit1.Text := Formato.Formatar(tfCFOP, 'suco de caju 1234');
  Edit1.Text := Formato.Formatar(tfCNH, '1234789AB56');
  Edit1.Text := Formato.Formatar(tfCNPJ, '99333222555544 s/a');
  Edit1.Text := Formato.Formatar(tfCPF, 'Foragido 11122217113');
  Edit1.Text := Formato.Formatar(tfCREA, '1112223334 Pedreiro');
  Edit1.Text := Formato.Formatar(tfCRM, 'Dr Braulio 123456', TUF.RJ);
  Edit1.Text := Formato.Formatar(tfDinheiro, 'Devo a mim mesmo 123456');
  Edit1.Text := Formato.Formatar(tfHora, 'Está atrasado em 123456');
  Edit1.Text := Formato.Formatar(tfHoraCurta, 'Hora do Chá 0420');
  Edit1.Text := Formato.Formatar(tfInscricaoEstadual, '111222333444', TUF.SP);
  Edit1.Text := Formato.Formatar(tfNCM, 'Mercadoria que paga menos: 12342233');
  Edit1.Text := Formato.Formatar(tfOAB, 'Pra você é DR. 234567', TUF.DF);
  Edit1.Text := Formato.Formatar(tfPeso, 'Tenho que emagrecer 1234 KG');
  Edit1.Text := Formato.Formatar(tfPorcentagem, 'Imposto de 999,99');
  Edit1.Text := Formato.Formatar(tfTelefone, '11912341234 Liga pra mim, meu coração vai te esperar...');
  Edit1.Text := Formato.Formatar(tfTituloEleitor, '11112222333344');
  Edit1.Text := Formato.Formatar(tfValor, 'Precinho de banana 1,99');
  Edit1.Text := Formato.Formatar(tfVeiculoMercosul, 'N4SUND'); // aqui precisa ser o texto próprio da placa pois aceita caracteres alfanuméricos
  Edit1.Text := Formato.Formatar(tfVeiculoTradicional, 'BRA-1234 Fuscão preto'); // aqui também

PascalLibs

Clone this wiki locally