第14章菜单和工具栏
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1)创建弹出式菜单的第一步与创建普通菜单一样,在 “菜单编辑器”中增加一个菜单标题,以及该菜单标 题的所有下级菜单项 2)如果该菜单标题不希望显示在菜单栏里,可在设计 时使该标题的菜单控件为不可见(使“菜单编辑器” 里的“可见”复选框没有被选上) 3)在程序中使用PopupMenu方法打开指定的菜单
第14章 菜单和工具栏
• 菜单Menu:可以提供一种方便的给命 令分组的方法,同时也让用户更容易 地执行这些命令。 工具栏控件ToolBar:而对于最常用的 菜单命令采用工具栏图形按钮的方式 来访问,显然更为快捷易用
•
菜单
• • •
• •
菜单栏位于窗口标题下方 一个菜单栏中可以显示多个菜单标题 一个菜单标题可以对应一个菜单命令, 或者可以展开显示含多个菜单项的菜 单 每个菜单项可以是一个菜单命令,或 包含下一级的子菜单 每个菜单最多可以包含五级子菜单。
菜单示例——设置菜单项的有效性
• 对于剪切和复制菜单来说,应该根据文本框中是否有 文本被选择来决定菜单是否生效,该功能由子程序 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 End 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 ' 粘贴菜单被按下 Private Sub mnuEditPaste_Click() Text1.SelText = Clipboard.GetText End Sub '文本框选中的文字送入剪切板 '删除文本框选中的文字 '使粘贴菜单生效
– 用来描述弹出式菜单行为的flags取值
vbPopupMenuLeftButton vbPopupMenuRightButton 识别左键 识别左键和右键
• Boldcommand
指定弹出式菜单项中粗体显示的菜单名
弹出式菜单示例
【例】为上例增加弹出式菜单,当用户用鼠标右 键单击窗体时,显示字体效果菜单。 编程思路:可在MouseUp或者MouseDown事件中 来检测何时单击了鼠标右键,然后使用 PopupMenu弹出菜单,代码如下:
菜单控件的属性和事件
–Caption属性 菜单标题文本 –Enabled属性 可响应标记 –Visible属性 可见标记 –Checked属性 选中标记 –ShortCut属性快捷键 –Click事件 选中菜单项
响应菜单事件
• 菜单控件只包含一个事件,即 Click事件,当用鼠标或键盘选中 该菜单控件时,将触发该事件。 • 编写Click事件过程。比如:
使用菜单编辑器设计菜单栏
• 在VB中执行菜单命令“工具|菜单编辑器”
显示的文字
控件名称 控件数组的 索引值
使用菜单编辑器设计菜单栏
• • • • •
选择要添加菜单栏的窗体 进入“菜单编辑器” “标题”中输入显示文本,即Caption属性 “名称”中输入菜单项的名称,即Name属性 左右箭头决定菜单项的缩进级,从而表示菜单 项是菜单标题还是子菜单项 • 点【下一个】按钮重复,直到结束按下【确定】 按钮 ,关闭“菜单编辑器”
——是其它Windows公共控件(如ToolBar,
ListView, TreeView)或含有Picture属性的标 准控件的图象库,图片中心 • 选中控件,进入鼠标右键的“属性”对话框 • “图象”选项卡: – 插入图片:选择图片打开 (*.bmp, *.ico) – 索引:定义Index属性 – 关键字:定义唯一的名称,Key属性 • “通用”选项卡:定义图片尺寸,只能无图 象时定义才有效
显示弹出式菜单
• PopupMenu方法
PopupMenu menuname [ flags [ ,x [,y [,boldcommand]]]]
• flags参数
– 用来描述弹出式菜单位置的flags取值
vbPopupMenuLeftAlign, vbPopupMenuCenterAlign….
Sub mnuFileExit_Click() Unload Me End Sub
使用复Байду номын сангаас标记
• 设计时加上复选标志
• Checked属性为TRUE,则加“√”标记 • Checked属性为FALSE,则无标记
菜单示例
【例】设计文本框,利用菜单命令改变文本框 字体效果(粗体、斜体和下划线),并实现 文本的剪切、复制和粘贴,要求控制剪切、 复制和粘贴菜单的可用性,以保证符合操作 逻辑,如【粘贴】菜单项在剪切板为空时应 无效。
• 程序中要删除某个菜单元素时,如下: UnLoad mnuFileList(Index)
4、使用注册表保存文件列表*
应用程序结束后,下次启动时能利用上次的结果
注册表:保留所有安装程序的有关设置,运行 regedit可以进入查看或编辑 VB中与注册表有关的函数和语句
函数或语句 GetSetting SaveSetting GetAllSettings DeleteSetting 函数或语句 返回注册表设置值 保存或创建注册表设置值函数或语句 返回一个包含多项注册表设置值的数组 删除注册表设置值函数或语句
Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then ' 检查是否单击了鼠标右键 PopupMenu mnuFont ‘ 把字体菜单显示为一个弹出式菜单 End If
分级子菜单
创建菜单分隔条
• 点“插入”按钮,在选定的菜单项前插入 一个菜单控件 • “标题”中输入字符“-” • 设置“名称”属性 • 点“确定”按钮 分隔条本
身也是一 个菜单项
定义菜单项的访问键和快捷键
• 访问键:在“标题”中加入&字母 • 快捷键:在“快捷键”组合框中选择 区别:访问键只能迅速将光标定位 快捷键能直接触发事件
使用ImageList控件管理按钮图片
• 在“关键字”中的字符串是每个图像唯一的 名称,访问某个图像既可以使用图像的索引 号,也可以使用关键字(便于记忆);
ToolBar与ImageList建立关联
'文本框选中的文字送入剪切板 '使粘贴菜单生效
'剪切板拷贝到文本框当前插入点
•
提示:VB内部有一个剪切板对象Clipboard,该对象不需要创建就可以使 用。该对象没有属性,只提供几个方法。比如SetText用于设置剪切板中的 文本,而GetText方法取出剪切板的。
弹出式菜单
• 弹出式菜单是显示在窗体上的浮动菜单 • 不同的子窗口或同一窗口的不同区域可以定义不同 的弹出菜单,因此弹出式菜单也被称为上下文菜单。 • 在Windows中,可以单击鼠标右键来打开弹出菜单
菜单示例——使用复选标记
• 文本框字体效果可以通过设置文本框的FontBold、FontItalic和 FontUnderline属性来实现,每次按下后这些属性应该与原值相 反,同时也要将菜单控件的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
• 如果计数器超过列表名额,则采用先进先淘 汰
3、变长菜单数组(较复杂)
• 只定义一个数组元素,设置“索引”值为0 • 程序中要增加菜单项时,为菜单数组动态创 建一个新的菜单元素,如下:
Num = Num + 1 Load mnuFileList(Num) mnuFileList(Num).Caption = strFileName
使用ToolBar控件创建工具栏
制作工具栏需要使用两个ActiveX控件:
• ImageList控件:它管理所有要用到的按钮图片,运 行时不可见。该控件不独立使用。 • ToolBar控件:它用于创建工具栏,其上放置按钮 图片(由ImageList控件提供),并响应用户对按钮 的点击。
使用ImageList控件管理按钮图片
使用ToolBar控件创建工具栏
部件Microsoft Windows Common Controls 6.0 \windows\system\comctl32.ocx 一般步骤:
• 添加ImageList控件,在此控件中放入合适的图象, 每个图象都定义一个关键字 • 添加ToolBar控件,与ImageList控件关联 • 在ToolBar控件的属性页中创建Button对象 • 在ButtonClick事件中用SelectCase语句确定按下 了哪个按钮,并根据按钮调用响应的操作
创建工具栏
• 工具栏提供了对于应用程序中最常用的菜单 命令的快速访问, 是许多基于Windows的应 用程序的标准功能 • VB中有两种方法创建工具栏
– 手工方式: 使用PictureBox和Image控件或 CommandButton控件, 按钮的效果需要手工控 制 – ActiveX控件ToolBar和ImageList控件, 自动实 现各种按钮显示效果
1、创建菜单控件数组
• 进入菜单编辑器 • 在“名称”中,输入菜单控件数组的名称, “索引”(Index属性)设置为0,“标题” 可以空缺
– 定长数组:同一缩进级上创建第二个菜单项, “名称”不变,“索引”设置为1,依次往下 – 不定长数组:程序中增加数组元素
注意:如果有分隔线,则分隔线也可以是菜 单数组中的元素
2、定长菜单数组(较简单)
• • • • • 定义一个有5个元素的菜单数组 所有元素的初始Visible属性为FALSE 使用一个变量Num作为计数器 当用户第一次打开一个文件后出现分隔条 当用户每打开一个文件后,可以如下:
mnuFileList(Num).Caption = strFilename mnuFileList(Num).Visible = True Num = Num + 1
菜单控件(Menu)
• • 菜单控件(Menu控件)可以显示应用 程序的自定义菜单。 Menu控件与其它标准控件有所不同:
–首先在工具箱中找不到Menu控件 –其次菜单具有其它控件所不具有的特性, 菜单是有固定的位置、外观和层次结构, 使用手工在窗体上不易绘制。 – VB专门提供了菜单编辑器工具,利用该 工具就可以轻松地创建菜单
End Sub
动态菜单
在程序运行时可以动态增减菜单项,方法有 以下两种: 1. 将所有会出现的菜单项都先设计好,通过 改变Visible属性制造动态效果 2. 使用菜单控件数组,动态添加或删除数组 元素
动态菜单示例
【例】实现下图的界面效果。每次打开一个文 件,将该文件名列入菜单中。 基本方法:使用菜单控件数组,动态改变菜 单项的个数和标题