第三章 用户界面设计
3.1 窗体对象 窗体是应用程序的设计场所,可以包括多个控件。窗体就像一个可调整大小的绘图板,可绘制多种对象,形成美观的用户界面。 3.1.1窗体的结构 3.1.2窗体的属性 通过修改窗体的属性可以改变窗体内在或外在的结构特征,控制窗体的外观。 [例3-1]设计一程序,程序进入运行状态后,自动将窗体的大小设置为屏幕大小的一半并使窗体居中显示,并且在窗体上装载一幅图片。点击窗体时窗体上的图片消失,窗体的背景色会随机发生变化。 3.1.3设置启动窗体
3.1.4 窗体的事件 1.鼠标事件 [例3-3]编写程序在窗体上画圆,要求按下shift键时以鼠标左键按下时的坐标点为圆心,以鼠标释放时的坐标与圆心点之间的距离为半径画圆。 2. 键盘事件 3. 系统事件 (1)Load 事件 (2) Unload事件 (3)Activate和Deactivate事件 (4)Initialize事件
3.2 标签与文本框 3.1.5窗体常用的方法 1. Cls方法 2. Move方法 3. Show方法和Hide方法 3.2.1 标签(Label) 标签控件的一般功能是显示文本信息。程序运行时,它显示的文字用户不能直接修改。 [例3-4]设计一程序,窗体上有两个标签框和一个命令按钮。程序运行时,点击命令按钮,标签框尺寸自动发生变化,以适应其需要显示的内容。
3.2.2 文本框(TextBox) 文本框(TextBox)是一种通用控件,可以由用户输入或显示文本信息。 [例3-5]编写一程序,由用户从键盘上输入两个数,然后求这两个数的和,并将结果显示出来。 [例3-6]设置密码。编写程序实现用户名和密码检验功能。如果用户输入的名字和密码正确,则进入欢迎界面,否则给出错误提示,并要求重新输入。
3.3 计时器 计时器(Timer)控件可以每隔一定的时间就产生一次Timer事件,可以根据计时器的这一特点控制某些操作,或用于计时。 [例3-7]利用计时器控件在窗体上设计一数字时钟。 [例3-8]一个简单计时器。按“开始”按钮,开始计时,按钮变为“继续”。按“暂停”按钮,停止计时,显示记录的时间数。在任何时候按“重置”按钮,时间读数都将重置为0。 [例3-9]为应用程序设计一界面,界面上的“欢迎参加水平考试”标题从右向左反复移动。
3.4 命令按钮、单选纽、复选框和框架 3.4.1 命令按钮 1. 使用命令按钮的Enabled属性。 [例3-10]设计一个倒计时程序,窗体上有一标签用于显示剩余时间,两个命令按钮用于控制倒计时。当单击命令按钮“开始计时”后,计时器开始计时,同时此命令按钮变成浅灰色,表示“失效”。若按“暂停计时”命令按钮,则计时器停止计时,此时“暂停计时”按钮失去作用,而“开始计时”按钮恢复原状,可以使用。
2.使用命令按钮的Default属性和Cancel属性。 [例3-11] 设计一个程序,窗体中有两个命令按钮和一个标签框。程序运行后若单击“确定(OK)”,或按回车键,则标签框中显示当天日期,单击“撤消(Esc)”命令按钮就结束程序运行。 3.4.2 单选按钮(OptionButton) [例3-12]设计一程序,用户界面由4个单选纽、1个标签和一个命令按钮组成。程序运行后,单击某个单选钮,就可以将它对应的内容(星期、日期、月份或年份)显示在标签框中。
3.4.3 复选框(CheckBox) [例3-13]设计一程序,通过复选框来控制用户界面上的文本框中文字的字体、字型、颜色和大小。 3.4.4 框架(Frame) [例3-14]重新设计例3-13的用户界面,用框架控件将9个单选按钮分为3组,一组用来改变文本框中文字的字体;一组用来改变字的大小;一组用来改变字的颜色。
3.5列表框、组合框和滚动条 3.5.1列表框 VB提供的列表框控件,可以列出若干选项供用户从中任意选择,并对其作某种处理。 [例3-15]编写一应用程序来判断任意选定的一个数是否是素数,程序运行时,在窗体上的列表框中列出了1000个整数,用户点击任意一个数,程序就判断该数是否是素数,并把判断结果显示在标签框中。 3.5.2 组合框 组合框实际上是将列表框和文本框的功能综合而成的,既可以像列表框一样让用户选择其中的选项,又能像文本框一样,由用户输入自己指定的内容。 [例3-16] “同构数”是指这样的整数:它恰好出现在其平方数的右端,例如5和6就是同构数。现要求编写一程序,由用户选择或输入一个两位或三位整数,程序能判别它是否是同构数。
3.5.3 滚动条 滚动条是一种常用来取代用户输入的控件,特别适用于不需要精确输入数据的场合。 1. Min、Max属性 2.Value属性 3.LargeChange属性 4. SmallChange属性 5.Change和Scroll事件 [例3-17]设计一应用程序,通过滚动条来改变用户界面上文本框中文字的大小和颜色。
3.6 图片框与图像框 3.6.1 图片框 图片框(PictureBox)控件可以用来显示图片、作为其它控件的容器、显示用图形方法输出的图形以及用Print方法输出的文本。 [例3-18]在窗体上添加一图片框Picture1和两个命令按钮,运行时,单击“显示”按钮,程序把一指定的图片装入图片框,并在图片框中输出一行文字。 3.6.2 图像框 图像框(Image)也可以用来装入图形文件,具体的使用方法与图片框类似。 注意图像框与图片框有一些不同之处。
3.7 图形控件与方法 VB提供了两种绘图方式:一是使用绘图控件如Line控件和Shape控件;二是使用绘图方法,如Line方法、Circle方法和Pset方法等。 3.7.1 绘图控件 VB的图形控件主要有两个,它们是画线控件Line和形状控件Shape。 [例3-19] 利用画线控件和形状控件设计一指针式秒表如图3-21所示。程序启动后,点击窗体上的“开始”按钮,表的指针开始转动,每秒动一下,一分钟转一圈。指针转动时,命令按钮的标题变为“暂停”,如果此时再点击命令按钮,指针停止转动。命令按钮的标题又变为“继续”,再点击,指针又开始转动。
3.7.2 图形的坐标系统 每一个图形操作(包括调整大小、移动和绘图),都要使用绘图区或容器的坐标系统。坐标系统是一个二维网格,可定义屏幕上、窗体中或其他容器中(如图片框或Printer对象)的位置。 任何容器的缺省坐标系统,都是由容器的左上角(0,0)坐标开始。
1.坐标单位 坐标单位即坐标的刻度,缺省的坐标系统采用twip为单位。下面的语句代码使窗体的坐标单位改为毫米: Scalemode = VbMillimeters 2.坐标方法 使用Scale方法也可以设置用户的坐标系统,其语法格式为 [<对象>.] Scale (x1,y1) - (x2,y2)
3.7.3 常用图形方法 1.Line方法 Line方法用于画直线和矩形,语法格式如下: 3.7.3 常用图形方法 1.Line方法 Line方法用于画直线和矩形,语法格式如下: [对象.] Line [Step] (x1, y1) [Step] (x2, y2), [color], [B][F] 2. Circle方法 Circle方法用于画圆、椭圆、圆弧和扇形,其语法格式如下: [<对象>.] Circle [Step] (x, y), radius, [color], [start], [end] [, aspect]
3. Pset方法 Pset方法用于在窗体或图片框的指定位置(x, y)上,按规定的颜色画点,其语法格式如下: [对象.] Pset [Step] (x, y), [color] [例3-20] 利用Pset方法或Line方法均可以画出任意曲线。下面用Pset方法在图片框中绘制阿基米德螺旋线,用Line方法画一正弦曲线。
3.8 公用对话框 “公共对话框”(Common Dialog)控件为用户提供了一组标准的系统对话框,可以使用它进行打开或保存文件、设置打印选项、选择各种颜色以及选择字体等的操作。另外还可以通过调用Windows帮助引擎来显示应用程序的帮助。 3.8.1 添加“公用对话框”控件
3.8.2使用“公共对话框” 公共对话框可以提供6种形式的对话框。在显示出公用对话框前,应通过设置Action属性或调用Show方法来选择。 1.使用保存文件对话框和打开文件对话框。 [例3-21]编写程序,使用保存文件对话框建立一个数据文件。然后再使用打开文件对话框打开该数据文件,并利用该文件的数据作图。 2. 使用颜色对话框和字体对话框 [例3-22]利用颜色对话框和字体对话框来改变界面上文本框中文字的颜色和字体。
3.9 控件数组 3.9.1控件数组的概念 如果在应用程序中用到一些类型相同且功能类似的控件,就可以这些相同的控件定义为一个数组来使用,这种数组就是为控件数组。 3.9.2 创建和使用控件数组 控件数组是通过设置对象的 Index 属性来创建的。一般情况下,每个控件的 Index 属性值为空,只要将控件的 Index 属性值设置为非空(比如0),则该控件就被定义成了一个控件数组 。
3.10 多文档窗体 [例3-23] 建立一个包含4个命令按钮的控件数组,单击每个命令按钮时,能分别显示直线、矩形、圆形或结束操作。 3.10 多文档窗体 3.10.1界面样式 Windows应用程序的用户界面样式主要有两种:一种是单文档界面(Single Document Interface, SDI),另一种是多文档界面(Multiple Document Interface,MDI)。 MDI是指一个窗体中能够建立多个子窗体,即允许用户同时访问多个文档,每个文档显示在不同的窗口中。
3.10.2 MDI窗体的创建 1. 建立有一个子窗体的MDI窗体。(有六个操作步骤 ) 3. 子窗体的排列 完成子窗体的排列操作,要使用MDIForml的Arrange方法,其语法格式为: MDIForml 名称 .Arrange 排列方式