1、第9章菜单和工具栏设计在Windows环境中,几乎所有的应用软件都通过 菜单来实现各种操作。而对于VB应用程序来说,当操 作比较简单时,一般通过控件来执行,而当要完成较 复杂的操作时,使用菜单将很方便。工具栏同样以其直观、快捷的特点出现在各种应 用程序中,事实上工具栏已经成为Windows应用程序 的标准功能。它使用户不必在一级级的菜单中去搜寻 需要的命令,给用户带来比菜单更为快捷的操作。本章主要内容:菜单设计工具栏设计9.1菜单设计菜单的基本作用有两个,一是提供人机对话的接口,以便让用户选择应用系统的各种功能;二是管理应用系统,控制各种功能模块的运行。一个高质量的菜单程序,不仅 能使系统美观
2、而且能使用户使用方便,并可避免由于误 操作而带来的严重后果。在实际应用中,菜单可分为两种基本类型:下拉式菜 单和弹出式菜单。下拉式菜单一般通过单击菜单栏中菜单标题(如“文 件”、“编辑”、“视图”等)的方式打开,如图91所示。及,工程 1-Microsoft Visual Basic 设计文件但)编辑(E)视图应)工程化)格式调试)运行 查询)图表工具(D 外接程序他)窗口GeneralV BA Rbl产1国晋E02_J日酎日一 窗宫口d d口-口 X代码窗口(C)国对象窗口(B)Shif t+F7定支最后位置侬生L确迷衽施Z将肩并却2笞对象浏览器9)F2以立即窗口口)Ctrl+G本地窗口(
3、S)窟监视窗口(H)Cti-jJL国工程资源管理器但)Ctrl+R囱属性窗口)F4总e窗体布局窗口任)属性页(G)Shif t+F4表缩放显示窗格(A)火工具箱(区)国数据视图窗口值)调色板(L)名智史国区图9-1 下拉式菜单工程 工程15-Forml(Fooil)目图反童工程1(工程1)白巴窗体旗胜-FofbIjForBl Form按字母序|按分类序|“(名称)FormlAppearance 1-3DAutoRedraw FalseBackColor&H 80000BorderStyl 2-Sizab;BCap t i on.ClipContro T rueControlBox T rueD
4、rawM ode 13-CopyDrawStyle 0-SolidDrawWidth 1Enabled T rueFillColor&H 00000 I。4 T T O 4 *!1*P*-k.ZJCaption返回/设置对象的标题栏中或 图标下面的文本。弹出式菜单则通过用鼠标右键单击某一区域的方式打开,如图92所示。一般来说,不同的区域所“弹出”的菜单内容是不同 的。如在VB的工具栏中的弹出菜单与窗体设计器中的弹出京1,号:4 J/fx 餐,工程 1-Microsoft Visual Basic 设计文件(E)编辑出)视图(Y)工程(已 格式 调试但)运行(区)查询(U)图表(D工具(工)外接
5、程序(A)窗口)帮助(H)盛,冒苏IB 了瓦.序n戏甯(3笞於耳黄r-:|G eneralA labi|工程 1 _ Fornd(Form).Forml-|口冈HEID目国亡-勘工程i(工程1)白s窗体0 Forml(Forml)昌图 diu o 口 旧、IB霍口-氐._查看代码(。)司菜单编辑器(曲.|Forl Form 2EJ按字母序I按分类序Ia锁定控件(L)喝粘贴(R)囱属性窗口(R)更新用户控件(由(名称)Forml-Appearance 1-3D AutoRedraw FalseBackColor&H 80000_BorderStyl 2-Sizab;ESuuSiH F orm 1
6、ClipContro T rue ControlBox T rueDrawM ode 13-Copy DrawStyle 0-Solid DrawWidth 1Enabled T rueFillColor&H 00000.|Caption返回/设置对象的标题栏中或 图标下面的文本。图9-2 弹出式菜单4+o 单击工具栏中的“菜单编辑器”按钮。在要建立菜单的窗体上单击鼠标右键,在快捷菜单中,单击“菜单编辑器,命令。打开后的菜单编辑器窗口如图93所示。菜单编辑器分为3个部分。(1)菜单控件属性区菜单控件属性区用于设置菜单项的各个属性,表91 列出其中的主要属性。表97 菜单控件的主要属性属性说 明
7、标 题(Captio n)设置菜单项的标题,相当于控件的Captio n属性,也是显示在菜单中的字符。可以在标题中设置热键。可以用分割线将某些菜单项归为一类并与其他项隔开名 称(Name)设置菜单项的名称,相当于控件的Name属性。菜单项的命名规则与控件的命 名规则相同索 引(Index)设置菜单控件数组的下标,相当于控件数组的Index属性快 捷 键(Sho rtcut)设置与菜单项等价的快捷键。快捷键的赋值包括功能键与控制键的组合,如 Ctrl+Fl键或Ctrl+A键。它们出现在菜单中相应菜单项的右边复 选(Checked)“复选”属性设置为True时,可以在相应的菜单项旁加上记号“。表明
8、该菜单项当前处于活动状态有 效(Enabled)用来设置菜单项的操作状态。如果该属性被设置为False,则相应的菜单项会 变“灰”,不响应用户事件可 见(Visible)设置该菜单项是否可见。如果该属性被设置为False,则相应的菜单项将被暂 时从菜单中去掉,直到该属性重新被设置为True(2)编辑区编辑区共有7个按钮,用来对输入的菜单项进行简 单的编辑,见表92。表9-2 编辑区的按钮按钮说明用来产生或取消内缩符号,内缩符号可以确定菜单的层次。单击一次右箭头产生一个内缩符号,单击-一次左箭头则删除一个内缩符号用于调整菜单项的上下位置。当位于菜单控件列表框中的菜单项被选中后,可以通过上、下箭头
9、来移动其位置用于进入下一个菜单项的设计在光标所在处插入一个空白菜单项删除光标所在处的菜单项,(3)菜单项显示区,菜单项显示区位于菜单编辑器的下部,输入的菜单项 在这里显示出来,并通过内缩符号表明菜单项的层次。说明:“菜单项”包括4个方面的内容:菜单名、菜单命 令、分隔线和子菜单。在输入菜单项时,如果在字母前加上“&”,则显 示菜单时在该字母下面加上一条下划线,可以通过Alt+“带下划线的字母”打开菜单或执行相应的菜单命令。I 内缩符号由4个小数点“.”组成,它表明菜单 项所在的层次。一个内缩符号“.”表示一层,两个内缩 符号”了表示两层,最多为6层。如果一个菜单 项前面没有内缩符号,则该菜单为
10、菜单名,即菜单的第一 如果在“标题”栏内只输入一个“”,则表示产生一个分隔线。只有菜单名没有菜单项的菜单称为“顶层菜单”,在输入这样的菜单项时,通常在后面加上一个感叹号(Do 除分隔线外,所有的菜单项都可以接受Click事件。【例9-1 一件下拉菜单。图9-4 建立下拉菜单12(操作步骤如下:A 执行“工具”菜单中的“菜单编辑器”命令,打开“菜单编辑器”窗口。在标题栏中输入“文件(&F)”,在菜单项显示区中 出现同样的标题名称。按Tab键(或用鼠标)把输入 光标移到“名称”栏,在名称栏中输入file,此时菜单项显 示区中没有变化。单击编辑区中的“下一个”按钮,菜单项显示区中 的条形光标下移,同
11、时资料区的“标题”栏及“名称”栏 被清空,光标回到“标题”栏。在标题栏中输入“新建”,该信息同时在菜单项显 示区中显示出来,用Tab键或鼠标把光标移到“名 称”栏,输入new,单击编辑区的右箭头,菜单显示区中 的“新建”右移,同时其左侧出现一个内缩符号“了,(表明“新建”是“文件”的下一级菜单)依次输入菜单中的各项,如果需要指定快捷键,可 以单击“快捷键”栏右端的箭头,从中选出。例如为“打 开”菜单项选中“Ctrl+O”作为其快捷键。设计完成后的窗口如图95所示,单击“确定”按 钮,完成菜单的建立工作。菜单编辑器确定取消标题也):质 名称(丛):|open索引(X):I快捷键(苴):协调位置9
12、ctrl+O|0-N one帮助上下文ID(H):10厂复选9)何有效(E)何可见(V)r显示窗口列表(w).,_J_ _J_|下一个出)|插入 删除(D文件(&F).新建.文件.文件夹Ctrl+0为存存印E)保另打3 二一辑 媪Ctrl+SCtrl+ACtrl+P图9-5 在菜单编辑器窗口建立下拉菜单14【例92】利用下拉式菜单为标签中的文本内容设置 不同的字体和风格。如图96所示。*Forml-n|x|*Forml标题板但)文本风格(s)改变下面文才文本字体(由黑体宋体标题板但)文本字体但)|文本风格(S)改变下面文才粗体.斜体小小的船,两头尖,我在 小小的船里坐,只看见,闪闪的星星
13、蓝蓝的天。小小的船,两头尖,我在 小小的船里坐,只看见,闪闪的星星,蓝蓝的天。/下划线上图9-6 利用菜单控制标题板15设计步骤如下:建立用户界面及设置对象属性,如图97所示。囚标题(E):I标题板(&F)确定 I名称(i):|M enu _嬴消:快捷键(S):|(N one)三帮助上下文ID(由:5 协调位置9):|o-N one 三厂复选 口有效 口可见9 厂显示窗口列表处)菜单编辑器标题板0)|下一个)|插入|删除(D|改变下面文本的字体及风格.二支本字体&N).宋体.隶书.楷体里你 二二支云岚格(&S).粗体.斜体.下划线乙、少的船,两头尖,我在 小小的船里坐,只看见,闪闪的星星,蓝
14、蓝的天。图9-7 设计用户界面及设置对象属性其中,菜单编辑器中各菜单项的设置见表9-3。16表9-3 菜单项的设置标题(Captio n)名称(Name)说明标题板(&F)Menu主菜单项1.文本字体(&N)Nam子菜单项12.宋体so ng子菜单项121.隶书li子菜单项122.楷体kai子菜单项123.黑体hei子菜单项124.文本风格(&S)Styl子菜单项13.粗体Bld子菜单项131.斜体Itl子菜单项132.下划线Undrln子菜单项133编写菜单项代码。“文本字体”中4个菜单选项的Click事件代码为:Private Sub song_Click()Labell.FontName
15、宋体End SubPrivate Sub li_Click()Labell.F ontN ame=隶书,End SubPrivate Sub kai_Click()Labell.FontName=n 楷体 _End SubPrivate Sub hei_Click()Labell.FontName=黑体”End SubGB231218“文本风格”中3个菜单选项的Click事件代码为:Private Sub bld_Click()bld.Checked=Not bld.CheckedLabell.F ontBold=bld.CheckedEnd SubPrivate Sub Itl_Click
16、)ItLChecked=Not ItLCheckedLabell.F ontltalic=ItLCheckedEnd SubPrivate Sub Undrln_Click()Undrln.Checked=Not Undrln.CheckedLabell.F ontUnderline=Undrln.CheckedEnd Subl 程序运行结果如图96所示。72.菜单控件数组既然VB将菜单项视为控件,因此就能运用控件数组的 概念。菜单控件数组的作用主要有两个:用于动态地增删菜单项。简化编程,用一段代码处理多个菜单项。【例93】利用下拉式菜单设计简易的文本编辑器,使其具 有创建、编辑、保存文本文
17、件的内容,如图98所示。A.Forml文件(E)编辑出)新建打开(Q)保存6)另存为(A)关闭(X)3菜单项视为控件,因此就能运用控“盗菜单控件数组的作用主要有两个1志地增删菜单项。(2)简化编程,用 一段代码处理多个菜单项。jJ图9-8 使用下拉菜单的简单编辑器设计步骤如下:建立用户界面及设置对象属性。在窗体上增加一个 公共对话框控件,一个文本框控件,并设置对象属性,参 见图99所示。a菜单编辑器Forml_ n|x|文件也)编辑&)既然VB将菜单项视为控件,因此就能运用控-件数组的概念。菜单控件数组的作用主要有两个1:(1)用于动态地增删菜单项。(2)简化摭程,用 一段代码处理多个菜单项。
18、jd图9-9 建立用户界面及设置对象属性其中,菜单编辑器中各菜单项的设置见表9-4。21表94菜单项的设置标题名称(Name)索引(Index)说明文巳懒那n)Files主菜单项1.新建(&N)File0子菜单项11.打开(&0)File1子菜单项12.保存(&S)File2子菜单项13.另存(&A)File3子菜单项14.关闭(&X)File4子菜单项15编辑(&E)Edit主菜单项2.剪切Edi0子菜单项21.复制Edi1子菜单项22.*占贝占Edi2子菜单项23.删除Edi3子菜单项24 编写菜单项代码。菜单控件数组File的Click事件代码 为:Private Sub File_Cl
19、ick(Index As Integer)n=IndexSelect Case nCase 0,新建Textl.Text=Forml.Caption=未命名Case 1打开CommonDialogl.ShowOpen显示“打开”公共对话框fname=CommonDialogl.FileName AIf fname ThenTextl.Text=Open fname For Input As#1b=,Do Until EOF(l)Line Input#1,nextlineb=b&nextline&Chr(13)&Chr(10)LoopClose#1Textl.Text=bI End If)24F
20、orml.Caption=fnameCase 2,保存If Forml.Caption=n 未命名 n Or Forml.Caption=ThenCommonDialogl.ShowSave1显示“另存为”公共对话框fname=CommonDialogl.FileNameElsefname=Forml.CaptionEnd IfIf fname ThenOpen fname For Output As#1Print#1,Text 1.TextClose#1End IfA1另存Case 3CommonDialogl.ShowSave 显示“另存为”公共对话框fname=CommonDialogl
21、FileNameIf fname ThenOpen fname For Output As#1Print#1,Textl.TextClose#1End IfCase 4,关闭Textl.Text=Unload MeEnd SelectTextl.SetFocusEnd-Sub-编写“编辑”菜单中的菜单控件数组Edi的Click事件 代码。在编写过程中,需要用到两个与剪贴板有关的方法:SetText方法和GetText方法。其中SetText方法是将指定的 文本放入系统剪贴板中:Clipboard.SetText Textl.SelText剪贴板对象的GetText方法可以作为函数一样使用,它
22、 返回系统剪贴板当前的内容:Textl.SelText=Clipboard.GetText()其中,Clipboard是VB提供的剪贴板对象。菜单控件数组Edi的Click事件代码为:(Private Sub edi_Click(Index As Integer)i=IndexSelect Case iCase 0,剪切Clipboard.SetText Textl.SelTextTextl.SelText=nnCasel,复制Clipboard.SetText Textl.SelTextCase 2,粘贴Textl.SelText=Clipboard.GetText()Case 3 1删除T
23、extl.SelText=nnEnd SelectEnd Sub程序运行结果如图98所示。*3.菜单项的可用与不可用VB设计的菜单可以根据程序的运行状态动态地进行调整。当菜单项所指示的操作不适合当前的环境时,可以暂时将 其关闭,不让用户选择该菜单项,也可以干脆把它隐藏起 来,就像根本没有这个菜单项一样,等到条件成熟时,再 重新显示被隐藏的菜单项。【例94】改编例93的程序,使得当文本中没有被选中的 内容时,剪切、复制和删除等功能被关闭(菜单项呈灰 色)。一旦选中某些文本后,剪切、复制和删除等功能就 可以被使用,如图910所示。Forml文件3)编辑出ma Forml道切 复捌 粘贴i_ l项视
24、为控件,因此就能运用控件数组的概念。菜单控件数组的作用主要有两个:(1)用于动态地增删菜单项。(2)简化编程,用 一段代码处理多个菜单项。文件(E)编辑(E)剪切 复制 粘贴 删除_l项视为控件,因此就能运用控件耦舞产蛔包3$图9-10 菜单项的可用与不可用只需在例9-3的基础上增加“编辑”菜单项Edit的Click事件代码 为:Private Sub Edit_Click()edi(0).Enabled=Ilf(T extl.SelLength=0,False,T rue)edi(1).Enabled=Ilf(T extl.SelLength=0,False,T rue)edi(3).Ena
25、bled=Ilf(T extl.SelLength=0,False,T rue)End Sub30【例95】在例93的基础上改变程序,隐藏剪切、复制和删 除菜单项。隐藏菜单项的办法也是很简单的。在例9-3中,编写文本 框Textl的事件代码。键抬起(KeyUp)事件代码为:Private Sub Textl_KeyUp(KeyCode As Integer,Shift As Integer)edi(O).Visible=IIf(Textl.SelLength=0,False,True)edi(l).Visible=IIf(Textl.SelLength=0,False,True)edi(3).
26、Visible=IIf(Textl.SelLength=0,False,True)End Sub鼠标键抬起(MouseUp)事件代码为:Private Sub Textl_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)edi(O).Visible=IIf(Textl.SelLength=0,False,True)edi(l).Visible=IIf(Textl.SelLength=0,False,True)edi(3).Visible=IIf(Textl.SelLength=0,False,True)d S
27、ub%程序运行结果如图9-11所示。Forml|n|x|文件(E)编辑(E)卜既7VB将菜单项视为控件,因此就能运用控一 件数组的概念。菜单控件数组的作用主要有两个一:(1)用于动态地增删菜单项。(2)简化编程,用 一段代码处理多个菜单项。jd图9-11 隐藏和重现菜单项79.1.2弹出式菜单弹出式菜单能以灵活的方式为用户提供更加便利的 操作,它可以根据用户单击鼠标右键时的位置,动态地 调整菜单项的显示位置,同时也改变菜单项显示内容,因此弹出式菜单又称为“上下文菜单”或“快捷菜单”O设计弹出式菜单仍然使用VB提供的菜单编辑器,只要把某个菜单设置成隐藏(即“可见”栏Visible属性 为Fals
28、e)就可以了。实际上,不管是在窗口顶部菜单条上显示的菜单,还是隐藏的菜单,都可以用PopupMenu方法把它们作为 快捷菜单在程序运行期间显示出来,语法为:窗体名.PopupM enu 菜单名flags,x,y,l boldcommand 川说明:省略窗体名时,将打开当前窗体的菜单。菜单名是指通过菜单编辑器设计的菜单(至少有 一个子菜单项)的名称(Name)。Flags参数为一些常量数值的设置,包含位置及行为两 个指定值,如表95、表96所示。两个常数可以相加或以 Or相连。表9-5 位置常数位置常数说 明0(默认)菜单左上角位于X4菜单上框中央位于X8菜单右上角位于X34表96行为常数行为常
29、数说 明0(默认)菜单命令只接受右键单击2菜单命令可接受左、右键单击Boldcommand参数可以指定在显示的弹出式菜单中想 以粗体字出现的菜单项名称。在弹出式菜单中只能有一个 菜单项被加粗。为创建一个不显示在菜单栏里的菜单,可在设计时 使顶级菜单项目为不可见(保证在菜单编辑器里的“可 见”复选框没有被选上)。当VB显示一个弹出式菜单时,指定的顶级菜单的Visible属性会被忽略。【例9-6 在例9-3中实现弹出式菜单,如图9-12所示。首先在菜单编辑器中将“文件”菜单的“可见”栏中的 对号取消,如图9-13所示。35H.Forml编辑(E)既然胡答菜 件数组的概念。i:(1)用于动态#一段代
30、码处理多新建 打开9)保存 另存为(A)关闭(X)就能运用控、主要有两个一 化蝙程,用菜单编辑器标题:|文件(研)名称(M):piles-囚确定取消索引(X):快捷键(S):底有 三I帮助上下文ID(H):W-协调位置迨):|u-N one 三r复选(2 F7有效也)包变更加 r显示窗口列表(吩插入(工)|删除(D|&AJZN o s(X(&(&为(&次十松存砥E)切制贴 新打保另关(&剪复粘 _|口冈二I图%12自定义的弹出式菜单图9-13将菜单项的可见属性Visible设为False增加窗体的MouseDown事件代码为:Private Sub Form_MouseDown(Button
31、As Integer,Shift AsInteger,X As Single,Y As Single)If Button=2 Then PopupMenu Files,6End IfJnr?TiK:A在程序运行时,右键单击窗体,即可弹出快捷菜单,如图912所示。另外,在VB的文本框中,即使不编程也可以得到一 个弹出式菜单。例如在文本编辑器中,单击鼠标右键即可 得到如图914所示的弹出式菜单。图9-14 在VB文本框中不用编程的弹出式菜单37/9?2 工具栏设计工具栏同样以其直观、快捷的特点出现在各种应用程 序中,事实上工具栏已经成为Windows应用程序的标准功 能。它使用户不必在一级级的菜单
32、中去搜寻需要的命令,给 用户带来比菜单更为快捷的操作。在VB中可以通过手工方式和使用工具栏控件(Toobar)两种方法建立工具栏。9.2.1 用手工方式制作工具栏用手工方式制作工具栏,其实就是设计一个放置一些 工具按钮的图片框。手工制作工具栏的一般步骤如下:在窗体中添加一个图片框(作为工具按钮的容器),并通过设 置图片框的Align属性来控制工具栏(图片框)在窗体中的位置。当改 变窗体的大小时,Align属性值非0的图片框会自动地改变大小以适应、窗体的宽度或高度。(选定图片框,在图片框中添加任何想在工具栏中显示的控件。通常使用的控件有:命令按钮、图形方式的单项钮和复选框按钮、下拉列 表框等。的
33、功能,捷访问,设置控件的属性。通常在工具按钮上通过不同的图像来表示对应 还可以设置按钮的To o lTipText属性为工具按钮添加工具提示o编写代码。由于工具按钮通常用于提供对其他(菜单)命令的快 所以一般都是在其Cl ick事件代码中调用对应的菜单命令。图9-15 带有工具栏的文本编辑器9-39/在例9-3的基础上作如下修改:修改应用程序用户界面。在窗体上增加一个图片框 Picture 1,然后在图片框中增加一个命令按钮数组 Commandl(O)Commandl(2)o设置新增对象属性,见表97。表97新增对象的属性设置对象属性属性值说 明Picture 1Align1一Align To
34、 p图片框位于窗体的顶部Co mmand 1()Captio n清空Style1一Graphical图形按钮Picture分别为 New.bmp、Open.bmp、Save.bmp4041Private Sub Form_Resize()With Textl.Left=0.Top=Picturel.Height.Height=F orml.ScaleHeight-Picturel.Height.Width=Forml.ScaleWidthEnd WithEnd Sub编写命令按钮数组Commandl的Click事件代码为:Private Sub Commandl_Click(Index As
35、Integer)File_Click(Index)End Sub429.2.2 使用T oolbar控件与ImageList控件使用工具栏控件(Toolbar)可以使应用程序的工具 栏更具标准化和更显专业性。工具栏控件是VB专业版和企业版所特有的ActiveX 控件,可以将其添加到工具箱中,以便在工程中使用。操 作方法为:在主菜单中选择“工程”,在“工程”下拉菜单中 选择“部件”,即可打开“部件”对话框。选中 Microsoft Windows Common Controls 6.0,用鼠标单击“确定”按钮,即可在工具箱中增加一组控件。其中用来创建工具栏的控件是Toolbar控件与ImageL
36、ist控 件,如图917所示。47其中的各项功能说明如下:插入与删除按钮:在Button(按钮)集合中添加 或删除元素。通过Button集合可以访问工具栏中的各个按 钮。索引与关键字:工具栏中的按钮通过Button集合 进行访问,集合中的每个按钮都有惟一的标识,索引(Index属性)和关键字(Key属性)就是这个标识。索 引为整型,关键字为字符串型,访问按钮时可以引用二者 之一。标题与描述:标题(Caption属性)是显示在按钮 上的文字。描述是按钮的说明信息。值(Value属性)决定按钮的状态,0-tbrUnpressed为弹起状态,1-tbrPressed为按下状态。杆式(Style属性)
37、决定按钮的行为 特点,为 且斗争48表9-8 Sty I e属性值及其意义值符号常数说 明0tbrDef ault缺省按钮。按钮是一个规则的下压按钮1tbrCheck复选按钮。具有按下、放开两种状态。当按钮代表的功能是某种开关 类型时,可使用复选样式2tbrButto nGro up单选钮组。当一组按钮功能相互排斥时,可以使用单选钮组样式。注 意:同一时刻只能按下一个按钮,但所有按钮可能同时处于抬起状态3tbrSeparato r分隔符。按钮的功能是作为有8个像素的固定宽度的分隔符。分隔符 样式的按钮可以将不同组或不同类的按钮分隔开,例如将单选钮分组4tbrPlaceho lde r占位符。按
38、钮在外观和功能上像分隔符,但具有可设置的宽度。占位 符样式按钮的功能如同“哑”按钮:该按钮的作用是在To o lbar控件中 占据一定位置,以便显示其它控件(如Co mbo Bo x控件或ListBo x控 41-5tbrDro pdo wnn/下拉式按钮。可以建立下拉菜单 宽度(Width属性):当Style属性为4时,可设 置按钮的宽度。图像(Image属性):按钮上显示的图片在 ImageList控件中的编号。工具提示文本(ToolTipText属性):程序运行时,当鼠标指向按钮时显示的说明文字。2.ImageList 控件工具栏按钮本身没有Picture属性,不能像其他控件那 样用Pi
39、cture属性直接添加按钮上显示的图片。为此,VB 专门提供了图像列表控件ImageList,在它的帮助下可以实 现工具栏按钮图片的载入。利用ImageList控件为Toolbar添加图片的具体操作 过程如下:ri;A 向Toolbar控件所在的窗体中添加ImageList控件。用鼠标右键单击窗体中的ImageList控件,在弹出的 快捷菜单中选择“属性”,打开“属性页”对话框,如图920 所示。图9-20“属性页”对话框Jr单击“图像”选项卡中的“插入图片”按钮,在弹 出的“选定图片”对话框中找到所需要的图片,单击“打 开”按钮即可将图片添加到ImageList控件中。重复上述 操作直到得到
40、所有需要的图片。建立Toolbar控件与ImageList控件的关联:打开 Toolbar控件的属性页对话框,在“通用”选项卡的“图像 列表”选项中选择ImageList控件名,即可建立两者间的 关联。在程序运行时,下述代码也可建立两者间的关联:Private Sub Form_Load()Toolbarl.ImageList=ImageListlEnd SubI.J A为工具栏按钮载入图片。一旦Toolbar与 ImageList控件建立了关联,Toolbar属性页对话框的“按钮”选项卡中的“图像”选项变为有效。只需在其中 输入ImageList图像库中图像的索引号即可将对应的图片 添加到按
41、钮上。下面我们使用工具栏控件来重新设计例12-6中的文 本编辑器。【例98】在例97的文本编辑器中改用工具栏控件设计 新的工具栏。在例9-7的基础上作如下修改:修改应用程序用户界面。将窗体上的图片框及其 中的命令按钮删去,另外增加一个工具栏控件Toolbarl 和一个图像列表控件ImageListl。并将Toolbarl的I Align 属性改为 1 一 vbAlignTop。的 通过“属性页”对话框来设置工具栏控件与图像列 表控件的属性。首先选中图像列表控件ImageListl,用鼠 标单击属性窗口“(自定义)”项右边的按钮,打开“属 性页”对话框,并依次从GraphicBitmapsTlb
42、r_w95目录 中选取图片文件 New.bmp、Open.bmp、Save.bmp,如 图 9-21 o单击“确定”按钮关闭“属性页”对话框。然后选中工具栏控件Toolbarl,打开“属性页”对话 框。在“通用”选项卡中将“图像列表”(ImageList)属 性改为ImageListl,建立与图像列表框的关联。在“按 钮”选项卡中依次插入如表9-9所述按钮,插入过程如图9-22所示。J匕 夕:性页通用图像I颜色IGe当前图像索引(D:|关键字位):C标记(D:A图像(丛):XX工具-|s|x|11(ubgsgsjvlj.体Forml(ubgsgsji17国J-JdJ JWWWK1 ImageL
43、ist插入图片化).I删除图片(R)图像数:|3史分类序|选定图片三i画切圄画鱼1四、国霍困_)DDO 遍一|_jT lBr_V95搜寻(1):Jst.bmp%Open,bmp糜瓢林局|漏吊K也T ab-cn1jflLft.bmpdOPaste.bmp Small cap.mp T ab-de(也Line,bmp也Pr int.bmp flSortasc.bmpST ab-lei%Linestyl.bmp OProp.bmpSortdes.bmpT ab-rhi M apnet.bmp%Rectang 1.bmp也Spelling,bmpUndo.brjflM cr.bmp也Re do.bmp
44、udStr ikthr.bmpuflUndrIn.也N ew.bmp也Rt.bmp也 Sum.bmp UngrouiIIj_I力打开9)I文件类型(工):|所有图片文件文件名(N):|Save.bmp取消_005&OCOS匕.HZI图9-21 向图像列表控件ImageListl添加图像55.表9-9 按钮的属性设置A对象属性属性值说 明Butto ns(l)索引1样式3-tbrSeparato r先添加一个分隔符,使工具栏按钮从屏幕左边 缩进一点Butto ns(2)索引2关键字New样式0一tbrDef ault普通按钮图像1连接第1个图片Butto ns(3)索引3关键字Open样式0一t
45、brDef ault普通按钮图像2连接第2个图片Butto ns(4)索引4关键字Save样式0一tbrDef ault普通按钮图像3连接第3个图片X_ 56,单击“确定”按钮,关闭“属性页”对话框。添加了 工具栏的窗体如图9-23 o.Forml-|口冈文件也)编辑色)口|百旧|画既然VB将菜单项视为控件,因此就能运用控石 件数组的概念。菜单控件数组的作用主要有两个1:(1)用干动态地增删菜单项。(2)简化蝙程,用 一段代码处理家个菜单项。图9-22 建立To o lb ar与图像列表框的关联图9-23 建立用户界面后修改及编写程序代码。修改窗体的事件代码为:Private Sub Form
46、Resize()With Textl.Top=Toolbarl.Height,Left=0.Height=Forml.ScaleHeight-Toolbarl.Height.Width=F orml.Scale WidthEnd WithEnd Sub编写工具栏按钮的事件代码为:Private Sub Toolbarl_ButtonClick(ByVai Button MSComctlLib.Button)n=Button.IndexIf n=2 Or n=3 Or n=4 Then File Click(n-2),End SubAs程序运行结果如图9-24所示。国0宜画圉搜寻Q):Form
47、文件名(N)打开(文件类型(工):取消以只读方式打开国)Sub期婚纱.pub宜网络蚂蚁N etAnts中文版 哂我与电就doc宜幽默.doc图表(D工具(工)F器处将菜单项视为控件,因此就能运用控件数组的概念 菜单控件数组的作用主要有两个:(1)用于动态地增删菜单项(2)简化编程,用一段代码处理多个菜单项。Case 4 T extPrivate SuFile_Cli End SubEnd Sele T extl.SeIM y Pictures髻Defrag当彩色婚纱套照.doc图菜单.xls团电脑幽默.doc鲂高职计算机教育的几点思考.docPrivate SUB-With T extl匕文
48、件但);外接程序(A).T op=T ooll.Left=0.H eight=F(.Width=Fo End WithEnd Sub_Private Sub T ooll n=But t on.Ind(打开图9-24 利用控件建立工具栏9.3 习题9.1 设计菜单程序。如图925所示,当文本框中没有任何文字时,“字号”菜单中的各项均为灰色显示,表示当前不可用。当用户向文本框中输入了文字后选 择某菜单项,可将文字大小设为对应值,并在当前活动 项的前面加一个。如果用户选择了“14”项时,“10”将被隐藏,并添加菜单项“16”,其功能与其他 菜单项相同。当用户重新选择了“12”时,“16”将被 删除
49、并恢复“10”的可见性,即文字最大为16,最小 为10,菜单中只能同时存在3个选项。SflH Forml字号-|n|x|Forml-|n|x|14 1Windows操作系统风行全世界,各 种嵬于Windows的应国程庠及各类娱乐一 软件也日益为人们所熟悉。它们的共 同特点之一是大量使用不同的菜单和 工具栏,把用户从众多繁琐的命令和 参数中解放了出来,使用和操作显得1十分直观和方便。字号121416愚唇Windo ws操作系统 回行全世界,各种基于 Windo ws的应用程序及 各类娱乐软件也日益为5二J图9-25 设计文本编辑菜单9.2 为文本框增加一个弹出式菜单,该菜单中包含有“红 色”、“蓝色”和“绿色”3个选项,单击相应的选项后可 以改变文本框中文字的颜色。9.3 为文本框添加一个简单的工具栏。通过工具栏中的按 钮,可以改变文本字体的大小。9.4 编写程序设计个人信息查询工具。要求使用菜单来控 制数据的编辑、查找,完成按姓名查找、按工资范围查找、按工作证号查找。查找时使用模糊查找,将满足条件的记录
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818