Fórum Limitar entrada de decimais #356820
08/04/2008
0
Em algumas telas com componentes DataControls (TDBEdit, por exemplo), quero restringir a entrada a 4 casas decimais no maximo. Meu campo na tabela é do tipo Double Precision, mas nao gostaria de trocar para Numeric(12,4) nesse momento, pois tem telas com tratamentos diferentes. Tentei no validate do campo (ClientDataSet) o seguinte codigo:
if (Frac(Sender.AsFloat * 10000) > 0) then
abort;
mas ele não funciona sempre, sendo que as vezes aparece um valor estranho (fracao) depois da funcao FRAC. O que estou fazendo de errado? É um bug do Delphi?
Valeu.
Drf
Curtir tópico
+ 0Posts
09/04/2008
Webjoel
A solução para seu problema é simples e rápida, mas também já tive este problema.
Use as seguintes formatções na propriedade DisplayFormat do ClientDataSet:
* 4 Casas Decimais:
#,0.0000
* 2 Casas Decimais:
,0.00
E dá-lhe F9![/code]
Gostei + 0
09/04/2008
Drf
Se a mascara for ´#,0.0000´ e eu entrar com ´0,00001´ ele vai mostrar ´0,0000´ mas internamente estará gravando ´0,00001´ e justamente isso que nao quero, pois quero restringir a gravação e não o modo que é mostrado.
Tem mais alguma dica?
Obrigado.
Gostei + 0
10/04/2008
Ffabiop
Valor := Int(valor*10000)/10000;
No caso, vamos deslocar a vírgula 4 casas a direita e descartar o restantes da decimais (int) e depois deslocar a vígula para seu lugar original. Pode fazer isso no onExit do campo ou no beforePost da tabela.
Gostei + 0
10/04/2008
Drf
Esse procedimento ignora as casas ´a mais´, mas na verdade preciso identificar qdo é digitado casas ´a mais´ e tomar uma decisao, e nao apenas ignora-las, por isso tentei com a funcao abaixo mas nao funcionou:
if (Frac(Sender.AsFloat * 10000) > 0) then
abort;
´Abort´ seria apenas um exemplo de uma decisao que poderia ser tomada.
Grato.
Gostei + 0
10/04/2008
Joaoshi
- Atraves da funcao [b:7fb5146ecf]POS[/b:7fb5146ecf] verificar a posição do separador decimal
- A partir dai verificar quantos digitos após o separador decimal pela função [b:7fb5146ecf]LENGTH[/b:7fb5146ecf]
Parece meio gambiarra mas pode ser uma saída.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)