gpt4 book ai didi

delphi - Firemonkey和大量数据

转载 作者:行者123 更新时间:2023-12-03 14:39:01 25 4
gpt4 key购买 nike

我刚刚看了一下 Firemonkey 的网格实现,结果发现这是一个非常简单的实现(只有 1800 行,对于网格实现来说似乎不多)。它几乎不进行自定义绘制,而是聚合了许多其他控件 - 这似乎是 Firemonkey 的做事风格。

例如,每一列都保留一组控件 - 每个单元格一个。对于具有 1,000,000 行的普通文本列,网格将在内存中保留 1,000,000 个编辑控件 - 这对我来说似乎有点疯狂。 (编辑:现在不太确定这个假设是否正确。它似乎考虑了单元格的可见性,这可能意味着它确实提供了类似虚拟模式的东西,但我不太确定...... )

我的问题:毫无疑问,Firemonkey 的这种组件聚合设计看起来简单而优雅,但它真的能够很好地适应网格中必须显示的数据量吗?我无法想象它在处理大量行时确实表现良好。 Firemonkey 处理大量数据的方式是什么?

感谢您的任何意见。

最佳答案

FireMonkey 网格仅具有可见行数的控件。因此,如果您的网格包含 10 行和 3 列,它将创建 30 个单元格控件。用 10.000 条记录填充网格没有问题:当您滚动时,30 个单元格控件将被重用并映射到新的可见行。

是的:我对此做了一些测试,因为我们有包含 100.000 条记录的 TMS 网格:-)。

如果你使用OnGetCellText(所以不是TStringgrid,它对于大量记录来说非常慢,特别是TMS网格(基于VCL stringgrid))它是非常快的(OnGetCellText只检索可见单元格的数据)。我们将此技术与我们的数据对象结合使用(这些对象已经加载,因此无需再次使用字符串值填充网格的每个单元格...)并且 TMS 和 FMX 网格都非常快,可以处理 100.000 条记录或更多!

关于delphi - Firemonkey和大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7470734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com