2015-01-15 60 views
1

我試圖打印格式化的貨幣值的TfrxMemoView的報告與以下腳本:在FastReport的VCL 5腳本中使用FormatFloat

procedure txCreditLimitOnBeforePrint(Sender: TfrxComponent); 
begin 
    if <TRAN."CREDITAPPROVED"> = 1 then         
    txCreditLimit.Text := 'Credit Limit: ' + FormatFloat('%2.2m', <TRAN."CREDITLIMIT">) 
    else 
    txCreditLimit.Text := ''; 
end; 

但這一切,我出去是%2.2米代替實際價值。我究竟做錯了什麼?

+0

看起來像FR不支持格式字符串 – 2015-01-15 15:45:49

+0

@DavidHeffernan:但是這是在TfrxMemoView的格式屏幕上使用的字符串?我沒有看到文檔中的任何地方告訴使用什麼格式的字符串。 – Caynadian 2015-01-15 15:54:52

回答

3

在FastReport的功能FormatFloat工作就像在Delphi FormatFloat,所以你可以使用:

procedure txCreditLimitOnBeforePrint(Sender: TfrxComponent); 
begin 
    if <TRAN."CREDITAPPROVED"> = 1 then         
    txCreditLimit.Text := 'Credit Limit: ' + FormatFloat('#,##0.00 €', <TRAN."CREDITLIMIT">) 
    else 
    txCreditLimit.Text := ''; 
end; 

由於FormatFloat不支持系統貨幣另一種可能是使用綁定到包含表達式數據集備忘錄像例如Credit Limit: [TRAN."CREDITLIMIT"],並使用您提到的語法在Object Inspector中格式化此備忘錄。 印刷你條件將變爲:

procedure txCreditLimitOnBeforePrint(Sender: TfrxComponent); 
begin 
    txCreditLimit.Visible := <TRAN."CREDITAPPROVED"> = 1; 
end 

enter image description here

表達包含在方括號將在TextObjects被計算,所以例如
[<DS."a">] * 2 := [<DS."a"> + <DS."a">]將導致的輸出:12.50 € * 2 = 25.00 €
如果TfrxMemoView的格式定義爲%2.2m。在所示的例子中,兩個術語(包括在方括號內)被格式化,第二個術語被另外計算。

+0

這很棒!謝謝!另外,<>和[]類型包圍具體是指什麼?如果我將文本設置爲「信用限額:」它不起作用。當我將它設置爲「信用額度:[]」它呢?你甚至不用上面例子中的<>,所以我有點困惑。 – Caynadian 2015-01-16 12:58:17

+0

@Caynadian我對你的評論的答案做了編輯。 – bummi 2015-01-16 15:11:59