版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章菜单与对话框第9章菜单与对话框9.1使用菜单菜单是Windows应用程序中十分关键的要素之一,它以分组的形式组织多个命令或操作,为用户灵活操作应用程序提供了便捷的手段。在实际的应用中,菜单可分为两种基本类型:下拉式菜单和弹出式菜单。下拉式菜单一般通过单击菜单栏中菜单标题(如“文件”、“编辑”、“视图”等)的方式打开,弹出式菜单则通过用鼠标右键单击某一区域的方式打开。9.1.1下拉式菜单在下拉式菜单系统中,一般有一个主菜单,称为菜单栏。其中包括一个或多个选择项,称为菜单标题。当单击一个菜单标题时,包含菜单项的列表(菜单)即被打开。菜单由若干个命令、分隔条、子菜单标题(其右边含有三角的菜单项)等菜单项组成。当选择子菜单标题时又会“下拉”出下一级菜单项列表,称为子菜单。VB的菜单系统最多可达6层。1.菜单控件在VB中,菜单也是一个图形对象,即控件。与其它控件一样,它具有定义其外观与行为的属性。在设计或运行时可以设置Caption属性、Enabled和Visible属性、Checked属性以及其它属性。菜单控件只包含一个事件,即Click事件,当用鼠标或键盘选中该菜单控件时,将调用该事件。与一般控件不同的是,菜单控件不在VB的工具箱中,需要在VB的“菜单编辑器”中进行菜单的设计。2.菜单编辑器用菜单编辑器可以创建新的菜单和菜单项、在已有的菜单上增加新命令、编辑已有的菜单命令、以及修改和删除已有的菜单和菜单项。在VB系统的“工具”菜单中选择“菜单编辑器”,或在“工具栏”上单击“菜单编辑器”按钮都可以打开菜单编辑器,如图9-2所示。图9-2菜单编辑器菜单编辑器分为三个部分:1)菜单控件属性区。用于设置菜单项的各个属性,表9-1列出其中的主要属性:表9-1菜单控件的主要属性其他属性可参见VB的联机帮助。属性说明标题(Caption)设置菜单项的标题,相当于控件的Caption属性,也是显示在菜单中的字符。可以在标题中设置热键。可以用分割线将某些菜单项归为一类并与其他项隔开。名称(Name)设置菜单项的名称,相当于控件的Name属性。菜单项的命名规则与控件的命名规则相同。索引(Index)设置菜单控件数组的下标,相当于控件数组的Index属性。快捷键(Shortcut)可设置与菜单项等价的快捷键。在程序运行时,按下快捷键会立刻运行一个菜单项。快捷键的赋值包括功能键与控制键的组合,如〈Ctrl〉+〈F1〉键或〈Ctrl〉+〈A〉键。它们出现在菜单中相应菜单项的右边。复选(Checked)“复选”属性设置为True时,可以在相应的菜单项旁加上记号“√”。表明该菜单项当前处于活动状态。有效(Enabled)用来设置菜单项的操作状态。如果该属性被设置为False,则相应的菜单项会变“灰”,不响应用户事件。可见(Visible)设置该菜单项是否可见。如果该属性被设置为False,则相应的菜单项将被暂时从菜单中去掉,直到该属性重新被设置为True。2)编辑区。编辑区共有7个按钮,用来对输入的菜单项进行简单的编辑。3)菜单控件列表框。菜单控件列表框位于菜单编辑器的下部,输入的菜单项在这里显示出来,并通过内缩符号表明菜单项的层次,如图9-3所示。图9-3菜单控件列表框与对应的菜单项
3.下拉式菜单的设计下面通过一个例子来说明菜单程序设计的基本方法和步骤,这个方法具有通用性,无论多复杂的菜单都可以通过这个方法设计出来。【例9-1】为例4-13中的电子标题板增加一个菜单,利用菜单来控制标题板的内容、字体、字体风格等,如图9-4所示。图9-4利用菜单控制标题板
只需在例4-13的基础上作如下修改:①打开菜单编辑器,按照表9-3设计菜单项:表9-3菜单项的设置标题(Caption)名称(Name)说明标题板(&F)menu主菜单项1….文本内容(&T)txt子菜单项11….文本字体(&N)nam子菜单项12….….宋体song子菜单项121….….隶书li子菜单项122….….楷体kai子菜单项123….….黑体hei子菜单项124….文本风格(&S)styl子菜单项13….….粗体bld子菜单项131….….斜体itl子菜单项132….….下划线undrln子菜单项133②编写菜单项代码。编写“文本内容”项Txt的Click事件代码: PrivateSubTxt_Click() temp=InputBox("请输入标题板的新内容","输入",Label1.Caption) Iftemp<>""Then Label1.Caption=temp EndIf EndSub
编写“文本字体”中4个菜单选项的Click事件代码: PrivateSubsong_Click() Label1.FontName="宋体" EndSub PrivateSubli_Click() Label1.FontName="隶书" EndSub PrivateSubkai_Click() Label1.FontName="楷体_GB2312" EndSub PrivateSubhei_Click() Label1.FontName="黑体" EndSub编写“文本风格”中3个菜单选项的Click事件代码: PrivateSubbld_Click() bld.Checked=Notbld.Checked Label1.FontBold=bld.Checked EndSub PrivateSubItl_Click() Itl.Checked=NotItl.Checked Label1.FontItalic=Itl.Checked EndSub PrivateSubUndrln_Click() Undrln.Checked=NotUndrln.Checked Label1.FontUnderline=Undrln.Checked EndSub4.菜单控件数组既然VB将菜单项视为控件,因此就能运用控件数组的概念。菜单控件数组的作用主要有两个:1)用于动态地增删菜单项。2)简化编程,用一段代码处理多个菜单项。【例9-2】在例9-1中使用菜单控件数组。只需在例9-1的基础上作如下修改:1)打开菜单编辑器,按照表9-4修改菜单项:表9-4菜单项的修改标题(Caption)名称(Name)索引(Index)说明标题板(&F)Menu主菜单项1….文本内容(&T)txt子菜单项11….文本字体(&N)txtFont子菜单项12….….宋体fname1子菜单项121….….隶书fname2子菜单项122….….楷体fname3子菜单项123….….黑体fname4子菜单项124….文本风格(&S)Styl子菜单项13….….粗体Styly1子菜单项131….….斜体Styly2子菜单项132….….下划线Styly3子菜单项1332)修改菜单项代码。删除原“文本字体”中4个菜单选项的Click事件代码,编写“文本字体”菜单中的菜单控件数组fname的Click事件代码:
PrivateSubfname_Click(IndexAsInteger) SelectCaseIndex Case1 Label1.Fontname="宋体" Case2 Label1.Fontname="隶书" Case3 Label1.Fontname="楷体_GB2312" Case4 Label1.Fontname="黑体" EndSelect EndSub删除原“文本风格”中3个菜单选项的Click事件代码,编写“文本风格”菜单中的菜单控件数组Styly的Click事件代码: PrivateSubStyly_Click(IndexAsInteger) Styly(Index).Checked=NotStyly(Index).Checked SelectCaseIndex Case1 Label1.FontBold=Styly(Index).Checked Case2 Label1.FontItalic=Styly(Index).Checked Case3 Label1.FontUnderline=Styly(Index).Checked EndSelect EndSub5.菜单项的可用与不可用VB设计的菜单可以根据程序的运行状态动态地进行调整。当菜单项所指示的操作不适合当前的环境时,可以暂时将其关闭,不让用户选择该菜单项,也可以干脆把它隐藏起来,就像根本没有这个菜单项一样,等到条件成熟时,再重新显示被隐藏的菜单项。【例9-3】在例9-2中,当前文本的字体在菜单中被关闭——菜单项呈灰色,可以选择未被选择的字体。如图9-5所示。只需在例9-2的基础上修改“文本字体”菜单中的菜单控件数组fname的Click事件代码:
PrivateSubfname_Click(IndexAsInteger) SelectCaseIndex Case1 Label1.Fontname="宋体" Case2 Label1.Fontname="隶书" Case3 Label1.Fontname="楷体_GB2312" Case4 Label1.Fontname="黑体" EndSelect ForEachxInfname x.Enabled=IIf(x.Index=Index,False,True) Next EndSub 图9-5菜单项的可用与不可用隐藏一个菜单项的办法也是很简单的。在上例中,修改“文本字体”菜单中的菜单控件数组Fontname的Click事件代码如下,即可隐藏或重现菜单项(如图9-6)。 PrivateSubfname_Click(IndexAsInteger) SelectCaseIndex Case1 Label1.FontName="宋体" Case2 Label1.FontName="隶书" Case3 Label1.FontName="楷体_GB2312" Case4 Label1.FontName="黑体" EndSelect ForEachxInfname x.Visible=IIf(x.Index=Index,False,True) Next EndSub 9.1.2弹出式菜单弹出式菜单能以灵活的方式为用户提供更加便利的操作,它可以根据用户单击鼠标右键时的位置,动态地调整菜单项的显示位置,同时也改变菜单项显示内容,因此弹出式菜单又称为“上下文菜单”或“快捷菜单”。为了显示“弹出式菜单”,可以使用PopupMenu方法,语法为:[〈窗体名〉.]PopupMenu〈菜单名〉[,flags[,x[,y[,boldcommand]]]]Flags参数为一些常量数值的设置,包含位置常数及行为常数两个指定值,见表9-5和表9-6。表9-5位置常数表9-6行为常数位置常数说明0(默认)菜单左上角位于X4菜单上框中央位于X8菜单右上角位于X行为常数说明0(默认)菜单命令只接受右键单击2菜单命令可接受左、右键单击Boldcommand参数可以指定在显示的弹出式菜单中想以粗体字体出现的菜单项的名称。在弹出式菜单中只能有一个菜单项被加粗。为创建一个不显示在菜单栏里的菜单,可在设计时使顶级菜单项目为不可见(保证在菜单编辑器里的“Visible”复选框没有被选上)。当VB显示一个弹出式菜单时,指定的顶级菜单的Visible属性会被忽略。【例9-4】在例9-1中实现弹出式菜单(如图9-7)。图9-7自定义的弹出式菜单
只需增加标签和窗体的MouseDown事件代码:
PrivateSubLabel1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle) IfButton=2Then PopupMenuStyl,6 EndIf EndSub PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle) IfButton=2Then PopupMenutxtfont,6 EndIf EndSub注意:在VB的文本框中,即使不编程也可以得到一个弹出式菜单。9.2公共对话框“公共对话框”(CommonDialog)控件为用户提供了一组标准的系统对话框,可以使用它进行打开或保存文件、设置打印选项、选择各种颜色以及选择字体等的操作。另外还可以通过调用Windows帮助引擎来显示应用程序的帮助。9.2.1添加“公共对话框”控件“公共对话框”控件属于VB专业版和企业版所特有的ActiveX控件,位于文件C:\Windows\System\Comdlg32.ocx中,名称为“MicrosoftCommonDialogControl6.0”。用鼠标右键单击控件工具箱,在弹出菜单中选择“部件”,打开部件对话框(如图9-9左)。在“部件”对话框中,选定所需的文件,按“确定”按钮即可将“公共对话框”控件添加到控件工具箱中(图9-9右)。图9-9添加“公共对话框”控件
9.2.2使用“公共对话框”在应用程序中使用“公共对话框”控件,需要将它添加到窗体中。由于在程序运行时看不见“公共对话框”控件,因此可以将它放置在窗体的任何位置。在程序运行时,“公共对话框”可以显示一个对话框或是执行帮助的引擎,所显示的对话框由控件的“方法”决定。共有6种方法来指定相应的对话框,见表9-7。表9-7通用对话框控件的方法列表名称功能ShowOpen显示文件打开对话框ShowSave显示文件存储对话框ShowColor显示颜色对话框ShowFont显示字体对话框ShowPrinter显示打印对话框ShowHelp显示Windows帮助对话框每种对话框都有自己特殊的属性,这些属性既可以在属性窗口中设置,也可以在代码中设置,还可以在“属性页”对话框中设置。在属性窗口中选择“(自定义)”,再单击右侧的“…”按钮,就会出现“属性页”对话框,如图9-10所示。图9-10“属性页”对话框1.使用“打开”对话框打开文件是Windows应用程序(例如Office)中的常用操作。“打开”对话框可以用来指定文件所在的驱动器、文件夹以及文件名、文件扩展名,如图9-11所示。图9-11“打开”对话框运行时选定文件并关闭对话框后,可用FileName属性得到文件所在的驱动器、文件夹以及文件名、文件扩展名。使用“打开”对话框的步骤如下:1)首先在窗体中增加“公共对话框”控件。2)然后在“属性页”对话框中设置属性。3)最后使用CommonDialog控件的ShowOpen方法来显示“打开”对话框: 控件名.ShowOpen2.使用“另存为”对话框“另存为”对话框可以用来指定文件所要保存的驱动器、文件夹以及文件名、文件扩展名,如图9-12所示。使用“另存为”对话框的步骤同上,首先应在窗体中增加“公共对话框”控件,然后在“属性页”对话框中设置属性,其中属性页的设置同上。最后使用CommonDialog控件的ShowSave方法来显示“另存为”对话框: 控件名.ShowSave3.使用“颜色”对话框“颜色”对话框用来在调色盘中选择颜色,或者创建自定义颜色,如图9-13所示。运行时选定颜色并关闭对话框后,可用Color属性得到所选的颜色。使用“颜色”对话框的步骤如下:1)首先在窗体中增加“公共对话框”控件。2)然后在“属性页”对话框中设置属性。3)最后使用CommonDialog控件的ShowColor方法来显示“颜色”对话框: 控件名.ShowColor4.使用“字体”对话框“字体”对话框设置并返回所用字体的名字、样式、大小、效果及颜色,如图9-14。使用“字体”对话框的步骤如下:1)首先在窗体中增加“公共对话框”控件。2)然后在“属性页”对话框中设置属性。注意:必须将Flags属性设为下列常数之一与其他选项之和:cdlCFScreenFonts或1(屏幕字体)cdkCFPrinterFonts或2(打印机字体)cdlCFBoth或3(=1+2两种字体皆有)例如:设为259(=256+3是cdlCFEffects常数与3之和,在对话框中将出现颜色、效果等选项)。3)最后使用CommnnDialog控件的ShowFont方法来显示“字体”对话框: 控件名.ShowFont5.使用“打印”对话框“打印”对话框可以设置打印输出的方法,如打印范围、打印份数、打印质量等其他打印属性。此外,对话框还显示当前安装的打印机的信息,允许用户重新设置缺省打印机。如图9-15所示。使用“打印”对话框的步骤如下:1)首先在窗体中增加“公共对话框”控件。2)然后在“属性页”对话框中设置属性,如图9-16所示。3)最后使用CommonDialog控件的ShowPrinter方法来显示“打印”对话框: 控件名.ShowPrinter【例9-5】使用公共对话框控件的例子(图9-17)。图9-17使用“公共对话框”控件编写命令按钮数组Command()的Click事件代码: PrivateSubCommand1_Click(IndexAsInteger) n=Index SelectCasen Case0 CommonDialog1.Filter="所有文件(*.*)|*.*|文本文件(*.TXT)|*.txt" CommonDialog1.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司财务报销制度及流程1
- 参与家乡文化建设建议书范文(7篇)
- 体育会展业的供应链优化研究-洞察分析
- 微生物污染控制-第1篇-洞察分析
- 元宇宙艺术创作研究-洞察分析
- 游戏设计专业课程改革探索-洞察分析
- 虚拟现实技术在木材加工工艺分析中的应用-洞察分析
- 移动支付安全技术-洞察分析
- 微波背景辐射探测-洞察分析
- 糖尿病视网膜病变基因治疗-洞察分析
- 集成电路高可靠高密度封装(一期)项目可行性研究报告
- 闽2023-G-01先张法预应力高强混凝土管桩DBJT13-95
- 《韩国的语言》课后答案
- 宠物医疗创新创业
- 报价单(产品报价单)
- 一种基于STM32的智能门锁系统的设计-毕业论文
- 项目经理及主要管理人员能力水平
- 工程伦理-工程案例分析
- 缆车合唱钢琴伴奏谱
- 小学四年级上册数学集体备课-记录
- 前列腺增生课件
评论
0/150
提交评论