Firemonkey和大量的数据
我只是看了一下Firemonkey的网格实现,事实证明这是一个非常简单的实现(只有1800条线对于网格实现来说似乎并不多)。 它几乎没有自定义绘画,但是会聚合很多其他控件 - 这似乎是Firemonkey做事的风格。
例如,每列保留一组控件 - 每个单元一个。 对于包含1,000,000行的正常文本列,网格将在内存中保留1,000,000个编辑控件 - 这对我来说似乎有点疯狂。 ( 编辑:现在不太确定如果这个假设是正确的,似乎考虑到细胞的可见性,这可能意味着它确实提供了像虚拟模式,但我不太确定... )
我的问题:毫无疑问,Firemonkey的这个组件集合设计看起来简单而优雅,但是它确实可以很好地满足网格中必须显示的数据量? 我无法想象它在大量行中表现良好。 什么是Firemonkey处理大量数据的方式?
感谢您的任何意见。
FireMonkey网格仅控制可见线的数量。 所以如果你有一个有10个可见行和3列的网格,它将创建30个单元格控件。 用10.000记录填充网格是没有问题的:当您滚动30个单元格时,控件被重用并映射到新的可见行。
是的:我做了一些测试,因为我们有TMS网格与100.000记录:-)。
如果你使用OnGetCellText(所以不是TStringgrid,这是很慢的记录,特别是TMS网格(基于VCL的stringgrid))它非常快(OnGetCellText只检索可见单元格的数据)。 我们将这种技术与我们的数据对象结合使用(这些对象已经加载完毕,因此不需要再次使用字符串值填充网格的每个单元格...),并且TMS和FMX网格都非常快,具有100,000条记录或更多!
链接地址: http://www.djcxy.com/p/60465.html