jpf*_*ius 12 delphi delphi-xe2 firemonkey
我刚看了一下Firemonkey的网格实现,结果发现它是一个非常简单的实现(只有1800行,对于网格实现来说似乎并不多).它几乎没有自定义绘画,而是聚合了许多其他控件 - 这似乎是Firemonkey的做事方式.
例如,每列保留一组控件 - 每个单元一个.对于具有1,000,000行的普通文本列,网格将在内存中保留1,000,000个编辑控件 - 这对我来说似乎有点疯狂.(编辑:现在不太确定,如果这个假设是正确的.它似乎考虑了细胞的可见性,这可能意味着它确实提供了类似虚拟模式的东西,但我不太确定......)
我的问题:毫无疑问,Firemonkey的这种组件聚合设计看起来简单而优雅,但是它真的可以很好地扩展到必须在网格中显示的数据量吗?我无法想象它在大量行中表现良好.什么是Firemonkey处理大量数据的方式?
感谢您的任何意见.
And*_*dré 11
FireMonkey网格仅具有可见行数的控件.因此,如果您有一个包含10个可见行和3列的网格,它将创建30个单元格控件.使用10.000记录填充网格没有问题:滚动时,30个单元格控件将被重用并映射到新的可见行.
是的:我做了一些测试,因为我们有30,000个记录的TMS网格:-).
如果你使用OnGetCellText(所以不是TStringgrid,这是非常慢的,有很多记录,特别是TMS网格(基于VCL stringgrid)),它非常快(OnGetCellText只检索可见单元格的数据).我们将这种技术与我们的数据对象结合使用(这些已加载,因此无需再次使用字符串值填充网格的每个单元格......)并且TMS和FMX网格都非常快,有100,000条记录或更多!
| 归档时间: |
|
| 查看次数: |
5173 次 |
| 最近记录: |