很多程序都使用详细数据查看的专用工具。这些典型的专用工具即为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事件就会对时钟进行设置。如果时钟时间终止而用户没有改变列表的行,新的详细数据将被显示。如果用户再次更改列表的行,时钟将重新设置。
这一技术可以使得用户界面变得更加敏锐,并能够防止程序执行其他不必要的任务。