如何动态的显示VB6程序中的菜单项,具体要求如下:1、动态的显示菜单大项,不需要的就不显示。2、动态的显示菜单中的子菜单项,不需要的就不显示。
解决方案 »
- 恼火!高分求助用CreateFontIndirect自定义字体时字体尺寸的问题!
- 给分100,在处理自定义消息时,如何让处于module中的winproc获得窗口的指针??
- 如何在textbox中获得或设置光标位置?
- 求助:如何实现VB读入数据文件名,并将文件名传给fortran程序,在fortran程序中打开数据文件?
- VB软件安装问题?
- 数据报表在哪里添加,我以前都添加过的,现在不记得了。请说详细点。我是用的英文版!
- 高分求助!!水晶报表的自动刷新问题.
- 未经测试的winxp全系列风格控件!!
- 急
- 如何模拟在一个窗体上按了某个键?
- VB程序运行到设置的断点,CPU占用率很高,整个VB都死掉了.啥原因?
- tab控件只调用同一个控件。
Dim f As Control
'以下代码根据菜单的Caption来决定是否显示
For Each f In Me.Controls
If TypeOf f Is Menu Then
f.Visible = InStr("菜单一;菜单二;aaa", f.Caption) '如果Caption在指定的字符串中,则显示,反之隐藏
End If
Next
Option Explicit'只显示mnuNew
Private Sub Command1_Click()
mnuFile.Visible = True
mnuSave.Visible = False
mnuNew.Visible = True
End Sub
'只显示mnuSave
Private Sub Command2_Click()
mnuFile.Visible = True
mnuSave.Visible = True
mnuNew.Visible = False
End Sub'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'函数功能:定义三个菜单对象:mnuFile、mnuNew、mnuSave,mnuFile是父菜单,其余两个是子菜单
'特别说明:父菜单属性如果设置为False,子菜单的属性就不能设置为True
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Private Sub Form_Load()
mnuFile.Visible = True
mnuSave.Visible = True
mnuNew.Visible = True
End Sub
如果级联菜单没有下级子菜单,则没有存在的意义。
谢谢,可否动态的增加或删除子菜单,实现象 WORD 文件菜单下 自动增加 最近打开文档 名称的功能。
作者:董文涛
我们经常见到一些软件,如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
---- (注:一定要在最后一项的caption设一虚值,这样做的原因是为了后面在菜单项未满时添加文件名做判断,并没有实际意义)
---- 2.在窗体中加载一对话框,对话框的name为commongdialog1 ---- 3.源程序如下: ---- 在通用里声明: 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'在注册表里保存
Else
If 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
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 displayEnd SubPrivate Sub mnuopen_Click()
DIM FILENAME
Commondialog1.ShowOpen
filename = Commondialog1.filenameCall addfilename(filename)Call displayEnd Sub
比如:Private Sub mnFileName_Click(Index As Integer)
'处理动态加载菜单的事件
Debug.Print mnFileName(Index).Caption
End SubPrivate Sub Form_Load()
'通过菜单数组(即设计菜单时指定索引为0)动态加载两个菜单
Load mnFileName(1)
mnFileName(1).Caption = "第一个文件"
Load mnFileName(2)
mnFileName(2).Caption = "第二个文件"
End Sub
a
……a1
……a2
……a3
…………a31
…………a32
…………a33b
……b1
……b2
…………b21
…………b22
……b3代码
Private Sub Command1_Click()
a32.Visible = False
b21.Visible = False
End Sub
结果
可以设置