-
-
Notifications
You must be signed in to change notification settings - Fork 15
Format
Mobius One edited this page Oct 18, 2023
·
22 revisions
Home > Format
⚠ ATENÇÃO! ⚠ 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
Classes para auxiliar a formatação de valores em campos de texto e rótulos para o usuário. Testado no Delphi 10.3.3, 10.4.2 e 11.2, outras versões podem funcionar.
| Framework | Classe | Delphi | Lazarus |
|---|---|---|---|
| Firemonkey (FMX) | FMXFormat | XE3+ | N/A |
| VCL | VCLFormat | 7+ | N/A |
| Lazarus (LCL) | lclformat | N/A | 2.0+ |
Tipos de formatos disponíveis:
| Tipo | Formato |
|---|---|
| Data (dia/mês/ano) | 99/99/9999 |
| CEP | 99.999-999 |
| CEST | 99.999.99 |
| CFOP | 9.999 |
| CNH | AAAAAAAAAAA |
| CNPJ | 99.999.999/9999-99 |
| CNPJorCPF (Dinâmico) | utiliza formato CPF ou CNPJ baseado no total de dígitos |
| CPF | 999.999.999-99 |
| CREA | 999999999-9 |
| CRM | CRM/LL 999999 |
| Dinheiro | R$ 9.999,99 |
| Hora | 99:99:99 |
| HoraCurta | 99:99 |
| Inscrição Estadual (diferente por estado) | 999.999.999/9999 (MG) |
| NCM | 9999.99.99 |
| OAB | LL999999 |
| Peso | 9,999 |
| Porcentagem | 9.999,99% |
| Telefone (Dinâmico) | (99) 9999-9999 ou (99) 99999-9999 |
| Título Eleitor | 9999 9999 9999 99 |
| Valor | 9.999,99 |
| Veículo Mercosul (placa) | AAAAAAA |
| Veículo Tradicional (placa) | LLL-9999 |
'9' representa número,
'L' representa Letra,
'#' representa qualquer caractere,
'A' representa caractere Alfanumérico (letra e/ou número)
- 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;- 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;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(&Date, '18-10.2023'); // ele vai corrigir o dado inserido e converter pra data
Edit1.Text := Formato.Formatar(Bits, '1321687465143251968541981');
Edit1.Text := Formato.Formatar(CEP, '11,001/970');
Edit1.Text := Formato.Formatar(CEST, 'abacaxi 9900011');
Edit1.Text := Formato.Formatar(CFOP, 'suco de caju 1234');
Edit1.Text := Formato.Formatar(CNH, '1234789AB56');
Edit1.Text := Formato.Formatar(CNPJ, '99333222555544 s/a');
Edit1.Text := Formato.Formatar(CPF, 'Foragido 11122217113');
Edit1.Text := Formato.Formatar(CREA, '1112223334 Pedreiro');
Edit1.Text := Formato.Formatar(CRM, 'Dr Braulio 123456', TUF.RJ);
Edit1.Text := Formato.Formatar(Dinheiro, 'Devo a mim mesmo 123456');
Edit1.Text := Formato.Formatar(Hora, 'Está atrasado em 123456');
Edit1.Text := Formato.Formatar(HoraCurta, 'Hora do Chá 0420');
Edit1.Text := Formato.Formatar(InscricaoEstadual, '111222333444', TUF.SP);
Edit1.Text := Formato.Formatar(NCM, 'Mercadoria que paga menos: 12342233');
Edit1.Text := Formato.Formatar(OAB, 'Pra você é DR. 234567', TUF.DF);
Edit1.Text := Formato.Formatar(Peso, 'Tenho que emagrecer 1234 KG');
Edit1.Text := Formato.Formatar(Porcentagem, 'Imposto de 999,99');
Edit1.Text := Formato.Formatar(Telefone, '11912341234 Liga pra mim, meu coração vai te esperar...');
Edit1.Text := Formato.Formatar(TituloEleitor, '11112222333344');
Edit1.Text := Formato.Formatar(Valor, 'Precinho de banana 1,99');
Edit1.Text := Formato.Formatar(VeiculoMercosul, 'NFS4UND'); // aqui precisa ser o texto próprio da placa pois aceita caracteres alfanuméricos
Edit1.Text := Formato.Formatar(VeiculoTradicional, 'BRA-1234 Fuscão preto'); // aqui também