' ============================================================
'  RECENT MENU sample project
'  copyright Larry Blake, 2004
'
'  You may use this code freely.  Code is "as is".
'  No warranties are implied.
' ============================================================
Option ExplicitDim strItem As String, strRecentItem(4) As String
' =============
'   START-UP
' =============Private Sub Form_Load()    LoadRecentMenu
End Sub
' ===================
'   SCREEN CONTROLS
' ===================Private Sub mnuRecentItem_Click(Index As Integer)
    txtItem.Text = strRecentItem(Index)
    cmdAdd_Click
End Sub
Private Sub cmdAdd_Click()
    With txtItem
        .Text = Trim(.Text)
        If (.Text = "") Then
            Beep
        Else
            strItem = .Text
            SaveRecentItem
        End If
    End With
End Sub' ==================
'   OTHER ROUTINES
' ==================Private Sub LoadRecentMenu()
    Dim i As Integer' Show the "(none)" option only...
    mnuRecentNone.Visible = True    For i = 1 To UBound(strRecentItem)
        mnuRecentItem(i).Visible = False
    Next i' ...unless entries exist.
    For i = 1 To UBound(strRecentItem)
        strRecentItem(i) = GetSetting(App.EXEName, "recent", "item" & CStr(i), "")
        If (strRecentItem(i) <> "") Then
            mnuRecentItem(i).Caption = "&" & CStr(i) & ". " & strRecentItem(i)
            mnuRecentItem(i).Visible = True
            mnuRecentNone.Visible = False
        End If
    Next i
End Sub
Private Sub SaveRecentItem()
    Dim i As Integer' Already the most recent?
    If (strRecentItem(1) <> strItem) Then
        SaveSetting App.EXEName, "recent", "item1", strItem
        
' No.  Shift other entries down one.
        For i = 1 To UBound(strRecentItem) - 1
            If (strRecentItem(i) = strItem) Or (strRecentItem(i) = "") Then
                Exit For
            End If            SaveSetting App.EXEName, "recent", "item" & CStr(i + 1), strRecentItem(i)
        Next i        LoadRecentMenu
    End If
End Sub