DisplayFormat em ClientDataSet

17/07/2008

16

Preciso formatar um campo para que mostre nenhuma casa decimal, mesmo que ela(s) exista(m).

Coloquei assim:
ClientaDataSet1Campo.DisplayFormat := ´#,,0´; e tentei também ´,,´, mas ele só mostra nenhuma casa decimal quando o valor decimal for zero. Por exemplo:
- Se valor = 10,00, mostra 10; mas
- Se valor = 10,33, mostra 10,33.

Alguém pode me ajudar?

Obrigado.


Responder

Posts

17/07/2008

Paulo

experimente assim:
#,. ou ,.00
Use nas casas decimais ponto e não vírgula.


Responder

17/07/2008

Armindo

experimente assim: #,. ou ,.00 Use nas casas decimais ponto e não vírgula.


Acho que você não entendeu.
Se eu usar:
- ,., o resultado mostrado será 10,33
- ,.00, idem

Eu preciso que, mesmo que o valor do campo seja 10,3333, ele mostre 10 ou seja, sem nenhuma casa decimal.


Obrigado.


Responder

17/07/2008

Joaoshi

Colega, você poderia fazer esta formatação no evento onGetText da Field (pegando somente a parte intereira do valor).

Espero ter ajudado.


Responder

17/07/2008

Carlosrm

Armindo,

na propriedade DisplayFormat do ClientDataset, [b:b178f6cbcc]não[/b:b178f6cbcc] coloque o ponto decimal e [b:b178f6cbcc]nem[/b:b178f6cbcc] as casas decimais... Ficaria assim:

#,0

Como o Paulo já tinha alertado, o Delphi faz a formatação de números com casas decimais usando o ponto (.) como separador das casas decimais.
Mas como vc não quer exibir nenhuma casa decimal, uma solução é não colocar o ponto (separador de decimais). Não existindo ponto decimal, nenhuma casa decimal será exibida (A propriedade DisplayFormat impedirá a exibição de eventuais casas decimais).

Espero ter ajudado.
carlosrm


Responder

18/07/2008

Armindo

Armindo, na propriedade DisplayFormat do ClientDataset, [b:24660a9bd7]não[/b:24660a9bd7] coloque o ponto decimal e [b:24660a9bd7]nem[/b:24660a9bd7] as casas decimais... Ficaria assim: #,0 Como o Paulo já tinha alertado, o Delphi faz a formatação de números com casas decimais usando o ponto (.) como separador das casas decimais. Mas como vc não quer exibir nenhuma casa decimal, uma solução é não colocar o ponto (separador de decimais). Não existindo ponto decimal, nenhuma casa decimal será exibida (A propriedade DisplayFormat impedirá a exibição de eventuais casas decimais). Espero ter ajudado. carlosrm


Amigo, agradeço a resposta, mas acho que você não o meu tópico (post inicial).
Vou repetir o que eu preciso: que o um dbEdit ligado a um determinado campo de um clientDataSet, cujo valor (do campo) seja 10,33, mostre somente 10 (sem nenhuma casa decimal).
Agora vou repetir o que já tentei e [b:24660a9bd7]NÃO[/b:24660a9bd7] dá certo:
- #,0
- ,0
- ,


Responder

18/07/2008

Marco Salles

Vou repetir o que eu preciso: que o um dbEdit ligado a um determinado campo de um clientDataSet, cujo valor (do campo) seja 10,33, mostre somente 10 (sem nenhuma casa decimal).


hummmmm

Uma opção é usar o evento [b:bd2b641cf2]OnGetText do Campo[/b:bd2b641cf2]

procedure TSeuDataModulo.SeuClientDataSetSeuCampoGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  if sender.AsString <> ´´ Then
     text:=FloatToStr(Trunc(sender.AsFloat))
end;


mas atente-se ;;;

Voce tem a Opção de Habiltar e Desabilitar este Evento ...Assim para
Alguns formulários (quando for o caso ) voce o Habilita, e se necessário
volte a apresentação Normal do campo


Responder

18/07/2008

Carlosrm

Prezado Armindo:

O seu post inicial não fala em DBEdit

... ClientaDataSet1Campo.DisplayFormat := ´#,,0´;...

e eu acabei testando a exibição numa DBGrid. Funcionou. Por isso enviei uma sugestão (existem várias possibilidades)... Como você retornou dizendo que já tinha tentado e não funcionava, eu testei novamente (na DBGrid) e funcionou. Testei também numa DBEdit e também funcionou (ou seja, não mostrou nem a vírgula e nem as casas decimais, como se você tivesse aplicado a função Trunc. Porém, pode ser que não estejamos falando da mesma versão: testei usando o Delphi 7 com Firebird 1.5...
Se foi por isso que encontramos resultados diferentes, peço que você me desculpe. Realmente eu fui obtuso em considerar apenas a versão que eu uso, e não informei nada. Outros colegas postaram outras soluções. Faço votos para que encontre uma solução satisfatória. Abraço.
carlosrm


Responder

18/07/2008

Marco Salles

Prezado Armindo: O seu post inicial não fala em DBEdit ... ClientaDataSet1Campo.DisplayFormat := ´#,,0´;... e eu acabei testando a exibição numa DBGrid. Funcionou.


engraçado , eu jurava que alem de truncar ela ´[u:a30432f596][b:a30432f596]Round´[/b:a30432f596][/u:a30432f596] 0 valor

assim 12,4 da 12
assim 12,6 da 13


Responder

18/07/2008

Carlosrm

Desculpem, MarcoSalles e Armindo...

Todas as vezes que eu usei essa máscara com o DisplayFormat, coincidente (e burramente) só usei decimais inferiores a 0,5... :oops:. Peço novamente desculpas, envergonhado, e aprendi mais uma...abraços.
carlosrm


Responder

18/07/2008

Marco Salles

Desculpem, MarcoSalles e Armindo... 

Todas as vezes que eu usei essa máscara com o DisplayFormat, coincidente (e burramente) só usei decimais inferiores a 0,5... . Peço novamente desculpas, envergonhado, e aprendi mais uma...abraços. 
carlosrm


[b:6610db9175]carlosrm[/b:6610db9175] voce é um cara amirável prestativo humilde etc.....
<esta meio sumido do forum é verdade> ...
quem lhe deve agradecer a você somos nós , sempre acompanho os
seus tópicos e aprendo muito com eles .....


Responder

18/07/2008

Carlosrm

Marco Salles,

carlosrm voce é um cara...


Me espelho em você, amigo... Obrigado pela força... Abraço.

carlosrm


Responder