2010-03-30 2 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를 사용할 수 있다고 생각하지 않는다. 왜냐하면 나는 그리드가 숫자가 아닌 문자열을 내보내도록해야하기 때문이다. 또는 AsFloat을 사용할 수있는 방법이 있습니까?하지만 소수점 이하 자릿수를 사용해야합니까? (100.00)

답변

4

수행 CurrencyString := ''; 것이다 영향 모든 따라서 기본 형식을 문자열을 사용하는 경우 다음 통화 포맷 그들의 숫자 특성을 유지하면서 표시 모든 통화 변형/필드는 $ 기호없이 값해야.

하지만 당신은 명시 적으로 형식 자신의 TFormatSettings langFormat와 통화 가치, 그것은 있다 때 더 효과 없음 이전에했다 않는 :

langFormat.CurrencyString := ''; 
+0

하지만 통화하지 CurrToStrF로 설정됩니다 값이됩니다 값의 형식을 시도하고는 - 어떻게 통화 기호를 표시 할 수있는 통화 값을 변경할 수 있습니까? – croceldon

+0

는 확실하지 나는 ... 통화 기호는 통화 값에 있지만 FormatSettings에 연결되지 않은 이해 하나, 그렇지 않으면 지정되지 않은 기본 또는'langFormat.CurrencyString' 같은 특정 일에 사용되는 기본 하나. 따라서 Value가 Currency 인 경우 Currency를 유지하지만 기본적으로 Global CurrencyString에 따라 표시됩니다. '$'에서 '@'로 변경하면 이전과 같이 $ 12.34 대신에 @ 12.34처럼 값이 표시됩니다. –

2

ffFixed에 ffCurrency 변경은 통화 기호를 제거 가야 있지만 수백 구분이 없을 것입니다.

// 세퍼레이터

함께

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; 
관련 문제