当前位置:文档之家› 菜单程序设计

菜单程序设计

菜单程序设计菜单程序设计2010年12月05日星期日下午09:52菜单程序设计一、菜单菜单的基本作用:菜单的基本类型:几个常用术语:--菜单条出现在窗体标题的下面,包含每个菜单的标题。

--菜单包含命令列表或子菜单名。

--菜单中列出的每一项。

--从某个菜单项分支出来的另外的一个菜单。

具有子菜单的菜单项右边带有一个三角符号标志。

--分隔条是在菜单项之间的一条水平直线,用于修饰菜单。

--弹出式菜单是另一种形式的菜单,在按下鼠标右键时出现,它是一个上下文相关的菜单。

使用菜单编辑器可以为应用程序创建自定义菜单并定义其属性,利用这个编辑器,可以建立下拉式菜单,最多可达6层。

启动菜单编辑器的方法有4种(先选中一个窗体,使之为活动窗体):使用菜单"工具"/"菜单编辑器";启动后,弹出菜单设计窗口。

菜单编辑器窗口分为三个部分:数据区、编辑区和菜单项显示区。

1、数据区用来输入或修改菜单项、设置属性。

其中:隔线。

可在该文本框中输入数值,这个值用来在帮助文件(用HelpFile属性设置)中查找相应的帮助主题。

用来确定菜单或菜单项是否出现或在什么位置出现。

该列表有4个选项:0-None菜单项不显示2、编辑区共有7个按钮。

3、菜单项显示区(菜单列表)位于菜单设计窗口的下部,输入的菜单项在这里显示出来,并通过内缩符号(…)表明菜单项的层次。

条形光标所在的菜单项是"当前菜单项"。

说明:菜单项是一个总的名称,包括4个方面的内容:菜单名(菜单标题)、菜单命令、分隔线和子菜单。

内缩符号由4个点组成,它表明菜单项所在的层次,一个内缩符号(4个点)表示一层,两个内缩符号(8个点)表示两层…最多20个点,即5个内缩符号,它后面的菜单项为第六层。

如果一个菜单项前面没有内缩符号,则该菜单为菜单名,即菜单的第一层。

隔线。

下面通过一个简单的例子说明菜单程序设计的基本方法和步骤。

例1根据题意,可以将菜单分为3个主菜单项,分别为"计算加、减"、"计算乘、除"和"清除与退出",它们各有两个子菜单,即:"计算加、减"的子菜单项:加、减"计算乘、除"的子菜单项:乘、除"清除与退出"的子菜单项:清除、退出另外,为了输入和显示,再建立两个文本框(输入数据)和四个标签。

1、界面:其中Lable4的BorderStyle属性设置为1。

2、菜单项属性:3、设计菜单:步骤:其它两个主菜单的建立与前面步骤类似,不再重复。

设计完成后的窗口如下图。

"确定"后结束。

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

4、程序代码:每个菜单项都可以接收Click事件。

每个菜单项都有一个名字(Name属性),将这个名字与Click放在一起,组成Click事件过程。

Option Explicit Private Sub Add_Click()x=Val(Text1.Text)+Val(Text2.Text)End Sub Private Sub Min_Click()x=Val(Text1.Text)-Val(Text2.Text)Private Sub Mul_Click()x=Val(Text1.Text)*Val(Text2.Text)Private Sub Div_Click()If Text2.Text="0"Or Text2.Text=""Then End Sub Private SubClean_Click()Text1.Text=""End Sub Private Sub Quit_Click()5、运行程序:在两个文本框中输入数字后,分别单击各菜单项或热键,看一看执行结果。

本例中的"有效"属性和"可见"属性采用默认的"True",只有在必要时才设置其它属性。

下面将讨论这些情况。

在使用Windows或VB菜单时,已见过"与众不同"的菜单项,如有的呈灰色,单击这类菜单项不执行任何操作;有的菜单项前有"√"号,或菜单项的某个字母下面有下划线等等。

下面将介绍如何在菜单中增加这些属性。

1、菜单项的有效属性(有效性控制)为了使程序正常运行,有时需要使某些菜单项失效,以防止出现误操作。

例如前面的例子中,只有在文本框中输入数字后才能进行运算,否则运算没有意义。

因此,如果尚未输入数据,则应使执行加、减、乘、除的菜单项失效,在输入数据后才生效。

为此,可增加下面两个事件过程:Private Sub Text1_Change()If Text1.Text=""Then End Sub Private Sub Text2_Change()If Text2.Text=""Then End Sub除增加上述两个事件过程外,还要方法:打开"菜单编辑器"窗口,把对应于这4个菜单项的数据区中的"有效"属性复选框中的"√"去掉即可。

2、菜单项的复选属性(菜单项的标记)所谓菜单项标记,就是在菜单项前加上一个"√"。

