在传入详细数据时执行一个延迟程序

ZDNet软件频道 时间:2003-10-31 作者:zdnet china |  我要评论()
本文关键词:
很多程序都使用详细数据查看的专用工具。最常出现的问题是当用户迅速更改列表中的行的时候。因为此时,详细数据的传入需要一定的时间,如果用户迅速地按住列表的下拉条,列表的界面会变得反应迟缓。这一问题可以通过在详细数据传入之前执行一个延迟程序而得到解决。
本文译自Builder.com,未经许可请勿转载

很多程序都使用详细数据查看的专用工具。这些典型的专用工具即为grid(栅格)控件或者list(列表)控件,这些控件都能够显示一些概要的数据,而文本框能够在专用列表中显示更多的信息。当用户改变专用列表的行时,列表也会随着选择行的改变而更改显示的数据信息。

这种数据查看方法最常出现的问题是当用户迅速更改列表中的行的时候。因为此时,详细数据的传入需要一定的时间,如果用户迅速地按住列表的下拉条,列表的界面会变得反应迟缓。这一问题可以通过在详细数据传入之前执行一个延迟程序而得到解决。

为了得到这一方法的范例演示,可以先建立一个窗体,并在窗体中调用一个微软的FlexGrid控件,一个时钟控件,以及一个Textbox(文本框)控件。然后在Form_Load控件中添加如下的代码而初始化grid(栅格)控件:

With MSFlexGrid1
    .Cols = 2
    .Rows = 6
    .TextMatrix(1, 1) = "Test Value 1"
    .TextMatrix(2, 1) = "Test Value 2"
    .TextMatrix(3, 1) = "Test Value 3"
    .TextMatrix(4, 1) = "Test Value 4"
    .TextMatrix(5, 1) = "Test Value 5"
End With

Text1.Text = vbNullString

添加以下的子程序以传入详细数据:

Private Sub LoadDetail()
    Text1.Text = MSFlexGrid1.TextMatrix( _
        MSFlexGrid1.Row, MSFlexGrid1.Col)
End Sub

Timer1_Timer事件中添加以下的代码以调用LoadDetail子程序:

Call LoadDetail
Timer1.Enabled = False

最后,在MSFlexGrid1_RowColChange事件中添加下面的代码:

Static intLastRow As Integer

If MSFlexGrid1.Row <> intLastRow Then
    With Timer1
        .Enabled = False
        .Interval = 500
        .Enabled = True
    End With
End If

intLastRow = MSFlexGrid1.Row

如果列表中的行被改变,RowColChange事件就会对时钟进行设置。如果时钟时间终止而用户没有改变列表的行,新的详细数据将被显示。如果用户再次更改列表的行,时钟将重新设置。

这一技术可以使得用户界面变得更加敏锐,并能够防止程序执行其他不必要的任务。



责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134