有一个朋友在用Delphi的VCL框架实现这种应用的时候,有这样的方案,就是不将数据全部插入listview中由windows维护,而是自己维护一个数据缓冲区,listview根据显示的长度显示其中的内容,当拖动滚动条的时候,VCL框架可以告知新的起始记录位置和结束记录位置,从缓冲区中取出相应的数据放入listview中即可,避免了上万条记录插入listview所耗费的时间。
我对VCL框架不是太熟悉,可能描述的不是太准确,就是这样一个思路,不将全部数据插入listview中,而是显示当前需要显示的数据。但是我觉得这需要listview
1. 不插入记录而可以置需要显示的总记录数,这样滚动条的宽度才能反映真实的数据量。
2. 在滚动条拖动的时候能够通知当前的起始和结束位置
不知道MFC的框架能不能实现这样的功能或者有其它的解决办法,请大侠们指教。有思路我们也可以共同探讨。谢了。
6 个解决方案
#1
自己顶一下
#2
use LVS_OWNERDATA
http://dev.csdn.net/develop/article/22/22243.shtm
http://dev.csdn.net/develop/article/22/22243.shtm
#3
膜拜了蒋版主的大作,受益匪浅。
如果用滚动条和缓冲来做的话,有点建议:
1,可以将记录分页,每页的记录数由界面情况来定(可以定位界面全屏显示多一点)。
2,将滚动条的移动range和总页数对应起来。
3,响应滚动条拖动消息并加载一个页(或左右几个页)的数据到界面。
4,子类化滚动条,拖动的时候界面不滚动,在鼠标附近显示页数,拖动完毕,加载适当的页。
如果用滚动条和缓冲来做的话,有点建议:
1,可以将记录分页,每页的记录数由界面情况来定(可以定位界面全屏显示多一点)。
2,将滚动条的移动range和总页数对应起来。
3,响应滚动条拖动消息并加载一个页(或左右几个页)的数据到界面。
4,子类化滚动条,拖动的时候界面不滚动,在鼠标附近显示页数,拖动完毕,加载适当的页。
#4
呵呵!我也参合点!
用一种动态添加的方法,要显示什么的时候我再添加进去。很垃圾!
用一种动态添加的方法,要显示什么的时候我再添加进去。很垃圾!
#5
up
#6
我的做法就是分页显示
#1
自己顶一下
#2
use LVS_OWNERDATA
http://dev.csdn.net/develop/article/22/22243.shtm
http://dev.csdn.net/develop/article/22/22243.shtm
#3
膜拜了蒋版主的大作,受益匪浅。
如果用滚动条和缓冲来做的话,有点建议:
1,可以将记录分页,每页的记录数由界面情况来定(可以定位界面全屏显示多一点)。
2,将滚动条的移动range和总页数对应起来。
3,响应滚动条拖动消息并加载一个页(或左右几个页)的数据到界面。
4,子类化滚动条,拖动的时候界面不滚动,在鼠标附近显示页数,拖动完毕,加载适当的页。
如果用滚动条和缓冲来做的话,有点建议:
1,可以将记录分页,每页的记录数由界面情况来定(可以定位界面全屏显示多一点)。
2,将滚动条的移动range和总页数对应起来。
3,响应滚动条拖动消息并加载一个页(或左右几个页)的数据到界面。
4,子类化滚动条,拖动的时候界面不滚动,在鼠标附近显示页数,拖动完毕,加载适当的页。
#4
呵呵!我也参合点!
用一种动态添加的方法,要显示什么的时候我再添加进去。很垃圾!
用一种动态添加的方法,要显示什么的时候我再添加进去。很垃圾!
#5
up
#6
我的做法就是分页显示