它有两个作用:增加方法:一般来说,菜单项标记通常是动态的加上或取消的,所以,程序代码中根据执行情况设置。

例2界面:一个文本框、6个标签。

菜单属性:设计菜单:编写代码:Option Explicit Private Sub octv_Click()answer=Val(Text1.Text)Private Sub Hexv_Click()answer=Val(Text1.Text)Private Sub dec_Click()answer=Val(Text1.Text)End Sub Private Sub Clean_Click()Text1.Text=""End Sub Private Sub Quit_Click()End End Sub例3在窗体上添加一个文本框,用来输入要显示的文本。

菜单属性:菜单设置见教材P244。

代码如下:Private Sub Form_Load()Private Sub mnunew_Click()'菜单项的单击事件Private Sub mnuopen_Click()Private Sub mnuclose_Click()Private Sub mnuexit_Click()Private Sub mnubold_Click()Private Sub mnuitalic_Click()3、菜单的可见属性同"有效"属性相似,可以利用"可见"属性来取消用户对某些特定菜单项的访问权限。

若关闭某个特定的菜单项的"可见"属性,该菜单项将从菜单中被移走。

用户将不知道该菜单项的存在。

例4打开菜单编辑器,在菜单列表中选择[退出]菜单项,单击"插入"按钮,在[退出]菜单项之前插入一个菜单项。

4、设置键盘选择菜单项在一般情况下,菜单项通过鼠标选择,即单击某个菜单项,执行相应的操作。

在VB中,也可以通过键盘选择所需的菜单项。

用键盘选择有两种方法:前面已介绍过热键的设置方法。

用热键可以直接执行菜单命令,不必一级一级地下拉菜单,速度较快,适合熟悉键盘的用户使用。

所谓访问键,就是菜单项中加了下划线的字母,只要按Alt和加了下划线的字母,就可以选择相应的菜单项。

用访问键选择菜单项时,必须一级一级地选择。

也就是只有在下拉显示下一级菜单后,才能用Alt和加了下划线的字母键选择。

访问键的设置说明:任何5、创建菜单控件数组菜单控件数组就是在同一菜单上共享相同名称和事件过程的菜单工程的集合。

菜单控件数组用于:在运行时要创建一个新菜单项,它必须是菜单控件数组中的成员每个菜单控件数组元素都由惟一的索引值来标识,该值在菜单编辑器上"Index属性框"中指定。

当一个控件数组成员识别一个事件时,VB将其Index 属性作为一个附加的参数传递给事件过程。

事件过程必须包含有核对Index属性的代码,因而可以判断出正在使用的是哪一个控件。

例5:菜单项名称索引快捷键mnuFont.粗体粗体mnuBold Ctrl+B.斜体斜体mnuItalic Ctrl+I.大小大小mnuSize 10mnuFS 20mnuFS 30mnuFS通过菜单编辑器中创建菜单控件数组的步骤:同样,所有的控件也可以用这种方法创建控件数组。

通常把OptionButton 和CheckBox控件设置为控件数组。

使用菜单数组和控件数组有下述优点:可以用For循环方便的访问每一个对象菜单控件数组mnuFS的Click事件响应代码如下:Private Sub mnuFS_Click(Index as Integer)Select Case Index end sub 6、菜单项的增减(动态菜单)动态菜单是指随着应用程序的运行而不断改变的一种菜单,在运行时菜单可以增长。

Word软件的"文件"菜单是一个典型的动态菜单,菜单中列出了最近使用过的文件名,这部分内容随着应用程序的运行而不断改变的。

而用前面的方法建立的菜单是固定的,菜单项不能增减。

为了增加或减少菜单项,必须在"菜单编辑器"窗口中,对原来的菜单进行增删。

使用动态菜单在应用程序中一个控件数组含有若干个控件,这些控件的名称相同,所使用的事件过程相同,但其中的每个元素可以有自己的属性。

和普通数组一样,通过下标(Index)访问控件数组中的元素。

控件数组可以在设计阶段建立(见添加控件一节),也可以在程序运行阶段建立。

菜单项的增减是通过菜单控件数组实现的。

菜单控件数组和普通数组一样,也是通过下标来访问数组中的元素(这里为菜单项)的。

菜单控件数组也一样可以设计时建立、可以在运行时建立。

具体操作:如设计时对名称为mnuRecentFile的分隔条菜单控件的Index属性进行了赋值,它自动地成为控件数组的一个元素,当创建mnuRecentFile(0)时,实际上创建了一个在运行时不可见的分隔符条。

当运行时用户第一次存储一个文件,这个分隔条就会变得可见,且第一个文件名被加到该菜单上。

运行时每存储一个文件,则会再装入一个菜单项到该数组中,从而使该菜单增长(当然,菜单也不能无限增长)。

运行时创建的控件可以使用Hide方法或者设置该控件的Visible属性为False来隐藏。

相关主题