Fórum Formataçao de campos. #328832

06/09/2006

0

blz amigos,

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

Pestana

Responder

Posts

07/09/2006

Paullsoftware

no evento OnGetText do seu DataField faça:

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:


Responder

Gostei + 0

07/09/2006

Micheus

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.
Também pode ser feito através da propriedade DisplayFormat do campo de seu dataset. Basta definir como #0.00;

... e o tamamho maximo de caracteres no edit não pode ultrapassar , (seria o tamanho do campo).
Se vc está realmente utilizando um componente TEdit e não um TDBEdit, então para limitar a edição (digitação), a máscara desejada, seria melhor vc utilizar um TMaskEdit com a propriedade EditMask = !990.00;1;
Isso limitará a edição do campo


Responder

Gostei + 0

08/09/2006

Pestana

micheus eu inseri no displayformat a máscara indicada e deu certo, durante a consultar o valor está sendo exibido no grid do jeito que eu queria, 5,40, com este registro que está sendo exibido no grid, o usuario tem a opção de enviar o registro para o componente edit atraves do duplo click no grid.

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.


Responder

Gostei + 0

08/09/2006

Micheus

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?
Provavelmente vc utilizou a mascara com ´#.;1;´
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 (_).


Responder

Gostei + 0

08/09/2006

Pestana

micheus eu fiz isso, mas continua sem aparecer formatado, agora em vez disso __5._4 aparesse isso 5. 4, foi removido só o traço,
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.


Responder

Gostei + 0

08/09/2006

Micheus

[b:31969a5981]Pestana[/b:31969a5981], vamos repassar as coisas.
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


Responder

Gostei + 0

09/09/2006

Pestana

valeu deu certo, ficou show...

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar