中关村在线

首页 排行 新品 问答 下载 论坛 手机 笔记本 数码相机 主板 显卡 平板电脑 更多

VB中菜单栏怎样设置内缩符号属性

举报
讨论回答 (5)
tang1448434903
zccgdd22
zhzjyy
菜单程序设计
一、菜单
菜单的基本作用:
提供人机对话,以便让使用者选择应用系统的各种功能;
管理应用系统,控制各种功能模块的运行。
菜单的基本类型:弹出式菜单(如右击后)、下拉式菜单。
几个常用术语:
菜单条——菜单条出现在窗体标题的下面,包含每个菜单的标题。
菜单——菜单包含命令列表或子菜单名。
菜单项——菜单中列出的每一项。
子菜单——从某个菜单项分支出来的另外的一个菜单。具有子菜单的菜单项右边带有一个三角符号标志。
分隔条——分隔条是在菜单项之间的一条水平直线,用于修饰菜单。
弹出式菜单——弹出式菜单是另一种形式的菜单,在按下鼠标右键时出现,它是一个上下文相关的菜单。
二、菜单编辑器
使用菜单编辑器可以为应用程序创建自定义菜单并定义其属性,利用这个编辑器,可以建立下拉式菜单,最多可达6层。
启动菜单编辑器的方法有4种(先选中一个窗体,使之为活动窗体):
• 使用菜单“工具”/“菜单编辑器”;
• 单击工具栏中的“菜单编辑器”按钮;
• 键盘快捷键CTRL+E;
• 在要建立菜单的窗体上单击右键,在弹出菜单中选择“菜单编辑器”。
启动后,弹出菜单设计窗口。

菜单编辑器窗口分为三个部分:数据区、编辑区和菜单项显示区。
1、数据区
用来输入或修改菜单项、设置属性。其中:
"标题"项:在提供的文本输入框中可以输入菜单名或命令名,这些名字出现在菜单之中。输入的内容同时也显示在设计窗口下方的显示窗口中(相当于控件的Caption属性)。如果在该栏中输入一个减号(-),则可在菜单中加入一条分隔线。
"名称"项:在文本输入框中可以为菜单名及各菜单项输入控制名。控制名是标识符(相当于控件的Name属性),仅用于访问代码中的菜单项,它不会在菜单中出现。菜单名和每个菜单项都是一个控件,都要为其取一个控制名。
"索引"项:当几个菜单项使用相同的名称时,把它们组成控件数组,可指定一个数字值来确定每一个菜单项在控件数组中的位置。该位置与控件的屏幕位置无关。
"快捷键"项:允许为每个菜单项选择快捷键(热键)。
"帮助上下文ID"项:可在该文本框中输入数值,这个值用来在帮助文件(用HelpFile属性设置)中查找相应的帮助主题。
"协调位置"项:用来确定菜单或菜单项是否出现或在什么位置出现。该列表有4个选项:
0-None 菜单项不显示
1-Left 菜单项靠左显示
2-Middle 菜单项居中显示
3-Right 菜单项靠右显示
"复选"项:允许在菜单项的左边设置复选标记。它不改变菜单项的作用,也不影响事件过程对任何对象的执行结果,只是设置或重新设置菜单项旁的符号。利用这个属性,可以指明某个菜单项当前是否处于活动状态。
"有效"项:决定菜单的有效状态,由此选项可决定是否让菜单对事件做出响应,而如果希望该项失效,则也可清除事件。默认状态为Ture。
"可见"项:决定菜单的可见状态,即是否将菜单项显示在菜单上。默认状态为Ture。
" 显示窗口列表"项:当该选项被设置为“On”(框内有“√”)时,将显示当前打开的一系列子窗口。用于多文档应用程序。
"确定":关闭菜单编辑器,并对选定的最后一个窗体进行修改。
"取消": 关闭菜单编辑器,取消所有修改。
2、编辑区
共有7个按钮。
“下一个”按钮:将选定移动到下一行,开始一个新的菜单项(与回车键作用相同)。
“插入”按钮:在列表框的当前选定行上方插入一行,可在这一位置插入一个新的菜单项。
“删除”按钮:删除当前选定行(条形光标所在行),即删除当前菜单项。
"左、右箭头":每次单击都把选定的菜单向左、右移一个等级(用内缩符号显示),一共可以创建五个子菜单等级。
"上、下箭头":用来在菜单项显示区中上下移动菜单项的位置。
3、菜单项显示区(菜单列表)
位于菜单设计窗口的下部,输入的菜单项在这里显示出来,并通过内缩符号(…)表明菜单项的层次。条形光标所在的菜单项是“当前菜单项”。
说明:
菜单项是一个总的名称,包括4个方面的内容:菜单名(菜单标题)、菜单命令、分隔线和子菜单。
内缩符号由4个点组成,它表明菜单项所在的层次,一个内缩符号(4个点)表示一层,两个内缩符号(8个点)表示两层……最多20个点,即5个内缩符号,它后面的菜单项为第六层。如果一个菜单项前面没有内缩符号,则该菜单为菜单名,即菜单的第一层。
只有菜单名没有菜单项的菜单称为“顶层菜单”(Top-level menu),在输入这样的菜单项时,通常在后面加上一个惊叹号(!)。
如果在标题栏内只输入一个“-”,则产生一个分隔线。
除分隔线外,所有的菜单项都可以接收Click事件。
在输入菜单项时,如果在字母前加上“&”,则显示菜单时在该字母下加上一条下划线,可以通过Alt+带下划线的字母打开菜单或执行相应的菜单命令。
三、用菜单编辑器建立菜单
下面通过一个简单的例子说明菜单程序设计的基本方法和步骤。
例1 设计一个具有算术运算(+、-、×、/)及清除功能的菜单。从键盘上输入两个数,利用菜单命令求出它们的和、差、积、商,并显示出来。
根据题意,可以将菜单分为3个主菜单项,分别为“计算加、减”、“计算乘、除”和“清除与退出”,它们各有两个子菜单,即:
“计算加、减”的子菜单项:加、减
“计算乘、除”的子菜单项:乘、除
“清除与退出”的子菜单项:清除、退出
另外,为了输入和显示,再建立两个文本框(输入数据)和四个标签。
1、界面:

