Total Visual SourceBook

Total Visual SourceBook CD and Printed Manual

Microsoft Access/ Office 2016, 2013, 2010, and 2007 Version
is Shipping!

New features in Total Visual SourceBook for Access, Office 2007 and VB6

Supports Access/Office 2016, 2013, 2010 and 2007, and Visual Basic 6.0!

Separate version for Access/Office 2003, 2002, and 2000.

Separate version for:
Access 97/95

View all FMS products for Microsoft AccessAll Our Microsoft Access Products

SourceBook Info:

Why SourceBook?


"The code is exactly how I would like to write code and the algorithms used are very efficient and well-documented."

Van T. Dinh, Microsoft MVP




Microsoft Access, Office/VBA, VB6 Modules royalty-free source code libraryMicrosoft Access Modules royalty-free source code libraryMicrosoft Access VBA and VB6 Module Library Free trial of Total Visual SourceBook for Microsoft Access, Office, VB6 and VBA

Class: MRU in Category Microsoft Visual Basic 6 : Menus from Total Visual SourceBook

Maintain a "Most Recently Used" menu items on a Visual Basic 6 (VB6) form with the use of Windows Registry entries.

This class is commonly used to store the "Most Recently Used" file list for menu items on a form, but the list of items does not have to be a list of files. It could be used for any unique items you wish to store and display on a form's menu.

Procedure List

Procedure Name



(Declarations) Declarations Declarations and private variables for the CMRU class
MaxMRUItems Property Get the number of visible menu items, not counting the separator.
MenuItem Property Get the specified menu item. All entries from 0 to the value of MaxMenuItems must be assigned a particular menu on your form. The value 0 is used for the "separator" menu item.
Prefix Property Get the prefix string currently used for the MRU entries in the registry (defaults to MRU)
RegistryPath Property Get the current registry path string used for the MRU entries (defaults to SOFTWARE\ plus the value of App.Title)
RootKey Property Get the RootKey of the registry location used for the MRU entries in the registry (defaults to mrrkHKeyLocalMachine, or the "HKEY_LOCAL_MACHINE" hive of the registry)
SubKey Property Get the current SubKey of the registry location used for the MRU entries in the registry. If not specified, or set to "", the MRU settings are stored in the root of the key indicated by the RegistryPath property.
TagPrefix Property Get the current Tag Prefix used for the MRU tag entries in the registry (defaults to "MRUTAG")
Class_Initialize Initialize Set initial values to defaults which may be overridden with property settings
Class_Terminate Terminate Clean up local static storage
GetMRUList Method Retrieve the current MRU entries from the Windows registry, and update the captions for the form's MRU Menu Items. Use this to update your form's menus with the latest values stored in the MRU portion of the registry maintained by the SetMRUList method. It is not necessary to call this method after SetMRUList, since the SetMRUList method automatically retrieves the latest information.
SetMRUList Method Add the specified item to the top of the MRU list or clear the MRU list.
RegistryGetKeyString Private Get a string value from the system registry.
RegistrySetKeyValue Private Set a key value in the registry, creating it if it doesn't already exist.

Example Code for Using Class: MRU

' Example of the CMRU class
' To try this example, do the following:
' 1. Create a new form
' 2. Create the menu structure consisting of a top-level menu called 'mnuFile'.
' 3. Underneath this menu, create menu items called 'mnuFileOpen' and 'mnuFileSave'
' 4. Following mnuFileSave add a menu control array called 'mnuFileMRU' with 5 items, indexes 0 through 4.
'    The caption for the first mnuFileMRU item should be set to "-", which indicates that it is the divider item.
' 5. The complete menu structure should look something like this in the VBA/VB6 Tools, Menu Editor Dialog:
'    Caption         Menu Control Name
'    -----------------------------------
'    &File           mnuFile
'    ....&Open       mnuFileOpen
'    ....&Save       mnuFileSave
'    ....-           mnuFileMRU(0)
'    ....            mnuFileMRU(1)
'    ....            mnuFileMRU(2)
'    ....            mnuFileMRU(3)
'    ....            mnuFileMRU(4)
' 6. Add a FileOpen common file dialog control to the form, and name it "CommonDialog1"
' 7. Paste all the code from this example to the new form's module
' 8. Run the form. Try opening and saving files with the File Open and File Save menu,
'    and watching what happens to the Most Recently Used items on the File Menu.

' Declarations section code
Private mMRU As CMRU

Private Sub Form_Load()
  Set mMRU = New CMRU

  With mMRU
    .RootKey = mrrkHKeyLocalMachine
    .RegistryPath = "SOFTWARE\FMS\TestMRU"
    .SubKey = "MRU Entries"
    .Prefix = "MRU"
    .TagPrefix = "MRUTag"

    ' Assign the actual form's menu items to the corresponding properties of the CMRU object
    Set .MenuItem(0) = mnuFileMRU(0)
    Set .MenuItem(1) = mnuFileMRU(1)
    Set .MenuItem(2) = mnuFileMRU(2)
    Set .MenuItem(3) = mnuFileMRU(3)
    Set .MenuItem(4) = mnuFileMRU(4)

    ' Get the most recently saved list of files and update the menus

  End With

End Sub

Private Sub mnuFileMRU_Click(Index As Integer)
  Dim strFile As String
  Dim strTag As String

  ' display the value stored in the caption and tag of the menu item
  strFile = mid$(mnuFileMRU(Index).Caption, 5)
  strTag = mnuFileMRU(Index).Tag

  MsgBox "Caption: " & strFile & vbCrLf & "Tag: " & strTag

  ' Move the selected menu item to the top of the list
  mMRU.SetMRUList strFile, strTag

End Sub

Private Sub mnuFileOpen_Click()
  ' Simulate an application opening a file, and updating the MRU list
  With CommonDialog1
    .DialogTitle = "Load File"
    If .FileName <> "" Then
  ' Add the new file to the top of the list if it does not already exist.
  ' Otherwise, move the file from its current position to the top of the list.
  ' Store the length of the file in the .tag property of the menu item
      mMRU.SetMRUList .FileName, "File length: " & FileLen(.FileName)

    End If

  End With

End Sub

Private Sub mnuFileSave_Click()
  ' Simulate an application saving a new file, and updating the MRU list
  With CommonDialog1
    .DialogTitle = "Save File"
    If .FileName <> "" Then
      mMRU.SetMRUList .FileName, "File length: " & FileLen(.FileName)
    End If

  End With

End Sub

Microsoft Access Module LibraryOverview of Total Visual SourceBook

The source code in Total Visual SourceBook includes modules and classes for Microsoft Access, Visual Basic 6 (VB6), and Visual Basic for Applications (VBA) developers. Easily add this professionally written, tested, and documented royalty-free code into your applications to simplify your application development efforts.

Additional Resources