StatusBar显示数据库的属性

来源:岁月联盟 编辑:zhu 时间:2007-02-01
  在编辑数据库的记录时,可以用 StatusBar 控件通知用户数据库的各种属性,例如正在编辑的表的名称、其创建日期、以及最后一次更新的日期。

  下面的代码用到了如下对象:

  名为“frmDataviewer”的 Form

  名为“sbrData”的 StatusBar 控件

  名为“datData”的 Data 控件

  添加显示数据库属性的 StatusBar

  用 Add 方法创建 Panel 对象的集合。

  为每个 Panel 对象配置 AutoSize 属性。  

  用 Panel 对象的 Text 属性显示数据库的属性。  

  在 PanelClick 事件中用 Select Case 语句重新设置属性。

  用 Add 方法创建 Panel 对象的集合

  要在运行时创建 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 对象之后,控件中实际上有四个面板,原因是该控件中已缺省地创建了一个面板。  

  为每个 Panel 对象配置 AutoSize 属性

  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 属性显示数据库的属性

  要改变所有面板中显示的信息,只需设置该 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   

  在 PanelClick 事件中用 Select Case 语句重新设置属性

  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