其中Lable4的BorderStyle属性设置为1。
2、菜单项属性:

分类 标题 名称 内缩符号 热键
主菜单项1
子菜单项1
子菜单项2
主菜单项2
子菜单项1
子菜单项2
主菜单项1
子菜单项1
子菜单项2 计算加、减


计算乘、除


清除与退出
清除
退出 Calc1
Add
Min
Calc2
Mul
Div
Calc3
Clean
Quit 无
1
1

1
1

1
1 无
Ctrl+A
Ctrl+B

Ctrl+C
Ctrl+D

Ctrl+E
Ctrl+F
3、设计菜单:
步骤:
打开“菜单编辑器。
在标题栏中键入“计算加、减”(主菜单项1),在菜单项显示区出现同样的标题名称。
按Tab键或用鼠标把输入光标移到“名称”栏。
在“名称”栏中键入“Calc1”,此时菜单项显示区中没有变化。
单击编辑区中“下一个”按钮,菜单项显示区中条形光标下移,同时“标题”栏、“名称”栏被清空,光标回到“标题”栏。
同样在“标题”栏和“名称”栏分别输入“加”和“Add”。
单击编辑区的右箭头“→”,菜单显示区的“加”右移,同时在左侧出现一个内缩符号,表明“加”是“计算加、减”的下一级菜单。
单击“快捷键”右端的箭头,从中选出“Ctrl+A”作为“加”菜单项的热键,此时,在该菜单项右侧出现“Ctrl+A”。
同样建立“减”菜单项:“标题”为“减”;“名称”为“Min”;热键为“Ctrl+B”。
单击“下一个”按钮,建立主菜单项2,由于要建立的是主菜单项,所以要消除内缩符号。单击左箭头“←”,内缩符号消失,即可建立主菜单。
其它两个主菜单的建立与前面步骤类似,不再重复。设计完成后的窗口如下图。“确定”后结束。

设计完成后,窗体顶行显示主菜单项,单击某个主菜单项,即可下拉显示其子菜单。

4、程序代码:
每个菜单项都可以接收Click事件。每个菜单项都有一个名字(Name属性),将这个名字与Click放在一起,组成Click事件过程。
Option Explicit
Dim x As Single
________________________________________
Private Sub Add_Click()
x = Val(Text1.Text) + Val(Text2.Text)
Label4.Caption = Str$(x)
End Sub
________________________________________
Private Sub Min_Click()
x = Val(Text1.Text) - Val(Text2.Text)
Label4.Caption = Str$(x)

End Sub
________________________________________
Private Sub Mul_Click()
x = Val(Text1.Text) * Val(Text2.Text)
Label4.Caption = Str$(x)

