Transcript Document
第9章
菜单和工具栏设计
在Windows环境中,几乎所有的应用软件都通过菜
单来实现各种操作。而对于VB应用程序来说,当操作
比较简单时,一般通过控件来执行,而当要完成较复
杂的操作时,使用菜单将很方便。
工具栏同样以其直观、快捷的特点出现在各种应用
程序中,事实上工具栏已经成为Windows应用程序的
标准功能。它使用户不必在一级级的菜单中去搜寻需
要的命令,给用户带来比菜单更为快捷的操作。
本章主要内容:
● 菜单设计
● 工具栏设计
9.1 菜单设计
菜单的基本作用有两个,一是提供人机对话的接口,以
便让用户选择应用系统的各种功能;二是管理应用系统,
控制各种功能模块的运行。一个高质量的菜单程序,不仅
能使系统美观,而且能使用户使用方便,并可避免由于误
操作而带来的严重后果。
在实际应用中,菜单可分为两种基本类型:下拉式菜单
和弹出式菜单。
下拉式菜单一般通过单击菜单栏中菜单标题(如“文
件”、“编辑”、“视图”等)的方式打开,如图9-1所示。
图9-1
下拉式菜单
弹出式菜单则通过用鼠标右键单击某一区域的方式打开,
如图9-2所示。
一般来说,不同的区域所“弹出”的菜单内容是不同的。
如在VB的工具栏中的弹出菜单与窗体设计器中的弹出菜单
就完全不同。
图9-2
弹出式菜单
9.1.1
下拉式菜单
在下拉式菜单系统中,一般有一个主菜单,称为菜单栏。
其中包括一个或多个选择项,称为菜单标题。当单击一个
菜单标题时,包含菜单项的列表(菜单)即被打开。菜单
由若干个命令、分隔条、子菜单标题(其右边含有三角的
菜单项)等菜单项组成。当选择子菜单标题时又会“下拉”
出下一级菜单项列表,称为子菜单。VB的菜单系统最多可
达6层。
在VB中,菜单也是一个图形对象,即控件。与其他控件
一样,它具有定义它的外观与行为的属性。在设计或运行
时可以设置Caption属性、Enabled和Visible属性、Checked
属性以及其它属性。菜单控件只包含一个事件,即Click事
件,当用鼠标或键盘选中该菜单控件时,将调用该事件。
与一般控件不同的是,菜单控件不在VB的工具箱中,需
要在VB“菜单编辑器”中进行菜单设计。
1. 菜单编辑器
菜单通过菜单编辑器(即菜单设计窗口)建立。可以通
过下面的4种方法之一进入菜单编辑器:
l
执行“工具”菜单中的“菜单编辑器”命令。
l
使用快捷键〈Ctrl〉+〈E〉。
l
单击工具栏中的“菜单编辑器”按钮。
l
在要建立菜单的窗体上单击鼠标右键,在快捷菜
单中,单击“菜单编辑器”命令。
打开后的菜单编辑器窗口如图9-3所示。
图9-3
菜单编辑器
菜单编辑器分为3个部分。
(1) 菜单控件属性区
菜单控件属性区用于设置菜单项的各个属性,表9-1列
出其中的主要属性。
表9-1
属 性
菜单控件的主要属性
说
明
标题(Caption) 设置菜单项的标题,相当于控件的Caption属性,也是显示在菜单中的字符。可
以在标题中设置热键。可以用分割线将某些菜单项归为一类并与其他项隔开
名 称 ( Name ) 设置菜单项的名称,相当于控件的Name属性。菜单项的命名规则与控件的命名
规则相同
索引(Index)
设置菜单控件数组的下标,相当于控件数组的Index属性
快
捷
键
(Shortcut)
设置与菜单项等价的快捷键。快捷键的赋值包括功能键与控制键的组合,如
Ctrl+F1键或Ctrl+A键。它们出现在菜单中相应菜单项的右边
复
选
(Checked)
“复选”属性设置为True时,可以在相应的菜单项旁加上记号“√”。表明该菜
单项当前处于活动状态
有效(Enabled) 用来设置菜单项的操作状态。如果该属性被设置为False,则相应的菜单项会变
“灰”,不响应用户事件
可 见 ( Visible ) 设置该菜单项是否可见。如果该属性被设置为False,则相应的菜单项将被暂时
从菜单中去掉,直到该属性重新被设置为True
(2) 编辑区
编辑区共有7个按钮,用来对输入的菜单项进行简单的
编辑,见表9-2。
表9-2
按钮
编辑区的按钮
说明
用来产生或取消内缩符号“….”,内缩符号可以确定菜单的层次。单击一次
右箭头产生一个内缩符号,单击一次左箭头则删除一个内缩符号
用于调整菜单项的上下位置。当位于菜单控件列表框中的菜单项被选中后,
可以通过上、下箭头来移动其位置
用于进入下一个菜单项的设计
在光标所在处插入一个空白菜单项
删除光标所在处的菜单项
(3) 菜单项显示区
菜单项显示区位于菜单编辑器的下部,输入的菜单项在
这里显示出来,并通过内缩符号表明菜单项的层次。
说明:
①“菜单项”包括4个方面的内容:菜单名、菜单命令、
分隔线和子菜单。
② 在输入菜单项时,如果在字母前加上“&”,则显示菜
单时在该字母下面加上一条下划线,可以通过〈Alt〉+“带
下划线的字母”打开菜单或执行相应的菜单命令。
③ 内缩符号由4个小数点“….”组成,它表明菜单项所在
的层次。一个内缩符号“….”表示一层,两个内缩符号
“……..”表示两层,…,最多为6层。如果一个菜单项前面
没有内缩符号,则该菜单为菜单名,即菜单的第一层。
④ 如果在“标题”栏内只输入一个“-”,则表示产生
一个分隔线。
⑤ 只有菜单名没有菜单项的菜单称为“顶层菜单”,
在输入这样的菜单项时,通常在后面加上一个感叹号
(!)。
⑥ 除分隔线外,所有的菜单项都可以接受Click事件。
【例9-1】在窗体上建立如图9-4所示的文件下拉菜单。
图9-4
建立下拉菜单
操作步骤如下:
① 执行“工具”菜单中的“菜单编辑器”命令,打开
“菜单编辑器”窗口。
② 在标题栏中输入“文件(&F)”,在菜单项显示区中出
现同样的标题名称。按〈Tab〉键(或用鼠标)把输入光标
移到“名称”栏,在名称栏中输入file,此时菜单项显示区
中没有变化。
③ 单击编辑区中的“下一个”按钮,菜单项显示区中的
条形光标下移,同时资料区的“标题”栏及“名称”栏被
清空,光标回到“标题”栏。
④ 在标题栏中输入“新建”,该信息同时在菜单项显示
区中显示出来,用〈Tab〉键或鼠标把光标移到“名称”栏,
输入new,单击编辑区的右箭头,菜单显示区中的“新建”
右移,同时其左侧出现一个内缩符号“….”,表明“新建”
是“文件”的下一级菜单
⑤ 依次输入菜单中的各项,如果需要指定快捷键,可以
单击“快捷键”栏右端的箭头,从中选出。例如为“打开”
菜单项选中“Ctrl+O”作为其快捷键。
⑥ 设计完成后的窗口如图9-5所示,单击“确定”按钮,
完成菜单的建立工作。
图9-5 在菜单编辑器窗口建立下拉菜单
【例9-2】利用下拉式菜单为标签中的文本内容设置不
同的字体和风格。如图9-6所示。
图9-6 利用菜单控制标题板
设计步骤如下:
① 建立用户界面及设置对象属性,如图9-7所示。
图9-7
设计用户界面及设置对象属性
其中,菜单编辑器中各菜单项的设置见表9-3。
表9-3
标题(Caption)
菜单项的设置
名称(Name)
说明
标题板(&F)
Menu
主菜单项1
….文本字体(&N)
Nam
子菜单项12
…. ….宋体
song
子菜单项121
…. ….隶书
li
子菜单项122
…. ….楷体
kai
子菜单项123
…. ….黑体
hei
子菜单项124
….文本风格(&S)
Styl
子菜单项13
…. ….粗体
Bld
子菜单项131
…. ….斜体
Itl
子菜单项132
…. ….下划线
Undrln
子菜单项133
② 编写菜单项代码。“文本字体”中4个菜单选项的
Click事件代码为:
Private Sub song_Click()
Label1.FontName = "宋体"
End Sub
Private Sub li_Click()
Label1.FontName = "隶书"
End Sub
Private Sub kai_Click()
Label1.FontName = "楷体_GB2312"
End Sub
Private Sub hei_Click()
Label1.FontName = "黑体"
End Sub
“文本风格”中3个菜单选项的Click事件代码为:
Private Sub bld_Click()
bld.Checked = Not bld.Checked
Label1.FontBold = bld.Checked
End Sub
Private Sub Itl_Click()
Itl.Checked = Not Itl.Checked
Label1.FontItalic = Itl.Checked
End Sub
Private Sub Undrln_Click()
Undrln.Checked = Not Undrln.Checked
Label1.FontUnderline = Undrln.Checked
End Sub
程序运行结果如图9-6所示。
2. 菜单控件数组
既然VB将菜单项视为控件,因此就能运用控件数组的概
念。菜单控件数组的作用主要有两个:
l
用于动态地增删菜单项。
l
简化编程,用一段代码处理多个菜单项。
【例9-3】利用下拉式菜单设计简易的文本编辑器,使其具
有创建、编辑、保存文本文件的内容,如图9-8所示。
图9-8
使用下拉菜单的简单编辑器
设计步骤如下:
① 建立用户界面及设置对象属性。在窗体上增加一个公
共对话框控件,一个文本框控件,并设置对象属性,参见
图9-9所示。
图9-9
建立用户界面及设置对象属性
其中,菜单编辑器中各菜单项的设置见表9-4。
表9-4 菜单项的设置
标题(Caption)
名称(Name)
索引(Index)
说 明
文件(&F)
Files
主菜单项1
….新建(&N)
File
0
子菜单项11
….打开(&O)
File
1
子菜单项12
….保存(&S)
File
2
子菜单项13
….另存(&A)
File
3
子菜单项14
….关闭(&X)
File
4
子菜单项15
编辑(&E)
Edit
….剪切
Edi
0
子菜单项21
….复制
Edi
1
子菜单项22
….粘贴
Edi
2
子菜单项23
….删除
Edi
3
子菜单项24
主菜单项2
② 编写菜单项代码。菜单控件数组File的Click事件代码为:
Private Sub File_Click(Index As Integer)
n = Index
Select Case n
Case 0
' 新建
Text1.Text = ""
Form1.Caption = "未命名"
Case 1
CommonDialog1.ShowOpen
fname = CommonDialog1.FileName
' 打开
' 显示“打开”公共对话框
If fname <> "" Then
Text1.Text = ""
Open fname For Input As #1
b = ""
Do Until EOF(1)
Line Input #1, nextline
b = b & nextline & Chr(13) & Chr(10)
Loop
Close #1
Text1.Text = b
End If
Form1.Caption = fname
Case 2
' 保存
If Form1.Caption = "未命名" Or Form1.Caption = ""
Then
CommonDialog1.ShowSave
' 显示“另存为”公共对话框
fname = CommonDialog1.FileName
Else
fname = Form1.Caption
End If
If fname <> "" Then
Open fname For Output As #1
Print #1, Text1.Text
Close #1
End If
Case 3
CommonDialog1.ShowSave
' 另存
' 显示“另存为”公共对话
框
fname = CommonDialog1.FileName
If fname <> "" Then
Open fname For Output As #1
Print #1, Text1.Text
Close #1
End If
Case 4
Text1.Text = ""
Unload Me
End Select
Text1.SetFocus
End Sub
' 关闭
编写“编辑”菜单中的菜单控件数组Edi的Click事件代码。
在编写过程中,需要用到两个与剪贴板有关的方法:SetText
方法和GetText方法。其中SetText方法是将指定的文本放入系
统剪贴板中:
Clipboard.SetText Text1.SelText
剪贴板对象的GetText方法可以作为函数一样使用,它返回
系统剪贴板当前的内容:
Text1.SelText = Clipboard.GetText()
其中,Clipboard是VB提供的剪贴板对象。
菜单控件数组Edi的Click事件代码为:
Private Sub edi_Click(Index As Integer)
i = Index
Select Case i
Case 0
' 剪切
Clipboard.SetText Text1.SelText
Text1.SelText = ""
Case 1
' 复制
Clipboard.SetText Text1.SelText
Case 2
' 粘贴
Text1.SelText = Clipboard.GetText()
Case 3
' 删除
Text1.SelText = ""
End Select
End Sub
程序运行结果如图9-8所示。
3. 菜单项的可用与不可用
VB设计的菜单可以根据程序的运行状态动态地进行调整。
当菜单项所指示的操作不适合当前的环境时,可以暂时将
其关闭,不让用户选择该菜单项,也可以干脆把它隐藏起
来,就像根本没有这个菜单项一样,等到条件成熟时,再
重新显示被隐藏的菜单项。
【例9-4】改编例9-3的程序,使得当文本中没有被选中的内
容时,剪切、复制和删除等功能被关闭(菜单项呈灰色)。
一旦选中某些文本后,剪切、复制和删除等功能就可以被
使用,如图9-10所示。
图9-10
菜单项的可用与不可用
只需在例9-3的基础上增加“编辑”菜单项Edit的Click事件代码为:
Private Sub Edit_Click()
edi(0).Enabled = IIf(Text1.SelLength = 0, False, True)
edi(1).Enabled = IIf(Text1.SelLength = 0, False, True)
edi(3).Enabled = IIf(Text1.SelLength = 0, False, True)
End Sub
【例9-5】在例9-3的基础上改变程序,隐藏剪切、复制和删除
菜单项。
隐藏菜单项的办法也是很简单的。在例9-3中,编写文本框
Text1的事件代码。
键抬起(KeyUp)事件代码为:
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
edi(0).Visible = IIf(Text1.SelLength = 0, False, True)
edi(1).Visible = IIf(Text1.SelLength = 0, False, True)
edi(3).Visible = IIf(Text1.SelLength = 0, False, True)
End Sub
鼠标键抬起(MouseUp)事件代码为:
Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As
Single, Y As Single)
edi(0).Visible = IIf(Text1.SelLength = 0, False, True)
edi(1).Visible = IIf(Text1.SelLength = 0, False, True)
edi(3).Visible = IIf(Text1.SelLength = 0, False, True)
End Sub
程序运行结果如图9-11所示。
图9-11 隐藏和重现菜单项
9.1.2 弹出式菜单
弹出式菜单能以灵活的方式为用户提供更加便利的操
作,它可以根据用户单击鼠标右键时的位置,动态地调
整菜单项的显示位置,同时也改变菜单项显示内容,因
此弹出式菜单又称为“上下文菜单”或“快捷菜单”。
设计弹出式菜单仍然使用VB提供的菜单编辑器,只要
把 某 个 菜 单 设 置 成 隐 藏( 即“ 可见 ” 栏Visible属性为
False)就可以了。
实际上,不管是在窗口顶部菜单条上显示的菜单,还
是隐藏的菜单,都可以用PopupMenu方法把它们作为快
捷菜单在程序运行期间显示出来,语法为:
[〈窗体名〉.] PopupMenu 〈菜单名〉[, flags [,x [, y [,
boldcommand ]]]]
说明:
① 省略〈窗体名〉时,将打开当前窗体的菜单。
②〈菜单名〉是指通过菜单编辑器设计的菜单(至少有一
个子菜单项)的名称(Name)。
③ Flags参数为一些常量数值的设置,包含位置及行为两
个指定值,如表9-5、表9-6所示。两个常数可以相加或以Or
相连。
表9-5
位置常数
0(默认)
4
8
位置常数
说 明
菜单左上角位于X
菜单上框中央位于X
菜单右上角位于X
表9-6 行为常数
行为常数
0(默认)
2
说 明
菜单命令只接受右键单击
菜单命令可接受左、右键单击
④ Boldcommand参数可以指定在显示的弹出式菜单中想
以粗体字出现的菜单项名称。在弹出式菜单中只能有一个
菜单项被加粗。
⑤ 为创建一个不显示在菜单栏里的菜单,可在设计时使
顶级菜单项目为不可见(保证在菜单编辑器里的“可见”
复选框没有被选上)。当VB显示一个弹出式菜单时,指定
的顶级菜单的Visible属性会被忽略。
【例9-6】在例9-3中实现弹出式菜单,如图9-12所示。
首先在菜单编辑器中将“文件”菜单的“可见”栏中的
对号取消,如图9-13所示。
图9-12 自定义的弹出式菜单
图9-13 将菜单项的可见属性Visible设为False
增加窗体的MouseDown事件代码为:
Private Sub Form_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu Files, 6
End If
End Sub
在程序运行时,右键单击窗体,即可弹出快捷菜单,如
图9-12所示。
另外,在VB的文本框中,即使不编程也可以得到一个弹
出式菜单。例如在文本编辑器中,单击鼠标右键即可得到
如图9-14所示的弹出式菜单。
图9-14
在VB文本框中不用编程的弹出式菜单
9.2
工具栏设计
工具栏同样以其直观、快捷的特点出现在各种应用程序中
,事实上工具栏已经成为Windows应用程序的标准功能。它
使用户不必在一级级的菜单中去搜寻需要的命令,给用户带
来比菜单更为快捷的操作。
在VB中可以通过手工方式和使用工具栏控件(Toobar)
两种方法建立工具栏。
9.2.1 用手工方式制作工具栏
用手工方式制作工具栏,其实就是设计一个放置一些工具
按钮的图片框。手工制作工具栏的一般步骤如下:
① 在窗体中添加一个图片框(作为工具按钮的容器),并通过设置
图片框的Align属性来控制工具栏(图片框)在窗体中的位置。当改变
窗体的大小时,Align属性值非0的图片框会自动地改变大小以适应窗体
的宽度或高度。
② 选定图片框,在图片框中添加任何想在工具栏中显示的控件。通常
使用的控件有:命令按钮、图形方式的单项钮和复选框按钮、下拉列表
框等。
③ 设置控件的属性。通常在工具按钮上通过不同的图像来表示对应的
功能,还可以设置按钮的ToolTipText属性为工具按钮添加工具提示。
④ 编写代码。由于工具按钮通常用于提供对其他(菜单)命令的快捷
访问,所以一般都是在其Click事件代码中调用对应的菜单命令。
【例9-7】在例9-3的文本编辑器中增加一个自定义的工具栏,如图9-15
所示。
图9-15
带有工具栏的文本编辑器
在例9-3的基础上作如下修改:
① 修改应用程序用户界面。在窗体上增加一个图片框
Picture1 , 然 后 在 图 片 框 中 增 加 一 个 命 令 按 钮 数 组
Command1(0)~Command1(2)。
② 设置新增对象属性,见表9-7。
表9-7 新增对象的属性设置
对 象
Picture1
属 性
Align
属 性 值
1—Align Top
说 明
图片框位于窗体的顶部
清空
Command1() Caption
Style
1—Graphical
Picture
分 别 为 New.bmp 、 Open.bmp 、
Save.bmp
图形按钮
建立用户界面及设置对象属性后的界面,如图9-16所示。
图9-16
建立用户界面
③ 修改及编写程序代码。修改窗体的事件代码为:
Private Sub Form_Resize()
With Text1
.Left = 0
.Top = Picture1.Height
.Height = Form1.ScaleHeight – Picture1.Height
.Width = Form1.ScaleWidth
End With
End Sub
编写命令按钮数组Command1的Click事件代码为:
Private Sub Command1_Click(Index As Integer)
File_Click (Index)
End Sub
9.2.2
使用Toolbar控件与ImageList控件
使用工具栏控件(Toolbar)可以使应用程序的工具栏更
具标准化和更显专业性。
工具栏控件是VB专业版和企业版所特有的ActiveX控件,
可以将其添加到工具箱中,以便在工程中使用。操作方法
为:
① 在主菜单中选择“工程”,在“工程”下拉菜单中选
择“部件”,即可打开“部件”对话框。
② 选中Microsoft Windows Common Controls 6.0,用鼠
标单击“确定”按钮,即可在工具箱中增加一组控件。其
中用来创建工具栏的控件是Toolbar控件与ImageList控件,
如图9-17所示。
图9-17
Toolbar控件与ImageList控件
1. Toolbar控件
用鼠标双击Toolbar控件,它将自动加入窗体并出现在窗
体的顶部(也可单击控件后在窗体中画出控件)。通过设
置图片框的Align属性可以控制工具栏在窗体中的位置。当
改变窗体的大小时,Align属性值非0的Toolbar控件会自动
地改变大小以适应窗体的宽度或高度。
用鼠标右键单击窗体上的Toolbar控件,在弹出的快捷菜
单中选择“属性”,打开“属性页”对话框,如图9-18所
示。
图9-18
Toolbar的“属性页”对话框中的“通用”选项卡
“通用”选项卡中的“图像列表”属性将被用来与
ImageList控件建立关联。此时列表为空,是因为尚未将
ImageList控件添加到窗体中的缘故。
用鼠标选择“按钮”选项卡,如图9-19所示。
图9-19
“按钮”选项卡
其中的各项功能说明如下:
① 插入与删除按钮:在Button(按钮)集合中添加或删
除元素。通过Button集合可以访问工具栏中的各个按钮。
② 索引与关键字:工具栏中的按钮通过Button集合进行
访问,集合中的每个按钮都有惟一的标识,索引(Index属
性)和关键字(Key属性)就是这个标识。索引为整型,关
键字为字符串型,访问按钮时可以引用二者之一。
③ 标题与描述:标题(Caption属性)是显示在按钮上的
文字。描述是按钮的说明信息。
④ 值(Value属性)决定按钮的状态,0-tbrUnpressed为
弹起状态,1-tbrPressed为按下状态。
⑤ 样式(Style属性)决定按钮的行为特点,并且将影响
按钮的功能,如表9-8所示。
表9-8
值
符号常数
Style属性值及其意义
说
明
0
tbrDefault
缺省按钮。按钮是一个规则的下压按钮
1
tbrCheck
复选按钮。具有按下、放开两种状态。当按钮代表的功能是某种开关
类型时,可使用复选样式
2
tbrButtonGro 单选钮组。当一组按钮功能相互排斥时,可以使用单选钮组样式。注
up
意:同一时刻只能按下一个按钮,但所有按钮可能同时处于抬起状态
3
tbrSeparator
4
tbrPlaceholde 占位符。按钮在外观和功能上像分隔符,但具有可设置的宽度。占位
r
符样式按钮的功能如同“哑”按钮:该按钮的作用是在Toolbar控件中
占据一定位置,以便显示其它控件(如ComboBox控件或ListBox控件)
5
tbrDropdown 下拉式按钮。可以建立下拉菜单
分隔符。按钮的功能是作为有8个像素的固定宽度的分隔符。分隔符样
式的按钮可以将不同组或不同类的按钮分隔开,例如将单选钮分组
⑥ 宽度(Width属性):当Style属性为4时,可设置按钮
的宽度。
⑦ 图像(Image属性):按钮上显示的图片在ImageList
控件中的编号。
⑧ 工具提示文本(ToolTipText属性):程序运行时,当
鼠标指向按钮时显示的说明文字。
2. ImageList控件
工具栏按钮本身没有Picture属性,不能像其他控件那样
用Picture属性直接添加按钮上显示的图片。为此,VB专门
提供了图像列表控件ImageList,在它的帮助下可以实现工
具栏按钮图片的载入。
利用ImageList控件为Toolbar添加图片的具体操作过程如
下:
① 向Toolbar控件所在的窗体中添加ImageList控件。
② 用鼠标右键单击窗体中的ImageList控件,在弹出的快捷
菜单中选择“属性”,打开“属性页”对话框,如图9-20所示
。
图9-20
“属性页”对话框
③ 单击“图像”选项卡中的“插入图片”按钮,在弹出
的“选定图片”对话框中找到所需要的图片,单击“打开”
按钮即可将图片添加到ImageList控件中。重复上述操作直
到得到所有需要的图片。
④ 建 立 Toolbar 控 件 与 ImageList 控 件 的 关 联 : 打 开
Toolbar控件的属性页对话框,在“通用”选项卡的“图像
列表”选项中选择ImageList控件名,即可建立两者间的关
联。
在程序运行时,下述代码也可建立两者间的关联:
Private Sub Form_Load()
Toolbar1.ImageList = ImageList1
End Sub
⑤ 为工具栏按钮载入图片。一旦Toolbar与ImageList
控件建立了关联,Toolbar属性页对话框的“按钮”选项
卡中的“图像”选项变为有效。只需在其中输入
ImageList图像库中图像的索引号即可将对应的图片添加
到按钮上。
下面我们使用工具栏控件来重新设计例12-6中的文本
编辑器。
【例9-8】在例9-7的文本编辑器中改用工具栏控件设计新
的工具栏。
在例9-7的基础上作如下修改:
① 修改应用程序用户界面。将窗体上的图片框及其中
的命令按钮删去,另外增加一个工具栏控件Toolbar1和
一个图像列表控件ImageList1。并将Toolbar1的Align属
性改为1 – vbAlignTop。
② 通过“属性页”对话框来设置工具栏控件与图像列表
控件的属性。首先选中图像列表控件ImageList1,用鼠标
单击属性窗口“(自定义)”项右边的按钮,打开“属性
页”对话框,并依次从Graphic\Bitmaps\Tlbr_w95目录中
选取图片文件New.bmp、Open.bmp、Save.bmp,如图9-21。
单击“确定”按钮关闭“属性页”对话框。
然后选中工具栏控件Toolbar1,打开“属性页”对话框。
在“通用”选项卡中将“图像列表”(ImageList)属性改
为ImageList1,建立与图像列表框的关联。在“按钮”选
项卡中依次插入如表9-9所述按钮,插入过程如图9-22所示。
图9-21
向图像列表控件ImageList1添加图像
表9-9
对 象
Buttons(1)
属 性
按钮的属性设置
属性值
说 明
索引
1
样式
3—tbrSeparator
索引
2
关键字
New
样式
0—tbrDefault
普通按钮
图像
1
连接第1个图片
索引
3
关键字
Open
样式
0—tbrDefault
普通按钮
图像
2
连接第2个图片
索引
4
关键字
Save
样式
0—tbrDefault
普通按钮
图像
3
连接第3个图片
Buttons(2)
Buttons(3)
Buttons(4)
先添加一个分隔符,使工具栏按钮从屏幕左边
缩进一点
单击“确定”按钮,关闭“属性页”对话框。添加了工
具栏的窗体如图9-23。
图9-22
建立Toolbar1与图像列表框的关联
图9-23
建立用户界面后
③ 修改及编写程序代码。修改窗体的事件代码为:
Private Sub Form_Resize()
With Text1
.Top = Toolbar1.Height
.Left = 0
.Height = Form1.ScaleHeight – Toolbar1.Height
.Width = Form1.ScaleWidth
End With
End Sub
编写工具栏按钮的事件代码为:
Private Sub Toolbar1_ButtonClick(ByVal Button As
MSComctlLib.Button)
n = Button.Index
If n = 2 Or n = 3 Or n = 4 Then File_Click (n – 2)
End Sub
程序运行结果如图9-24所示。
图9-24
利用控件建立工具栏
9.3
习题
9.1 设计菜单程序。 如图9-25所示,当文本框中没有
任何文字时,“字号”菜单中的各项均为灰色显示,表
示当前不可用。当用户向文本框中输入了文字后选择某
菜单项,可将文字大小设为对应值,并在当前活动项的
前面加一个“√”。如果用户选择了“14”项时,“10”将
被隐藏,并添加菜单项“16”,其功能与其他菜单项相同
。当用户重新选择了“12”时,“16”将被删除,并恢复
“10”的可见性,即文字最大为16,最小为10,菜单中只
能同时存在3个选项。
图9-25
设计文本编辑菜单
9.2 为文本框增加一个弹出式菜单,该菜单中包含有“红
色”、“蓝色”和“绿色”3个选项,单击相应的选项后可以
改变文本框中文字的颜色。
9.3 为文本框添加一个简单的工具栏。通过工具栏中的按
钮,可以改变文本字体的大小。
9.4 编写程序设计个人信息查询工具。要求使用菜单来控
制数据的编辑、查找,完成按姓名查找、按工资范围查找、
按工作证号查找。查找时使用模糊查找,将满足条件的记录
显示在列表框中。