您现在的位置:首页 >> 网络教学 >> 界面设计 >> 内容

菜单设计

时间:2009-6-19 9:39:24 点击:4244

  菜单设计

菜单是Windows构成程序界面最常用的元素之一,它提供了展示包含了实现程序各个功能的命令集合的平台,其容量大,并能很好地对程序的操作进行分类管理,使用户能够形象直观地进行操作。

一、菜单的类型

Windows中,菜单分为两种类型。

(一)下拉式菜单

下拉式菜单一般位于窗口的顶部,包含两部分:

菜单栏:是一个包含多个菜单的条形区域,如WORD中的菜单栏,包含了文件、编辑、格式、表格等菜单,如图8.1所示:

8.1 WORD菜单栏

菜单项:是代表能实现特定功能的命令,或者是弹出下一级子菜单,每个菜单项都有一个名称,称之为菜单标题或菜单项。

菜单的具体组成:菜单栏、菜单、子菜单、菜单项、热键、快捷键、菜单分隔线等。其中分隔条是用来划分不同的功能区,每个功能区包含同类功能的菜单项。菜单项一般有快捷键和热键,而主菜单名只设置热键。

8.2 菜单的各个组成部分

(二)弹出式菜单

弹出式菜单又称之为快捷菜单。当右击某一个对象时,往往可以弹出一个菜单,其中所列出来的命令就是针对该对象能完成的操作,具有方便、快捷的特点。弹出式菜单没有主菜单名,是显示于窗体之上、独立于菜单栏的浮动式菜单,只有使用时才显示出来。如图8.3所示:

8.3  WINDOWS中某个文件夹的快捷菜单

二、菜单设计规划及步骤

在进行菜单设计的时候,必须遵守一定的设计原则。菜单设计质量的好坏直接影响用户对应用程序的理解,影响其实用性。

()常用的菜单设计思路

1.根据用户任务组织菜单系统,即要围绕用户完成任务的思路和方法来设计菜单和菜单项;

2.给每个菜单和菜单选取一个意义明确的标题;

3.按照菜单项的使用频率、逻辑顺序或字母顺序排列菜单项;

4.对属于不同功能区的菜单项之间放置分隔线;

5.对菜单和菜单选项建立热键或快捷键,提供快捷操作手段;

6.适当建立子菜单,避免菜单上菜单项的数目过多;

7.在菜单项中混合使用大小写字母,强调时可使用大写字母。

(二)菜单设计步骤

1.菜单系统规划。这个阶段主要是根据任务组织菜单系统,确定要哪些菜单,每个菜单包含哪些命令,菜单名如何确定,每个菜单项要实现什么功能等。

2.建立菜单。这个阶段主要是通VB工具根据上述规划建立菜单,并编写相应的代码。

3.测试并运行菜单。这个阶段主要是调试、运行菜单,进行必要的测试工作。

三、菜单编辑器

在设计菜单时,通常我们用VB提供的菜单编辑器来设计。启动菜单编辑器,首先使用“视图”菜单中的“对象窗口”命令,切换到对象窗口并选中窗体,然后从VB工作窗口中选择“工具”菜单项,从其下拉菜单中执行“菜单编辑器”命令,或者在需要建立菜单的窗体上右击,在弹出的快捷菜单中选择“菜单编辑器”命令,这时屏幕上会弹出一个“菜单编辑器”对话框,如图8.4所示,利用这个菜单编辑器,可以建立各菜单和菜单项,并对它们的属性进行设置。

菜单编辑器的窗口分为三个部分,即属性区、菜单项编辑区和菜单项列表区。

8.4 菜单编辑器

()属性区

上部分是属性区,用来对菜单或菜单项进行属性设置,各个属性的含义见下表:

8.1  菜单编辑器的属性

属性

含义

标题

菜单名或菜单项的名称,如果在标题中的字母前加&符号,则该字母就被设置成热键,如文件(&F),程序运行时,只要按下ALT+F键,则能打开文件菜单

名称

在代码编程时用来唯一表示该菜单或菜单项的名字

索引

是指菜单控件数组的下标

可见

用来设置菜单或菜单项是否显示在屏幕上

有效

用来设置菜单项在程序运行期间是否可用,当该属性前复选框中的“√”被取消时,则程序运行时相应的菜单项呈灰色,表示禁用。

复选

