Updating the User Interface
Just like our data class, this routine is responsible for enabling/disabling the command buttons. We have been talking about it, so let's take a closer look and code for this feature.
Try It Out - Coding the updateButtons Subroutine
1. Add a private subroutine called
updateButtons and add an
Optional variant parameter called
Private Sub updateButtons(Optional bLockem As Variant) '------------------------------------- 'Position Button ' 0 move first ' 1 move previous ' 2 move next ' 3 move last ' 4 add a new record ' 5 edit the current record ' 6 save the current record ' 7 delete the current record ' 8 undo any current changes '-------------------------------------- ' 'Either we are Editing / Adding or we are not If (editStatus = nowEditing) Or (editStatus = nowadding) Then Call lockTheControls(False) navigateButtons ("000000101") Else If (adoRecordset.RecordCount > 2) Then If (adoRecordset.BOF) Or _ (adoRecordset.AbsolutePosition = 1) Then navigateButtons ("001111010") ElseIf (adoRecordset.EOF) Or _ (adoRecordset.AbsolutePosition = lTotalRecords) Then navigateButtons ("110011010") Else navigateButtons ("111111010") End If ElseIf (adoRecordset.RecordCount > 0) Then navigateButtons ("000011010") Else navigateButtons ("000010000") End If If (Not IsMissing(bLockem)) Then lockTheControls (bLockem) End If End If End Sub
How It Works
This should look familiar – it mirrors what we did when we were building our data class. This routine is called from the
cmdButton_Click routine. Whenever a button is clicked, this routine is called and is responsible for figuring out which buttons should be enabled or disabled. It checks the
editStatus and record count. Once it knows the current state of the program, our handy routine calls the
navigateButtons helper sub that actually does the work of enabling or disabling the appropriate buttons.
And if the state of the program is
nowStatic (not adding or editing a record), then the optional parameter of
bLockem is checked. If it is there, the controls either get locked or unlocked.
Next, we'll take a peek at the
navigateButtons sub that does the enabling and disabling for us.