我正在尝试在网格中显示货币值,但我不希望显示货币符号:
if fPreferences.WorksheetFormat = 'Numeric' then
begin
CurrencyString := '';
Value := FieldByName('UnitList').AsCurrency;
end else
Value := CurrToStrF(FieldByName('UnitList').AsCurrency, ffCurrency, 2, langFormat);
问题在于它仍然显示货币符号。我在这做错了什么?我不认为我可以使用CurrToStrF,因为我需要网格将数字导出为excel,而不是字符串。或者,有什么方法可以使用AsFloat,但必须小数位? (100.00)
答案 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;