gpt4 book ai didi

Delphi 添加项目到 ComboBox 速度

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

我有一个相当复杂且大型的应用程序,可以处理大量数据。有没有一种快速的方法可以将项目添加到 ComboBox 而不需要那么长时间?在我的 P3 3.2ghz 上,以下代码片段只需不到一秒即可添加大约 32,000 个项目。 (MasterCIList 是一个 StringList,字符串通常长度为 20 - 30 个字节)。

with LookupComboBox do
begin
Items.BeginUpdate;
Items.Clear;
for i := 0 to MasterCIList.Count - 1 do
Items.Add(MasterCIList[i]);
Items.EndUpdate;
end;

深入研究 VCL,发现在 TComboBoxStrings.Add 中,有一个对

的调用
Result := SendMessage(ComboBox.Handle, CB_ADDSTRING, 0, Longint(PChar(S)));

我猜这确实很耗时(好吧,我知道是这样)。有没有其他方法可以更快地填充项目?有可用的高速组合盒吗?我有 TMS 组件,但它们似乎是 TComboBox 的扩展。

例如,我有 PlusMemo,它似乎是 TMemo 的完全重写。我可以轻松地在一秒钟内向 PlusMemo 添加一百万行。 TMemo,我不这么认为。

非常感谢您抽出时间!

最佳答案

抱歉,如果我有点麻烦,但我怀疑包含 32,000 个项目的 TComboBox 是否远程“可用”——我想说它慢是有原因的:它从来就不是为了这样做:)

是否可以过滤数据并仅加载子集?更具体地说,在我一直在开发的一个特定数据库应用程序中,用户可以搜索一个人。我们让用户输入至少 3 或 4 个字符的名称,然后才开始在列表框中返回结果。这大大提高了搜索表单的可用性,也大大加快了整个过程。

您能遵循类似的方法吗?

或者,以完全不同的方式,也许您可​​以看一下 VirtualTreeView组件 --- 可以直接使用,也可以作为灵感。

关于Delphi 添加项目到 ComboBox 速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/668054/

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