2010-03-30 8 views
2

Я пытаюсь отобразить значение валюты в сетке, но я не хочу, символ валюты будет показан ниже:Как использовать AsCurrency Delphi для отображения валюты без символа валюты?

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)

ответ

4

Doing CurrencyString := ''; будет влияния всего следующее форматирование валют при используя формат по умолчанию строки и, таким образом, должны дисплей всех варианты валюты/поля значений без знака $, в то время как сохраняя свою цифровую природу.

Но когда вы явно формат ваша валюта значение с собственные TFormatSettings langFormat, он имеет никакого эффекта, если вы ранее не делали:

langFormat.CurrencyString := ''; 
+0

Но я пытаюсь форматировать значение, которое будет валютой, а не значение, которое будет установлено с CurrToStrF - как я могу изменить значение валюты, чтобы не отображать символ валюты? – croceldon

+0

Не уверен, что я понимаю ... Символ валюты не привязан к значению валюты, а к FormatSettings, по умолчанию используется по умолчанию, если не указано иное, или конкретному, как ваш 'langFormat.CurrencyString'. Поэтому, если ваше значение является валютой, оно останется валютой, но будет отображаться по умолчанию в соответствии с глобальной валютой. Если вы измените его с «$» на «@», ваше значение будет отображаться как @ 12.34 вместо $ 12.34, как раньше. –

2

Изменение ffCurrency на ffFixed должно избавиться от символа валюты, но не было бы каких-либо сотен разделителей.

// С разделителями

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

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; 
Смежные вопросы