在编辑数据库的记录时,可以用 StatusBar 控件通知用户数据库的各种属性,例如正在编辑的表的名称、其创建日期、以及最后一次更新的日期。
下面的代码用到了如下对象:
添加显示数据库属性的 StatusBar
要在运行时创建 Panel 对象的集合,需要使用 Add 方法。首先需要声明一个 Panel 类型的变量。在添加每个 Panel 对象时,可以用该变量包含对新创建的对象的引用。下面的代码在 Form 对象的 Load 事件中创建了三个 Panel 对象。
Private Sub Form_Load() Dim pnlX As Panel Dim i As Integer For i = 1 to 3 '
第一个面板已存在。Set pnlX = sbrData.Panels.Add()
Next i
End Sub
注意:在向集合中添加了三个 Panel 对象之后,控件中实际上有四个面板,原因是该控件中已缺省地创建了一个面板。
StatusBar 控件的一个特性就是面板能够根据自身的内容自动改变大小。下例循环遍历了所有 Panel 对象,并将每个的 AutoSize 属性设置为 sbrSpring(1)。这样每个面板通过“伸缩”分享该控件的总宽度。
Private Sub Form_Load() Dim pnlX As Panel Dim i As Integer For i = 1 to 3 '
第一个面板已存在。Set pnlX = sbrData.Panels.Add()
Next i
'
改变所有面板的AutoSize
。For i = 1 to 4 ' < --
新代码sbrData.Panels(i).AutoSize = sbrSpring '
新Next i '
新End Sub
要改变所有面板中显示的信息,只需设置该 Panel 对象的 Text 属性即可。下面的代码显示了由数据访问对象打开的数据库的有关信息。
在 Form 对象的 Load 事件中,首先创建两个数据库变量,并分别赋值为打开的数据库 (Biblio.mdb) 和记录集 (Authors)。然后代码将 Name、DateCreated、LastUpdated 和 LockEdit 属性的值赋予每个 Panel 对象的 Text 属性。
'
声明数据库变量。Dim myDB As Database, myRs As Recordset
'
将Database
设置为BIBLIO.MDB
数据库。Set myDB = DBEngine.Workspaces(0). _
OpenDatabase("BIBLIO.MDB")
'
将记录集变量设置为Authors
表。Set myRs = _
myDB.OpenRecordset("Publishers", dbOpenTable)
'
将Text
属性设置为记录集属性。sbrData.Panels(1).Text = "
名称:" & myRs.Name
sbrData.Panels(2).Text = "
创建日期:" & _
myRs.DateCreated
sbrData.Panels(3).Text = "
上一次修改的日期:" & _
myRs.LastUpdated
sbrData.Panels(4).Text = "
编辑上锁:" & myRs.LockEdits
StatusBar 控件还可以用来重新设置正在显示的属性。在上面的应用实例中,DataGrid 控件被绑定到 Data 控件。(关于如何实现控件的数据绑定的详细信息,请参阅《程序员指南》中的“使用 Visual Basic 标准控件”中的“使用 ADO 数据控件”)。在该 StatusBar 显示的属性中,只有 LockEdits 属性可以被重新设置。要做到这一点,可以在 PanelClick 事件中使用 Select Case 语句,确定单击了哪个 Panel 对象。PanelClick 事件包含有有对被单击的 Panel 的引用。使用该引用即可重新设置被单击的 Panel 对象的 Text 属性。
下面的代码首先创建 Recordset 类型的变量,并将其设置为由 Data 控件打开的记录集。Select Case 语句被用来检测 Panel 对象的 Index 属性。如果 Index 为 4,则 LockEdits 属性在 -1 (True) 和 0 (False) 之间切换。最后,使用新的信息更新 Panel 对象的 Text 属性。
Private Sub sbrData_PanelClick(ByVal Panel As Panel) Dim myRs As Recordset '
声明Recordset
变量。'Data
控件的名称为"datData"
Set myRs = datData.Recordset '
设置变量。
Select Case Panel.Index
Case 1 to 3
'
不能设置这些面板。Case 4 ' Updateable Property is settable.
'
切换该属性。myRs.LockEdits = Abs(myRs.LockEdits) - 1
'
更新Panel
对象的Text
属性。sbrData.Panels(4).Text = "LockEdits: " _
& myRs.LockEdits
End Select
End Sub