Visual Basic 程序设计教程
第十二讲 VB界面设计(1)
本章教学内容 6.1 通用对话框 6.2 菜单 6.3 多重窗体
本讲教学内容 介绍VB的通用对话框CommonDialog控件、菜单编辑器。
6.1 通用对话框(CommonDialog) 一、 通用对话框概述 1.在图形用户界面中,对话框是用户与程序进行交互的主要途径。VB的通用对话框CommonDialog控件就是提供了基于Windows的标准对话框。 2. CommonDialog控件不是VB的内部控件,它是ActiveX控件。使用时选择“工程”菜单的“部件”命令,来打开“部件”对话框。在其中选择“Microsoft Common Dialog Control 6.0”选项,将CommonDialog控件添加到工具箱。
3. VB通用对话框可以打开的Windows标准对话框界面有:“打开”对话框,“另存为”对话框,“颜色”对话框,“字体” 对话框,“打印” 对话框和“帮助” 对话框。
4. 在使用通用对话框控件打开标准对话框时,必须对它的一个Action属性进行设置或调用该控件的Show方法,那样才能真正地打开标准对话框中某一种类型的对话框。 打开对话框 ShowOpen 1 另存为对话框 ShowSave 2 颜色对话框 ShowColor 3 字体对话框 ShowFont 4 打印 对话框 ShowPrint 5 帮助 对话框 ShowHelp 6
5. 在VB通用对话框的“取消”按钮,单击时,表示用户取消当前操作。在取消当前操作时,CancelError属性可以设置按“取消”按钮时是否产生错误信息。 当CancelError属性为False时,单击该按钮不产生错误信息; 当CancelError属性为True时,单击该按钮时通用对话框会自动将错误对象Err.Number设置为32755(cdlCancel),供程序判断。
二、“打开”对话框 当在程序中把Action属性值设置为1时或调用了ShowOpen方法,就可以打开通用对话框的“打开”对话框。在“打开”对话框中,可以翻阅计算机的整个目录结构,查找所需要的文件。但要真正实现文件的打开需要设置几个必要的属性。
Filter FileName InitDir FilterIndex
2. 常用属性 (1) FileName(文件名属性) 该属性值为字符串,用于设置和得到用户所选的文件名(包括路径名)。 (2) FileTitle(文件名属性) 该属性设计时无效,在程序中为只读,用于返回文件名。它与FileName属性不同,不包含路径
(3) InitDir(初始化路径属性) 该属性用于指定初始的目录,或返回用户选择的文件目录。如果此属性没有被指定,则使用当前目录。 (4) Filter(过滤器属性) 该属性设置对话框的文件类型列表框中的过滤器。通过设定过滤器指定在文件类型列表框中显示的文件类型。 其格式为:文件说明|文件类型 例如:如果文件类型列表框中要显示Word文档、文本文件和所有文件三种文件类型。
其格式为: Word文档|*.Doc|文本文件|*.Txt|所有文件|*.* (5) FilterIndex(过滤器索引属性) 当指定一个以上的过滤器时,需使用该属性确定哪一个作为默认过滤器显示,默认值为1。 【例6-1】设计一个应用程序,界面如下图1所示。本例中要求对“打开文件”按钮进行编程。该程序功能为:在打开对话框中选择一个文本文件,将该文本文件的路径和名称显示在文本框中。
设计步骤: ①新建一个工程,设置窗体的Caption属性为“通用对话框学习”。 ②在窗体上添加4个命令按钮、1个文本框和一个通用对话框。按图6.2所示设置文本框和命令按钮的属性,并将命令按钮的Name属性依次改为“CmdOpen”、“CmdColor”、“CmdFont”和“CmdHelp”。
③编写“打开文件”按钮的事件过程代码。 Private Sub CmdOpen_Click() CommonDialog1.InitDir = "C:\WinNt" CommonDialog1.Filter = "文本文件*.txt|*.txt" CommonDialog1.Action = 1 Text1.Text = CommonDialog1.FileName End Sub
④运行该应用程序,单击“文件打开”命令按钮,出现如图2所示“打开”对话框,选择一个文本文件名,按“确定”按钮出现如图3所示窗体。
三、“另存为”对话框 1. 特点 当在程序中把Action属性值设置为2时或调用了ShowSave方法,就可以打开通用对话框的“另存为”对话框。在“另存为”对话框中,可以翻阅计算机的整个目录结构,查找所需要的信息。 2. 常用属性 常用属性基本上与“打开”对话框相似,有一个DefaultExt属性是“另存为”对话框所特有的,它表示所存文件的默认扩展名。
四、“颜色”对话框 1. 特点 当在程序中把Action属性值设置为3时或调用了ShowColor方法,就可以打开通用对话框的“颜色”对话框。在“颜色”对话框的调色板中提供了基本颜色,还提供了用户的自定义颜色,即用户可以自己调色。 2. 常用属性 “颜色”对话框的常用属性是Color属性,当用户在调色板中选定颜色后,该颜色值赋给Color属性。
【例6-2】编写例6-1应用程序中“背景颜色”按钮程序代码。程序功能要求为:改变文本框的背景颜色。 设计步骤: ①在例6-1代码窗口中添加“背景颜色”按钮程序代码 Private Sub CmdColor_Click() CommonDialog1.ShowColor Text1.BackColor = CommonDialog1.Color End Sub ②运行该应用程序,单击“背景颜色”命令按钮,出现如上图所示“颜色”对话框,选择一种颜色,按“确定”按钮,文本框背景颜色即发生改变。
五、“字体”对话框 1. 特点 当在程序中把Action属性值设置为4时或调用了ShowFont方法,就可以打开通用对话框的“字体”对话框。在“字体”对话框中,拥有可供用户选择的字体。 需要注意的是,在使用“字体”对话框之前,必须设置Flags属性。假如没有设置Flags属性值,则使用“字体”对话框时会显示错误提示。
2. Flags属性 属性 值 说明 CdlCFScreenFonts 1 屏幕字体 CdlCFPrinterFonts 2 打印机字体 CdlCFBoth 3 两者皆有 cdlCFEffects 100 出现删除线、下划线、颜色元素
【例6-3】编写例6-1应用程序中“修改字体”按钮程序代码。程序功能要求为:改变文本框的字体、字号。 设计步骤: ①在例6-1代码窗口中添加“修改字体”按钮程序代码。
Private Sub CmdFont_Click() CommonDialog1.Flags = cdlCFEffects Or cdlCFBoth CommonDialog1.ShowFont Text1.FontName = CommonDialog1. FontName Text1.FontBold = CommonDialog1.FontBold Text1.FontItalic = CommonDialog1.FontItalic Text1.FontSize = CommonDialog1.FontSize Text1.FontUnderline = CommonDialog1.FontUnderline Text1.FontStrikethru = CommonDialog1.FontStrikethru Text1.ForeColor = CommonDialog1.Color End Sub
六、“打印”对话框 当在程序中把Action属性值设置为5时或调用了ShowPrinter方法,就可以打开通用对话框的“打印”对话框,其界面如图所示。
需要注意的是,“打印”对话框不能直接处理打印任务,它仅是一个供用户选择打印参数的界面,所选参数存于各属性中,再由编程来处理打印任务。属性如下表所示。 说明 Copies 指定打印份数 FromPage 打印起始页号 ToPage 打印终止页号
七、“帮助”对话框 当在程序中把Action属性值设置为6时或调用了ShowHelp方法,就可以打开通用对话框的“帮助”对话框。 “帮助”对话框用于制作应用程序的联机帮助,它可将已创建的帮助文件取出,并与界面连接起来,达到显示并检索帮助信息的目的。
在帮助窗口中显示由该关键字指定的帮助信息 2. “帮助”对话框属性 属性 说明 HelpCommand 返回或设置所需要的联机帮助类型 HelpFile 指定帮助文件的路径及文件名 HelpKey 在帮助窗口中显示由该关键字指定的帮助信息
【例6-4】 编写例6-1应用程序中“帮助”按钮程序代码,要求打开“智能ABC”帮助信息。 设计步骤: ①在例6-1代码窗口添加“帮助”按钮程序代码。 Private Sub CmdHelp_Click() CommonDialog1.HelpCommand = cdlHelpContents CommonDialog1.HelpFile = "c:\windows\system32\winabc.hlp" CommonDialog1.ShowHelp End Sub
②运行该应用程序,单击“帮助”命令按钮,出现如图所示“帮助”对话框。
6.2 菜单 一、 菜单设计 1.下拉式菜单系统的组成结构 主菜单名 快捷键 热键 下级子菜单标记 主菜单条 分隔线 菜单项 子菜单名
2.建立菜单可以通过“菜单编辑器”窗口来完成。选择“工具”菜单的“菜单编辑器”命令,即可打开如图所示的“菜单编辑器”窗口。 菜单项属性 编辑区 菜单列表框
3. 菜单控件属性区 名称:用于输入菜单控件的名字,该名字在程序代码中引用菜单控件。控件名是标识符,它不会出现在菜单中。 标题:用于输入菜单标题及各菜单项的标题,同时还可以在菜单中创建分隔条。 索引:用于在创建菜单控件数组时作为索引。 快捷键:允许为每个命令选定快捷键。 复选:选择该项时,可将一个复选框标志放置在菜单上。(它只对子菜单项起作用) 有效及可见:
4. 编辑区(共有7个按钮) 左、右箭头:用来产生和消除内缩符号,即产生或消除子菜单。 上、下箭头:每次单击都把选定的菜单项在同级菜单内向上、下移动一个位置。 下一个:将选定移动到下一行。 插入:在列表框的当前行上方插入新的菜单项。 删除:删除当前选定的菜单项。
5. 菜单控件列表框区 (1) 列表框区是用来列出当前窗体的所有菜单控件 (2) 当在标题文本框中键入一个菜单项时,该项也会出现在菜单控件列表框中。 (3) 在列表框中选取一个已存在的菜单控件,则可以编辑该控件的属性。 (4) 菜单控件在列表框中的位置决定了该控件是菜单标题、菜单项、子菜单标题还是子菜单项。
6. 菜单项的控制 (1) 有效性控制 菜单项的有效性可以通过菜单编辑器中的“有效”按钮控制,也可以在程序代码中用菜单项的Enabled属性来改变。 (2) 菜单项标记 菜单项的标记“√”,可以通过菜单编辑器中的“复选”按钮控制,也可以在程序代码中用菜单项的Checked属性来设置。
(3) 键盘选择 ① 键盘选择即用键盘选取菜单。 ② 用键盘选取菜单通常用两种方法:即快捷键和访问键。 ③ 设置访问键,可在菜单标题中的一个字母前插入&符号。 例如:&File ④ 按上面格式定义菜单项之后,在程序运行时,F下面加上一个下划线。按Alt+F即可选取该菜单项, ⑤ 访问键只能是一个字母。
【例6-5】设计一个文本编辑应用程序,界面如图所示。其中,“输入信息”菜单中有两个子菜单“输入”和“退出”; “显示信息”菜单中有两个子菜单“显示”和“清除”; “格式”菜单中有5个子菜单“正常”、“粗体”、“斜体”、“下划线”和“字号20”。
设计步骤: ①新建一个工程,设置窗体的Caption属性为“文本编辑器”。 ②在窗体上添加1个文本框,如上图所示。 ③选择“工具”菜单中的“菜单编辑器”命令,打开“菜单编辑器”对话框。 ④在“菜单编辑器”中输入如下表所示菜单项属性值
标题 名称 输入信息 InpInfo 格式 Format 输入 Input 正常 Normal 退出 Exit 粗体 Bold 显示信息 DisInfo 斜体 Italic 显示 Display 下划线 Under 清除 Clean 字号20 Font20
菜单项属性设置后“菜单编辑器”对话框如图所示。
⑤设置窗体变量inptext:打开代码窗口,在代码窗口顶部输入如下语句: Dim inptext As String ⑥编写“输入信息”菜单中各子菜单事件过程代码。 Private Sub input_Click() inpt = InputBox("请输入一段文字", "输入对话框") inptext = inptext & inpt End Sub Private Sub exit_Click() End
⑦编写“显示信息”菜单中各子菜单的事件过程代码。 Private Sub display_Click() Text1.Text = inptext End Sub Private Sub clean_Click() Text1.Text = ""
⑧编写“格式”菜单中各子菜单的事件过程代码。 Private Sub normal_Click() Text1.FontBold = False Text1.FontItalic = False Text1.FontUnderline = False Text1.FontSize = 10 End Sub Private Sub bold_Click() Text1.FontBold = True
Private Sub italic_Click() Text1.FontItalic = True End Sub Private Sub under_Click() Text1.FontUnderline = True Private Sub font20_Click() Text1.FontSize = 20
【例6-6】设计一个计算器应用程序,界面如图。其中,“文件”菜单中有两个子菜单“运算”和“退出”; 在“运算”子菜单中又有四个下拉子菜单,分别为:“+”、“-”、 “×”和“÷”。
①新建一个工程,在窗体中添加三个文本框和三个标签框,设置窗体的Caption属性为“计算器”,其界面如上图所示。 设计步骤: ①新建一个工程,在窗体中添加三个文本框和三个标签框,设置窗体的Caption属性为“计算器”,其界面如上图所示。 ②设置文本框的Text属性和标签框的Caption属性为空。选择“工具”菜单的“菜单编辑器”命令,打开“菜单编辑器”,并输入如表所示菜单项属性值: 标题 名称 文件(&F) File × Mul 运算 Calc ÷ Div + Add - Aa - Sub 退出 Bold Bb
菜单项属性设置后“菜单编辑器”对话框如图所示。
③各菜单事件过程代码 Private Sub Add_Click() ‘ 加法菜单事件过程 Text3 = Val(Text1) + Val(Text2) Label1 = "+" Label2 = "=" Label3 = "加法运算" End Sub
Private Sub Sub_Click() ‘ 减法菜单事件过程 Text3 = Val(Text1) - Val(Text2) Label1 = "-" Label2 = "=" Label3 = "减法运算" End Sub
Private Sub Mul_Click() ‘ 乘法菜单事件过程 Text3 = Val(Text1) * Val(Text2) Label1 = "×" Label2 = "=" Label3 = "乘法运算" End Sub
Private Sub Div_Click() If Val(Text2) = 0 Then MsgBox "除数不能为零,请重新输入!", 16, "警告框" Text2 = "" Text2.SetFocus Else Text3 = Val(Text1) / Val(Text2) Label1 = "÷" Label2 = "=" Label3 = "除法运算" End If End Sub
Private Sub quit_Click() End End Sub ④单击“启动”按钮运行应用程序。在Text1文本框中输入:25 ,在Text2文本框中输入:4 ,单击“×”菜单,屏幕显示如图所示。
二、 弹出菜单设计 1. 弹出菜单的特点 弹出菜单是独立于窗体菜单而显示在窗体上的菜单,其显示的位置取决于单击鼠标时指针的位置。 2. 创建弹出菜单分为两步: ①建立弹出菜单 建立弹出菜单与建立一般菜单相同,也使用菜单编辑器。需要注意的是可以设置弹出菜单的顶层菜单(主菜单项)为可见或不可见。
②设置弹出菜单显示方式 VB提供了PopupMenu方法来显示弹出菜单。PopupMenu方法的使用形式: [对象.] PopupMenu 菜单名,标志,x,y 其中: 标志:当标志为0时,弹出菜单的顶只能对鼠标左键起反应;当标志为1时,弹出菜单的顶只能对鼠标左键和右键都起反应;当标志为2时PopupMenu方法只能用在MouseDown事件过程。
【例6-7】设置示例6-6中的“运算”子菜单为弹出菜单 设计步骤: ①编写设置“运算”弹出菜单的事件过程代码。 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu Calc, vbPopupMenuLeftAlign End If End Sub
②单击“启动”按钮运行应用程序。在Text1文本框中输入:25,在Text2文本框中输入4。 ③右单击计算器窗体,出现弹出菜单,如图所示。单击“×”菜单,观察运算结果。