370 likes | 553 Vues
界 面 设 计. 第 8 章. 本章要点: Visual Basic 中的菜单设计 Visual Basic 中的 对话框设计. 8.1 Visual Basic 中的菜单设计. Windows 环境下几乎所有的应用软件都通过菜单实现各种操作。菜单将应用程序的各种操作分组显示在界面上,用户可以方便地从菜单中选择执行各种功能。. 两种基本菜单类型: 下拉式菜单 弹出式菜单. 子 菜单. 主菜单标题. 主菜单栏. 子 菜单. 菜单命令. 分隔条. 1. 下拉式菜单的结构. 8.1.1 下拉式菜单. 访问键. 快捷键. 顶级菜单.
E N D
界 面 设 计 第8章 本章要点: • Visual Basic中的菜单设计 • Visual Basic中的对话框设计
8.1 Visual Basic中的菜单设计 • Windows环境下几乎所有的应用软件都通过菜单实现各种操作。菜单将应用程序的各种操作分组显示在界面上,用户可以方便地从菜单中选择执行各种功能。 • 两种基本菜单类型: • 下拉式菜单 • 弹出式菜单
子 菜单 主菜单标题 主菜单栏 子 菜单 菜单命令 分隔条 1. 下拉式菜单的结构 8.1.1 下拉式菜单 访问键 快捷键 顶级菜单
2. 菜单编辑器 • 菜单项: 看成控件,具有其属性、事件、方法。 • 菜单项也称为菜单控件。 • 菜单设计: 通过“菜单编辑器”完成。 • 首先使窗体成为当前窗体 • 使用以下方法打开菜单编辑器: • 执行“工具”菜单下的“菜单编辑器”命令 • 单击标准工具栏的“菜单编辑器”按钮 • 从窗体快捷菜单中选择“菜单编辑器”命令 • 菜单编辑器结构: 属性区、编辑区、菜单列表区
Caption 属性区 Name Index Shortcut 编辑区 菜单列表区 Checked Enabled Visible WindowList(MDI) HelpContextID NegotiatePosition 注: 标题框中键入“-”和“&”符号的作用。 不能给顶级菜单项加快捷键。
2.下拉式菜单的设计 • 例8.1:设计一个可以改变文本框中文字的字体及颜色的菜单,字体有黑体、宋体、楷体,颜色有红色、黄色、蓝色。
进入菜单编辑器,按下表输入菜单项各项数据。进入菜单编辑器,按下表输入菜单项各项数据。
在菜单编辑器中,可以按左右箭头、上下箭头调整菜单的级别和顺序,完成编辑后菜单编辑器界面如图所示。在菜单编辑器中,可以按左右箭头、上下箭头调整菜单的级别和顺序,完成编辑后菜单编辑器界面如图所示。
完成菜单的设计后,在窗体上画一个文本框,用于输入要设置字体和颜色的文字,然后在窗体上单击每一个菜单项,输入相应的Click事件代码完成菜单的设计后,在窗体上画一个文本框,用于输入要设置字体和颜色的文字,然后在窗体上单击每一个菜单项,输入相应的Click事件代码
8.1.2 弹出式菜单 • 弹出式菜单:上下文菜单、快捷菜单、右键菜单 • 为某对象设计弹出式菜单的步骤: • 1) 在菜单编辑器中设计各菜单项,然后将顶级菜单设置为不可见。 • 2) 在对象的MouseDown事件过程中编写代码,用以下的PopupMenu方法显示弹出式菜单: • [<窗体名>.]PopupMenu <菜单名> • ,flags[,x[,y[,boldcommand]]]] • 功能: 在当前鼠标位置或指定的坐标位置显示弹出式菜单。
参数: • <窗体名>:指菜单所在的位置,如果省略,则默认为是当前窗体。 • <菜单名>:指在菜单编辑器中设计的菜单项(至少有一个子菜单)的名称。 • Flags:可选项,可以是一个数值或常量,用于指定弹出式菜单的位置和行为,取值见P199表10-3和表10-4。如果要同时指定位置和行为时,则将两个参数值用Or连接,如: 4 Or 2 • x、y:指定显示弹出式菜单的x坐标和y坐标。省略时为鼠标坐标。 • boldcommand:指定弹出式菜单中要显示为黑体的菜单控件的名称。如果该省略参数,则弹出式菜单中没有以黑体字出现的菜单项。
设计一个快捷菜单,其作用是改变文本框中的字体,包含“黑体”、“宋体”和“楷体”功能,右击窗体时弹出该快捷菜单。设计一个快捷菜单,其作用是改变文本框中的字体,包含“黑体”、“宋体”和“楷体”功能,右击窗体时弹出该快捷菜单。 • 操作步骤: • (1)进入菜单编辑器,输入顶层菜单,标题设定为“字体”,名称为“zt”。其实该标题和名称可任意设定,因为它在快捷菜单弹出时不显示。 • (2)在菜单编辑器中将“字体”菜单标题的“可见”框中的“√”取消(即不选中)。 • (3)单击“下一个”命令按钮,标题输入“黑体”,名称为“ht”,单击右箭头按钮,将“黑体”菜单项设置为“字体”菜单的下一级菜单。 • 参照步骤3完成“宋体”和“楷体”菜单项的设置。 • (4)在窗体上画一个文本框,用于输入要设置字体的文字。 • (5)进入代码窗口,输入下面设置字体的代码。
Private Sub ht_Click() • Text1.Font = "黑体" • End Sub • Private Sub kt_Click() • Text1.Font = "楷体_Gb2312" • End Sub • Private Sub st_Click() • Text1.Font = "宋体" • End Sub • (6)由于在窗体上单击鼠标右键时才会弹出快捷菜单,所以需要在窗体的MouseUp事件里编写对应的代码。进入代码窗口,输入以下代码: • Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) • If Button = 2 Then '若单击鼠标右键 • PopupMenu zt '弹出字体快捷菜单 • End If • End Sub
8.2 Visual Basic中的对话框设计 • 对话框: 特殊类型的窗体对象。 • 作用: 是用户和应用程序交互的主要途径。 • 建立方法: • 使用预定义对话框,即输入框、消息框。 • 定义对话框。 • 使用CommonDialog控件创建通用对话框。
8.2.1概述 • (1)预定义对话框:预定义对话框是系统已经设计好的对话框,它们可以通过程序执行具体的函数来被显示。在Visual Basic 6.0中,预定义对话框包含输入对话框(用InputBox函数来实现)和消息框(用MsgBox函数来实现)。 • (2)自定义对话框:自定义对话框实际是一个用户自行设计的,用来完成用户和系统对话的窗体。 • (3)通用对话框:通用对话框是一种控件,通过CommonDialog控件,利用它能够很容易地创建六种标准对话框:打开(Open),另存为(Save As),颜色(Color),字体(Font),打印机(Printer)和帮助(Help)对话框。
1 自定义对话框 • 设计步骤 : • 1) 添加窗体: 工程添加窗体。 • 2) 将窗体定义成对话框风格。 • 如:不能移动、改变尺寸、最大或最小化 • 例: BorderStyle设置为1—单边框,不能改变大小 • ControlBox设置为False—删除控制菜单框 • MaxButton设置为False—删除最大化按钮 • MinButton设置为False—删除最小化按钮 • 3) 在对话框上添加按钮,如“确定”与“取消”按钮。 • 4) 在对话框上添加其它控件。 • 5) 在适当的位置编写显示对话框的代码。
两种显示方式: 模式对话框与无模式对话框 。 • 显示模式对话框 • 窗体名.Show vbModal 或 窗体名.Show 1 例如: Form2.Show vbModal • 显示无模式对话框 • 窗体名.Show vbModeless 或 • 窗体名.Show 0 或 窗体名.Show 例如: Form2.Show vbModeless • 为确保对话框可以随其父窗体的最小化而最小化,随其父窗体的关闭而关闭,需要在Show方法中定义父窗体。 例如: Private Sub Command1_Click() Form2.Show vbModeless, Form1 End Sub
6) 编写实现对话框功能的的代码,如“确定”按钮和“取消”按钮的单击事件过程。不同的对话框所完成的功能不同,因此应根据实际要求编写代码 7) 编写从对话框退出的代码 例如: Unload Form2 或: Form2.Hide Unload语句把对话框从内存中删除,该对话框本身以及它的控件都从内存中卸载。而Hide方法只是通过设置对话框的Visible属性为False将其从视窗中删除。该对话框以及它的控件仍留在内存中。
在窗体上添加一个通用对话框和一个“字体”命令按钮,当单击“字体”按钮时,就会弹出一个“字体”的对话框,对窗体上文本框中的文字设置字体。在窗体上添加一个通用对话框和一个“字体”命令按钮,当单击“字体”按钮时,就会弹出一个“字体”的对话框,对窗体上文本框中的文字设置字体。 • 操作步骤: • (1) 把CommonDialog控件添加到工具箱中。然后在窗体上添加该控件,其默认名称为CommonDialog1。 • (2)在窗体上添加一个命令按钮Command1,其Caption属性为“字体”。 • (3) 在窗体上添加一个文本框按钮Text1,用于输入文字。 • (4)输入“字体”命令按钮Command1的Click事件过程代码: • Private Sub Command1_Click() • CommonDialog1.Flags = 1 '对话框列出系统支持的屏幕字体 • CommonDialog1.ShowFont '显示“字体”对话框 • Text1.Font = CommonDialog1.FontName '用户在“字体”对话框中设置的字体作为文本框的字体 • End Sub
运行程序,在文本框中输入文字,单击“字体”按钮,结果如下图所示。运行程序,在文本框中输入文字,单击“字体”按钮,结果如下图所示。
2 通用对话框控件 • 使用通用对话框控件(CommonDialog)可以创建多种标准对话框。设计步骤如下: • 1) 添加: 工程部件选择 • “Microsoft Common Dialog Controls 6.0” • 2) 在窗体的任意位置添加通用对话框控件。 • 3) 设置通用对话框控件的“属性页”。 • 4) 在代码中使用以下方法打开对话框 。 • ShowOpen: 显示“打开文件”对话框 • ShowSave: 显示“文件存储”对话框 • ShowColor: 显示“颜色”对话框 • ShowFont: 显示“字体”对话框 • ShowPrinter: 显示“打印”对话框 • ShowHelp: 显示“帮助”对话框
DialogTitle Flags DefaultExt FileName MaxFileSize InitDir Filter FilterIndex CancelError • 8.2.2文件对话框 • 属性页:
Image1 Command1 CommonDialog1 例如:使用打开文件对话框,在运行时打开一幅图像。 在窗体Form1上放置一个图像控件、一个通用对话框控件、一个命令按钮。 设计界面:
其中, CommonDialog1的属性页设置如下: 指文件名 All files|*.*|Bmp Files|*.bmp|Icon Files|*.ico
如果通过编写代码设置属性,可以在窗体的Load事件过程中编写以下代码:如果通过编写代码设置属性,可以在窗体的Load事件过程中编写以下代码: Private Sub Form_Load() CommonDialog1.DialogTitle = "请选择图像文件" CommonDialog1.InitDir = "C:\winnt" CommonDialog1.FileName = "Greenstone.bmp" CommonDialog1.Filter = "All Files|*.*|Bmp Files|*.bmp|Icon Files|*.ico" CommonDialog1.CancelError = True End Sub
“装入图像”按钮代码如下: Private Sub Command1_Click() CommonDialog1.ShowOpen Image1.Picture = _ LoadPicture(CommonDialog1.FileName) End Sub
在对话框中单击“取消”按钮的处理: • 不处理: 不设置“取消引发错误” • 处理: 设置“取消引发错误”,编写代码如下: • Private Sub Command1_Click() • On Error GoTo ErrHandler • CommonDialog1.ShowOpen • Image1.Picture = _ • LoadPicture(CommonDialog1.FileName) • Exit Sub • ErrHandler: • MsgBox "打开文件错误" • Exit Sub • End Sub 打开图像 取消
8.2.3其他对话框 颜色、字体对话框 属性页: 仅当标志属性设为8192时起作用 Min Max 颜色: Color 标志: Flags FontName FontSize 通常:257、258、259
8.3 多窗体程序设计与环境应用 • 简单Visual Basic应用程序通常只包括一个窗体,称为单窗体程序。在实际应用中,特别是对于较复杂的应用程序,单一窗体往往不能满足需要,必须通过多窗体( Multi-Form)来实现。在多窗体程序中,每个窗体可以有自己的界面和程序代码,完成不同的操作。 • 1.Load语句 • 2.Unload语句 • 3.Show方法 • 4.Hide方法
8.4 滚动条 • 在工具箱中,有水平滚动条图标和垂直滚动条图标。 • 这两种滚动条除了方向不同外,其功能和操作是一样的在滚动条两端各有一个滚动箭头,在滚动箭头之间有一个滚动块。滚动块从一端移至另一端时,其值在不断变化。垂直滚动条的最上端代表最小值,最下端代表最大值。
8.5 ActiveX控件 • 创建一个简单的ActiveX控件 • 操作步骤如下: • 1.新建ActiveX控件工程 • 2.设计ActiveX控件界面 • 3.为控件设计事件工程 • Private Sub Timer1_Timer() • Label1.Caption = Hour(Time) & "时" & Minute(Time) & "分" & Second(Time) & "秒" • End Sub • 程序中的Hour函数、Minute函数和Second函数用分别来显示当前时间的时、分、秒。
4.保存工程 • 选择“文件”菜单中的“保持工程”命令,系统先后弹出两个对话框,在对话框中系统给的默认文件名分别是:“电子表.ctl”与“ActiveX控件示例.vbp”。 • 5.测试“电子表”控件 • 现在测试一下刚做出的“电子表”控件。为了测试“电子表”控件,需要再添加一个“标准EXE”工程。
编译生成.ocx文件 • 选择把ActiveX控件工程(ActiveX控件示例)编译成.ocx文件,控件只有被编译成.ocx文件后才能被其他应用程序使用。 • 编译步骤如下: • (1)单击工程窗口中的“ActiveX控件示例”。 • (2)选择“文件”菜单中的“生成ActiveX控件示例.ocx”命令。 • 在弹出的“生成工程”对话框中保存文件到指定的文件夹,然后单击“确定”按钮,关闭该对话框。系统随即编译生成.ocx文件。
(3)控件编译完成后,可在其他的VB程序中使用该控件。(3)控件编译完成后,可在其他的VB程序中使用该控件。 • (4)选择“工程”菜单中的“部件”命令以打开“部件”对话框,在“部件”对话框中选中“ActiveX示例”后再单击“确定”按钮 。 • (5)“电子表”控件的图标出现在工具箱中,现在可以像使用其他控件一样使用“电子表”控件。
创建ActiveX控件的一般步骤。 • (1)建立一个ActiveX控件工程。 • (2)在一个类似Form的UserContorl对象上设计控件界面。在UserContorl对象上可以加入现有的各种控件。 • (3)编写程序代码。 • (4)为控件添加属性、事件和方法。 • (5)建立属性页。属性页并不是一个控件必须要有的,但是建立属性页有助于控件的使用。 • (6)测试控件。建立一个“标准EXE”测试工程来测试控件。 • (7)编译成.ocx文件发布。
本章小结 • 1. Visual Basic中的菜单设计 下拉式菜单、弹出式菜单 • 2. Visual Basic中的对话框设计 • 自定义对话框、通用对话框