用来设计菜单是否带有复选标记。选择该复选后,相应的菜单项的左边加上“√”表明该菜单项处于活动状态。

显示窗口列表

用来设置在多文档应用程序的菜单中是否包含一个已打开的各个文档的列表。菜单中将显示一个已打开的各个文档的列表,每个文档对应一个窗口,带有“√”标记的文档为前文档。注意:对于某一特定窗体,只能有一个菜单的“显示窗口列表”被选中。

快捷键

做为快速操作该命令的键盘键的组合操作

帮助上下文ID

HelpFile属性指定的帮助文件中用该数值设置一个帮助主题的ID,那么当该控件获得焦点时,按F1键,打开帮助文件时会自动定位到这个ID的主题。也就是说可以通过这个ID来定位帮助文件打开时显示的页面。  

协调位置

NegotiatePosition属性决定是否及如何在窗体中显示菜单

()编辑区

中间部分是菜单项编辑区,该区域可用来调整各菜单与菜单项之间的层次关系,插入和删除菜单或菜单项。

编辑区由7个按钮组成:

8.2  菜单编辑区的按钮功能

按钮

功能

把选定的菜单项向左移动一个等级,即和上一菜单项同级,如移到顶层即成为主菜单

把选定的菜单项向右移动一个等级,即作为上一菜单的子菜单中的菜单项。

把选定的菜单项上移一行

把选定的菜单项下移一行

下一个

选定下一个菜单或菜单项

插入

可在当前选定的菜单或菜单项前插入一个新的同级别的菜单项

删除

可删除当前选定的菜单或菜单项

()菜单项列表区

最下面部分是菜单项列表区,主要用来显示菜单的分级列表,展现其层次关系,显示菜单的结构。

四、下拉菜单

熟悉了菜单编辑器的使用后,下面就可以开始建立菜单,首先来学习下拉菜单的建立。

[8-1]设计一个可用来输入问候语并能简单设置字体、字号和字的颜色的程序,运行界面如下图所示:

8.5 问候程序界面

其中,界面上各控件的属性设置见下表:

8.3  控件及其属性设置

控件

Name

Text

Caption

文本框

Text1

大家好!

窗体

Form1

问候

而窗体中菜单的建立见图8.4,具体属性设置见下表:

8.4  下拉菜单中各菜单项属性设置

标题

名称

热键

快捷键

功能键

字体(&F)

zt

F

楷体(&K)

Kt

K

录书(&L)

ls

L

黑体(&H)

ht

H

字号(&S)

Zh

25

S25

F2

50

S50

F5

80

S80

F8

字的颜色(&C)

ys

C

红色

Hs

CTRL+R

绿色

Lys

GTRL+G

黄色

Hs

CTRL+Y

程序设计步骤:

1.新建工程,在窗口上创建文本框text1,并将属性text设置成“大家好!”,调整好大小和位置,具体见图8.5,属性设置可见表8.3

2.选中窗体,从VB工作窗口中选择“工具”菜单项,从其下拉菜单中执行“菜单编辑器”命令,打开菜单编辑器,按图8.4及表8.4的要求创建并设计下拉菜单。

3.代码编写,在对象窗口中的窗体上去选择每一个菜单项,都能进入该菜单项的单击事件过程,如指向“字体”菜单中的“楷体”,便能进入kt_ckick()事件过程,在该过程里添加命令 Text1.FontName = "楷体_GB2312"就能完成对文本框内容的楷体的设置。

所有代码如下:

Private Sub hys_Click()  ‘给文本设置黄颜色

Text1.ForeColor = 65535

End Sub

Private Sub ht_Click()  ‘给文本设置黑体字体

Text1.FontName = "黑体"

End Sub

Private Sub kt_Click()  ‘ 给文本设置楷体字体

Text1.FontName = "楷体_GB2312"

End Sub

Private Sub ls_Click()  ‘给文本设置隶书字体

Text1.FontName = "隶书"

End Sub

Private Sub lys_Click()  ‘给文本设置绿颜色

Text1.ForeColor = &HFF00&

End Sub

Private Sub hs_Click()   ‘给文本设置红颜色

Text1.ForeColor = &HFF&

End Sub

Private Sub s25_Click()‘给文本设置25字号

Text1.FontSize = 25

End Sub

Private Sub s50_Click()‘给文本设置50字号

