《授课内容.ppt》由会员分享,可在线阅读,更多相关《授课内容.ppt(34页珍藏版)》请在三一文库上搜索。
1、第14章 菜单和工具栏,菜单Menu:可以提供一种方便的给命令分组的方法,同时也让用户更容易地执行这些命令。 工具栏控件ToolBar:而对于最常用的菜单命令采用工具栏图形按钮的方式来访问,显然更为快捷易用,菜单,菜单栏位于窗口标题下方 一个菜单栏中可以显示多个菜单标题 一个菜单标题可以对应一个菜单命令,或者可以展开显示含多个菜单项的菜单 每个菜单项可以是一个菜单命令,或包含下一级的子菜单 每个菜单最多可以包含五级子菜单。,菜单控件(Menu),菜单控件(Menu控件)可以显示应用程序的自定义菜单。 Menu控件与其它标准控件有所不同: 首先在工具箱中找不到Menu控件 其次菜单具有其它控件所
2、不具有的特性,菜单是有固定的位置、外观和层次结构,使用手工在窗体上不易绘制。 VB专门提供了菜单编辑器工具,利用该工具就可以轻松地创建菜单,使用菜单编辑器设计菜单栏,在VB中执行菜单命令“工具|菜单编辑器”,显示的文字,控件名称,控件数组的索引值,使用菜单编辑器设计菜单栏,选择要添加菜单栏的窗体 进入“菜单编辑器” “标题”中输入显示文本,即Caption属性 “名称”中输入菜单项的名称,即Name属性 左右箭头决定菜单项的缩进级,从而表示菜单项是菜单标题还是子菜单项 点【下一个】按钮重复,直到结束按下【确定】按钮 ,关闭“菜单编辑器”,分级子菜单,创建菜单分隔条,点“插入”按钮,在选定的菜单
3、项前插入一个菜单控件 “标题”中输入字符“-” 设置“名称”属性 点“确定”按钮,分隔条本身也是一个菜单项,定义菜单项的访问键和快捷键,访问键:在“标题”中加入&字母 快捷键:在“快捷键”组合框中选择 区别:访问键只能迅速将光标定位 快捷键能直接触发事件,菜单控件的属性和事件,Caption属性 菜单标题文本 Enabled属性 可响应标记 Visible属性 可见标记 Checked属性 选中标记 ShortCut 属性快捷键 Click事件 选中菜单项,响应菜单事件,菜单控件只包含一个事件,即Click事件,当用鼠标或键盘选中该菜单控件时,将触发该事件。 编写Click事件过程。比如: S
4、ub mnuFileExit_Click() Unload Me End Sub,使用复选标记,设计时加上复选标志 Checked属性为TRUE,则加“”标记 Checked属性为FALSE,则无标记,菜单示例,【例】设计文本框,利用菜单命令改变文本框字体效果(粗体、斜体和下划线),并实现文本的剪切、复制和粘贴,要求控制剪切、复制和粘贴菜单的可用性,以保证符合操作逻辑,如【粘贴】菜单项在剪切板为空时应无效。,菜单示例使用复选标记,文本框字体效果可以通过设置文本框的FontBold、FontItalic和FontUnderline属性来实现,每次按下后这些属性应该与原值相反,同时也要将菜单控件的
5、Checked属性变反,使菜单选择标志与字体相吻合。 粗体菜单被按下 Private Sub mnuFontBold_Click() mnuFontBold.Checked = Not mnuFontBold.Checked Text1.FontBold = Not Text1.FontBold End Sub 斜体菜单被按下 Private Sub mnuFontItalic_Click() mnuFontItalic.Checked = Not mnuFontItalic.Checked Text1.FontItalic = Not Text1.FontItalic End Sub,菜单示
6、例设置菜单项的有效性,对于剪切和复制菜单来说,应该根据文本框中是否有文本被选择来决定菜单是否生效,该功能由子程序SetEnabledValue来负责。在按下编辑菜单时决定子菜单的有效性。 按下编辑菜单 Private Sub mnuEdit_Click() 设置剪切和复制菜单的有效性 If Text1.SelLength 0 Then 判断是否有选择文本 mnuEditCut.Enabled = True mnuEditCopy.Enabled = True Else mnuEditCut.Enabled = False mnuEditCopy.Enabled = False End If E
7、nd Sub,菜单示例, 剪切菜单被按下 Private Sub mnuEditCut_Click() Clipboard.SetText Text1.SelText 文本框选中的文字送入剪切板 Text1.SelText = “ 删除文本框选中的文字 mnuEditPaste.Enabled = True 使粘贴菜单生效 End Sub 复制菜单被按下 Private Sub mnuEditCopy_Click() Clipboard.SetText Text1.SelText 文本框选中的文字送入剪切板 mnuEditPaste.Enabled = True 使粘贴菜单生效 End Sub
8、 粘贴菜单被按下 Private Sub mnuEditPaste_Click() Text1.SelText = Clipboard.GetText 剪切板拷贝到文本框当前插入点 End Sub 提示:VB内部有一个剪切板对象Clipboard,该对象不需要创建就可以使用。该对象没有属性,只提供几个方法。比如SetText用于设置剪切板中的文本,而GetText方法取出剪切板的。,弹出式菜单,弹出式菜单是显示在窗体上的浮动菜单 不同的子窗口或同一窗口的不同区域可以定义不同的弹出菜单,因此弹出式菜单也被称为上下文菜单。 在Windows中,可以单击鼠标右键来打开弹出菜单,创建弹出式菜单的第一步
9、与创建普通菜单一样,在“菜单编辑器”中增加一个菜单标题,以及该菜单标题的所有下级菜单项 如果该菜单标题不希望显示在菜单栏里,可在设计时使该标题的菜单控件为不可见(使“菜单编辑器”里的“可见”复选框没有被选上) 在程序中使用PopupMenu方法打开指定的菜单,显示弹出式菜单,PopupMenu方法 PopupMenu menuname flags ,x ,y ,boldcommand flags参数 用来描述弹出式菜单位置的flags取值 vbPopupMenuLeftAlign, vbPopupMenuCenterAlign. 用来描述弹出式菜单行为的flags取值 vbPopupMenuL
10、eftButton 识别左键 vbPopupMenuRightButton 识别左键和右键 Boldcommand 指定弹出式菜单项中粗体显示的菜单名,弹出式菜单示例,【例】为上例增加弹出式菜单,当用户用鼠标右键单击窗体时,显示字体效果菜单。 编程思路:可在MouseUp或者MouseDown事件中来检测何时单击了鼠标右键,然后使用PopupMenu弹出菜单,代码如下: Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then 检查是
11、否单击了鼠标右键 PopupMenu mnuFont 把字体菜单显示为一个弹出式菜单 End If End Sub,动态菜单,在程序运行时可以动态增减菜单项,方法有以下两种: 将所有会出现的菜单项都先设计好,通过改变Visible属性制造动态效果 使用菜单控件数组,动态添加或删除数组元素,动态菜单示例,【例】实现下图的界面效果。每次打开一个文件,将该文件名列入菜单中。,基本方法:使用菜单控件数组,动态改变菜单项的个数和标题,1、创建菜单控件数组,进入菜单编辑器 在“名称”中,输入菜单控件数组的名称,“索引”(Index属性)设置为0,“标题”可以空缺 定长数组:同一缩进级上创建第二个菜单项,“
12、名称”不变,“索引”设置为1,依次往下 不定长数组:程序中增加数组元素,注意:如果有分隔线,则分隔线也可以是菜单数组中的元素,2、定长菜单数组(较简单),定义一个有5个元素的菜单数组 所有元素的初始Visible属性为FALSE 使用一个变量Num作为计数器 当用户第一次打开一个文件后出现分隔条 当用户每打开一个文件后,可以如下: mnuFileList(Num).Caption = strFilename mnuFileList(Num).Visible = True Num = Num + 1 如果计数器超过列表名额,则采用先进先淘汰,3、变长菜单数组(较复杂),只定义一个数组元素,设置“
13、索引”值为0 程序中要增加菜单项时,为菜单数组动态创建一个新的菜单元素,如下: Num = Num + 1 Load mnuFileList(Num) mnuFileList(Num).Caption = strFileName 程序中要删除某个菜单元素时,如下: UnLoad mnuFileList(Index),4、使用注册表保存文件列表*,注册表:保留所有安装程序的有关设置,运行regedit可以进入查看或编辑 VB中与注册表有关的函数和语句,应用程序结束后,下次启动时能利用上次的结果,函数或语句,SaveSetting,返回一个包含多项注册表设置值的数组,保存或创建注册表设置值函数或语
14、句,返回注册表设置值,函数或语句,GetSetting,GetAllSettings,DeleteSetting,删除注册表设置值函数或语句,创建工具栏,工具栏提供了对于应用程序中最常用的菜单命令的快速访问, 是许多基于Windows的应用程序的标准功能 VB中有两种方法创建工具栏 手工方式: 使用PictureBox和Image控件或CommandButton控件, 按钮的效果需要手工控制 ActiveX控件ToolBar和ImageList控件, 自动实现各种按钮显示效果,使用ToolBar控件创建工具栏,部件Microsoft Windows Common Controls 6.0 wi
15、ndowssystemcomctl32.ocx 一般步骤: 添加ImageList控件,在此控件中放入合适的图象,每个图象都定义一个关键字 添加ToolBar控件,与ImageList控件关联 在ToolBar控件的属性页中创建Button对象 在ButtonClick事件中用SelectCase语句确定按下了哪个按钮,并根据按钮调用响应的操作,使用ToolBar控件创建工具栏,制作工具栏需要使用两个ActiveX控件: ImageList控件:它管理所有要用到的按钮图片,运行时不可见。该控件不独立使用。 ToolBar控件:它用于创建工具栏,其上放置按钮图片(由ImageList控件提供),
16、并响应用户对按钮的点击。,使用ImageList控件管理按钮图片,是其它Windows公共控件(如ToolBar, ListView, TreeView)或含有Picture属性的标准控件的图象库,图片中心 选中控件,进入鼠标右键的“属性”对话框 “图象”选项卡: 插入图片:选择图片打开 (*.bmp, *.ico) 索引:定义Index属性 关键字:定义唯一的名称,Key属性 “通用”选项卡:定义图片尺寸,只能无图象时定义才有效,使用ImageList控件管理按钮图片,在“关键字”中的字符串是每个图像唯一的名称,访问某个图像既可以使用图像的索引号,也可以使用关键字(便于记忆);,ToolBa
17、r与ImageList建立关联,Toolbar控件只有与ImageList关联后,才 能使用其中的图像。有两种方法: Toolbar 控件的“属性页”中的“图象列表” 组合框列出了窗体中所有的ImageList控件名称,选中需要的那个ImageList控件 在运行时建立关联,只需将ToolBar控件的ImageList属性设置为ImageList控件的名称,如下: Set ToolBar1.ImageList = ImageList1,添加工具栏的按钮,工具栏管理了一组按钮,因此包含的是按钮对象的集合(类似于数组),即ToolBar的Buttons属性。集合中的每个按钮有唯一的索引号,在插入时
18、自动顺序递增,不需要人工设置(也可以设置关键字) 打开Toolbar的“属性页”,在“按钮”选项卡中插入按钮,填写按钮“关键字”,填写“图象”的索引号(对应于ImageList控件中的图像索引号) 选择按钮样式:tbrDefault, tbrCheck, tbrSeparator, tbrButtonGroup, tbrPlaceholder等 其它设置项都是可选的,比如若指定了按钮的“标题”,则在图像之上还会显示指定的标题文字,添加工具栏的按钮,工具栏管理了一组按钮,因此包含的是按钮对象的集合(类似于数组),即ToolBar的Buttons属性。集合中的每个按钮有唯一的索引号,在插入时自动顺
19、序递增,不需要人工设置(也可以设置关键字) 打开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 Select End Sub,
链接地址:https://www.31doc.com/p-3181629.html