《【教学课件】第9章菜单和工具栏.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第9章菜单和工具栏.ppt(33页珍藏版)》请在三一办公上搜索。
1、第9章 菜单和工具栏,要求:掌握设计主菜单的方法掌握菜单编辑器的使用掌握常用工具的设计方法,第9章 菜单和工具栏,菜单Menu:可以提供一种方便的给命令分组的方法,同时也让用户更容易地执行这些命令。工具栏控件ToolBar:而对于最常用的菜单命令采用工具栏图形按钮的方式来访问,显然更为快捷易用,菜单,菜单栏位于窗口标题下方一个菜单栏中可以显示多个菜单标题一个菜单标题可以对应一个菜单命令,或者可以展开显示含多个菜单项的菜单每个菜单项可以是一个菜单命令,或包含下一级的子菜单每个菜单最多可以包含五级子菜单。,菜单控件(Menu),菜单控件(Menu控件)可以显示应用程序的自定义菜单。Menu控件与其
2、它标准控件有所不同:首先在工具箱中找不到Menu控件其次菜单具有其它控件所不具有的特性,菜单是有固定的位置、外观和层次结构,使用手工在窗体上不易绘制。VB专门提供了菜单编辑器工具,利用该工具就可以轻松地创建菜单,使用菜单编辑器设计菜单栏,在VB中执行菜单命令“工具|菜单编辑器”,显示的文字,控件名称,控件数组的索引值,使用菜单编辑器设计菜单栏,选择要添加菜单栏的窗体进入“菜单编辑器”“标题”中输入显示文本,即Caption属性“名称”中输入菜单项的名称,即Name属性左右箭头决定菜单项的缩进级,从而表示菜单项是菜单标题还是子菜单项点【下一个】按钮重复,直到结束按下【确定】按钮,关闭“菜单编辑器
3、”,分级子菜单,创建菜单分隔条,点“插入”按钮,在选定的菜单项前插入一个菜单控件“标题”中输入字符“-”设置“名称”属性点“确定”按钮,分隔条本身也是一个菜单项,定义菜单项的访问键和快捷键,访问键:在“标题”中加入&字母快捷键:在“快捷键”组合框中选择 区别:访问键只能迅速将光标定位 快捷键能直接触发事件,菜单控件的属性和事件,Caption属性菜单标题文本Enabled属性可响应标记Visible属性可见标记Checked属性选中标记ShortCut属性快捷键Click事件选中菜单项,响应菜单事件,菜单控件只包含一个事件,即Click事件,当用鼠标或键盘选中该菜单控件时,将触发该事件。编写C
4、lick事件过程。比如:Sub mnuFileExit_Click()Unload MeEnd Sub,使用复选标记,设计时加上复选标志Checked属性为TRUE,则加“”标记Checked属性为FALSE,则无标记,菜单示例,【例】设计文本框,利用菜单命令改变文本框字体效果(粗体、斜体和下划线),并实现文本的剪切、复制和粘贴,要求控制剪切、复制和粘贴菜单的可用性,以保证符合操作逻辑,如【粘贴】菜单项在剪切板为空时应无效。,菜单示例使用复选标记,文本框字体效果可以通过设置文本框的FontBold、FontItalic和FontUnderline属性来实现,每次按下后这些属性应该与原值相反,同
5、时也要将菜单控件的Checked属性变反,使菜单选择标志与字体相吻合。粗体菜单被按下Private Sub mnuFontBold_Click()mnuFontBold.Checked=Not mnuFontBold.Checked Text1.FontBold=Not Text1.FontBoldEnd Sub 斜体菜单被按下Private Sub mnuFontItalic_Click()mnuFontItalic.Checked=Not mnuFontItalic.Checked Text1.FontItalic=Not Text1.FontItalicEnd Sub,Private s
6、ub mnufontunderline_click()Mnufontunderline,checked=not mnufontunderline.checked Text1.fontunderline=not text1.fontunderlineEnd sub,菜单示例设置菜单项的有效性,对于剪切和复制菜单来说,应该根据文本框中是否有文本被选择来决定菜单是否生效,该功能由子程序SetEnabledValue来负责。在按下编辑菜单时决定子菜单的有效性。按下编辑菜单Private Sub mnuEdit_Click()设置剪切和复制菜单的有效性 If Text1.SelLength 0 Then
7、判断是否有选择文本 mnuEditCut.Enabled=True mnuEditCopy.Enabled=True Else mnuEditCut.Enabled=False mnuEditCopy.Enabled=False End IfEnd Sub,菜单示例,剪切菜单被按下Private Sub mnuEditCut_Click()Clipboard.SetText Text1.SelText 文本框选中的文字送入剪切板 Text1.SelText=“删除文本框选中的文字 mnuEditPaste.Enabled=True 使粘贴菜单生效End Sub 复制菜单被按下Private S
8、ub mnuEditCopy_Click()Clipboard.SetText Text1.SelText 文本框选中的文字送入剪切板 mnuEditPaste.Enabled=True 使粘贴菜单生效End Sub 粘贴菜单被按下Private Sub mnuEditPaste_Click()Text1.SelText=Clipboard.GetText 剪切板拷贝到文本框当前插入点End Sub提示:VB内部有一个剪切板对象Clipboard,该对象不需要创建就可以使用。该对象没有属性,只提供几个方法。比如SetText用于设置剪切板中的文本,而GetText方法取出剪切板的。,弹出式菜单
9、,要求:掌握弹出式菜单的设计方法,弹出式菜单,弹出式菜单是显示在窗体上的浮动菜单不同的子窗口或同一窗口的不同区域可以定义不同的弹出菜单,因此弹出式菜单也被称为上下文菜单。在Windows中,可以单击鼠标右键来打开弹出菜单,创建弹出式菜单的第一步与创建普通菜单一样,在“菜单编辑器”中增加一个菜单标题,以及该菜单标题的所有下级菜单项如果该菜单标题不希望显示在菜单栏里,可在设计时使该标题的菜单控件为不可见(使“菜单编辑器”里的“可见”复选框没有被选上)在程序中使用PopupMenu方法打开指定的菜单,显示弹出式菜单,PopupMenu方法 格式:对象名.PopupMenu 主菜单项名“对象名”是弹出
10、式菜单的窗体名。“对象名”省略时代表当前窗体。其功能是在窗体的鼠标所在位置显示弹出式菜单。,弹出式菜单示例,【例】为上例增加弹出式菜单,当用户用鼠标右键单击窗体时,显示字体效果菜单。编程思路:可在MouseUp或者MouseDown事件中来检测何时单击了鼠标右键,然后使用PopupMenu弹出菜单,代码如下:Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=2 Then 检查是否单击了鼠标右键 PopupMenu mnufile 把文件菜单显示为一个弹出
11、式菜单End IfEnd Sub 注:Button的值:1表示左键,2表示右键,例:利用弹出式菜单改变窗体上的图像大小。,Dim w As SingleDim h As SinglePrivate Sub Form_Load()w=Image1.Widthh=Image1.HeightEnd SubPrivate Sub image1_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=2 Then PopupMenu mnuchangeEnd IfEnd SubPrivate Sub m
12、nularge_Click()Image1.Width=1.2*Image1.WidthImage1.Height=1.2*Image1.HeightEnd Sub,Private Sub mnuresize_Click()Image1.Width=wImage1.Height=hEnd SubPrivate Sub mnusmall_Click()Image1.Width=0.8*Image1.WidthImage1.Height=0.8*Image1.HeightEnd Sub,创建工具栏,工具栏提供了对于应用程序中最常用的菜单命令的快速访问,是许多基于Windows的应用程序的标准功能V
13、B中有两种方法创建工具栏手工方式:使用PictureBox和Image控件或CommandButton控件,按钮的效果需要手工控制ActiveX控件ToolBar和ImageList控件,自动实现各种按钮显示效果,使用ToolBar控件创建工具栏,部件Microsoft Windows Common Controls 6.0 windowssystemcomctl32.ocx一般步骤:添加ImageList控件,在此控件中放入合适的图象,每个图象都定义一个关键字添加ToolBar控件,与ImageList控件关联在ToolBar控件的属性页中创建Button对象在ButtonClick事件中用
14、SelectCase语句确定按下了哪个按钮,并根据按钮调用响应的操作,使用ToolBar控件创建工具栏,制作工具栏需要使用两个ActiveX控件:ImageList控件:它管理所有要用到的按钮图片,运行时不可见。该控件不独立使用。ToolBar控件:它用于创建工具栏,其上放置按钮图片(由ImageList控件提供),并响应用户对按钮的点击。,使用ImageList控件管理按钮图片,是其它Windows公共控件(如ToolBar,ListView,TreeView)或含有Picture属性的标准控件的图象库,图片中心选中控件,进入鼠标右键的“属性”对话框“图象”选项卡:插入图片:选择图片打开(*
15、.bmp,*.ico)索引:定义Index属性关键字:定义唯一的名称,Key属性“通用”选项卡:定义图片尺寸,只能无图象时定义才有效,使用ImageList控件管理按钮图片,在“关键字”中的字符串是每个图像唯一的名称,访问某个图像既可以使用图像的索引号,也可以使用关键字(便于记忆);,ToolBar与ImageList建立关联,Toolbar控件只有与ImageList关联后,才能使用其中的图像。有两种方法:Toolbar 控件的“属性页”中的“图象列表”组合框列出了窗体中所有的ImageList控件名称,选中需要的那个ImageList控件在运行时建立关联,只需将ToolBar控件的Imag
16、eList属性设置为ImageList控件的名称,如下:Set ToolBar1.ImageList=ImageList1,添加工具栏的按钮,工具栏管理了一组按钮,因此包含的是按钮对象的集合(类似于数组),即ToolBar的Buttons属性。集合中的每个按钮有唯一的索引号,在插入时自动顺序递增,不需要人工设置(也可以设置关键字)打开Toolbar的“属性页”,在“按钮”选项卡中插入按钮,填写按钮“关键字”,填写“图象”的索引号(对应于ImageList控件中的图像索引号)选择按钮样式:tbrDefault,tbrCheck,tbrSeparator,tbrButtonGroup,tbrPla
17、ceholder等其它设置项都是可选的,比如若指定了按钮的“标题”,则在图像之上还会显示指定的标题文字,添加工具栏的按钮,工具栏管理了一组按钮,因此包含的是按钮对象的集合(类似于数组),即ToolBar的Buttons属性。集合中的每个按钮有唯一的索引号,在插入时自动顺序递增,不需要人工设置(也可以设置关键字)打开Toolbar的“属性页”,在“按钮”选项卡中插入按钮,填写按钮“关键字”,填写“图象”的索引号(对应于ImageList控件中的图像索引号)选择按钮样式:tbrDefault,tbrCheck,tbrSeparator,tbrButtonGroup,tbrPlaceholder等其它设置项都是可选的,比如若指定了按钮的“标题”,则在图像之上还会显示指定的标题文字,工具栏的属性页,工具栏有关设置在属性页中完成:,响应工具栏按钮,编写代码响应按钮的点击,即编写工具栏控件的ButtonClick事件过程:Private Sub tb1_ButtonClick(ByVal Button As ComctlLib.Button)Select Case Button.Key Case“New”.Case“Open”Call mnuOpen_Click Case“Save”.End SelectEnd Sub,