When editing records of a database, a possible application of the StatusBar control would be to inform the user of various properties such as the name of the table being edited, its creation date, and the date of the last update.
The code below uses the following objects:
To add a StatusBar that shows database properties
To create a collection of Panel objects at run time, use the Add method. First, declare a variable as type Panel. As you add each Panel object, the variable will contain the reference to the newly created object. The code below uses the Form object's Load event to create three Panel objects.
Private Sub Form_Load()
Dim pnlX As Panel
Dim i As Integer
For i = 1 to 3 ' First panel already exists.
Set pnlX = sbrData.Panels.Add()
Next i
End Sub
Note that after adding three Panel objects to the collection, there are really four panels on the control because the control creates one by default.
One of the features of the StatusBar control is the ability of panels to automatically resize according to their contents. The example iterates through all the Panel objects, and sets the AutoSize property for each to sbrSpring (1). With this setting, each panel "springs" to share the total width of the control.
Private Sub Form_Load()
Dim pnlX As Panel
Dim i As Integer
For i = 1 to 3 ' First panel already exists.
Set pnlX = sbrData.Panels.Add()
Next i
' Change the AutoSize of all panels.
For i = 1 to 4 ' < -- New code
sbrData.Panels(i).AutoSize = sbrSpring ' New
Next i ' New
End Sub
To change the information displayed in any panel, set the Text property of the Panel object. The code below displays information about a database that has been opened with Data Access Objects.
In the Form object's Load event, database variables are first created and assigned to an open database ("Biblio.mdb") and a recordset ("Authors"). The code then assigns the Name, DateCreated, LastUpdated, and LockEdit properties to each Panel object's Text property.
' Declare database variables.
Dim myDB As Database, myRs As Recordset
' Set the Database to the BIBLIO.MDB database.
Set myDB = DBEngine.Workspaces(0). _
OpenDatabase("BIBLIO.MDB")
' Set the recordset variable to the Authors table.
Set myRs = _
myDB.OpenRecordset("Publishers", dbOpenTable)
' Set Text properties with recordset properties.
sbrData.Panels(1).Text = "name: " & myRs.Name
sbrData.Panels(2).Text = "Date Created: " & _
myRs.DateCreated
sbrData.Panels(3).Text = "Last Updated " & _
myRs.LastUpdated
sbrData.Panels(4).Text = "Lockedits: " & myRs.LockEdits
The StatusBar control can also be used to reset the properties that are being displayed. In the present scenario, a DataGrid control is bound to the Data control. For more information on how to data-bind controls, see "Using the ADO Data Control" in "Using Visual Basic's Standard Controls" of the Programmer's Guide. Among the properties displayed in the StatusBar, only the LockEdits property can be reset. To accomplish this, use a Select Case statement within the PanelClick event to determine which Panel object was clicked. The PanelClick event contains a reference to the Panel that the user clicked. Using this reference, you can reset the Text property of the clicked Panel object.
The code below first creates a variable of type Recordset and sets it to the recordset opened with the Data control. The Select Case statement is then used to test the Panel object's Index property. If the Index is 4, the LockEdits property is toggled between -1 (True) and 0 (False). Finally, the Panel object's Text property is updated with the new information.
Private Sub sbrData_PanelClick(ByVal Panel As Panel)
Dim myRs As Recordset ' Declare Recordset variable.
' The Data control is named "datData"
Set myRs = datData.Recordset ' Set variable.
Select Case Panel.Index
Case 1 to 3
' Can't set these panels.
Case 4 ' Updateable Property is settable.
' Toggle the property.
myRs.LockEdits = Abs(myRs.LockEdits) - 1
' Update the Panel object's Text property.
sbrData.Panels(4).Text = "LockEdits: " _
& myRs.LockEdits
End Select
End Sub