End Sub
________________________________________
Private Sub Div_Click()
If Text2.Text = "0" Or Text2.Text = "" Then
MsgBox "除数不能为0!"
Else
x = Val(Text1.Text) / Val(Text2.Text)
Label4.Caption = Str$(x)
End If
End Sub
________________________________________
Private Sub Clean_Click()
Text1.Text = ""
Text2.Text = ""
Label4.Caption = ""
Text1.SetFocus
End Sub
________________________________________
Private Sub Quit_Click()
End
End Sub
5、运行程序:
在两个文本框中输入数字后,分别单击各菜单项或热键,看一看执行结果。
[程序演示] [程序下载]
本例中的“有效”属性和“可见”属性采用默认的“True”,只有在必要时才设置其它属性。下面将讨论这些情况。
四、菜单项的控制
在使用Windows或VB菜单时,已见过“与众不同”的菜单项,如有的呈灰色,单击这类菜单项不执行任何操作;有的菜单项前有“√”号,或菜单项的某个字母下面有下划线等等。下面将介绍如何在菜单中增加这些属性。
1、菜单项的有效属性(有效性控制)
为了使程序正常运行,有时需要使某些菜单项失效,以防止出现误操作。例如前面的例子中,只有在文本框中输入数字后才能进行运算,否则运算没有意义。因此,如果尚未输入数据,则应使执行加、减、乘、除的菜单项失效,在输入数据后才生效。为此,可增加下面两个事件过程:
Private Sub Text1_Change()
If Text1.Text = "" Then
Add.Enabled = False
Min.Enabled = False
Mul.Enabled = False
Div.Enabled = False
Else
Add.Enabled = True
Min.Enabled = True
Mul.Enabled = True
Div.Enabled = True
End If
End Sub
________________________________________
Private Sub Text2_Change()
If Text2.Text = "" Then
Add.Enabled = False
Min.Enabled = False
Mul.Enabled = False
Div.Enabled = False
Else
Add.Enabled = True
Min.Enabled = True
Mul.Enabled = True
Div.Enabled = True
End If
End Sub
除增加上述两个事件过程外,还要取消Add、Min、Mul、Div等4个菜单项的“有效”属性设置。
方法:打开“菜单编辑器”窗口,把对应于这4个菜单项的数据区中的“有效”属性复选框中的“√”去掉即可。
2、菜单项的复选属性(菜单项的标记)
所谓菜单项标记,就是在菜单项前加上一个“√”。
它有两个作用:
• 一是明显地表示当前某个(或某些)命令状态是“On”或“Off”;
• 二是可以表示当前选择的是哪个菜单项。
增加方法:
• 在“菜单编辑器”窗口中,由“复选”属性设置,前面有“√”则为“True”,否则为“Flase”。
• 也可在应用程序代码中设置。
一般来说,菜单项标记通常是动态的加上或取消的,所以,常在程序代码中根据执行情况设置。
例2 设计一个菜单,该菜单有一个主菜单项和若干个子菜单项。当单击子菜单项时,分别显示十进制、八进制和十六进制数,并在相应的菜单项前面加上“√”标记。
界面:
一个文本框、6个标签。

菜单属性:

标题 名称 内缩符号 复选
显示数字
八进制
十进制
十六进制
清除
退出 Numsys
Octv
Dec
Hexv
Clean
Quit 无
1
1
1
1
1 无





设计菜单:

编写代码:
Option Explicit
Dim answer As Single
________________________________________
Private Sub octv_Click()
answer = Val(Text1.Text)
Octv.Checked = True
Dec.Checked = False
Hexv.Checked = False
Clean.Checked = False
Quit.Checked = False
Label5.Caption = Oct$(answer) '十进制转换为八进制

End Sub
________________________________________
Private Sub Hexv_Click()
answer = Val(Text1.Text)
Octv.Checked = False
Dec.Checked = False
Hexv.Checked = True
Clean.Checked = False
Quit.Checked = False
Label6.Caption = Hex$(answer) '十进制转换为十六进制

End Sub
________________________________________
Private Sub dec_Click()
answer = Val(Text1.Text)
Octv.Checked = False
Dec.Checked = True
Hexv.Checked = False
Clean.Checked = False
Quit.Checked = False
Label4.Caption = Format(answer)
End Sub
________________________________________
Private Sub Clean_Click()
Text1.Text = ""
Octv.Checked = False
Dec.Checked = False
Hexv.Checked = False
Clean.Checked = False
Quit.Checked = False
Clean.Checked = True
Label4.Caption = ""
Label5.Caption = ""
Label6.Caption = ""
End Sub
________________________________________
Private Sub Quit_Click()
End
End Sub
[程序演示] [程序下载]
例3 见教材P243。
在窗体上添加一个文本框,用来输入要显示的文本。
菜单属性:

