如何使用Delphi的AsCurrency显示没有货币符号的货币?

时间:2010-03-30 18:49:53

标签: delphi

我正在尝试在网格中显示货币值,但我不希望显示货币符号:

if fPreferences.WorksheetFormat = 'Numeric' then
begin
  CurrencyString := '';
  Value := FieldByName('UnitList').AsCurrency;
end else
  Value := CurrToStrF(FieldByName('UnitList').AsCurrency, ffCurrency, 2, langFormat);

问题在于它仍然显示货币符号。我在这做错了什么?我不认为我可以使用CurrToStrF,因为我需要网格将数字导出为ex​​cel,而不是字符串。或者,有什么方法可以使用AsFloat,但必须小数位? (100.00)

3 个答案:

答案 0 :(得分:4)

使用默认格式字符串时,执行CurrencyString := '';影响所有以下格式的货币,因此显示所有货币变体/字段值没有$符号,而保留其数字性

但是,当您使用自己的TFormatSettings langFormat 明确格式化您的货币值时,除非您以前,否则没有效果

langFormat.CurrencyString := '';

答案 1 :(得分:2)

将ffCurrency更改为ffFixed应该摆脱货币符号,但不会有任何数百个分隔符。

//使用分隔符

sStrVar:= FormatCurr('#,## 0.00',CurrVar);

答案 2 :(得分:0)

一个非常简单的解决方案是自己更改CurrencyString 并在以后将其更改回原始值。

if fPreferences.WorksheetFormat = 'Numeric' then
begin
  CurrencyString := '';
  Value := FieldByName('UnitList').AsCurrency;
end else
  begin
    OldCurrStr := CurrencyString;
    CurrencyString := '';
    Value := CurrToStrF(FieldByName('UnitList').AsCurrency, ffCurrency, 2, langFormat);
    CurrencyString := OldCurrStr;
  end;