Fórum moeda como vocês fazem... ? #287848
12/07/2005
0
Já vi muitas formas diferentes para valores $.
Vocês editam os valores (R$ Reais) no exit do campo ou em tempo de execução ?
onexit
edtValor.Text:= FormatFloat(´0.00´, StrToFloat(edtValor.Text));
desta maneira não funciona os centavos... (0,50).
Gostaria da opinião de vocês, quais as melhores maneiras para editar valores, de edits... os melhores métodos, ou seja a maneira correta.
obrigada
Lynx
Curtir tópico
+ 0Post mais votado
13/07/2005
edtValor.Text:= FormatFloat(´#,0.00´)
Marcusbraga
Gostei + 2
Mais Posts
13/07/2005
Araujojunior
Se vc quiser tb, use o componente CurrencyEdit, ele vem junto com o RxLib e sua principal característica é assumir o valor na forma : R$ 0,00
O valor vai ser informado na propriedade Value. :wink:
Gostei + 1
13/07/2005
Lynx
porque se precisar mudar a versao da IDE, vou depender de componente.
Gostei + 0
13/07/2005
Lynx
edtValor.Text:= FormatFloat(´0.00´, (StrToFloat(edtValor.Text)));
e para mostrar:
edtValor.Text:= FormatFloat(´0.00´, (StrToFloat(FieldByname(´VALORUNITARIO´).AsString)));
vocês acham certo desta maneira ?
o valor fica assim 35000,00 para 35 mil etc..
ogrigado
Gostei + 0
13/07/2005
Silviogs
todas as formatacões do delphi usam as configurações internacionais do windows, caso esta configurado para japonês todas as formatações irão obedecer esta configuração.
caso seja TDBEdit usem esta forma
depois que abrirem a tabela ou query faça
QryEstoqueestatual.DisplayFormat := ´,#0.000´;
para valores de unidade, metros, kg etc.
QryEstoquealiqicms.DisplayFormat := ´¬ 0.00´;
para valores percentuais.
QryEstoquecustomedio.DisplayFormat := ´R$ ,0.00´;
para valores monetários.
Obs: voce pode configurar manualmente pelo sistema usando estas variáveis:
var CurrencyString: string;
var CurrencyFormat: Byte;
var NegCurrFormat: Byte;
var ThousandSeparator: Char;
var DecimalSeparator: Char;
var CurrencyDecimals: Byte;
var DateSeparator: Char;
var ShortDateFormat: string;
var LongDateFormat: string;
var TimeSeparator: Char;
var TimeAMString: string;
var TimePMString: string;
var ShortTimeFormat: string;
var LongTimeFormat: string;
var ShortMonthNames: array[1..12] of string;
var LongMonthNames: array[1..12] of string;
var ShortDayNames: array[1..7] of string;
var LongDayNames: array[1..7] of string;
var SysLocale: TSysLocale;
var EraNames: array[1..7] of string;
var EraYearOffsets: array[1..7] of Integer;
var TwoDigitYearCenturyWindow: Word = 50;
var ListSeparator: Char;
EX:
ShortDateFormat := ´dd/mm/yyyy´;
Atenciosamente
Silvio Guedes
Gostei + 0
13/07/2005
Lynx
exemplo 35.000,00
4.120,6000
mas o campo float, na base n pode receber ponto...
Gostei + 0
13/07/2005
Michael
Use a função [b:d8f266b418]FloatToStrF[/b:d8f266b418]. Ele permite que vc converta um valor de ponto flutuante qualquer para string, formatando a saída em vários formatos diferentes. Para valores monetários use por exemplo:
FloatToStrF(1.99, ffGeneral, 10, 2);
Isso irá gerar: [b:d8f266b418]R$ 1,99[/b:d8f266b418]. Observe que a função obedece às variáveis globais [b:d8f266b418]CurrencyString[/b:d8f266b418], [b:d8f266b418]CurrencyFormat[/b:d8f266b418], [b:d8f266b418]NegCurrFormat[/b:d8f266b418], [b:d8f266b418]ThousandSeparator [/b:d8f266b418]e [b:d8f266b418]DecimalSeparator[/b:d8f266b418]. Vc não precisa se preocupar com nada.
O [b:d8f266b418]10[/b:d8f266b418] é o valor da precisão da conversão e [b:d8f266b418]2[/b:d8f266b418] o número de dígitos depois da vírgula. Dê uma olhada no help do Delphi para mais detalhes.
[]´s
Gostei + 0
13/07/2005
Lynx
na hora de digitar pode ser com ponto etc.. mas na hora de gravar eu utilizo isso então.
Gostei + 0
13/07/2005
Lynx
edtValor.Text:= FormatFloat(´,0.00´, (StrToFloat(edtValor.Text)));
vai voltar um valor 10.000,00 mas na hora de gravar no fb n pode ter o ponto...
como ficaria neste caso ?
Gostei + 0
13/07/2005
Silviogs
como já foi explicado o displayformat é apenas para exibição, quando for efetuado o Post o campo é gravado sem formatação.
Na hora de consultar o campo será exbido com a formatação.
Silvio Guedes
Gostei + 0
13/07/2005
Lynx
edtValor.Text:= FormatFloat(´,0.00´, (StrToFloat(edtValor.Text)))
formata assim 35.000,00 mas na hora de gravar ?
como utilizo está função ?
FloatToStrF();
obrigado
Gostei + 0
13/07/2005
Marcusbraga
crie uma unit
unit Uconverte; interface function TextToCurr(Texto: String):Currency; implementation uses Windows, Messages,Dialogs, SysUtils; function TextToCurr(Texto: String):Currency; var nI: Integer; TextoLimpo: String; begin TextoLimpo := ´´; For nI := 1 to Length(Texto) do begin if Texto[nI] in [´0´..´9´,´,´] then TextoLimpo := TextoLimpo + Texto[nI]; end; Result := StrToFloat(TextoLimpo); end;
no edit que deseja formatar faça a formatação que quizer
voce pode usar
edit.text := formatfloat(´,0.00, strtofloat(edit.text));
ficaria 35.000,00
ou
edit.text := formatfloat(´R$ ,0.00, strtofloat(edit.text));
ficaria R$ 35.000,00
no botão gravar
declare uma variavel tipo
var converte : currency;
A função texttocurr(retira todos os caracteres que não seja ´numero´ e ´,´);
converte := texttocurr(edit.text);
o resultado seria o valor sem formatação e voce gravaria o converte
Obs:
Meus agradecimentos para Aroldo Zanela que me enviou essa função me serve muito e espero que sirva para Voce tambem
Gostei + 0
13/07/2005
Lynx
realmente assim fica ótimo.
valeu
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)