如果正在使用 TreeView 控件显示数据库,充填该树可能要耗一段时间。在这种情况下,可用 ProgressBar 控件通告用户该操作的状态。
在本说明中,使用 Do Until 循环将 Biblio.mdb 数据库装载到 TreeView 控件中。在该循环开始之前,ProgressBar 控件被显示出来。在循环过程中,ProgressBar 控件的 Value 属性用 Recordset 对象的 PercentPosition 属性进行更新。循环结束时,ProgressBar 控件再次被隐藏起来。
本主题中的代码示例是从 DataTree.vbp 示例应用程序中得来的,该示例应用程序列在 Samples目录中。
下面的示例中用到了如下对象:
要在 TreeView 控件充填时显示 ProgressBar,请按照以下步骤执行:
进度栏通常只在耗时的操作过程中才显示出来,这样做最有效。为做到这一点,可用 Form 对象的 Load 事件将该控件的 Visible 属性设置为 False。
在本说明中,将用到 Recordset 对象的 PercentPosition 属性。既然该属性返回的数字代表了 0 到 100 之间的百分比,因此在窗体被初始化时,应将 Max 属性设置为 100。(按照缺省规定,Min 属性被设置为 0。)下面的代码隐藏 ProgressBar 控件,并将其 Max 属性设置为 100。
Private Sub Form_Load()
prgLoad.Visible = False
prgLoad.Max = 100
End Sub
注意 下面的代码以“TreeView 的说明 1:将 TreeView 绑定到 Biblio.MDB 数据库”中的代码为基础。工作代码在 DataTree.vbp 示例应用程序中也可找到。
要从数据库充填 TreeView 控件,可用 Do Until 循环。该代码的基本流程大致如下:
'
假定名为“rsTitles
”的Recordset
对象变量'
已被设置为有效的数据库表。Do Until rsTitles.EOF
'
用当前记录,创建Node
对象。Set mNode = TreeView.Nodes.Add()
'
设置该Node
的属性。mNode.Text = rsTitles!Fields(1).Value
'
移动到下一记录。rsTitles.MoveNext
Loop
要更新 ProgressBar 控件,可以使用 Recordset 对象的 PercentPosition 属性。该属性以返回记录集中当前记录在所有记录中所在位置的百分数。更新 ProgressBar 的代码应放在循环之中,如下所示:
Do Until rsTitles.EOF '
更新ProgressBar
控件。prgLoad.Value = rsTitles.PercentPosition
Set mNode = TreeView.Nodes.Add()
'
设置Node
的属性。mNode.Text = rsTitles!Fields(1).Value
'
移动到下一记录。rsTitles.MoveNext
Loop
当 TreeView 控件的 Node 对象装载完毕后,可用如下代码隐藏 ProgressBar 控件:
Private Sub cmdLoad_Click() '
显示ProgressBar
控件。prgLoad.Visible = True
Do Until rsTitles.EOF
'
更新ProgressBar
控件。prgLoad.Value = rsTitles.PercentPosition
Set mNode = TreeView.Nodes.Add()
'
设置Node
的属性。mNode.Text = rsTitles!Fields(1).Value
'
移动到下一记录。rsTitles.MoveNext
Loop
'
隐藏ProgressBar
控件。prgLoad.Visible = False
End Sub