Text1.FontSize = 50

End Sub

Private Sub s80_Click()‘给文本设置80字号

Text1.FontSize = 80

End Sub

五、弹出菜单

弹出菜单又称为快捷菜单,是独立于菜单栏的浮动菜单,它在窗体上的显示位置由鼠标指针位置决定。弹出式菜单的设计方法和下拉菜单的设计方法基本相同,仍然使用VB提供的菜单编辑器,不同的是弹出菜单只建一个菜单,同时把这个菜单设置成隐藏属性。

弹出菜单是通过PopupMenu方法来显示的,其语法为:

[对象]. PopupMenu 菜单名,标志,X,Y

其中:

[对象]为可选项,默认为带有焦点的Form对象。菜单名是必须的,是要显示的弹出式菜单名,指定的菜单必须喊有至少有一个菜单;

XY:指显示弹出菜单的位置,缺省则表示使用鼠标的坐标。

标志:用于定义弹出式菜单的位置和行为。当标志表示位置时,见表8.5,当标志等于0时,为系统的默认状态,此时,弹出菜单的左边界就是X的位置,当标志等于4时,弹出菜单的中心位置就是X的位置,当标志等于8时,弹出菜单的右边界就是X的位置。

8.5  “标志”表示位置的属性设置

数值

常数值

含义

0

vbPopupMenuLeftAlign

表示弹出式菜单的左边定位于x

4

vbPopupMenuCenterAlign

表示弹出式菜单以x为居中位置

8

vbPopupMenuRightAlign

表示弹出式菜单的右边定位于x坐标

当标志表示行为时,见表8.6,其值为0时,表示只能用单击左键去执行弹出菜单中的命令;当值为2时,则可以用单击左键或右键去执行弹出菜单中的命令。

8.6  “标志”表示行为的属性设置

数值

常数值

含义

0

vbPopupMenuLeftButton

只能用单击左键去执行弹出菜单中的命令

2

vbPopupMenuRightButton

可以用单击左键或右键去执行弹出菜单中的命令

习惯上,都是右击某个对象,弹出快捷菜单,所以上述PopupMenu方法的代码往往是放在某个对象的鼠标响应的事件过程当中。如当用鼠标右击窗体时,弹出快捷菜单。则可以用form_mouseup事件过程编写相应代码表示释放鼠标按钮时,表示按下鼠标右键这一动作(使用Button=2),然后用PopupMenu方法显示弹出式菜单。

程序运行时,每次只能显示一个弹出式菜单。若已经显示了一个弹出式菜单,则不再执行其他的PopupMenu方法。

[8-2]可以在[8-1]中添加一个快捷的编辑菜单,用鼠标右击文本框时弹出这个快捷菜单。

操作步骤

1.承接上例,在原来菜单的基础上对菜单进行修改,增加一个顶层菜单“字符格式”,取名为“zfgs”,如图8.6所示,单击“→”按钮将原菜单中的“字体”、“字号”和“字的颜色”等菜单及相应的菜单项都降一级。

 

8.6 “字符格式”菜单

2.将“字符格式”菜单的Visible属性设置为False,即去掉“可见”复选框中的“”√。这样程序运行时就不显示这个菜单项。如图8.7所示:

8.7 “字符格式”菜单隐藏

3.单击“下一个”命令按钮,依次输入弹出式菜单中要显示的各菜单项,并将其都设置为顶层菜单的子菜单(添加内缩符号)。完成设计的菜单如图7-7所示。

4.[8-1]中原代码的基础上,增加如下代码:

Private Sub text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 2 Then

  PopupMenu zfgs

  Text1.Enabled = True

End If

,

End Sub

8.8 弹出菜单的使用效果

弹出式菜单设计完成后运行情况如图8.8所示。

在运行时需注意,文本框是最常用的控件之一,系统默认有快捷菜单, 当你右击文本框时,首先会显示其系统的快捷菜单,这时候你再右击文本框一次,则可以把自定义的“字符格式”快捷菜单显示出来。

六、动态增删菜单项

动态增删菜单项是指可以根据程序的需要自动地增删菜单项。如在WORD中,“窗口”菜单下会显示打开的文件列表,当关闭一个文档时,“窗口”菜单中相应的文件信息就会被删除,反之,如果打开一个新的文档,则“窗口”菜单中就会增加一个文件信息。