菜单 标题 名称 索引 快捷键
文件
....新建
....打开
....关闭
....-
....退出
字体
....粗体
....斜体 文件(&F)
新建(&N)
打开 (&O)
关闭 (&C)
-
退出 (&X)
字体
粗体
斜体
csa1323
872657229A
展开查看全部 5 条讨论
精品应用推荐
新浪微博 新浪微博 天气通 天气通 淘宝特价版 淘宝特价版 UC浏览器 UC浏览器
相关问题

家电

1.3万 浏览 1044 回答

手机性能天梯榜讨论

4284 浏览 615 回答

显卡

2.1万 浏览 614 回答

硬盘

1.5万 浏览 601 回答

显示器

8954 浏览 587 回答

扩展阅读

慎入!这些小家电几乎买回家就吃灰

评论 1

慎入!这些小家电几乎买回家就吃灰

我花了289块,已经用了3个新的徕芬电动牙刷了

评论 1

我花了289块,已经用了3个新的徕芬电动牙刷了

懂iPhone为啥不买Plus 细数大屏背后的隐藏痛点

评论 1

懂iPhone为啥不买Plus 细数大屏背后的隐藏痛点

不止是速度 给家里买打印机这三点很重要

评论 1

不止是速度 给家里买打印机这三点很重要

为什么我更推荐32GB内存 特别是笔记本

评论 1

为什么我更推荐32GB内存 特别是笔记本
热门问题

求推荐一款笔记本。工科研究生用,便于随身携带。平时做科研,处理数据,查阅文献。不玩网游和单机,至多玩棋牌游戏和影音。喜欢摄影,需要修图。附加:纠结要不要带数字键盘区。预算最多8000。尽量便宜些。

1.2万 浏览 6 回答

求推荐一款笔记本。工科研究生用,便于随身携带。平时做科研,处理数据,查阅文献。不玩网游和单机,至多玩棋牌游戏和影音。喜欢摄影,需要修图。附加:纠结要不要带数字键盘区。预算最多8000。尽量便宜些。

QQ幻想世界各种道具,宝石,宠物的获得?

9946 浏览 4 回答

QQ幻想世界各种道具,宝石,宠物的获得?

平面设计一个月工资一般多少

6520 浏览 5 回答

平面设计一个月工资一般多少

256gSSD是否够用?打算买个笔记本,办公为主,查阅文献等。不玩大型游戏,至多玩一些棋牌类游戏和影音娱乐。手里有2T移动硬盘,但也想在笔记本上存少量的电影。平时玩单反,处理图片比较多。

2.3万 浏览 4 回答

256gSSD是否够用?打算买个笔记本,办公为主,查阅文献等。不玩大型游戏,至多玩一些棋牌类游戏和影音娱乐。手里有2T移动硬盘,但也想在笔记本上存少量的电影。平时玩单反,处理图片比较多。

为何手机一直收到00447786205094发来的短信,而且是一串乱七八糟的英文字母?

6445 浏览 4 回答

为何手机一直收到00447786205094发来的短信,而且是一串乱七八糟的英文字母?

优派鼠标好不好

455 浏览 6 回答

优派鼠标好不好

苹果手机为什么会自动发短信到00447786205094?要怎么解决这个问题?

1163 浏览 6 回答

苹果手机为什么会自动发短信到00447786205094?要怎么解决这个问题?

QQ幻想世界的宝石怎么得到

8363 浏览 4 回答

QQ幻想世界的宝石怎么得到

美国股市平均每天的成交额大约是多少?

2274 浏览 5 回答

美国股市平均每天的成交额大约是多少?

肿么找回QQ浏览器历史记录

7284 浏览 6 回答

肿么找回QQ浏览器历史记录
最新问答

华硕z97k和z97k-r2.0哪个更好?z97k发热真的很严重吗?

1855 浏览 6 回答

华硕z97k和z97k-r2.0哪个更好?z97k发热真的很严重吗?

WPS同一工作簿并排显示两个相同的表格怎么取消?

5390 浏览 4 回答

WPS同一工作簿并排显示两个相同的表格怎么取消?

苹果手机突然微信没有声音怎么了

1.2万 浏览 9 回答

苹果手机突然微信没有声音怎么了

工作单位的路由器是静态IP地址还是动态的?

2568 浏览 3 回答

工作单位的路由器是静态IP地址还是动态的?

肿么用光盘pe检测硬盘

1803 浏览 3 回答

肿么用光盘pe检测硬盘
举报
举报成功

经过核实后将会做出处理,感谢您为社区和谐做出贡献。

请选择删除原因
删除成功
确定推荐该回答?
推荐成功

更多频道

频道导航
辅助工具