Números reais com vírgula e não ponto no FLEX [RESOLVIDO]

12 respostas
EugenioMonteiro

Como eu faço para ler um número de um TextInput (Adobe Flex) de modo que ele seja convertido pelo formato de números brasileiro brasileiro e não pelo americano?
Por exemplo:

Se eu digitar 9.5, o sistema aceita converter de texto para número, porém se eu digitar 9,5, não funciona a conversão.

12 Respostas

ivandasilva

Tente o método parse(String s, int pos) do SimpleDateFormat…

orlandocn

na verdade seria DecimalFormat

ivandasilva

Malz… :?

EugenioMonteiro

Esqueci de um detalhe: não falei que se tratava de FLEX.

H

Se vc quiser trafegar números entre Java e Flex, vc terá que converter esse número já no Flex. Uma solução seria utilizar o NumberFormatter para transformar um número 1.000,01 (padrão Brasileiro) para 1,000.01 padrão Americano.

A utilização do NumberFormatter é tranquilo, da uma olhada na doc, se vc não conseguir avisa…

[]s,

F

Eugênio,
Disponibilizo um componente q pode lhe ser útil: http://fabiophx.blogspot.com/2009/04/numericinput.html

[]s
Fabio da Silva

EugenioMonteiro

Tudo bem, com o NumberFormatter eu consegui formatar os valores e mostrá-los nos campos. Mas, e agora como eu faço para pegar os números formatados com vírgula e transformá-los para Number? Quando estão separados por ponto, o construtor de Number aceita, porém com vírgula não funciona.

F

Uma coisa q esqueci de comentar sobre o componente NumericInput é q para pegar o valor como Number é só utilizar a propriedade value. Toda digitação seta esta propriedade utilizando a função toNumber.

Fabio da Silva

EugenioMonteiro

fabiophx, como eu faço para colocar esse componente no meu sistema? Eu quero colocá-lo na paleta visual.

F

Vc pode colocar os fontes diretamente com os teus.
Ou vc pode criar um Flex Library Project e colocar os fontes neste projeto, ao compilar ele irá gerar um .swc, e no projeto q vc irá usá-lo vc vai em Project > Properties > Flex Build Path > Library Path e clica em um dos botões da direita.

Fabio da Silva

H

Eugênio, vc terá que ter um NumberFormatter para transformar de US para BR e um outro para transformar BR para US…

O number formatter vai retornar uma string, ai é só fazer var number:Number = Number(valorFormatado). Neste caso o cast é utilizado para fazer a CONVERSÃO do tipo String para Number, por isso funciona…

[]s,

EugenioMonteiro

Resolvi o problema fazendo uma função que retorna Number. Essa função pega a String retornada pelo NumberFormatter, substitui a vírgula por ponto e retorna.

Criado 15 de dezembro de 2009
Ultima resposta 17 de dez. de 2009
Respostas 12
Participantes 5