1、第七章 设计菜单,学习目标 掌握:菜单、工具栏的设计方法 理解:菜单的各项属性、菜单项的增减 了解:弹出式菜单 学习要点 菜单、菜单编辑器、菜单的高级应用、弹出式菜单的设计; 工具栏的设计,7.1 设计下拉式菜单,学习目标1.了解菜单的功能和基本结构;2. 掌握用菜单编辑器设计下拉式菜单系统外观的方法;3. 理解并掌握编写菜单事件过程的方法。 学习重点1.下拉式菜单系统外观的设计方法;2. 编写菜单事件过程的方法。 学习难点1. 编写菜单事件过程的方法;2. 剪贴板对象的应用。,菜单在windows应用程序中有广泛的应用,是应用程序图形化界面中一个必不可少的组成元素,通过菜单对各种命令按功能进
2、行分组,能使用户更加方便、直观地访问这些命令。,7.1 设计下拉式菜单,一、菜单系统的功能,1将应用程序的所有功能分类显示于菜单的选项中,以便用户选择。2管理应用系统,控制各种功能模块的运行。,7.1 设计下拉式菜单,二、菜单系统的种类和结构,1、弹出式菜单2、下拉式菜单菜单栏(主菜单)主菜单项子菜单菜单项有效和无效的菜单项和子菜单项带复选框的菜单项和子菜单项 级联菜单(最多可达6层)。 启动对话框分隔线,7.1 设计下拉式菜单,弹出式菜单,弹出菜单项目,弹出菜单,7.1 设计下拉式菜单,主菜单项快捷键 热键级联菜单标记,菜单栏,分隔线,菜单项,子菜单名,下拉式菜单,7.1 设计下拉式菜单,三
3、、VB中设计菜单的工具菜单编辑器,1菜单编辑器 (1)打开方法“工具”主菜单项 / 菜单编辑器 工具栏菜单编辑器窗体上弹出式菜单菜单编辑器 (2)作用在菜单编辑器对话框中可以完成创建、编辑、修改菜单等工作,如添加/删除菜单项、调整菜单项的位置、定义菜单中的快捷键和访问键。,7.1 设计下拉式菜单,(3)结构,7.1 设计下拉式菜单,2菜单控件菜单系统是一个整体,但每一个菜单项分别是一个控件。因此,设计菜单同设计其他控件相似,要设置其属性和编写事件过程。在设计阶段设置属性时用菜单编辑器在菜单控件属性区中设置。在程序运行时则是通过代码实现的。,7.1 设计下拉式菜单,(1)菜单控件的主要属性,标题
4、Caption:设置程序运行时显示在菜单上的文字。 名称Name:设置菜单项的控件名称,用来在代码中识别菜单控件。 注意:Visual Basic禁止在菜单控件未命名之 前退出菜单编辑。 复选Checked:设置菜单项是否被选中。 有效Enabled:设置菜单项是否对事件作出响应。(正常显示或灰色) 可见Visible:设置菜单项是否可见。,7.1 设计下拉式菜单,(2)菜单控件的事件菜单控件只有一个Click事件。(3)菜单的特点: 菜单也是一个控件。 不象命令按纽、列表框等其他的控件,菜单没有标准的外观。 菜单项随着应用程序的不同而不同。 就下拉式菜单来说,唯一不变的就是菜单栏。,7.1
5、设计下拉式菜单,四、下拉式菜单的设计,设计一个类似Word的带下拉式菜单的简易文本编辑器 1下拉式菜单的设计步骤 (1)建立窗体,添加控件; (2)打开菜单编辑器,进入菜单设计窗口; (3)设置各菜单项的属性; (4)为菜单项编写相应的事件过程。,7.1 设计下拉式菜单,2菜单系统的外观设计 (1)基本操作1.“”按钮:下一级菜单项;2.“”按钮:上一级菜单项。3.和按钮:改变菜单项位置。4.下一个(Next):设置下一个菜单项。5.插入(Insert)按钮:插入菜单项6.删除(Delete)按钮:删除菜单项,7.1 设计下拉式菜单,(2)修饰菜单设置菜单分隔线(-):分界符也应有名称。 访问
6、键(热键) : (&F)ShortCut(快捷键):当快捷键按下时菜单项被执行。经常用到的菜单项目要设置一个快捷键以支持键盘访问。,7.1 设计下拉式菜单,3编写菜单事件过程完成菜单系统外观设计后,还必须为各个菜单项进行编码,才能真正做到通过选择菜单项来实现某项功能。 (1)最简单的情形 编写“文件”主菜单中的“关闭” 菜单项的事件过程只需用End方法即可。 编写“隶书”、“宋体”级联菜单项代码,只要在其事件过程中令Text1.FontName = “隶书”和Text1.FontName = “宋体” 即可。,7.1 设计下拉式菜单,例题代码Private Sub mnuFileClose_C
7、lick()End End SubPrivate Sub mnuFormatFontlishu_Click()Text1.FontName = “隶书“ End SubPrivate Sub mnuFormatFontsongti_Click()Text1.FontName = “宋体“ End Sub,7.1 设计下拉式菜单,(2)菜单的控制菜单项的状态有效性控制Enabled使菜单项失效或生效。菜单项的复选标志Checked在菜单项上添加或去除选中符号。有些对应的命令表示的是一种开关状态,只有两种可能的状态,因此,首先要判定它的属性值。 Visible只有将菜单项的Visible属性设置为
8、True,该菜单项才显示。可以在设计时设置该属性值,也可以在运行时通过执行代码加以改变,7.1 设计下拉式菜单,例题代码Private Sub Form_Load()Clipboard.ClearmnuEditCut.Enabled = FalsemnuEditCopy.Enabled = FalsemnuEditPaste.Enabled = False End Sub,7.1 设计下拉式菜单,点击“编辑”主菜单项后,应先判断文本框中是否有文本被选中 Private Sub mnuEdit_Click( )If Text1.SelLength 0 ThenmnuEditCut.Enabled
9、 = TruemnuEditCopy.Enabled = TrueElsemnuEditCut.Enabled = FalsemnuEditCopy.Enabled = FalseEnd If End Sub,7.1 设计下拉式菜单,(3)剪贴板对象Clipboard 剪贴板是内存的一部分区域,所有应用程序都能使用剪贴板中的信息。在VB中,所有与剪贴板有关的操作是通过剪贴板对象实现的。剪贴板对象是用于暂时保存图形和文本的一种特殊的控件,它是VB中预先定义好的控件组。剪贴板对象没有任何属性和事件,但通过它的一些方法可以提供对系统剪贴板的访问(即发送和接收数据)。,7.1 设计下拉式菜单,剪贴板对
10、象的方法 Clipboard.Clear 将剪贴板清空 Clipboard.SetText Text1.SelText将选中的字符串复制到剪贴板 Clipboard.SetData Data,Format将非文本数据复制到剪贴板上 Clipboard.GetText 将剪贴板上的字符串发送到光标所在位置 Clipboard.GetData 将剪贴板上的非文本数据发送到光标所在位置,7.1 设计下拉式菜单,例题代码(剪切)Private Sub mnuEditCut_Click()If Text1.SelLength 0 ThenClipboard.SetText Text1.SelTextTe
11、xt1.SelText = “同时要让粘贴菜单项有效mnuEditPaste.Enabled = TrueEnd If End Sub Text1.SelText表示文本框中选定的文本 Text1.SelLength表示文本框中选定文本的长度,7.1 设计下拉式菜单,复制Private Sub mnuEditCopy_Click()If Text1.SelLength 0 ThenClipboard.SetText Text1.SelTextmnuEditPaste.Enabled = TrueEnd If End Sub复制与剪切的区别是Text1.SelText = “同时要让粘贴菜单项有
12、效,7.1 设计下拉式菜单,粘贴 Private Sub mnuEditPaste_Click()If Len(Clipboard.GetText) 0 ThenText1.SelText = Clipboard.GetTextEnd If End Sub注意:Text1.SelText=Clipboard.GetText 和 Text1.Text=Clipboard.GetText的区别 (在光标所在位置处插入剪贴板上的数据),7.1 设计下拉式菜单,全选 Private Sub mnuEditSel_Click()If mnuEditSel.Checked = False ThenmnuE
13、ditSel.Checked = TrueText1.SelStart = 0 Text1.SelStart表示文本框中选定文本的开始位置Text1.SelLength = Len(Text1.Text)ElsemnuEditSel.Checked = FalseText1.SelLength = 0End If End Sub,7.1 设计下拉式菜单,Text1.Text:表示文本框中的文本 Text1.SelText:表示文本框中选定的文本 Text1.SelLength:表示文本框中选定文本的长度 Text1.SelStart:表示文本框中选定文本的开始位置,7.1 设计下拉式菜单,7.
14、2 弹出式菜单,弹出菜单是独立于菜单栏的浮动菜单,其在窗体上的显示位置由单击鼠标时指针的位置决定。弹出式菜单也是通过“菜单编辑器”来设计的。设计方法与下拉式菜单相似,仅该菜单名不可显示,主菜单的“可见”Visible属性为False。,7.2 弹出式菜单,在VB中,使用PopupMenu方法来显示弹出菜单。 PopupMenu方法的语法为:对象. PopupMenu 菜单名,标志,x,y其中,标志表示弹出的位置和触发的键,位置与性能是加的关系。,7.3 设计工具栏,工具栏是大多数应用程序不可缺少的一个部分,它将应用程序常用的菜单命令以按钮的方式呈现,使用户可以快速选择按钮,以执行相应的功能。,
15、7.3.1 设计工具栏,VB提供了Toolbar控件,可以快速的设计工具栏。Toolbar控件不是标准控件,须将Toolbar控件调入工具箱。方法如下:通过“工程”“部件”“控件”,再选中“Microsoft Windows Common Control6.0”选项,如图所示。,7.3 设计工具栏,7.3 设计工具栏,Toolbar控件会自动出现在窗体的上部,若窗体上已有菜单栏,则在会固定在其下方。 我们就可以利用Toolbar控件添加不同类型的按钮,一般可分为文字按钮和图形按钮。,7.3 设计工具栏,一、设计文字按钮,制作文字按钮的步骤: (1)在窗体上添加了Toolbar控件后,移动鼠标在
16、Toolbar1上单击鼠标右键,调出快捷菜单,选择“属性”。 (2)选择“按钮”标签,然后选择“插入按钮” 。 (3)在Caption标题栏输入想要显示的文字标题,然后在Key栏输入关键字,接着可在ToolTipText工具栏输入提示文字,最后在Style栏选择合适的按钮样式。,7.3 设计工具栏,7.3 设计工具栏,(4)重复步骤(3),建立“粗体” Check样式的工具按钮。(5)重复步骤(3),建立“颜色” Dropdown样式的工具按钮。然后在“ButtonMenus”按钮菜单区选择“插入按钮菜单项”钮,建立颜色按钮的下拉式选项。,7.3 设计工具栏,二、设计图形按钮,想要制作图形按钮
17、,须事先准备好图片,然后利用ImageList控件将按钮图片加入,再将Toolbar控件的“ImageList”项指定为ImageList控件,这样就可以为为每一个按钮设计一个图片了。,7.3 设计工具栏,我们将上图中的“打开”和“粗体”按钮加上图片,具体步骤如下所示:(1)ImageList控件也是属于Microsoft Windows Common Control6.0中的控件,所以可以在调入Toolbar控件后,直接从工具箱调入至窗体。(2)在ImageList控件上单击鼠标右键,调出快捷菜单,选择“属性”,然后选择属性页的“Image”标签,再选择按钮。调出“选择图片”的对话框,从中将
18、所有合适的图片文件选中,选择“打开”,就可以将图片调入ImageList控件的Images栏中。,7.3 设计工具栏,(3)在已做好Toolbar控件上单击鼠标右键,调出快捷菜单,选择“属性”,然后选择属性页的“General”标签,在ImageList栏选中ImageList1控件。,7.3 设计工具栏,(4)选择Toolbar控件属性页上的“Buttons”标签,在Image栏选择ImageList控件上图片作为按钮上的图片。 (5)最后选择“确定”按钮,运行后的界面如下所示。,7.3 设计工具栏,三、编写工具按钮的事件过程,一般编写工具按钮的事件过程是在Toolbar控件的ButtonClick事件中,代码通常利用Case语句及Button.Key来判定用户按下哪一个按钮,以便能执行相应的程序代码。如该工具按钮为带下拉式菜单的按钮,则在ButtonMenuClick事件中编写代码,利用ButtonMenu.Key来判定用户使用的是哪一个菜单项,其判断值为Key栏的设置值。,7.3 设计工具栏,