Delphi 处理速度 各位大哥大姐,小弟是Delphi 开发的,现遇到相当麻烦的问题,就是Delphi控件处理速度的问题。。我用的是ListView 控件,,现在有数据量20000-50000条左右,一旦全部加到ListView里,程序就很卡,而且加载数据的时候速度还很慢,,请问有什么有效的办法可以解决这个问题!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ListView1.Items.BeginUpdate;//中间写代码ListView1.Items.EndUpdate; 推荐但ListView1表现最好也就在一万条左右,数据量太大也会很卡。建议只显示用户需要的数据,每个人也不可能一次看2万条数据啊! 换个控件,用VirtualTreeView,这个控件最大的特点就是快,支持大容量数据 ListView1.Items.BeginUpdate;//中间写代码ListView1.Items.EndUpdate;没效果 改用VirtualTreeView,我加载了6W条都没问题。 几万条数据对于ListView已经超负荷了,还是分屏显示每次只显示一部分 VirtualTreeView的机制是为加载速度专门实现的有点类似显示才加载,所以速度特别快 你可以试试ListView 的OnData事件,需要先定义一个结构体,并自动创建一个动态列表管理加载的数据。由onData装入,节点行的维护要自行维护。这样速度非常快,所耗费用时间基本上是提取数据的时间。可以试一试。还是建议你不要这么用,有谁一下子能看上万行数据啊,采用分页吧,速度快,服务器压力小,网络流量也小。 要想从根本上解决问题 , 就要重新LISTVIEW ,用API 控制滚动条 , 实现动态加载 ;数据内容(LISTVIEW里边的内容)可以存在内存或者文件中;难度比较高 我又比较懒 所以还是说下吧~~ 忘记了 从LISTVIEW的父类继承 很多年的老问题了,还有人问?打开ownerdata为true在ondata事件里写显示,100万也不停顿。 Virtual ListView。在于把ListView->OwnerData设为true,然后直接设置ListView->Items->Count为数据总数,实际的数据可以保在任意其它速度较快且可直接索引的容器里(如STL中的vector),然后关键是在OnData事件中写入代码通过Item->Index从容器中(如vector)取出数据,然后用Item->Caption = ???;Item->SubItems->Add(???);Item->SubItems->Add(???);来动态的写入数据到ListView用于UI显示,如此Virtual ListView即完成. 用ListView的话,建议分页,自己设定一个变量控制页数,根据用户需要提取需要显示的数据。用Virtual ListView的话就更方便了,每个项目需要显示的时候,控件才要求你提供数据的。 你用别的程序一下子读那么多也是卡的,直接在sqlserver里显示都会卡,我以前写数据库的都是,自己手动读取然后绑定到控件上,或者填弃进去的,速度非常快的,希望对楼主有所帮助 引用 22 楼 yshuui 的回复:Virtual ListView。在于把ListView->OwnerData设为true,然后直接设置ListView->Items->Count为数据总数,实际的数据可以保在任意其它速度较快且可直接索引的容器里(如STL中的vector),然后关键是在OnData事件中写入代码通过Item->Index从容器中(如vector)取出数据,然后用Item->Caption = ?……学习! 对,Ondata加载数据非常快的。 建议分页,想想看用户使用一个几万条目的ListView,也不方便使用。 求助,如何把IE里看到的数值发送到memo? ShellExecute 这样的条件判断怎么写 怎样从数据库删除图片阿,为什么只为null再显示就报错啊 类中怎么定义的线程? ActionList 如果ACCESS数据库中有一个文本类型的字段超过255怎么办? 为什么会这样,注册表问题! 请问怎么获得当前线程的句柄? 2.3号31次硬卧一张,谁要,13911074882 有谁知道PE是个什么概念 还有什么PE结构分析 这是啥意思 想结交学delphi朋友
//中间写代码
ListView1.Items.EndUpdate;
但ListView1表现最好也就在一万条左右,数据量太大也会很卡。
建议只显示用户需要的数据,每个人也不可能一次看2万条数据啊!
//中间写代码
ListView1.Items.EndUpdate;
没效果
有点类似显示才加载,所以速度特别快
由onData装入,节点行的维护要自行维护。这样速度非常快,所耗费用时间基本上是提取数据的时间。可以试一试。还是建议你不要这么用,有谁一下子能看上万行数据啊,采用分页吧,速度快,服务器压力小,网络流量也小。
打开ownerdata为true
在ondata事件里写显示,100万也不停顿。
ListView->Items->Count为数据总数,实际的数据可以保在任意其它速度较快且可直接索引的容器里(如STL中的vector),然后关键是在OnData事件中写入代码通过Item->Index从容器中(如vector)取出数据,然后用
Item->Caption = ???;
Item->SubItems->Add(???);
Item->SubItems->Add(???);
来动态的写入数据到ListView用于UI显示,如此Virtual ListView即完成.
用Virtual ListView的话就更方便了,每个项目需要显示的时候,控件才要求你提供数据的。
Virtual ListView。在于把ListView->OwnerData设为true,然后直接设置
ListView->Items->Count为数据总数,实际的数据可以保在任意其它速度较快且可直接索引的容器里(如STL中的vector),然后关键是在OnData事件中写入代码通过Item->Index从容器中(如vector)取出数据,然后用
Item->Caption = ?……
学习!