《菜单程序设计》word版.doc_第1页
《菜单程序设计》word版.doc_第2页
《菜单程序设计》word版.doc_第3页
《菜单程序设计》word版.doc_第4页
《菜单程序设计》word版.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

菜单程序设计菜单程序设计2010年12月05日星期日下午09:52菜单程序设计一、菜单菜单的基本作用:菜单的基本类型:几个常用术语:-菜单条出现在窗体标题的下面,包含每个菜单的标题。-菜单包含命令列表或子菜单名。-菜单中列出的每一项。-从某个菜单项分支出来的另外的一个菜单。具有子菜单的菜单项右边带有一个三角符号标志。-分隔条是在菜单项之间的一条水平直线,用于修饰菜单。-弹出式菜单是另一种形式的菜单,在按下鼠标右键时出现,它是一个上下文相关的菜单。使用菜单编辑器可以为应用程序创建自定义菜单并定义其属性,利用这个编辑器,可以建立下拉式菜单,最多可达6层。启动菜单编辑器的方法有4种(先选中一个窗体,使之为活动窗体):使用菜单工具/菜单编辑器;启动后,弹出菜单设计窗口。菜单编辑器窗口分为三个部分:数据区、编辑区和菜单项显示区。1、数据区用来输入或修改菜单项、设置属性。其中:隔线。可在该文本框中输入数值,这个值用来在帮助文件(用HelpFile属性设置)中查找相应的帮助主题。用来确定菜单或菜单项是否出现或在什么位置出现。该列表有4个选项:0-None菜单项不显示2、编辑区共有7个按钮。3、菜单项显示区(菜单列表)位于菜单设计窗口的下部,输入的菜单项在这里显示出来,并通过内缩符号()表明菜单项的层次。条形光标所在的菜单项是当前菜单项。说明:菜单项是一个总的名称,包括4个方面的内容:菜单名(菜单标题)、菜单命令、分隔线和子菜单。内缩符号由4个点组成,它表明菜单项所在的层次,一个内缩符号(4个点)表示一层,两个内缩符号(8个点)表示两层最多20个点,即5个内缩符号,它后面的菜单项为第六层。如果一个菜单项前面没有内缩符号,则该菜单为菜单名,即菜单的第一层。隔线。下面通过一个简单的例子说明菜单程序设计的基本方法和步骤。例1根据题意,可以将菜单分为3个主菜单项,分别为计算加、减、计算乘、除和清除与退出,它们各有两个子菜单,即:计算加、减的子菜单项:加、减计算乘、除的子菜单项:乘、除清除与退出的子菜单项:清除、退出另外,为了输入和显示,再建立两个文本框(输入数据)和四个标签。1、界面:其中Lable4的BorderStyle属性设置为1。2、菜单项属性:3、设计菜单:步骤:其它两个主菜单的建立与前面步骤类似,不再重复。设计完成后的窗口如下图。确定后结束。设计完成后,窗体顶行显示主菜单项,单击某个主菜单项,即可下拉显示其子菜单。4、程序代码:每个菜单项都可以接收Click事件。每个菜单项都有一个名字(Name属性),将这个名字与Click放在一起,组成Click事件过程。Option Explicit Private Sub Add_Click()x=Val(Text1.Text)+Val(Text2.Text)End Sub Private Sub Min_Click()x=Val(Text1.Text)-Val(Text2.Text)Private Sub Mul_Click()x=Val(Text1.Text)*Val(Text2.Text)Private Sub Div_Click()If Text2.Text=0Or Text2.Text=Then End Sub Private Sub Clean_Click()Text1.Text=End Sub Private Sub Quit_Click()5、运行程序:在两个文本框中输入数字后,分别单击各菜单项或热键,看一看执行结果。本例中的有效属性和可见属性采用默认的True,只有在必要时才设置其它属性。下面将讨论这些情况。在使用Windows或VB菜单时,已见过与众不同的菜单项,如有的呈灰色,单击这类菜单项不执行任何操作;有的菜单项前有号,或菜单项的某个字母下面有下划线等等。下面将介绍如何在菜单中增加这些属性。1、菜单项的有效属性(有效性控制)为了使程序正常运行,有时需要使某些菜单项失效,以防止出现误操作。例如前面的例子中,只有在文本框中输入数字后才能进行运算,否则运算没有意义。因此,如果尚未输入数据,则应使执行加、减、乘、除的菜单项失效,在输入数据后才生效。为此,可增加下面两个事件过程:Private Sub Text1_Change()If Text1.Text=Then End Sub Private Sub Text2_Change()If Text2.Text=Then End Sub除增加上述两个事件过程外,还要方法:打开菜单编辑器窗口,把对应于这4个菜单项的数据区中的有效属性复选框中的去掉即可。2、菜单项的复选属性(菜单项的标记)所谓菜单项标记,就是在菜单项前加上一个。它有两个作用:增加方法:一般来说,菜单项标记通常是动态的加上或取消的,所以,程序代码中根据执行情况设置。例2界面:一个文本框、6个标签。菜单属性:设计菜单:编写代码:Option Explicit Private Sub octv_Click()answer=Val(Text1.Text)Private Sub Hexv_Click()answer=Val(Text1.Text)Private Sub dec_Click()answer=Val(Text1.Text)End Sub Private Sub Clean_Click()Text1.Text=End Sub Private Sub Quit_Click()End End Sub例3在窗体上添加一个文本框,用来输入要显示的文本。菜单属性:菜单设置见教材P244。代码如下:Private Sub Form_Load()Private Sub mnunew_Click()菜单项的单击事件Private Sub mnuopen_Click()Private Sub mnuclose_Click()Private Sub mnuexit_Click()Private Sub mnubold_Click()Private Sub mnuitalic_Click()3、菜单的可见属性同有效属性相似,可以利用可见属性来取消用户对某些特定菜单项的访问权限。若关闭某个特定的菜单项的可见属性,该菜单项将从菜单中被移走。用户将不知道该菜单项的存在。例4打开菜单编辑器,在菜单列表中选择退出菜单项,单击插入按钮,在退出菜单项之前插入一个菜单项。4、设置键盘选择菜单项在一般情况下,菜单项通过鼠标选择,即单击某个菜单项,执行相应的操作。在VB中,也可以通过键盘选择所需的菜单项。用键盘选择有两种方法:前面已介绍过热键的设置方法。用热键可以直接执行菜单命令,不必一级一级地下拉菜单,速度较快,适合熟悉键盘的用户使用。所谓访问键,就是菜单项中加了下划线的字母,只要按Alt和加了下划线的字母,就可以选择相应的菜单项。用访问键选择菜单项时,必须一级一级地选择。也就是只有在下拉显示下一级菜单后,才能用Alt和加了下划线的字母键选择。访问键的设置说明:任何5、创建菜单控件数组菜单控件数组就是在同一菜单上共享相同名称和事件过程的菜单工程的集合。菜单控件数组用于:在运行时要创建一个新菜单项,它必须是菜单控件数组中的成员每个菜单控件数组元素都由惟一的索引值来标识,该值在菜单编辑器上Index属性框中指定。当一个控件数组成员识别一个事件时,VB将其Index属性作为一个附加的参数传递给事件过程。事件过程必须包含有核对Index属性的代码,因而可以判断出正在使用的是哪一个控件。例5:菜单项名称索引快捷键mnuFont.粗体粗体mnuBold Ctrl+B.斜体斜体mnuItalic Ctrl+I.大小大小mnuSize 10mnuFS 20mnuFS 30mnuFS通过菜单编辑器中创建菜单控件数组的步骤:同样,所有的控件也可以用这种方法创建控件数组。通常把OptionButton和CheckBox控件设置为控件数组。使用菜单数组和控件数组有下述优点:可以用For循环方便的访问每一个对象菜单控件数组mnuFS的Click事件响应代码如下:Private Sub mnuFS_Click(Index as Integer)Select Case Index end sub 6、菜单项的增减(动态菜单)动态菜单是指随着应用程序的运行而不断改变的一种菜单,在运行时菜单可以增长。Word软件的文件菜单是一个典型的动态菜单,菜单中列出了最近使用过的文件名,这部分内容随着应用程序的运行而不断改变的。而用前面的方法建立的菜单是固定的,菜单项不能增减。为了增加或减少菜单项,必须在菜单编辑器窗口中,对原来的菜单进行增删。使用动态菜单在应用程序中一个控件数组含有若干个控件,这些控件的名称相同,所使用的事件过程相同,但其中的每个元素可以有自己的属性。和普通数组一样,通过下标(Index)访问控件数组中的元素。控件数组可以在设计阶段建立(见添加控件一节),也可以在程序运行阶段建立。菜单项的增减是通过菜单控件数组实现的。菜单控件数组和普通数组一样,也是通过下标来访问数组中的元素(这里为菜单项)的。菜单控件数组也一样可以设计时建立、可以在运行时建立。具体操作:如设计时对名称为mnuRecentFile的分隔条菜单控件的Index属性进行了赋值,它自动地成为控件数组的一个元素,当创建mnuRecentFile(0)时,实际上创建了一个在运行时不可见的分隔符条。当运行时用户第一次存储一个文件,这个分隔条就会变得可见,且第一个文件名被加到该菜单上。运行时每存储一个文件,则会再装入一个菜单项到该数组中,从而使该菜单增长(当然,菜单也不能无限增长)。运行时创建的控件可以使用Hide方法或者设置该控件的Visible属性为False来隐藏。当用户选取一个菜单控件时,一个Click事件则出现。需要在代码中为每个菜单控件编写一个Click事件过程(除分隔符条以外的所有菜单控件都能识别Click事件)。在菜单事件过程中编写的代码与在控件任何其它过程中编写的代码完全相同。一旦菜单标题被选取,VB将自动地显示一个菜单。例5在字体不可见后插入一个菜单项,标题-,名称:mnuRecentFile,可见属性值为:在新建文件的程序代码中作如下修改(蓝色部分是增加的内容):Private Sub Form_Load()End Sub Private Sub mnuopen_Click()关于函数Mid$、Len:中部截取函数Mid$功能:用来截取字符串中间的一比部分。格式:Mid$(字符串,p,n)a$=abcdefghijkcdef Mid$函数的第三个自变量可以省略,在这种情况下,将从第二个自变量指定的位置向后截取到字符串的末尾。字符串长度测试函数Len功能:测试字符串的长度,也可以测试变量的存储空间,它的自变量可以是字符串,也可以是变量名。Len(变量名)例如:a$=abcdefghijk11 a=Len(textvar#)8 42例5设有一个刚刚建立的菜单,它有一个主菜单应用程序,其下有两个子菜单增加应用程序、减少应用程序及分隔线。要求单击增加应用程序时在分隔条下增加一个新的菜单项,单击减少应用程序时删除分隔线下面一个指定的菜单项,如果单击新增加的菜单项,则可以执行这一指定的应用程序。原来菜单:接下来,按以下步骤操作:(1)打开菜单编辑器(2)设置菜单属性如下:最后一项是新输入的,它是一个子菜单,但暂时看不见。输入索引值0以使AppName菜单项成为菜单控件数组,AppName(0)是控件数组的第一个元素。(3)编写添加菜单项代码:单击增加应用程序菜单项,在程序中添加代码:Dim menucounter As Integer msg=Enter file path:End Sub以上仅是一个练习,在实际应用时,可以通过通用对话框打开文件,然后再将打开的文件名作为菜单项显示,这样代码可改为(窗体上已添加了通用对话框控件):Private Sub AddAp_Click()With CommonDialog1 menucounter=menucounter+1 End Sub(4)编写删除菜单项代码:在运行时用load语句增加的菜单项可以使用Unload语句删除,但不能删除设计时建立的菜单项。单击减少应用程序菜单项,在程序中添加代码:Private Sub DelAp_Click()Dim n,i As Integer End Sub说明:从过程中可以看出,删除指定菜单项的操作并不是直接进行的,而是从被删除的菜单项开始,用后面的菜单项覆盖前面的菜单项,然后再删除最后一个菜单项。功能:设计分为两步:首先用菜单编辑器建立菜单,这一步与前面介绍的基本相同,唯一的区别是,必须把菜单名(即主菜单项)的可见属性设置为False(子菜单项不要设置为False);第二步用PopupMenu方法弹出显示。PopupMenu方法用来显示弹出菜单,object.PopupMenu menuname,flags,x,y,boldcommand其中:Object(对象)-窗体名。Menuname(菜单名)-指在菜单编辑器中定义的X、Y-弹出式菜单在窗体上的显示位置的X、Y坐标(与Flags参数配合使用)。Boldcommand-指定弹出式菜中的弹出式菜单控件的名字,用以显示为黑体正文标题。Flags-该参数是一个数值或符号常量,指定弹出式菜单的位置和行为,其取值分为两组,一组用来指定菜单位置,另一组用来定义特殊的菜单行为,如下表:指定菜单位置定义菜单行为说明:PopupMenu方法的6个参数中,除菜单名外,其余参数都是可选的。当省略了对象时,弹出式菜单只能在当前窗体中显示。如果需要在其它窗体中显示弹出菜单,则必须加上窗体名。Flags的两组参数可以单独使用,也可以联合使用。当联合使用时,每组中取一个值,两个值相加;如果使用符号常量,则两个值用Or连接。X、Y分别用来指定弹出式菜单显示位置的横、纵坐标,如果省略,则弹出菜单在鼠标光标的当前位置显示。弹出式菜单的位置由X、Y、Flags参数共同指定。如果省略这几个参数,则在单击鼠标右键弹出菜单时,鼠标光标所在位置为弹出式菜单左上角的坐标。在默认情况下,以窗体的左上角为坐标原点。如果只省略Flags参数,不省略X、Y参数,则X、Y为弹出式菜单左上角的坐标;如果同时使用X、Y及Flags参数,则弹出菜单的位置分为一下几种情况:Flags=0 X、Y为弹出式菜单左上角的坐标Flags=4 X、Y为弹出式菜单顶边中间的坐标Flags=8 X、Y为弹出式菜单右上角的坐标PopupMenu方法放在MouseDown事件中,该事件响应所有的鼠标单击操作。按照惯例,一般通过单击鼠标右键显示弹出菜单,这可以用Button参数来实现。对于两个键的鼠标来说,左键的Button参数值为1,右键的Button参数值为2。因此可以强制使用右键来响应MouseDown事件而显示弹出菜单:If Button=2 Then PopupMenu菜单名下面举例说明建立弹出式菜单的一般过程。例6步骤如下:Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=2 Then End Sub Private Sub Form_Load()Text1.Text=可视化高级程序语言End Sub因为主菜单不可见,所以不能直接下拉主菜单而单击子菜单进入代码窗口,必须先进入代码窗口(按F7键或双击窗体或执行视图菜单下的代码窗口命令),然后分别从对象名称框和事件名称框中选择对应项,然后分别编写代码。Private Sub popBold_Click()Private Sub Quit_Click()运行结果:工具栏(也称为发条或者控制栏)已经成为许多基于Windows的应用程序的标准功能。工具栏提供了对于应用程序中最常用的菜单命令的快速访问。可以使用ToolBar控件来轻松的创建工具栏,也可以使用应用程序向导来创建工具栏,方法更加简便。1、利用应用程序向导创建工具栏应用程序向导是VB6.0为用户提供的一项功能,通过应用程序向导用户可以很快设计出一个标准Windows程序的框架,其中包括窗体、菜单、工具栏、多文档、状态栏、对话框、滚动条等等。设计过程是在对话中完成,设计完成后形成应用程序的界面和框架。创建一个标准的应用程序框架步骤如下:2、使用ToolBar控件创建工具栏使用ToolBar控件创建工具栏也是非常简单的工作,基本的属性设置可以通过对话框完成。给示例Mymenu设计一个具有四个工具按钮的工具栏,分别对应菜单中的新建、打开、粗体、斜体等四个菜单项,并完成相应的功能。关于样式的说明:Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Index End Sub Private Sub mnuBold_Click()mnuBold.Checked=Not mnuBold.Checked End Sub Private Sub mnufotesize_Click(Index As Integer)Select Case Index End Sub Private Sub mnuItalic_Click()mnu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论