动态增删菜单项,其实就是建立一个菜单项数组,然后通过loadunload来添加数组元素或删除数组元素。下面通过例子来说明其用法。

[8-3]建一个可以描述打开或关闭文档状态的“窗口”菜单,即打开一个新的文档,则“窗口”菜单中就会增加一个文件信息,而关闭一个文档时,“窗口”菜单中相应的文件信息就会被删除。

操作步骤:

1.界面设置

创建如图8.9所示的界面。

8.9 程序运行界面

建立菜单时,需要注意的是,“窗口”菜单中添加一个用于显示文件列表菜单项的样本菜单项“文件信息”,如图8.10所示,在其“索引”框中填入数字 0,并设置为不可见:

在程序中,只要在“索引”文本中输入了数字,就表示这个菜单项成为了一个菜单项数组,通过这个菜单项数组可以实现菜单项的动态增加与清除。

8.10  菜单编辑器

上述菜单中各菜单项属性按表8.7所要求的进行设置。

8.7  菜单中各菜单项属性设置

菜单项

名称

可见

索引

文件

file

可见

……打开

Open

可见

……关闭

del

可见

窗口

Windows

可见

……水平平铺

Sppp

可见

……文件信息

fileinfo

不可见

0

其中,“……”表示是下一级子菜单。

2.添加程序代码

对于增加或清除菜单命令,原始的“文件信息”为 fileinfo(0) ,这也是索引值为 0 的意义所在;那么增加的一个信息菜单就应该为 fileinfo (1),再增加一个,就应该为 fileinfo(2),依此类推;清除一个文件信息菜单项也类似,如果当前是 fileinfo (X),那么清除一个后应该为 MenuHint(X-1),依此类推。

1) 模块级变量的定义

模块级变量在整个窗体上的事件都可以对这个变量进行引用,这种变量只能在“通用”过程中进行“声明”。用于统计文件信息菜单项个数的变量I,因为既要在“打开”事件中引用,又要在“关闭”事件中引用,所以我们将它作为窗体层变量在“通用”过程的“声明”中对其进行定义。

Dim I as Integer

2)“打开”菜单项的 Click 事件

Private Sub open_Click()

CommonDialog1.Action = 1

i = i + 1

Load fileinfo(i)

fileinfo(i).Caption = "" & i & ":" & CommonDialog1.FileName

fileinfo(i).Visible = True

End Sub

上面代码的意义在于先显示一个文件打开对话框,文件信息菜单项i的值加1,通过 Load 命令加载一项新的元素fileinfo(i),并让新菜单的标题变成“第i个:”和具体打开的文件信息的连接内容,最后让该菜单项可见。

8.11显示了打开了4个文件后的窗口菜单中的文件列表。

8.11 菜单项的增删效果

3)“关闭”菜单项的 Click 事件

Private Sub MenuClear_Click()

If i = 0 Then

Exit Sub

Else

j = Val(InputBox("输入", "请输入需删除的菜单项序号"))

For k = j To i - 1

fileinfo(k).Caption = fileinfo(k + 1).Caption

m = InStr(1, fileinfo(k).Caption, "")

fileinfo(k).Caption = "" & k & Mid(fileinfo(k).Caption, m)

Next

Unload fileinfo(i)

i = i - 1

End If

End Sub

上面的代码,先对 i值进行判断,当 i 0 即程序的初始状态时,直接退出当前过程;如果 i不为 0 ,先输入你需删除的菜单项序号,然后用fileinfo(k).Caption = fileinfo(k + 1).Caption依次将前几个菜单项数组元素的值进行更新,并调整好文件信息的编号值,最后用Unload fileinfo(i)将最后一个元素删除。

基于图8.11所示的状态,要删除第1项,如图8.12所示,输入需删除的序号,单击“确定”即可。

8.12 输入需删除菜单项序号的对话框

8.13是删除了之后的窗口菜单中的文件列表。

8.13  删除后的界面

作者:Admin  
相关文章
  • 没有相关文章
  • VB程序设计学习网站(赣南师范学院) © 2008 版权所有 All Rights Reserved.
  • 地址:江西省赣州市经济技术开发区 赣南师范学院数学与计算机科学学院 邮政编码:341000
    Email:ZQ188@163.com 技术支持QQ:87319633 移ICP备10086号
  • GnsySjxy! V2.4