加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 可以快速打开大量项目的组合框

发布时间:2020-12-15 09:09:11 所属栏目:大数据 来源:网络整理
导读:我有一个来自DevExpress的TdxfCustomComboBox的自定义组合框.它在大多数情况下都能正常工作……然后我收到了客户的报告,当他们尝试打开它时,弹出窗口需要3秒钟.经过一些调查后,我发现这是因为他们的数据库有大约12000个项目正在尝试填充,并且它重新创建弹出
我有一个来自DevExpress的TdxfCustomComboBox的自定义组合框.它在大多数情况下都能正常工作……然后我收到了客户的报告,当他们尝试打开它时,弹出窗口需要3秒钟.经过一些调查后,我发现这是因为他们的数据库有大约12000个项目正在尝试填充,并且它重新创建弹出窗口并每次填充它.

这意味着包含此行的StdCtrls.TListBoxStrings.Add被调用12000次,每个字符串一次.

SendMessage(ListBox.Handle,LB_ADDSTRING,Longint(PChar(S)));

处理这一行需要通过多层消息处理程序进行多次访问,这真的让事情陷入困境.我发现这种愚蠢,因为无论如何,实际上只有十几个项目实际显示在弹出窗口中.有没有人知道一个组合框控件,不需要这种预加载,可以扩展?

编辑:不幸的是,它不能加载12,000项不是一个选项.组合框中的项目数基于数据库中的项目数,并且它们都必须可用.也没有将它变成组合框以外的东西.没有足够的屏幕空间.

解决方法

我能想到的最佳解决方案是使用TButtonEdit,当你点击按钮时,TVirtualStringTree(闪电般快速)会弹出包含这些项目,每当用户点击一个项目时,弹出窗口将关闭,所选项目将是显示在TButtonEdit的文本属性中 – 这可以在几分钟内完成(5-10)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读