2010-03-30 530 views
2

我想顯示在網格中的貨幣價值,但我不希望被顯示的貨幣符號:如何使用Delphi的AsCurrency顯示貨幣沒有貨幣符號?

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)

回答

4

CurrencyString := '';影響所有時使用默認格式字符串,因此以下格式貨幣應該顯示所有貨幣變量/字段的值沒有$符號,而保留他們的數字性質

但是當你明確格式自己TFormatSettings langFormat您的貨幣價值,它有沒有影響,除非你以前做過

langFormat.CurrencyString := ''; 
+0

但我試圖格式化值將是一種貨幣,而不是將設置與CurrToStrF值 - 我如何更改貨幣值不顯示貨幣符號? – croceldon 2010-03-31 13:25:29

+0

不知道我明白...貨幣符號沒有鏈接到貨幣值,而是鏈接到FormatSettings,或者是默認情況下默認使用的貨幣符號,而不是特定的貨幣符號或像langFormat.CurrencyString這樣的特定符號。因此,如果您的值是貨幣,則它將保留一個貨幣,但默認情況下會根據全局CurrencyString顯示。如果您將它從「$」更改爲「@」,那麼您的價值將像以前一樣顯示爲@ 12.34而不是$ 12.34。 – 2010-03-31 17:02:41

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;