关闭

到底应该如何在VB的ListView中动态加载数据库中的大量记录?

3506人阅读 评论(3) 收藏 举报

在使用VB6.0访问数据库时,经常会遇到记录数量过多,对数据列表进行初始化时耗费大量时间,如何在初始化时,只是先加载少量的数据,使控件快速完成初始化.然后当按垂直滚动条的时间再加载更多的其它内容,但是又不是要它分页显示,也就是说当拖垂直滚动条是时候之前的内容还在。应该如何实现,这个问题困扰了我好入。

我参考了网上的很多文章,包括各处转载的一篇叫《在VB的ListView中动态加载记录》,发现里面介绍的方法,好像根本不行呢?

关于网上讲的捕捉MW_MOUSEWHEEL的方法,我的实践发现是:如果是当前焦点不在Listview控件上,而只是鼠标位于Listview区域内,那么是可行的;可是一旦Listview获得了焦点,那么好像就不行了?

我个人理解,要想使用Listview控件动态显示数据库中的很多数据,应该是以下的思路:

1,先显示第一批数据,

2,然后随着Listview被滚动或者滚动条被拖动,程序重新判断Listview当前的位置,

3,然后此时再从数据库里调出以当前位置的数据为中点的前后各N条数据,显示在Listview内,并且重要的是取出来的数据要比Listview所能够显示的多一些,这样保证用户滚动Listview的时候不会看到空白。

其中,第1步肯定是没有问题;

可是,第2 步中,到底应该如何通过Listview的滚动而判断出当前应该显示的数据位置呢?那个捕捉MW_MOUSEWHEEL的方法,对于Datagrid来说非常好用,可是到了Listview控件,就不那么好用了,具体症状如上述过。我知道原因在于,Listview本身是支持滚动的。可是,我现在需要Listview在完成默认滚动工作的同时还要做另外一项工作,就是判断当前滚动条的位置,这应该怎么做呢?

而第3条中,应该如何做到,比如,取出300条数据,然后在Listview中显示出第100至第200条数据呢?这样的效果,是为了让用户上下拖动时不至于看到空白,类似于制做游戏地图的思路,可是,具体到VB使用Listview作为显示载体的数据库编程中,应该怎么实现呢?

唉,这个难缠了我好久的问题,到底具体应该怎么做呢?我参考了网上好多地方转载来转载去的文章,可是行不通啊。到底有没有人成功地做过?Listview控件,又有没有一个类似Toplist_change的事件,即显示区的第一条记录发生改变时的事件呢?还有,如何判断一个Listview当前显示区域内显示了多少条记录呢?类似DataGrid的VisibleRows属性?

PS:希望大家不要告诉我,选择其它的控件吧。选择Listview是我多方比较后的认真选择。Datagrid确实用法容易、显示速度快、不用考虑大量数据同时显示的问题,可是,Datagrid在功能上有些弱。Listbox也不如Listview功能丰富。我需要Listview来显示数据库,是因为正在制做一个类似电子词典的软件,而Listview可以显示小图片,这就可以实现其中的单词分类(生词、重要词汇等);Listview还可以设定某列的text右对齐,这对于制做一个倒查词典(以单词中字母倒序为序的词典)非常重要,因为这样可以让单词列中的所有词“靠右站”,这样才像一本倒查词典。

这个问题困挠了我好久好久,我急待高手的解答,并愿意以手中的资源与人互享。我手中有一些不错的控件和工具,相信一很多人不太好找的或者是需要花很多精力找到的,我愿意把它送给帮助我的好心人作为回报!透露一些如下:Setup Factory 7.0安装文件制作工具;VB Squared skin control和Directskin ActiveX ocntrol 4.5破解版,是VB界面美化的力器!是WindowsBlind的,而且是国内非常非常难找到的破解版,绝对好使,我个人正在用。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3938次
    • 积分:50
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条
    文章存档
    最新评论