2013-05-10 56 views
2

我們剛剛從Delphi 2010升級到XE4,並首次使用FireMonkey,因此在黑暗中磕磕絆絆地試圖弄清楚它是如何工作的。Delphi XE4 Firemonkey網格控件 - 單獨設計單元格

根據一個查詢後,我試圖讓一個TGrid組件中的單個單元格基於一些規則顯示不同。我已經通過張貼麥克薩頓有用的代碼工作:

Firemonkey Grid Control - Styling a Cell based on a value (via the OnGetValue function call)

我不得不做出一些改變,以得到它在XE4編譯;它運行代碼時看起來都不錯,除了:

  1. 字體填充不被識別,所以現在已經清空了這一點。
  2. 字體樣式根本沒有改變,它顯示爲默認樣式,無論如何。

相關的代碼(其餘是相當多按照上面的鏈接):

Procedure TFinancialCell.ApplyStyle; 
var 
    T: TFMXObject; 
begin 
    inherited; 
    ApplyStyling; 
end; 

Procedure TFinancialCell.ApplyStyling; 
begin 
// If IsNegative then 
// FontFill.Color:=claRed 
// else 
// FontFill.Color:=claBlack; 

    Font.Style:=[TFontStyle.fsItalic]; 

    If IsImportant then 
    Font.Style:=[TFontStyle.fsBold] 
    else 
    Font.Style:=[]; 

    If Assigned(Font.OnChanged) then 
    Font.OnChanged(Font); 

    Repaint; 
end; 

的IsImportant標誌被設置正確,這樣似乎並不成爲問題。

任何與此有關的幫助將非常感激。提前抱歉,我可能會錯過任何愚蠢的東西。

+0

非常好的問題,我想知道這個自己。 – 2013-05-10 12:31:54

+0

我目前發現的唯一其他可能有用的信息是:http://monkeystyler.com/blog/entry/applystyle-and-freestyle-in-firemonkey然而,我不知道這是否與我的查詢有關或不,因爲我不太瞭解樣式代碼。在我的查詢中提到的原始代碼似乎與發佈時嘗試的人員一起工作良好;我不確定是否XE3/XE4更改導致它無法正常工作。 – Alex 2013-05-10 14:37:11

回答

2

那篇文章在很大程度上是由在我的FireMonkey指南網站的一些東西所取代,http://monkeystyler.com/guide/Category:Grids

從XE3起,如果你想修改你需要從StyledSettings屬性中刪除相應的項目的東西,

StyledSettings := StyledSettings - [TStyledSetting.ssStyle, TStyledSetting.ssFontColor] 

要更改字體顏色使用FONTCOLOR財產

+0

感謝邁克,我現在工作得很好,很棒。我必須承認,我不知道在哪裏放置這些代碼(我相信我會及時到達那裏)。經過試驗和錯誤,我把它放到TFinancialCell.ApplyStyling然後它工作,所以我認爲這是正確的? – Alex 2013-05-11 15:26:15

+0

如果您正在使用自定義單元類,則在構造函數中彈出它,因爲它只需要運行一次。通過我給出的鏈接查看示例。 – 2013-05-11 21:23:27

+0

這有點明顯,謝謝! – Alex 2013-05-13 07:19:10