1 / 50

第五章 窗体与菜单

第五章 窗体与菜单. 本章主要内容: 1 、 用户界面类型 2 、 多窗体程序的设计与应用 3 、 菜单的设计与应用 4 、 工具栏和状态栏设计. 5.1 用户界面类型. 窗体型用户界面 菜单型用户界面 带工具栏 、状态栏的菜单型用户界面. 5.2 多窗体程序的设计与应用. 1. 添加窗体 “ 工程→添加窗体 ” 2. 显示或隐藏窗体 显示指定窗体 Object.Show [Style] Object -窗体名称 Style -显示模式 (0 、 1)

amanda
Download Presentation

第五章 窗体与菜单

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五章 窗体与菜单 • 本章主要内容: 1、用户界面类型 2、多窗体程序的设计与应用 3、菜单的设计与应用 4、工具栏和状态栏设计 制作:黄传禄

  2. 5.1 用户界面类型 • 窗体型用户界面 • 菜单型用户界面 • 带工具栏、状态栏的菜单型用户界面 制作:黄传禄

  3. 5.2 多窗体程序的设计与应用 1. 添加窗体 “工程→添加窗体” 2. 显示或隐藏窗体 • 显示指定窗体 Object.Show [Style] Object-窗体名称 Style-显示模式(0、1) 0 (非模态型)—鼠标只在此窗体内起作用,不能到其它窗口内操作 1(模态型)—不用关闭该窗体就可以对其它窗口进行操作 • 隐藏指定窗体 Object.Hide 制作:黄传禄

  4. 3. 设置启动窗体 • 默认第一个窗体(Form1)为启动窗体 • 改变启动窗体:“工程→工程属性” 制作:黄传禄

  5. 点击后可打开相应的窗体 多窗体程序的设计与应用实例 例:试题库管理程序设计 制作:黄传禄

  6. 多窗体程序的设计与应用实例 (1) 创建用户登录窗体Frmdl ① 新建工程:窗体保存为Frmdl.frm,工程保存为ctk.vbp。 ② 窗体设计: • 下面4个按钮为一控件数组Cmdml(0)~Cmdml(3) • 除“退出”按钮外,其它三个按钮的Enabled属性设为False • 密码文本框Txtcode的PasswordChar属性设为“*” • 底部提示标签Lblsm的Caption属性设为空 制作:黄传禄

  7. ③程序设计: Dim cs As Integer 'cs记录出错次数 Private Sub Cmdml_Click(Index As Integer) Select Case Index Case 0: '单击"题库管理"按钮 Frmsele.Show 1 Case 1: '单击"自动选题"按钮 Frmxt.Show 1 Case 2: '单击"制作考盘"按钮 Frmcopy.Show 1 Case 3: '单击"退出"按钮 End End Select End Sub 制作:黄传禄

  8. Private Sub Cmgqd_Click() '单击“确定”按钮 If cs < 3 Then If UCase(TxtName.Text) <> "TEACHER" Then Lblsm.Caption = "用户名错误,请重新输入!" cs = cs + 1: TxtName.SetFocus ElseIf (Txtcode.Text) <> "kaoshi" Then Lblsm.Caption = "密码错误,请重新输入!" cs = cs + 1 : Txtcode.SetFocus Else '用户名和密码均正确的情况 Lblsm.Caption = "" : Cmdml(0).Enabled = True Cmdml(1).Enabled = True : Cmdml(2).Enabled = True End If Else Lblsm.Caption = "已连错三次,请退出!" Cmdml(3).SetFocus End If End Sub 制作:黄传禄

  9. (2) 添加题库管理窗体Frmsele ① “工程→添加窗体”,新建一个窗体,保存为Frmsele.frm。 ② 在该窗体中添加一个命令按钮, ③编写Click事件响应代码: Private Sub Cmd_exit_Click() Unload Me End Sub (3) 仿上,添加窗体Frmxz.frm (4) 仿上,添加窗体Frmcopy.frm 制作:黄传禄

  10. 5.3 MDI窗体设计 1.多文档界面 多文档界面-是Windows应用程序的典型结构,是在一个应用程序中能够同时处理两个或多个窗体的界面形式 2.父窗体和子窗体 子窗体-就是MDIChild属性设置为True的普通窗体 在程序运行时,子窗体显示在MDI父窗体之内 当子窗体最小化时,它的图标显示在MDI父窗体的工作空间的最底端,而不是在任务栏中 制作:黄传禄

  11. 3.创建MDI窗体 (1)创建MDI窗体 从"工程"菜单中选取"添加MDI窗体" 注意: 一个应用程序只能有一个MDI窗体 (2)创建MDI子窗体 要创建MDI子窗体,可以先创建一个新窗体,然后把它的MDIChild 属性设为True 制作:黄传禄

  12. 4.MDI窗体的基本特征 (1)所有子窗体都在MDI窗体的内部区域显示,不能移出MDI父窗体之外 (2)当一个子窗体最小化时,它的图标会出现在MDI窗体上, 并不在系统的任务栏上 (3)当子窗体最大化时,每个子窗体都有自己的标题;当子窗体最小化时,其标题与MDI窗体的标题合并,在MDI窗体的标题栏中显示出来 (4)通过设定AutoshowChildren属性,可以使子窗体在装入时自动显示或隐藏 (5)如果活动子窗体有菜单,则菜单均显示在MDI窗体的菜单栏中,而不是显示在子窗体中 制作:黄传禄

  13. 5.排列子窗体 在MDI窗体中使用Arrange方法排列子窗口或图标,格式: object.Arrange arrangement • object:必须是一个MDI窗体对象表达式 • arrangement:参数为一个数值或常数 制作:黄传禄

  14. arrangement设置值 制作:黄传禄

  15. 例:建立一个MDI窗体,在父窗体上建立3个子窗体,并对3个子窗体按不同的方式排列例:建立一个MDI窗体,在父窗体上建立3个子窗体,并对3个子窗体按不同的方式排列 制作:黄传禄

  16. VB工程管理-工程的组成 • VB工程包含多种类型的文件 • 其中最常用的文件是: • 工程文件 包含与该工程有关的全部文件、对象以及所设置的环境选项的信息,扩展名.vbp • 窗体文件 包含窗体及其控件有关属性的文本描述、常量或变量的声明、以及窗体内的过程代码等,扩展名为.frm 若窗体中对象的数据含有二进制属性,保存该窗体时将自动生成同名的二进制数据文件,扩展名为.frx • 标准模块文件 通常用来定义供其他窗体或模块引用的全局常量、变量、过程等,扩展名为.bas 制作:黄传禄

  17. VB工程管理-工程的基本操作 1.新建、打开和保存工程 新建工程 • 启动VB时:“新建工程”对话框的“新建”选项卡 • VB窗口中:“文件→新建工程” 打开工程 • 启动VB时: “现存”、“新建” • VB窗口中:“文件→打开工程” 保存工程 • 单击 “保存工程”按钮 • “文件→保存工程” • “文件→工程另存为” 制作:黄传禄

  18. 2.工程中添加、移除和保存文件 • 添加指定类型的文件:“工程→添加…” • 删除选定的文件:“工程→移除…” • 保存选定的文件:“文件→保存…” • 另存选定的文件:“文件→…另存为” 注: • 上述操作可用快捷菜单中的相关命令 • 在当前工程中添加现存的文件时(例如,添加其他工程中的窗体),并不是添加该文件的副本,而只是简单地在工程中包含对该文件的引用。 制作:黄传禄

  19. 3、菜单的设计与应用-相关概念 1. 菜单的类型 • 下拉菜单:常以菜单栏的形式出现在标题栏下面 • 弹出菜单(快捷菜单):独立于菜单栏而显示在窗体上的浮动菜单,其菜单项取决于按下鼠标右键时指针所处的位置。 2. VB中的菜单控件 • 菜单和菜单项均看作是菜单控件 • 菜单控件两个最重要的属性 名称(Name):程序代码中用来引用菜单控件 标题(Caption):出现在控件上的文本 • 菜单控件只响应Click事件 制作:黄传禄

  20. 打开菜单编辑器: • “工具→菜单编辑器” • 工具栏“菜单编辑器”按钮 • 使用快捷键Ctrl+E 1. 常用属性 • 标题:设置Caption属性 字符前加&,该字符成为访问键 只输入一个减号-,创建分隔条 • 名称:设置Name属性 注:对分隔条,也需定义名称 制作:黄传禄

  21. 索引(Index):指定一个数值来确定菜单项在控件数组中的位置索引(Index):指定一个数值来确定菜单项在控件数组中的位置 • 快捷键(S):通过键盘按键的组合来快速地访问菜单项 • 复选(Checked):决定是否在菜单项的左边显示复选框 • 有效(Enabled):决定是否让菜单项对事件作出响应 • 可见(Visible):决定是否将菜单项显示在菜单 制作:黄传禄

  22. 2. 编辑菜单控件 3、 菜单的设计与应用-使用菜单编辑器 如果菜单控件的前面没有内缩符号“····”,表明该控件建立的是主菜单,否则为菜单命令或子菜单。 制作:黄传禄

  23. 菜单编辑器各项参数的说明 • 1、“标题(P)”文本框:此框中输入的内容就是一个菜单项的标题,用户可以看见,它相当于一个菜单控件Caption属性.这里输入的内容将会在"菜单项显示区"中显示出来. • 2、“名称(M)”文本框:此框中输入的内容是菜单项的内部名,相当于菜单控件的Name属性,Visual Basic把它作为该菜单项的 Click事件过程中的控件名。在设计一个菜单时,其中的每个菜单项的“名称”都必须有内容,且都必须有不同的内容,除非这些菜单项被设计成一个控件数组。 制作:黄传禄

  24. 3、“索引(X)”框:如果想使一个菜单项成为控件数组的一部分,就需要使用索引框。如前所述,控制件数组允许在运行进采用Load语句添加新的控件,利用Unload语句删除添加的控件。因此把一个菜单项设置为是控件数组的一个元素时,就能使所设计的菜单在运行时根据需要扩大或缩小。该框相当于菜单控件的属性。3、“索引(X)”框:如果想使一个菜单项成为控件数组的一部分,就需要使用索引框。如前所述,控制件数组允许在运行进采用Load语句添加新的控件,利用Unload语句删除添加的控件。因此把一个菜单项设置为是控件数组的一个元素时,就能使所设计的菜单在运行时根据需要扩大或缩小。该框相当于菜单控件的属性。 • 4、“快捷键(S)”框:这是一个用来设置菜单项快捷键的场所,用鼠标单击右端的箭头,在下拉式列表框中将列出可供选用的各种快捷键。如图所示。被选用的快捷键将在“菜单项显示区”里显示出来,它相当于菜单控件的属性。 制作:黄传禄

  25. 5、“帮助上下文ID(H)”框:可在该框中键入数值,以便用来在帮助文件(用HelpFile属性设置)中查找相应帮助主题,它相当于菜单控件的HelpContextID属性。5、“帮助上下文ID(H)”框:可在该框中键入数值,以便用来在帮助文件(用HelpFile属性设置)中查找相应帮助主题,它相当于菜单控件的HelpContextID属性。 • 6、“协调位置(Q)”框:此框将在下拉式列表框里选择取值,以决定一个菜单项或在菜单的什么位置出现。下拉式列表框里有4个可选值: 0-None 菜单项不显示 1-Left 菜单项靠左显示 2-Middle 菜单项居中显示 3-Right 菜单项靠右显示 制作:黄传禄

  26. 当窗体上有菜单,窗体上链接或嵌入的对象也有菜单时,如何处理窗体菜单项及其位置,就要用到此框,它相当于菜单控件的NegotiatePosition属性。当窗体上有菜单,窗体上链接或嵌入的对象也有菜单时,如何处理窗体菜单项及其位置,就要用到此框,它相当于菜单控件的NegotiatePosition属性。 • 7、“复选(C)”框:此复选框决定菜单项的左侧是否会出记号“”,以明确表示某个菜单项当前是否处于活动状态。它不会对菜单项的执行结果产生任何影响,它当于菜单控件的Checked属性。 制作:黄传禄

  27. 8、“有效(E)”框:此复选框作用相当于菜单控件的Enabled属性,确定菜单项是否对单击事件进行响应,默认总是选中此复选框,即有“”记号,若去除“”记号,该属性被设置为,那么该菜单项以灰色显示,不响应单击事件。8、“有效(E)”框:此复选框作用相当于菜单控件的Enabled属性,确定菜单项是否对单击事件进行响应,默认总是选中此复选框,即有“”记号,若去除“”记号,该属性被设置为,那么该菜单项以灰色显示,不响应单击事件。 • 9、“可见(V)”框:此复选框作用相当于菜单控件的Visable属性。如果一个菜单项被设置为不可见,那么它的所有子菜单也不可见。 制作:黄传禄

  28. 10、“显示窗口列表(W)”框:此复选框在多文档界面(MDI)时有用,以决定在“窗口”菜单的下拉式菜单里是否自动显示当前所有已打开的子窗体。它相当于菜单控件的WindowsList属性。10、“显示窗口列表(W)”框:此复选框在多文档界面(MDI)时有用,以决定在“窗口”菜单的下拉式菜单里是否自动显示当前所有已打开的子窗体。它相当于菜单控件的WindowsList属性。 • 11、“确定”和“取消”按钮:当完成菜单设计时,就单击“确定”按钮,如果打算作废,就单击“取消”按钮。 制作:黄传禄

  29. 12、上、下、左、右箭头按钮:用来对菜单项显示区里显示的诸菜单项进行位置操作。在菜单项显示区里子菜单用缩进格式表示,选中的菜单项被置为高亮度,它是箭头按钮的操作对象。单击向上箭头按钮,会使高亮度菜单项和它上面的那个菜单项互换位置,单击向下箭头按钮,会使高亮度菜单项昨它下面的那个菜单项毒草换位置。左、右箭头用于控抽子菜单的缩进层次。单击右箭头一资助,就使一个菜单项缩进一层(用4个点表示);单击左箭头一次,就使一个菜单项上升一层(去掉4个点)。要注意的是,一个菜单项最多只能比它上面菜单项缩进一层。12、上、下、左、右箭头按钮:用来对菜单项显示区里显示的诸菜单项进行位置操作。在菜单项显示区里子菜单用缩进格式表示,选中的菜单项被置为高亮度,它是箭头按钮的操作对象。单击向上箭头按钮,会使高亮度菜单项和它上面的那个菜单项互换位置,单击向下箭头按钮,会使高亮度菜单项昨它下面的那个菜单项毒草换位置。左、右箭头用于控抽子菜单的缩进层次。单击右箭头一资助,就使一个菜单项缩进一层(用4个点表示);单击左箭头一次,就使一个菜单项上升一层(去掉4个点)。要注意的是,一个菜单项最多只能比它上面菜单项缩进一层。 制作:黄传禄

  30. 13、“下一个”按钮:单击“下一个”按钮,将会从菜单项显示区目前选中的菜单项处进到下一个菜单项。如果已处在最后一个菜单项,那么就会插入一个新的菜单项,此菜单项的缩进层次与它前面的菜单项相同。13、“下一个”按钮:单击“下一个”按钮,将会从菜单项显示区目前选中的菜单项处进到下一个菜单项。如果已处在最后一个菜单项,那么就会插入一个新的菜单项,此菜单项的缩进层次与它前面的菜单项相同。 • 14、“插入”按钮:单击“插入”按钮,表示在当前高亮度菜单项的上面要插入一个新的菜单项。 • 15、“删除”按钮:单击“删除”按钮,表示把当前高亮度菜单项删去。 制作:黄传禄

  31. 方法:先通过菜单编辑器设计菜单,然后编写各菜单控件的Click事件过程。方法:先通过菜单编辑器设计菜单,然后编写各菜单控件的Click事件过程。 例: 创建简易编辑器 (1) 设计菜单 3、 菜单的设计与应用-设计下拉菜单 制作:黄传禄

  32. 例1创建简易编辑器 (2) 设计界面 菜单下面绘制两条直线(两个Line控件),一条为黑色,一条为白色。 黑线的Y1和Y2属性设为0 白线的Y1和Y2属性设为10 文本框Text1: MultiLine设为True ScrollBars设为3 (3) 编写菜单控件的Click事件过程 3、 菜单的设计与应用-设计下拉菜单 制作:黄传禄

  33. 3、 菜单的设计与应用-设计下拉菜单 代码分析与演示: Private Sub mnuFileCls_Click() Text1.Text = "" End Sub Private Sub mnuFileExit_Click() '退出 Unload Me End Sub Private Sub mnuEditColor_Click() '颜色 Text1.ForeColor = vbRed '设为红色 End Sub 制作:黄传禄

  34. 3、 菜单的设计与应用-设计下拉菜单 • Private Sub mnuEditSizeArr_Click(Index As Integer) • For i = 1 To 3 • mnuEditSizeArr(i).Checked = False • Next i • Select Case Index • Case 1 • s = 12 • mnuEditSizeArr(1).Checked = True • Case 2 • s = 16 • mnuEditSizeArr(2).Checked = True • Case 3 • s = 20 • mnuEditSizeArr(3).Checked = True • End Select • Text1.FontSize = s • End Sub 制作:黄传禄

  35. 3、 菜单的设计与应用-设计下拉菜单 • Private Sub mnuHelpAbort_Click() '关于 • MsgBox "一个有待完善的简易文本编辑器,版本1.0", vbOKOnly, "版本信息" • End Sub • Private Sub Form_Load() • Text1.FontSize = 12 • End Sub 制作:黄传禄

  36. 用PopupMenu方法可显示弹出式菜单 [对象.]PopupMenu 菜单控件名称 若“对象”缺省,则在当前窗体中显示弹出菜单 通常,按下鼠标右键时显示弹出菜单,例如: Private Sub Form或控件名称_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then '如果按的是鼠标右键 PopupMenu 菜单名'显示弹出菜单 End If End Sub 菜单的设计与应用-设计弹出菜单 制作:黄传禄

  37. 例2 弹出菜单设计 (1) 打开例1所建立的工程 (2) 添加如下的事件过程: Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu mnuEdit '弹出名称为mnuEdit的菜单 End If End Sub 注:若要创建一个不显示在菜单栏中的弹出菜单,设计菜单时,需取消主菜单的“可见”复选框。 菜单的设计与应用-设计弹出菜单 制作:黄传禄

  38. 4 工具栏(ToolBar) 将控件Microsoft Windows Common Controls 6.0添加到工具箱,通过ToolBar、ImageList组合使用建立工具栏。 创建工具栏:步骤: 1.在ImageList控件中添加所需的图象; 2.在ToolBar控件中创建Button对象; 3.设置ToolBar控件的“属性页”; 4.在ButtonClick事件中用Select Case语句对各按钮进行相应的编程。 制作:黄传禄

  39. 在ImageList控件中添加图象:ImageList控件不单独使用,专门为其它控件提供图像库。在ImageList控件中添加图象:ImageList控件不单独使用,专门为其它控件提供图像库。 索引(Index) 关键字(Key) 在ToolBar中引用图象文件的扩展名为: .ico、.bmp、.gif、.jpg等 制作:黄传禄

  40. 在ToolBar控件中添加按钮 1.为工具栏连接图象 ToolBar与ImageList的连接 工具栏样式 制作:黄传禄

  41. 2.为工具栏增加按钮 索引(Index):每个按钮的数字编号 关键字(Key)每个按钮的标识名 ButtonClick事件中引用; 样式(Style),共6种 0 —命令按钮 1 —复选按钮 2 —单选按钮 3 —固定宽度分隔符 4 —分隔符 5 —按钮菜单 图象(Image) ImageList对象中的图象,值可以是Key或Index 制作:黄传禄

  42. 响应ToolBar控件事件 • ToolBar控件常用的事件有两个: • ButtonClick和ButtonMenuClick。 • 前者对按钮样式为0-2,后者对样式为5的菜单按钮。 • 用索引Index确定按钮 • 用关键字Key确定按钮 制作:黄传禄

  43. Private Sub Toolbar1_ButtonClick(Byval Button As ComctlLib.Button) • Select Case Button.Index • Case 1 • FileNewProc • Case 2 • FileOpenProc • …… • End Select • End Sub 注意: 第1个按钮的Index值为1,用Index还是用Key比较,Key 可读性好,可维护性好。 • Select Case Button.Key • Case "TNew" • FileNewProc • Case "TOpen" • FileOpenProc • ..... • End Select 制作:黄传禄

  44. 例:为例2的简易编辑器添加工具栏,并实现相应功能(单击工具栏中的按钮和使用相应菜单命令实现一样的功能)例:为例2的简易编辑器添加工具栏,并实现相应功能(单击工具栏中的按钮和使用相应菜单命令实现一样的功能) 界面如下所示: 制作:黄传禄

  45. 主要代码分析与演示: • Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) • Select Case Button.Key • Case "delete" • mnufilecls_Click • Case "color" • mnuEditColor_Click • Case "help" • mnufileAboat_Click • End Select • End Sub 制作:黄传禄

  46. 状态栏 ( StatusBar ) 状态栏显示系统信息和对用户的提示,如:系统日期、软件版本、光标的当前位置、键盘的状态等。一般在窗口的底部。 显示的文本 样式 制作:黄传禄

  47. 创建状态栏的基本步骤: 1.在窗体上添加一个StatusBar控件; 2.设置StatusBar控件的属性; 3.编写代码。 可以在应用程序中动态修改状态栏的属性,如添加、删除窗格,修改窗格的显示内容等。 制作:黄传禄

  48. 例:为上例的简易编辑器添加状态栏,并在状态栏中显示相关信息例:为上例的简易编辑器添加状态栏,并在状态栏中显示相关信息 界面如下所示: 制作:黄传禄

  49. 代码分析与演示: Private Sub Timer1_Timer() If StatusBar1.Panels(3).Text <> Str(Time) Then StatusBar1.Panels(3).Text = Time End If End Sub 制作:黄传禄

  50. 本章小结 本章主要介绍了应用软件开发过程中涉及到的界面设计,包括窗体、多窗体、 MDI窗体的设计的方法,菜单、工具栏和状态栏的设计. 1.窗体是放置其他所有控件的容器,任何一个标准.EXE类型的VB应用程序至少有一个窗体 2.多重窗体的设计与应用 3.菜单的设计与应用 4.工具栏和状态栏 习题讲解(p137-p138) 制作:黄传禄

More Related