2011-11-02 27 views
7

我試圖創建基於FireMonkey的第一個應用程序,並且我撞上了牆。 我能找到的唯一的虛擬列表控件是tGrid。Firemonkey:爲tGrid或替代網格/列表組件創建樣式(虛擬)

這個組件很不錯,但我不知道如何擴展或定製它。 我得到有tCheckbox列,tImage列等,但如果我需要一個ButtonColumn或類似的東西?

此外,我想根據它所表示的數據的狀態來設置一行的樣式。

一個示例:如果行中表示的數據具有「Error = True」,則應該顯示爲紅色。

有沒有人有類似的問題?或者找到備用虛擬列表/網格組件?或者甚至只是關於使用tGrid組件的一些提示。 這些組件在所有數據庫應用程序中都非常重要,所以它應該是一個非常常見的請求。

也只是作爲一個說明,我不認爲TGrid支持拖動&行刪除?

我已經看過 Firemonkey version of VirtualTreeViewFiremonkey and large amounts of data

+0

阿蒂斯 可能是我有點晚了。 Im新的embarcadero火猴,並有一堆關於FMX Grid的問題。你可以發佈你的代碼來設計Tcolumn的樣式嗎? 謝謝 約翰 – 2012-01-28 20:41:16

+0

嗨我會回到電腦後發佈一些代碼。但我必須說,最終解決方案並不是那麼優雅。我可能會去TMS的新表組件。我的解決方案是越野車,不容易維護。 –

回答

6

如果你看看源代碼,TCheckColumn只有15行代碼。如果你需要創建你自己的專欄後代類,那很簡單。 這是一個解決方案,否則你可以動態地在你的單元格中創建一些組件,然後在檢查道具時施放這些子組件(TColumn.CellControlByRow()返回一個TControl,並且子組件會放在那裏)。

正如你想「風格」你的行,我會建議你編寫自己的TColumn類,即使你可以在OnPaint事件中進行繪畫。

+0

嗨,謝謝你的回答。 創建我自己的專欄似乎有訣竅。它當然不會在列編輯器中顯示,但我可以使用tGrid.AddObject添加它。現在我已經控制了列和單元格,其餘部分似乎更容易完成。 –

+2

如果有人有興趣, 我通過重寫TColumn的UpdateColumn過程來解決單元格的樣式。 在此我添加了一個函數,類似於GetValue,GetCellStyleLookup,它像GetValue一樣在網格中發佈。 因此,現在我可以基於虛擬內容將樣式(使用樣式編輯器創建)應用於任何單元格。我不知道這是否是最好的/預期的方式,但它的工作原理。並給予這種稀疏的文件,我沒有時間找出其他的東西。 –