2011-11-02 40 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一样在网格中发布。 因此,现在我可以基于虚拟内容将样式(使用样式编辑器创建)应用于任何单元格。我不知道这是否是最好的/预期的方式,但它的工作原理。并给予这种稀疏的文件,我没有时间找出其他的东西。 –