带有历史记录功能的菜单
在我们日常使用的一些软件中,如office系列、visual家族等,经常会看到打开菜单中记载了上次进行的任务。这样的菜单可以方便用户操作。我们也可以使用VB来实现这样的功能。本文以常见的添加值不超过五个的菜单为例,演示如何实现该功能。这个程序不需要具备API函数调用,只需使用VB自身携带的函数即可。主要使用getsetting、savesetting和deletesetting函数来完成。下面是具体步骤:
1. 打开VB并选择标准窗口
在工具菜单中选择编辑菜单器,并进行以下设置:
- Caption: name
- Index: visible indentation
- File: mnufile 空 true 0
- Open: mnuopen 空 true 1
- - mnudesh 空 true 1
- - mnufilename 1 false 1
- - mnufilename 2 false 1
- - mnufilename 3 false 1
- - mnufilename 4 false 1
- - mnufilename 5 false 1
- abc mnufilename 6 false 1
- 2 ----(注:一定要在最后一项的caption设一个虚值,这样做的原因是为了后面在菜单项未满时添加文件名做判断,并没有实际意义)----
2. 在窗体中加载一个对话框
对话框的name为commongdialog1。
3. 源程序如下:
在通用里声明如下常量和函数:
```vb
Const k1 "记忆菜单"
Const k2 "文件名"
Function addfilename(filename)
' 添加文件名
DIM I,G AS INTEGER
For I 5 To 1 Step -1
' 从第五项开始向第一项
If mnufilename(1).Caption < > filename And mnufilename(2).Caption < > filename And mnufilename(3).Caption < > filename And mnufilename(4).Caption < > filename And mnufilename(5).Caption < > filename Then
' 判断所选的文件是否已存在
If mnufilename(I).Caption "" And mnufilename(I 1).Caption < > "" Then
' 此处初始化菜单,利用了虚设菜单项
SaveSetting k1, k2, I, filename ' 在注册表里保存
ElseIf mnufilename(1).Caption < > "" Then
' 表明菜单已满
DeleteSetting k1, k2, 5 ' 按先入先出规则,删除最后一项
For G 4 To 1 Step -1 ' 一至四项依次后移
n GetSetting(k1, k2, G) ' 从注册表里取其值
SaveSetting k1, k2, (G 1), n ' 顺延到下一项
Next
SaveSetting k1, k2, 1, filename
Exit Function
End If
End If
Next
End Function
Function display()
' 显现各项文件名
DIM I AS INTEGER
For I 5 To 1 Step -1
l GetSetting(k1, k2, I)
If l < > "" Then
mnufilename(I).Visible True
mnufilename(I).Caption l
Else
mnufilename(I).Visible False
mnufilename(I).Caption ""
End If
Next
End Function
Private Sub Form_Load()
Call display
End Sub
Private Sub mnuopen_Click()
DIM FILENAME
Call addfilename(filename)
Call display
End Sub
```
通过以上步骤,我们就可以实现带有历史记录功能的菜单了。用户可以方便地选择之前打开过的文件,提高操作效率。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。