在VB的ListView中动态加载记录

2008-02-23 07:03:21来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

1 2 下一页

在访问数据库时,经常会遇到记录数量过多,对数据列表进行初始化时耗费大量时间,使用户在进入界面时等待时间过长。为了解决这个问题,我们可以通过使用动态加载数据的方法来实现。

即当进行初始化时,只是加载少量的数据,使控件快速完成初始化,让用户在较短的时间内得到控制权,这时加载数据的多少可以根据实际情况进行设定;然后,当用户滚动视图的时候,我们检测其滚动的位置,判断是否需要继续加载数据,如果尚未显示的数据数量少于约定值,则继续加载一定量的数据,否则不作任何动作。这样一来,既可以实现所有数据的加载,又不影响用户的操作。

其实这种方法在VC中很容易实现,我们只要相应相应列表的WM_VSCROLL就可以了,但是在VB中,列表控件不直接支持这个消息,这就需要我们做一些额外的工作,以实现这一过程。我们似乎可以使用计时器控件定期对列表状态进行监视,从而实现改过程,但是这种方法不但影响系统运行速度,而且效果也不是很好,所以在这里我们仍然使用响应WM_VSCROLL消息的方法。

为了实现这一功能,首先是在VB中处理列表控件的消息。由于VB中无法直接处理我们所需要的消息,在这里我们就要用到一个API函数将列表控件的消息处理过程设置为我们自己定义的函数。这个API就是SetWindowLong,它的原型是

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

它有三个参数:

hwnd 是要设置的窗体句柄

nIndex 是要设置项目的索引,在这段程序里我们将其取值为GWL_WNDPROC

dwNewLong 是要设置项目的值,在这段程序里就是我们自定义的消息处理函数的地址

它的返回值是一个长整数,是调用这个API之前对应项目的值,如果设置失败,则返回0,对于具体的错误信息可以调用GetLastError来获得,在这里它将返回原始的列表控件的消息处理函数的地址。

具体的做法如下所示:

1. 在现有的模块或新建立的模块中定义消息处理函数

消息处理函数应定义为下面的形式:







上一篇: VB学习:MX记录获取组件
下一篇: 基础:如何用VB建立快捷方式

1 2 下一页

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Visual Basic 的未来

下一篇:VB基础:认识VB的文件系统对象FSO