VB程序设计菜单、对话框及多重窗体.ppt
《VB程序设计菜单、对话框及多重窗体.ppt》由会员分享,可在线阅读,更多相关《VB程序设计菜单、对话框及多重窗体.ppt(64页珍藏版)》请在三一办公上搜索。
1、菜单、对话框及多重窗体,VB 程序设计,制作:赖锦德,提出问题,大家在以前就已接触和学习过不少应用程序,比如Office中的文字处理程序Word、表格处理程序Excel等,已经使用过这些程序中强大的菜单功能,它们是如何进行设计的呢?我们自己能否设计类似的菜单呢?,本章主要内容:,1:菜单2:对话框3:多重窗体4:VB工程结构,两种菜单类型:下拉式菜单、弹出式菜单,1 菜单组成,主菜单(标题)包含若干个菜单项,它放置在菜单的最顶层,它可以下拉出下一级菜单(子菜单),菜单命令对应一个程序模块,执行命令后子菜单自动消失,子菜单包含子菜单标题和菜单命令,分隔条可对子菜单进行分组,菜单命令对应一个程序模
2、块,执行命令后子菜单自动消失,分隔条可对子菜单进行分组,1:菜单控件 菜单项(主菜单项或子菜单项)也称为菜单控件 菜单项具有其属性、事件、方法 通过“菜单编辑器”完成设计,2:菜单编辑器 使设计菜单栏的窗体成为当前窗体 执行“工具”菜单的“菜单编辑器”命令(或单击标准工具栏的“菜单编辑器”按钮,或从窗体快捷菜单中选择“菜单编辑器”命令),打开“菜单编辑器”窗口,3:菜单编辑器结构 属性区 输入或修改菜单项,设置菜单项属性 编辑区 对输入的菜单项进行编辑操作 菜单列表区 显示菜单项的分级列表,2 菜单编辑器,我们利用菜单编辑器设计每个菜单项,其实每个菜单项都是一个对象,它们都有自己的属性、事件、
3、方法。,名称:Name属性设置菜单控件的名字以便在代码中访问它设计菜单时必须输入此项!,标题:Caption属性设置菜单项中显示的文字若该属性为连字符(-),则显示为隔离条可定义访问键(在一字母前加&符号),快捷键:顶级菜单不能使用快捷键!,索引:若将菜单控件定义为数组,则Index属性确定数组控件的位置,Checked,Enabled,Visible,当具有菜单的窗体包含另一个具有菜单的对象时,该属性协调二者的位置0-None1-Left2-Middle3-Right,决定菜单项是否显示缺省值True,设置菜单项的左端是否带复选标记缺省值False,决定菜单项是否响应事件缺省值True,完成
4、上述设计,单击确定按钮,即可看到菜单结构,要实现菜单功能,需要编写菜单项的事件代码,【例1】设计一个具有算术运算(+、-、/)及清除功能的菜单。从键盘上输入两个数,利用菜单命令求出它们和、差、积或商,并显示出来。,菜单设计,编写程序代码,菜单的事件过程以菜单项区分,可以把每个菜单项看成是一个控件。菜单设计完成后,只要单击某个菜单项,即可定义该菜单项的事件过程。,【例2】设计菜单界面如下图所示,下拉菜单中的子菜单项用于对文本框设置字体、字号、文字颜色和效果。其中,效果菜单下的各菜单项具有复选功能,设运行初始时各项前面没有符号,与文本框初始状态一致,Text1,菜单编辑器设置如下:,菜单列表区,续
5、上表:,菜单列表区,菜单列表区,菜单列表区,菜单项事件代码设计如下:,“字体”菜单下的菜单项设计成一个控件数组AA1,共享以下事件过程:Private Sub AA1_Click(Index As Integer)Text1.Font=AA1(Index).Caption End Sub,“字号”菜单下的菜单项设计成一个控件数组BB1,共享以下事件过程:Private Sub BB1_Click(Index As Integer)Text1.FontSize=Val(BB1(Index).Caption)End Sub,“颜色”菜单下的各菜单项为独立的菜单控件,因此应分 别在其单击事件过程中编
6、写代码,各事件过程如下:Private Sub CC1_Click()Text1.ForeColor=vbRed End Sub Private Sub CC2_Click()Text1.ForeColor=vbGreen End Sub Private Sub CC3_Click()Text1.ForeColor=vbBlue End Sub,“效果”菜单下的各菜单项具有复选功能,每次单击时切换成另一种状态。因此要判断当前菜单项的Checked属性,各事件过程如下:,Private Sub DD1_Click()删除线 If DD1.Checked=True Then Text1.FontS
7、trikethru=False DD1.Checked=False Else Text1.FontStrikethru=True DD1.Checked=True End IfEnd Sub,Private Sub DD2_Click()下划线 If DD2.Checked=True Then Text1.FontUnderline=False DD2.Checked=False Else Text1.FontUnderline=True DD2.Checked=True End IfEnd Sub,Private Sub DD3_Click()粗体 If DD3.Checked=True T
8、hen Text1.FontBold=False DD3.Checked=False Else Text1.FontBold=True DD3.Checked=True End IfEnd SubPrivate Sub DD4_Click()斜体 If DD4.Checked=True Then Text1.FontItalic=False DD4.Checked=False Else Text1.FontItalic=True DD4.Checked=True End IfEnd Sub,2:方法PopupMenu的格式:.PopupMenu,flags,x,y,boldcommand fl
9、ags 指定菜单的位置和行为,祥见P171表10-2、10-3 x 菜单的x坐标,缺省则为鼠标坐标 y 菜单的y坐标,缺省则为鼠标坐标 boldcommand 指定要显示为黑体的菜单项控件名称,二、弹出式菜单独立于菜单栏直接显示在窗体上,也称作上下文菜单、快捷菜单、右键菜单,1:弹出式菜单的设计 在菜单编辑器中按下拉式菜单的设计方法,并将其顶级菜单设置为不可见 在对象的MouseDown事件过程中编写代码,用以下的PopupMenu方法显示弹出式菜单,MouseDown事件:Sub Form_MouseDown(Button As Integer,Shift As Integer,X As S
10、ingle,Y As Single)(发生在窗体上的事件过程),(1)Button参数,B0=1:按下左键;Button为1(001B)B1=1:按下右键;Button为2(010B)B2=1:按下中键。Button为4(100B),(2)Shift参数,B2=1按下Alt键;B1=1按下Ctrl键;B0=1按下Shift键,返回一个整数,在 Button 参数指定的按钮被按下或者被释放的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。某键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2)最
11、少二进制位的一个位字段。这些位的值分别等于 1,2,和 4。,B2=1按下Alt键;B1=1按下Ctrl键;B0=1按下Shift键,(2)Shift参数,【例3】在例2的基础上设计窗体和文本框的弹出式菜单,如下图所示:,菜单编辑器设置如下:,文本框的MouseDown事件代码设计如下:Private Sub Text1_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=2 Then PopupMenu EE,0 Or 0 End IfEnd Sub,窗体的MouseDown事件代码设计
12、如下:Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=2 Then PopupMenu FF,8 Or 0,FF3 End IfEnd Sub,菜单项事件代码设计如下:,保存窗体的初始颜色:Dim Fcolor As Long Private Sub Form_Load()Fcolor=Form1.BackColor&H8000000F默认色 End Sub,文本框快捷菜单:Private Sub EE1_Click()Text1.FontSize=T
13、ext1.FontSize+1 增加1磅 End Sub Private Sub EE2_Click()Text1.FontSize=Text1.FontSize 1 减少1磅 End Sub Private Sub EE3_Click()锁定 If EE3.Caption=锁定 Then EE3.Caption=取消锁定“:Text1.Locked=True Else EE3.Caption=锁定:Text1.Locked=False End If End Sub,窗体快捷菜单:Private Sub FF1_Click()Form1.BackColor=vbRed 红色背景 End Sub
14、 Private Sub FF2_Click()Form1.BackColor=vbGreen 绿色背景 End Sub Private Sub FF3_Click()Form1.BackColor=Fcolor 默认背景 End Sub,常见错误及难点分析,1.窗体菜单名、顶层菜单与菜单项的区别 通常出现在菜单栏上的菜单对象称为菜单名,菜单名以下拉列表形式包含的内容为菜单项。菜单项可以包括菜单命令、分隔条和子菜单标题。当菜单名没有菜单项时,为“顶层菜单”,可直接对应一个应用程序。菜单名、顶层菜单不能定义快捷菜单,而菜单项 可以有快捷键。当菜单包含有热键字母(菜单标题中“&”后的字母)时窗体,
15、按Alt+热键字母可选择窗体顶部菜单栏中的菜单项,当子菜单打开时,按热键字母选择子菜单中的。如果子菜单没有打开时,按热键字母无法选择其中的菜单项。尽管所有的菜单项都能响应Click事件,但是菜单栏中的菜单名通常不需要编写事件过程。,区别,常见错误及难点分析,2 使用Load语旬加载窗体,窗体不显示 Load语句将窗体装入内存并设置窗体的Visible属性为False(无论在设计时如何设置Visible属性),此时可以引用窗体中的控件及各种属性。为了使窗体可见,在用Load语句后,再将窗体的Visible属性设置为True,或使用Show方法加载窗体。,3在因体加载过程中使用 SetFocus方
16、法出现“无效的过程调用或参数”错误 焦点只能移到可视的窗体或控件上。在窗体的Load事件完成前窗体或窗体上的控件是不可视的,所以不能在 Form_ Load事件中把焦点移到正在加载的窗体上,也不能在Load事件内使用SetFocus方法将焦点移至窗体上的控件。此外,也不能把焦点移到Enabled或Vsible属性被设置为False的窗体或控件。如果已在设计时将Enabled或Visible属性设置为False,必须在使用SetFocus方法前将Enabled或Visible属性设置为True。,在首次用Load语句将窗体(假定该窗体在内存中还没有创建)调人内存之时依次发生Initialize和
17、Load事件。Initialize是在窗体创建时发生的事件。在窗体的整个生命周期中,Initialize 事件只触发一次。用户可以将一个窗体装入内存或从内存中删除很多次,但窗体的建立只有一次。也就是说,在用Load语句将窗体装入内存时会触发Load事件,但并不一定触发Initialize事件 窗体的Activate事件仅当窗体成为活动窗口时才发生。,在窗体从内存中卸载时依次发生 QueryUnload和 Unload事件。QueryUnload事件可提供造成窗体卸载的原因(单击“关闭”按钮/程序中执行Unload语句/在应用程序中关闭/在Windows中的关闭)。如果在QueryUnLoad事
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 程序设计 菜单 对话框 多重 窗体
链接地址:https://www.31ppt.com/p-5052867.html