Fórum Formataçao de campos. #328832
06/09/2006
0
estou com um probleminha com formatação de valores no edit,
tenho um campo chamado ´LimiteCred´ (Limite de crédito) do tipo decimal(3,2), eu gostaria que ao consultar o valor do campo ele retornasse o valor formatado.
ex.: no banco foi gravado 5, ao consultar o valor do campo retornasse 5,00, e o tamamho maximo de caracteres no edit não pode ultrapassar #, (seria o tamanho do campo).
o banco que estou utilizando é o interbase 6.
agradeço!
pestana.
Pestana
Curtir tópico
+ 0Posts
07/09/2006
Paullsoftware
if Sender.Value <> 0 then Text := FormatFloat(´0,00´,Sender.Value);
ou
if not Sender.IsNull then Text := FormatFloat(´0,00´,Sender.Value);
para chegar até o evento OnGetText, selecione seu DataSet, dê um clique duplo vai aparecer o DataSet Editor selecione o campo desejado vá na Objecto Inspector e selecione a Guia Events, depois escola o evento OnGetText...
espero ter ajudado :wink:
Gostei + 0
07/09/2006
Micheus
Isso limitará a edição do campo
Gostei + 0
08/09/2006
Pestana
atraves da sua dica eu achei melhor mudar o componente para TMaskEdit e inserir a mascará desejada, mas quando o valor que está no grid é transferido para o maskedit ele é exibido de uma forma estranha,
ex.: no grid tenho 5,40 ao transferir para o componente maskedit o valor do maskedit fica: __5._4. O que da para entender é que não está sendo exibido o valor formatado. o que eu devo fazer?
obrigado
Pestana.
Gostei + 0
08/09/2006
Micheus
Coloque ´0.00;1; ;´ (é um espaço entre os ponto-e-vírugla). Ele é o que será apresentado, quando em modo edição, onde não estiver preenchidos os dígitos. Por padrão é o sub-linh (_).
Gostei + 0
08/09/2006
Pestana
antes da query jogar o valor do campo Limitecred no maskedit ele fica com o valor do banco ´5,4´ ele não está formatando o valor. isso descobri porque eu coloquei um showmessage, antes do maskedit receber o valor da query.
Gostei + 0
08/09/2006
Micheus
Na máscara do EditMask vc define desta forma: ´!999,99;1; ´
Significa:
[b:31969a5981]![/b:31969a5981] => os caracteres opcionais da máscara não preenchidas serão ocupados por espaços em branco a esquerda;
[b:31969a5981]9[/b:31969a5981] => caracter numérico, mas não obrigatório digitar
[b:31969a5981]1[/b:31969a5981] => depois do ´[b:31969a5981];[/b:31969a5981]´ significa que o texto retornado pelo EditMask conterá os caracteres da formatação - neste caso a vírgula.
´ ´ => após o segundo ´[b:31969a5981];[/b:31969a5981]´ indica qual o caracter que será utilizado para representar uma posição a ser digitada - vc definiu 3 antes da vírgula e 2 depois;
Confira mais detalhes no Help(click na propriedade EditMask do MaskEdit e pressione F1)
Bom, com a máscara definida desta forma e estando o DiplayFormat definido para ´#0.00´, então ao atribuir o valor do campo para o MaskEdit faça da seguinte forma:
MaskEdit1.Text := Table1Codigo.DisplayText;
Deste modo vc estará passando o valor do campo formatado para o MaskEdit que irá corretamente ajustar o texto.
Observe que utilizando estas formatações vc também poderá atribuir o valor digitado da seguinte forma, no OnExit do MaskEdit:
Table1Valor.AsString := Trim(MaskEdit1.Text);
O inconveniente do MaskEdit pode ser justamente a existência de espaços no meio do texto digitado. Por exemplo: vc move o foco para o MaskEdit, o caret(ponto de inseção - vulgo cursor) estará posicionado no início do campo. Então o usuário digita ´10´, tecla ´,´ e o caret é movido para após a vírgula, e então ele digita ´45´ centavos. O texto retornado pelo MaskEdit será ´10 ,45´. Este espaço irá gerar erro na conversão. Então é conveniente pensar nisto e tratar esta situação - removendo os espaços antes da ´,´ e depois.
[]s
Gostei + 0
09/09/2006
Pestana
o problema nem era mais com a mascará é que eu estava fazendo assim ´MaskEdit1.Text := Table1Codigo.AsFloat;´ e não assim ´MaskEdit1.Text := Table1Codigo.DisplayText;´ até então eu não conhecia esta propriedade.
alem da mascara que vc me ajudo, acabou ajudando com este problema acima.
me desculpe por qualquer coisa, é que já fazia alguns dias que eu estavá tentando resolver isso.
abraços.
Pestana.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)