当前位置 : 主页 > 编程语言 > delphi >

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

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

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

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

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

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

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