Como colocar máscaras aos fields sem adicioná-los?
Oi gente, tudo bem com vocês?
Você já se deparou com o problema de precisar colocar uma máscara em algum
campo de um Dataset, mas também não queria adicionar ele pelo field editor?
Veja como é simples a adição de máscaras por em tempo de execução:
É necessário estar declarado DB na seção uses,
em versões unicode declare Data.DB.
Em Lazarus declare DB.
Exemplo:
1
2
3
4
5
6
7
8
9
10
| procedure TForm1.Button1Click(Sender: TObject);
begin
// Campos Numéricos
TNumericField(QryTeste.FieldByName('VALOR')).DisplayFormat :=
'###,###,##0.00';
// Campos Texto
TStringField(QryTeste.FieldByName('CNPJ')).EditMask :=
'00\.000\.000\/0000\-00;0;_';
end; |
procedure TForm1.Button1Click(Sender: TObject);
begin
// Campos Numéricos
TNumericField(QryTeste.FieldByName('VALOR')).DisplayFormat :=
'###,###,##0.00';
// Campos Texto
TStringField(QryTeste.FieldByName('CNPJ')).EditMask :=
'00\.000\.000\/0000\-00;0;_';
end;
O segredo aqui foi o uso do Type Cast, para acessar a propriedade e
passar o valor da máscara.
Uma estratégia interessante é colocar estes comandos no AfterOpen da sua Query ou Dataset.
Veja o exemplo:
1
2
3
4
5
6
7
8
9
10
| procedure TForm1.QryTesteAfterOpen(DataSet: TDataSet);
begin
// Campos Numéricos
TNumericField(DataSet.FieldByName('VALOR')).DisplayFormat :=
'###,###,##0.00';
// Campos Texto
TStringField(DataSet.FieldByName('CNPJ')).EditMask :=
'00\.000\.000\/0000\-00;0;_';
end; |
procedure TForm1.QryTesteAfterOpen(DataSet: TDataSet);
begin
// Campos Numéricos
TNumericField(DataSet.FieldByName('VALOR')).DisplayFormat :=
'###,###,##0.00';
// Campos Texto
TStringField(DataSet.FieldByName('CNPJ')).EditMask :=
'00\.000\.000\/0000\-00;0;_';
end;
Só lembrando que o código acima também é válido para Lazarus.
Certo pessoal, espero que tenham gostado.
Dúvidas ou sugestões, deixe nos comentários do post.
Um abraço e até a próxima. Valeu.
-
Giovani Da Cruz
-
12.730 views
- 5 comentários
- 21 de maio de 2015
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo
Mas num formulário que traz os registro do banco de dados automaticamente, como disparar essa procedure?
Oi Marcos, você pode colocar o código no evento no AfterOpen do seu DataSet.
Já aproveitamos a atualizamos o post.
Obrigado por seu feedback.
A máscara para campo de Texto só funciona para a entrada de dados, para exibí-los não funciona… estou usando o lazarus.
O objetivo seria que ao receber os dados (do tipo varchar) vindos do banco de dados fosse aplicada a máscara para CNPJ.
Bom dia. Tenho um cenário onde preciso aplicar a máscara no dbgrid. O CDS e fields tudo em tempo de execução. Como implementar este mascaramento em tempo de execução (runtime) ? Obrigado
Eugenio
Oi Eugenio, você pode colocar no evento AfterOpen do seu ClientDataSet, conforme o seu exemplo acima.