2

我在 Delphi Xe8 中有一个多设备项目。我有一个与数据库记录一起加载的 TListBox 组件。

问题是有时列表可能非常大,因此加载需要很长时间。所以我想部分加载它,当我向下滚动时加载新记录。我怎么做?

现在我使用 TFDQuery 加载表的每条记录。

更新: 经过一段时间后,我意识到问题不在于从数据库中加载所有记录,而在于在 TListBox 中创建所有 TListBoxItems。所以我仍然想做几乎相同的事情,但现在加载所有数据库记录,但不为所有记录创建 TListBoxItems。

4

1 回答 1

2

TFDQuery上的 Embarcadero wiki,您可以设置BlockReadSize

对于启用 BDE 的数据集,设置 BlockReadSize 还会导致数据集在 BlockReadSize 记录块中获取数据库信息,然后对其进行缓冲。这可以最大限度地减少应用程序和数据库服务器之间的流量。

您可以尝试的另一件事是具有RowSetSize属性的 TFDQuery 的FetchOptions

我目前没有 FireMonkey,所以我可以测试一下。

于 2015-06-04T14:16:12.500 回答