《全套课件VisualBasic程序设计基础》由会员分享,可在线阅读,更多相关《全套课件VisualBasic程序设计基础(411页珍藏版)》请在金锄头文库上搜索。
1、第一章第一章VisualBasic概述概述1.了解了解VB6.0的功能特点的功能特点、集成环境。、集成环境。2.理解面向对象程序设计的几个概念。理解面向对象程序设计的几个概念。3.掌握掌握VB应用程序设计的步骤。应用程序设计的步骤。本章学习目的本章学习目的1.1VB6.0的概述的概述1.1.1VB6.0的特点和功能的特点和功能VisualBasic是由Microsoft公司于1991年推出的第一个可视化编程工具。它经历了3.0、4.0、5.0、6.0、V等版本,VB6.0是1999年推出的版本,其主要特点和功能如下: (1)面向对象的 编程 (2)可视化的编程方法(3)丰富的数据访问特性(4)
2、便于与其它应用程序集成(5)强大的Internet访问方法(6)真正的本机编译(7)完备的联机帮助功能VB6.0的版本从开发时间上区分,VB6.0有3.0、.0、.0、.0等版本;从使用的语言上区分,VB6.0有英文版和中文版;从功能上区分,VB6.0有种版本,可以满足不同的开发需求。(1)学习版(2)专业版(3)企业版1.1.2VB6.0的版本的版本1.2面向面向对象的程序象的程序设计和事件和事件驱动1.2.1面向对象程序设计的方法面向对象程序设计的方法 1.2.2对象和类对象和类1.2.3对象的属性、方法和事件对象的属性、方法和事件 (1)属性:)属性:对象的性质或是描述对象的数据。对象的
3、性质或是描述对象的数据。 (2)方法:)方法:让对象实施一个动作或执行一项任务的途径,即方法告诉让对象实施一个动作或执行一项任务的途径,即方法告诉对象应处理的事情。对象应处理的事情。 (3)事件和事件过程:)事件和事件过程:事件是一种预先定义好的特定动作,由用户或事件是一种预先定义好的特定动作,由用户或系统激活;与事件相关的代码叫系统激活;与事件相关的代码叫“事件过程事件过程”。 (4)事件驱动应用程序的工作方式:)事件驱动应用程序的工作方式:程序运行时,当用户或系统触发程序运行时,当用户或系统触发某个事件(如单击),则会执行该事件过程代码。这种程序运行方式称为某个事件(如单击),则会执行该事
4、件过程代码。这种程序运行方式称为“事件驱动事件驱动”。 1.3VB6.0的安装和启动1.3.1VB6.0的运行环境的运行环境1.3.2VB6.0的安装的安装1.3.2VB6.0的启动的启动1.4VB6.0的集成环境的集成环境菜单栏工具栏代码窗口工具箱窗体窗口立即窗口监视窗口工程窗口属性窗口布局窗口1.4.1集成环境的工作栏集成环境的工作栏一、标题栏 在集成开发环境窗口中,最上面一行为标题栏。启动VB6.0时,标题栏显示的标题为“工程1-MicrosoftVisualBasic设计”。二、菜单栏 菜单栏包含管理VB6.0系统和程序开发工程中需要的各种菜单命令。如1-1图所示:三、工具栏 利用工具
5、栏可以迅速地访问常用的菜单命令,如图1-2所示。1.4.2集成环境中的窗口集成环境中的窗口1.窗体窗口窗体窗口窗体设计窗口是屏幕中央的主窗口,它可以作为窗体设计窗口是屏幕中央的主窗口,它可以作为自定义窗口用来设计应用程序的界面。用户可以在窗自定义窗口用来设计应用程序的界面。用户可以在窗体中添加控件、图形和图片来创建所希望的外观。每体中添加控件、图形和图片来创建所希望的外观。每个窗口必须有一个的窗体名字,建立窗体时缺省名为个窗口必须有一个的窗体名字,建立窗体时缺省名为Form1,Form2,.。应注意窗体名即应注意窗体名即Name属性和窗体属性和窗体文件名的区别。文件名的区别。窗体设计窗口窗体名
6、窗体文件名2.属性窗口属性窗口属性是指对象的特征,如大小、标题或颜色等数据。在属性是指对象的特征,如大小、标题或颜色等数据。在VisualBasic6.0设计设计模式中,属性窗口列出了当前选定窗体或控件的属性的值,用户可以对这些属模式中,属性窗口列出了当前选定窗体或控件的属性的值,用户可以对这些属性值进行设置。性值进行设置。3.工程窗口工程窗口工程是指用于创建一个应用程序的文件工程是指用于创建一个应用程序的文件的集合。工程资源管理器列出了当前工程的集合。工程资源管理器列出了当前工程中的窗体和模块中的窗体和模块4.代码窗口代码窗口 代码窗口专门用于程序代码设计,可显示和编辑程序的代码。5.立即窗
7、口立即窗口用于执行简单的VB语句,达到测试程序的目的。6.窗体布局窗口窗体布局窗口窗体布局窗口显示在屏幕右下角。用户可使用表示屏幕的小图像来布置应用程序中各窗体的位置。这个窗口在多窗体应用程序中很有用,因为这可以指定每个窗体相对于主窗体的位置。7.对象浏览窗口对象浏览窗口8.控件箱控件箱工具箱提供一组工具,用于设计工具箱提供一组工具,用于设计时在窗体中放置控件生成应用程序的时在窗体中放置控件生成应用程序的用户接口。系统启动后缺省的用户接口。系统启动后缺省的General工具箱就会出现在屏幕左边,工具箱就会出现在屏幕左边,上面共有上面共有21个常用个常用“部件部件”。1.5工程管理1.5.1工程
8、的组成及工程组1.5.2工程的创建、打开和保存15.3文件的添加、删除和保存1.5.4工作环境的设置1.6一个简单应用程序的设计 一般来说,创建VB应用程序的基本步骤如下:(1)设计应用程序界面(2)设置对象的属性(3)编写程序代码(4)调试运行程序(5)保存和编译应用程序例题:以一个简单的应用程序说明程序设计过程。程序运行时,在窗体上显示滚动字幕“欢迎进入奇妙的VB世界!”。设计步骤如下:1新建一个工程新建一个工程启动VB,在“新建工程”对话框的“新建”选项卡下,选择“标准EXE”类型工程,单击“打开”命令按钮,即可创建一个缺省名为“工程1”并包含一个窗体的工程。2界面界面设置置程序设计界面
9、如图116所示。在窗体上放置一个标签控件和一个时钟控件。表表13对象的属性表对象的属性表对象名称属性名称属性值Form1(窗体)名称CaptionBackcolorWindowstateForm1我的第一个程序H00FFC0C00Timer1(时钟)EnabledIntervalTrue100Label1(标签)CaptionBackStyleAutoSizeFontForcolor“欢迎进入奇妙地VB世界!”0(透明)True隶书、粗体、四号H008080FF3属性属性设置置程序中各对象地属性如表13所示:4编写代写代码 双击窗体或窗体上任意控件,打开代码窗口,在“对象列表框”中选中“Tim
10、er1”,在“过程列表框”中选中时钟控件唯一的事件“Timer”后,在“SubEnd Sub”之间输入如下代码:Private Sub Timer1_Timer()Label1.Move Label1.Left-20 用Move方法移动标签判断是否到达窗体左边缘If Label1.Left+Label1.Width 启动”选项,或单击工具栏上的“启动”工具按钮,运行程序。6保存工程并生成保存工程并生成EXE文件文件 第第2章章VisualBasic语言基础语言基础了解编写VB6.0程序代码的书写规则理解VB6.0中的各种数据类型和常用函数掌握编写VB6.0程序代码的基本语掌握编程中数组和过程的
11、用法本章学习目标本章学习目标2.1程序的程序的书写写规则1VB6.0代码中不区分字母的大小写。代码中不区分字母的大小写。2在同一行上可以书写多条语句,语句间要用冒号在同一行上可以书写多条语句,语句间要用冒号“:”分隔。分隔。3若若一一个个语语句句行行不不能能写写下下全全部部语语句句,或或在在特特别别需需要要时时,可可以以换换行行。换行时需在本行后加入续行符,换行时需在本行后加入续行符,1个空格加下划线个空格加下划线“_”。4一行最多允许一行最多允许255个字符。个字符。5注释以注释以Rem开头,也可以使用单引号开头,也可以使用单引号“”,注释内容可直接出现,注释内容可直接出现在语句的后面。在语
12、句的后面。6在程序转向时需用到标号,标号是以字母开始而以冒号结束的字在程序转向时需用到标号,标号是以字母开始而以冒号结束的字符串。符串。7.VB6.0VB6.0中的标识符中的标识符: :用来标记变量名、函数名和类型名。以字母或下用来标记变量名、函数名和类型名。以字母或下划线开始,后跟字母、数字或下划线组成的字符串(中间不许有空划线开始,后跟字母、数字或下划线组成的字符串(中间不许有空格)。格)。2.2数据数据类型型一、标准数据类型一、标准数据类型二、自定义数据类型二、自定义数据类型在模块级别中使用,用于定义包含一个或多个元素的用户自定义的数据类型。在模块级别中使用,用于定义包含一个或多个元素的
13、用户自定义的数据类型。使用形式:使用形式:Type自定义类型名自定义类型名元素名元素名(下标下标)As类型名类型名元素名元素名(下标下标)As类型名类型名.EndType说明说明:(1) Type(1) TypeEnd Type End Type 关键字;关键字;(2) (2) 元素名元素名 表示自定义类型中的一个成员;表示自定义类型中的一个成员;(3) (3) 下标下标 表示该成员是一个数组;表示该成员是一个数组;(4) (4) 类型名类型名 表示该成员的标准数据类型。表示该成员的标准数据类型。例如例如:对于一个学生的对于一个学生的“学号学号”、“姓名姓名”、“性别性别”、“年龄年龄”、“入
14、学成入学成绩绩”等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类型(如型(如Student类型)。类型)。TypeStudentXhAsStringXmAsStringXbAsStringNlAsIntegerScoreAsSingleEndType2.3变量、常量和函数变量、常量和函数2.3.1变量变量一、变量的命名规则一、变量的命名规则(1) 必须以字母开头,由字母、汉字、数字或下划线组成。例如xyz、h_12等变量名都是正确的;而5f、*123是非法的。(2) 不能在变量名中出现句点“.”、空格或者嵌入字
15、符:!、#、$、%、&(3) 长度不得超过255个字符。(4) 不能使用VB的关键字。关键字是语言的组成部分,其中包括预定义语句(例如If、For等)、函数(Abs、Sqr等)和操作符(Or、Mod等)。注意:在同一个范围(范围是可以引用变量的域,如一个过程、一个窗体等)内,变量名必须是唯一的。二、变量的声明二、变量的声明1.用用Dim语句显式声明变量语句显式声明变量形式:形式:Dim变量名变量名AS类型类型Dim变量名变量名类型符类型符例:例:DimabAsinteger,sumAssingle等价于等价于Dimab%,sum!2.隐式声明隐式声明VisualBasic允许用户在编写应用程序
16、时,不声明变量而直接使用,系统临允许用户在编写应用程序时,不声明变量而直接使用,系统临时为新变量分配存储空间并使用,这就是隐式声明。所有隐式声明的变量都是时为新变量分配存储空间并使用,这就是隐式声明。所有隐式声明的变量都是Variant数据类型数据类型。VisualBasic根据程序中赋予变量的值来自动调整变量的类型。根据程序中赋予变量的值来自动调整变量的类型。例如:例如:下面是一个很简单的程序,其使用的变量a, b, Total都没有事先定义。Private Sub Form_Click()Total = 0a = 10: b = 20Total = a + bPrint “Total=;
17、TotalEnd Sub3强制显式声明强制显式声明OptionExplicit语句语句良良好好的的编编程程习习惯惯都都应应该该是是“先先声声明明变变量量,后后使使用用变变量量”,这这样样做做可可以以提提高高程程序序的的效效率率,同同时时也也使使程程序序易易于于调调试试。VisualBasic中中可可以以强强制制显显式式声声明明,可可以以在在窗窗体体模模块、标准模块和类模块的通用声明段中加入语句块、标准模块和类模块的通用声明段中加入语句:OptionExplicit2.3.2常量常量在程序运行过程中,其值不能被改变的量称为常量。在在程序运行过程中,其值不能被改变的量称为常量。在VB中有三类常量:
18、中有三类常量:普通常量普通常量符号常量符号常量系统常量。系统常量。一、普通常量一、普通常量1整型常量整型常量(1)整型()整型(Integer):表示):表示-32768至至32767之间的整数之间的整数例如:例如:1011020(2)长整型()长整型(Long):):表示表示-2,147,483,648至至2,147,483,647之间的整数之间的整数例如:长整型常数的书写:例如:长整型常数的书写:23&通常我们说的整型常量指的是十进制整数,但通常我们说的整型常量指的是十进制整数,但VB中可以使用八进制和十六中可以使用八进制和十六进制形式的整型常数,因此整型常数有如下三种形式:进制形式的整型
19、常数,因此整型常数有如下三种形式:1)十进制整数。)十进制整数。如如125,0,-89。202)八八进进制制整整数数。以以&或或&O(字字母母O)开开头头的的整整数数是是八八进进制制整整数数,如如&O25表表示示八八进进制制整整数数25,即即(25)8,等等于于十十进制数进制数21。3)十六进制。)十六进制。以以&H开头开头的整数是十六进制整数,如的整数是十六进制整数,如&H25表示十六进制整数表示十六进制整数25,即,即(25)16,等于十进制数,等于十进制数37。VB中的颜色数据常常用十六进制整数表示。中的颜色数据常常用十六进制整数表示。2、实数、实数1)单精度实型()单精度实型(Sing
20、le):有效数为:有效数为7位位2)双精度实型()双精度实型(Double):有效数为:有效数为15位位常量的表示:常量的表示:1)十十进进制制小小数数形形式式。它它是是由由正正负负号号(+,-)、数数字字(09)和和小小数数点点(.)或或类类型型符符号号(!、#)组组成成,即即n.n,n!或!或n#,其中,其中n是是09的数字。的数字。例如例如0.123、.123、123.0、123!、!、123#等等2)指数形式。)指数形式。nEm或或n.nEm,nDm或或n.nDm例:例:1.25E+3和和1.25D+3相当于相当于1250.0或者或者1.25103。3、字符串常量字符串常量在在VB中中
21、字字符符串串常常量量是是用用双双引引号号“”括括起起的的一一串串字字符符,可可以以是所有西文字符和汉字、标点符号等;是所有西文字符和汉字、标点符号等;例如例如ABC,abcdefg,123,0,VB程序设计程序设计等。等。说明:说明:(1)表示空字符串,而表示空字符串,而表示有一个空格的字符串;表示有一个空格的字符串;(2)若若字字符符串串中中有有双双引引号号,例例如如ABDXYZ,则则用用连连续续两两个双引号表示,即:个双引号表示,即:ABDXYZ“4、逻辑(、逻辑(Boolean)数据类型)数据类型只有两个值只有两个值True,或,或False。将逻辑数据转换成整型时:。将逻辑数据转换成整
22、型时:True为为-1,False为为0;其它数据转换成逻辑数据时:;其它数据转换成逻辑数据时:非非0为为True,0为为False。5、日期常量、日期常量日日期期(Date)型型数数据据按按8字字节节的的浮浮点点数数来来存存储储,表表示示日日期期范范围围从从公公元元100年年1月月1日日9999年年12月月31日,而时间范围从日,而时间范围从0:00:0023:59:59。一种在字面上可被认作日期和时间的字符,只要用号码符一种在字面上可被认作日期和时间的字符,只要用号码符“#”括起来,都可以作为括起来,都可以作为日期型数值常量。日期型数值常量。例:例:#09/02/99#、#January4
23、,1989#,#2002-5-414:30:00PM#都是合法的日期型常都是合法的日期型常量。量。二、符号常量二、符号常量在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。仅在书写上方便,而且有效地改进了程序的可读性和可维护性。VB中使用关键字中使用关键字Const声明符号常量。其格式如下:声明符号常量。其格式如下:Const常量名常量名As类型类型=常数表达式常数表达式或:或:Const类型符号类型符号=常数表达式常数表达式例如:例如:ConstPIA
24、sDouble=3.1415926535等价于:等价于:ConstPI#=3.1415926535三、系三、系统常量常量VB系统提供的应用程序和控件的系统定义常数。系统提供的应用程序和控件的系统定义常数。它们存放于系统的对象库它们存放于系统的对象库中,在中,在“对象浏览器对象浏览器”中的中的VisualBasic(VB)和和VisualBasicforapplications(VBA)对象库中列举了)对象库中列举了VisualBasic的常数的常数例如,要将文本框例如,要将文本框Text1的前景颜色设置为红色,可以使用下面的语句:的前景颜色设置为红色,可以使用下面的语句:Text1.ForeC
25、olor=vbRed这里的这里的vbRed就是系统常量。这比直接使用就是系统常量。这比直接使用16进制数来设置要直观得多。进制数来设置要直观得多。2.3.3常用内部函数常用内部函数VB提供了上百种内部函数(库函数),要求掌握这些常用函提供了上百种内部函数(库函数),要求掌握这些常用函数的功能及使用。数的功能及使用。调用方法:调用方法:函数名(参数列表)函数名(参数列表)有参函数有参函数函函数数名名无参函数无参函数说明:说明:(1)使用库函数要注意参数的个数及其参数的数据类型使用库函数要注意参数的个数及其参数的数据类型(2)要注意函数的定义域(自变量或参数的取值范围)要注意函数的定义域(自变量或
26、参数的取值范围)例如:例如:sqr(x)要求:要求:x=0(3)要注意函数的值域。要注意函数的值域。如:如:exp(23773)的值就超出实数在计算机中的表示的值就超出实数在计算机中的表示范围。范围。1、数学函数、数学函数常用的数学函数见表常用的数学函数见表2-2所示所示Abs(N)Cos(N)Sin(N)Exp(N)Log(N)Sqr(N)Rnd(N)Sgn(N)说明:说明:(1)在三角函数中的自变量是以弧度为单位。在三角函数中的自变量是以弧度为单位。如:如:sin300sin(3.14159/180*30)(2)Rnd函数返回函数返回01(包括(包括0和不包括和不包括1)之间的双精度)之间
27、的双精度随机数。随机数。若要产生若要产生1-100的随机整数:的随机整数:Int(Rnd*100)+1提问:怎样产生提问:怎样产生N,M区间的随机数?区间的随机数?2.字符串函数字符串函数(常用的字符串函数见表(常用的字符串函数见表2-3)说明:如果返回是字符型,则函数后有“$”字符。当然一般也可以不写,习惯都写上。例如:len(Thisisabook!)15Left$(ABCDEFG,3)ABCRight(ABCDEFG,3)“EFGMid$(ABCDEFG,2,3)BCD“Ucase(ABcd)ABCDLcase(ABcd)abcdTrim(Abcd)ABcdString(5,A)AAAA
28、AInStr(2,“ABCDEFGEF”,“EF”)5(第一次出现的位置)3.日期、时间函数日期、时间函数常用的日期时间函数见表常用的日期时间函数见表2-4掌握:掌握:Time()Date()NowYear()Month()Day()4.格式输出函数格式输出函数使用格式:Format$(表达式(表达式,“格式字符串格式字符串”)功能:按用户指定格式返回表达式,功能:按用户指定格式返回表达式,常常用在常常用在print方法中。方法中。使用形式:使用形式:printFormat$(表达式(表达式,“格式字符串格式字符串”)表达式:可以是数值、日期或字符串型表达式。表达式:可以是数值、日期或字符串型
29、表达式。格式字符串:表示输出表达式时采用的输出格式。不同数据类型所采用的格式格式字符串:表示输出表达式时采用的输出格式。不同数据类型所采用的格式字符串是不同的。字符串是不同的。(1)数值型数据格式化(见表3-12)注意:对于符号:0与#,当数值的实际位数比格式控制给定的位数多时,系统将按四舍五入返回给定的位数。如:Format(3.14159,“#.#”),其值为3.142Format(3.14159,“000.000”),其值为003.142(2)日期和时间型数据格式化(见表3-13)缺省日期格式为:“mm/dd/yy”,缺省时间格式:“hh:mm:ss”(3)字符串类型数据格式化(见表3-
30、14)5.输入和输出函数1.输入函数InputBox变量名=InputBox$(,)其中:提示提示信息,标题标题区显示,缺省输入区缺省值。例如:要在屏幕上显示如下的对话框:例如:有下列语句如下例如:有下列语句如下:Dimx%x=Val(InputBox(“请输入一个数请输入一个数”,“输入框输入框”,100)语句执行后打开如下对话框。语句执行后打开如下对话框。缺省值标题提示2.MsgBox函数和函数和MsgBox过程过程函数形式:变量%=MsgBox(提示,按钮图标+缺省按钮+模式,标题)过程形式:MsgBox提示,按钮图标+缺省按钮+模式,标题图标标题提示信息命令按钮说明:说明:“标题标题”
31、和和“提示提示”与与InputBox函数中对应的参数相同;函数中对应的参数相同;“按钮图标按钮图标+缺省按钮缺省按钮+模式模式”是整型表达式,决定信息框按钮数目、是整型表达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模式出现在信息框上的图标类型及操作模式(见表见表4.1)若程序中需要返回值,则使用函数,否则可调用过程。若程序中需要返回值,则使用函数,否则可调用过程。图标标题提示信息命令按钮按钮及图标值如下按钮及图标值如下:根据用户所选按钮,函数返回17的整数值,其含义如下表:(表4.2)2.4运算符和表达式运算符和表达式一、算术运算符和表达式一、算术运算符和表达式例:5+2*10mo
32、d109/3+22结果是:二、二、 关系运算符与关系表达式关系运算符与关系表达式 比较两个运算量之间的关系,关系表达式的运算结果为逻辑量。若比较两个运算量之间的关系,关系表达式的运算结果为逻辑量。若关系成立,结果为关系成立,结果为True,若关系不成立,结果为若关系不成立,结果为False。VB中的关系运算符如下表所示。中的关系运算符如下表所示。运算符含义优先级实例结果小于所有关系运算优先级相同。低于算术运算的加“+”,减“-”运算,高于逻辑非“Not”运算。15+1020False=小于或等于10大于1020False=大于或等于This=ThatTrue=等于This=ThatFalse不
33、等于ThisThatTrueLike字符串匹配ThisLike*isTrueIs对象比较例:100 + 123 结果为 223100 + 123 结果为 100123Abc + 123 出错100 & 123 结果为 100123 100 & 123 结果为 100123 Abc & 123 结果为 Abc123Abc & 123 结果为 Abc123注意:使用运算符注意:使用运算符“&”时,时,变量与运算符变量与运算符“&”之间应加一个空格之间应加一个空格。这是因为。这是因为符号符号“&”还是长整型的类型定义符,如果变量与符号还是长整型的类型定义符,如果变量与符号“&”接在一起,接在一起,V
34、B系统先把系统先把它作为类型定义符处理,因而就会出现语法错误。它作为类型定义符处理,因而就会出现语法错误。关系运算的规则如下:关系运算的规则如下:(1 1)当两个操作式均为数值型,按数值大小比较。)当两个操作式均为数值型,按数值大小比较。(2)字符串比较)字符串比较,则按字符的则按字符的ASCII码值从左到右一一比较码值从左到右一一比较,直到出现不同的字符为止直到出现不同的字符为止.。例:例:ABCDEABRA结果为结果为False(3)数值型与可转换为数值型的数据比较,)数值型与可转换为数值型的数据比较,如:如:29189,按数值比较,结果为,按数值比较,结果为False。(4)数值型与不能
35、转换成数值型的字符型比较,)数值型与不能转换成数值型的字符型比较,如:如:77sdcd,不能比较,系统出错。,不能比较,系统出错。(5)“Like”运算符是运算符是VB6.0新增加的。新增加的。其使用格式为:其使用格式为:str1Likestr2三、逻辑运算符与逻辑表达式三、逻辑运算符与逻辑表达式逻辑运算符:Not,And,OrXorEqvImp说说明:明:(1)逻逻辑辑运运算算符符的的优优先先级级不不相相同同,Not(逻逻辑辑非非)最最高高,但但它它低低于于关关系系运运算算,Imp(逻辑蕴含)最低。(逻辑蕴含)最低。(2)VB中中常常用用的的逻逻辑辑运运算算符符是是Not、And和和Or。它
36、它们们用用于于将将多多个个关关系系表表达达式式进进行行逻辑判断。逻辑判断。例如:例如:数学上表示某个数在某个区域时用表达式:数学上表示某个数在某个区域时用表达式:10X=10AndX20如果写成如下形式将是错误的:如果写成如下形式将是错误的:10=x20或或10=xOrx20例:用人单位招聘秘书:年龄小于例:用人单位招聘秘书:年龄小于40岁,女性,学历专科或本科:岁,女性,学历专科或本科:写成条件写成条件VB的表达式:的表达式:年龄年龄=39性别性别=“女女”学历学历=“专科专科”学历学历=“本科本科”四、四、字符串运算符与字符串表达式字符串运算符与字符串表达式字符串运算符有:字符串运算符有:
37、、+。功能是字符串连接功能是字符串连接例如:例如:ABCD+EFGHI结果为:结果为:ABCDEFGHI“VB”&“程序设计教程程序设计教程”结果为:结果为:VB程序设计教程程序设计教程说明:当连接符两旁的操作量都为字符串时,上述两个连接符等说明:当连接符两旁的操作量都为字符串时,上述两个连接符等价。它们区别是:价。它们区别是:+(连接运算)(连接运算):两个操作数均应为字符串类型;:两个操作数均应为字符串类型;&(连接运算)(连接运算):两个操作数既可为字符型也可为数值型,当:两个操作数既可为字符型也可为数值型,当是数值型时,系统自动先将其转换为数字字符,然后进行连接是数值型时,系统自动先将
38、其转换为数字字符,然后进行连接操作。操作。2.5基本基本语句句VB程序设计有三种基本结构:顺序结构、选择结构和程序设计有三种基本结构:顺序结构、选择结构和循环结构。其中赋值语句、条件语句和循环语句是在这三循环结构。其中赋值语句、条件语句和循环语句是在这三种结构程序设计中最基本、最常用的语句。种结构程序设计中最基本、最常用的语句。2.5.1赋值语句赋值语句形式形式:变量名表达式变量名表达式对象对象.属性表达式属性表达式功能:功能:将表达式的值赋值给变量名或指定对象的属性。将表达式的值赋值给变量名或指定对象的属性。一般用于给变量赋值或对控件设定属性值一般用于给变量赋值或对控件设定属性值.例:例:s
39、Rate!=0.1Text1.Text欢迎使用欢迎使用VisualBasic6.0”说明:说明:1执行过程:先求表达式的值,然后将值赋值给左边的执行过程:先求表达式的值,然后将值赋值给左边的变量。变量。2右边的表达式可以是变量、常量、函数调用等特殊的右边的表达式可以是变量、常量、函数调用等特殊的表达式。表达式。3不要将不要将“”理解为数学上的等号:理解为数学上的等号:A=A+1是表示将是表示将A单元的值加后以放回到单元的值加后以放回到A单元。单元。4赋值符号赋值符号“=”左边一定只能是变量名或对象的属性左边一定只能是变量名或对象的属性引用,不能是常量、符号常量、表达式。引用,不能是常量、符号常
40、量、表达式。下面的赋值语句都是错的:下面的赋值语句都是错的:5=X左边是常量。左边是常量。Abs(X)=20左边是函数调用,即是表达式。左边是函数调用,即是表达式。5.赋值符号赋值符号“=”两边的数据类型一般要求应一致两边的数据类型一般要求应一致2.5.2条件语句条件语句 条件语句用于根据条件产生相应的动作。使用条件语句可以控制程序执行的流程。VB中常用的种条件语句有IfThen语句、IfThenElse语句、SelectCase语句。1.IfThen语句语句(单分支结构单分支结构)IfThen语句块语句块EndIf或或IfThen例例:已知两个数已知两个数x和和y,比较它们的大小,比较它们的
41、大小,使得使得x大于大于y。IfxyThent=x:x=y:y=tEndIf或或IfxyThent=x:x=y:y=t2.IfThenElse语句语句(双分支结构双分支结构)IfThenElseEndIfIfThenElse双分支选择结构执行过程双分支选择结构执行过程例如:输出例如:输出x,y两个中值较大的一个值。两个中值较大的一个值。IF XY Then Print XElse Print YEnd If也可以写成如下的单行形式:也可以写成如下的单行形式: IF XY Then Print X Else Print Y3.IfThenElseIf语句语句(多分支结构多分支结构)形式形式:If
42、ThenElseIfThenElse语句块语句块n+1EndIf4.SelectCase语句(情况语句)语句(情况语句)形式:SelectCase变量或表达式Case表达式列表1语句块1Case表达式列表2语句块2CaseElse语句块n+1EndSelect数值型或字符串表达式说明:与同类型的下面四种形式之一:表达式A+5一组枚举表达式(用逗号分隔)2,4,6,8表达式1To表达式260to100Is关系运算符表达式Is0初值初值终值终值=1时时,可省略可省略终值终值=0死循环死循环步长步长循环次数循环次数例例:ForI=2To13Step3PrintI,NextIPrint“I=“,I循环
43、执行次数循环执行次数输出输出I的值分别为的值分别为:25811出了循环输出为出了循环输出为:I=14例例4.6编程计算:编程计算:S=1+2+3+100Dim S%, I%S=0 累加前变量累加前变量S为为0For I=1 to 100 S=S+INext IPrintS=,S当N=100N=N+1打印SS=0,N=1S=S+N例例4-5的算法流程图的算法流程图二、二、DoLoop循环语句循环语句形式形式1:(当型循环):(当型循环)DoWhile|Until语句块语句块ExitDo语句块语句块Loop形式形式2:(直到循环)直到循环)Do语句块语句块ExitDo语句块语句块LoopWhile
44、|Until条件语句块语句块TFExitDo条件语句块语句块TFExitDoDoUntilLoop执行过程执行过程DoLoopUntil执行过程执行过程说明:说明:(1 1)当当使使用用WhileWhile 构构成成循循环环时时,当当条条件件为为“真真”,则则反反复复执执行行循循环环体体,当当条件为条件为“假假”,则退出循环。,则退出循环。(2)当当使使用用Until构构成成循循环环时时,当当条条件件为为“假假”,则则反反复复执执行行循循环环体体,直直到条件成立,即为到条件成立,即为“真真”时,则退出循环。时,则退出循环。(3 3)在在循循环环体体内内一一般般应应有有一一个个专专门门用用来来改
45、改变变条条件件表表达达式式中中变变量量的的语语句句,以以使使随随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。着循环的执行,条件趋于不成立(或成立),最后达到退出循环。(4)语句)语句ExitDo的作用是退出它所在的循环结构,它只能用在的作用是退出它所在的循环结构,它只能用在DO/Loop结构中,结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。出循环。3.WhileWend语句语句使用格式如下:使用格式如下:WhileWend说说明明:该该语语句句的的功功能能与与DoWh
46、ile.Loop实实现现的的循环完全相同。循环完全相同。例:用例:用doLoop语句改写前面的例题语句改写前面的例题4.5例例2.8求两个整数的最大公约数、最小公倍数求两个整数的最大公约数、最小公倍数Dim n%,m%,nm%,r%m=Val(InputBox(m=)n=Val(InputBox(n=)nm=n*mIf mn Then t=m: m=n: n=t r=m mod n Do While (r 0) m=n n=r r= m mod n LoopPrint 最大公约数最大公约数=, n Print最小公倍数最小公倍数=,nm/n算法流程图算法流程图4.循环的嵌套循环的嵌套多重循环结
47、构多重循环结构如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。称为三重循环。上上面面介介绍绍的的几几种种循循环环控控制制结结构构可可以以相相互互嵌嵌套套,下下面面是是几几种种常常见见的的二二重重嵌嵌套套形式:形式:(1)ForI=.ForJ=.NextJ.NextI(2)ForI=.DoWhile/Until.Loop.NextI(3)DoWhile.ForJ=.NextJ.
48、Loop(4)DoWhile/Until.DoWhile/Until.Loop.Loop例如例如:打印九九乘法表打印九九乘法表.Fori=1To9Forj=1To9se=i&j&=&i*jPicture1.PrintTab(j-1)*9+1);se;NextjPicture1.PrintNexti对于循环的嵌套,要注意以下事项:对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外循环转向内不能从循环体外转向循环体内,也不能从
49、外循环转向内循环循环.下面是正确的嵌套下面是正确的嵌套Fori=1To10Forj=1To20NextjNextiFori=1To10NextiFori=1To10Nexti下面是不正确的嵌套下面是不正确的嵌套Fori=1To10Forj=1To20NextiNextjFori=1To10Fori=1To20NextiNexti对于循环的嵌套,要注意以下事项:对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外不能从循环体外
50、转向循环体内,也不能从外循环转向内循环循环转向内循环.2.6数数组2.6.1数组的概念2.6.2一维数组的声明2.6.3动态数组2.6.4数组的基本操作2.6.1概概述述数组的概念:数组并不是一种数据类型,而是一组相同类型数据的集合。用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分;下标变量代表元素在数组中的位置。VB中数组的表示形式:中数组的表示形式:A(1),A(10)一维数组一维数组X(1,1),X(2,10)二维数组二维数组Y(0,0,0),Y(1,2,5)三维数组三维数组VisualBasic中的数组分类:中的数组分类:按数组的大小(元素个数)是否可以改变
51、来分为:定长数组、动态(可变长)数组定长数组、动态(可变长)数组。按元素的数据类型可分为:数值型数组、字符串数组、逻辑数组、数值型数组、字符串数组、逻辑数组、日期型数组、变体数组等、对象数组。日期型数组、变体数组等、对象数组。按数组的维数可分为:一维数组、二维数组、多维数组。一维数组、二维数组、多维数组。2.6.2一维数组一维数组:1.一维数组的形式一维数组的形式Dim数组名数组名(to)As或:或:Dim数组名数组名(to)例:例:Dima(1to10)AsInteger声明了声明了a数组有数组有10个元素个元素与上面声明等价形式:与上面声明等价形式:Dima%(1to10)1是下标的下界是
52、下标的下界10是下标的上界是下标的上界数组元数的数据类型数组元数的数据类型说明:说明:1数组名的命名规则与变量的命名相同。数组名的命名规则与变量的命名相同。2数组的元素个数:数组的元素个数:上界上界-下界下界+1。3缺省缺省为为0,若希望下标从,若希望下标从1开始,可在模块的通用部分使用开始,可在模块的通用部分使用OptionBase语句将设为语句将设为1。其使用格式是:。其使用格式是:OptionBase0|1后面的参数只能取后面的参数只能取0或或1例如:例如:OptionBase1将数组声明中缺省将数组声明中缺省下标设为下标设为14和和不能使用变量不能使用变量,必须是常量,常量可以是直接常
53、量、符号,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。常量,一般是整型常量。DimNAsIntegerN=Val(InputBox(“EnterN=?”)DimA(N)AsInteger5如如果果省省略略As子子句句,则则数数组组的的类类型型为为变变体体类型。类型。6数数组组中中各各元元素素在在内内存存占占一一片片连连续续的的存存储储空间。空间。A(0)A(1)A(2)A(n).一维数组在内存中存放的顺序一维数组在内存中存放的顺序使用形式:使用形式:数组名数组名(下标下标)其中:下标可以是整型变量、常量或表达式。其中:下标可以是整型变量、常量或表达式。例如:例如:设有下面的数组定
54、义:设有下面的数组定义:DimA(10)AsInteger,B(10)AsInteger则下面的语句都是正确的。则下面的语句都是正确的。A(1)=A(2)+B(1)+5取数组元素运算取数组元素运算A(i)=B(i)下标使用变量下标使用变量B(i+1)=A(i+2)下标使用表达式下标使用表达式1.可通过循环给数组元素的初值可通过循环给数组元素的初值 For i = 1 To 10 A数组的每个元素值为数组的每个元素值为1 A(i)=1 Next i 2.数组的输入数组的输入输入输入10个数,并存入到数组个数,并存入到数组A中中Fori=1To10A(i)=Val(InputBox(“输入输入A(
55、”&i&“)的值的值”)Nexti3.求数组中最大元素及所在下标求数组中最大元素及所在下标DimMaxAsInteger,iMaxAsIntegerMax=A(1):iMax=1Fori=2To10IfA(i)MaxThenMax=A(i)iMax=iEndIfNextiPrintA(&iMax&)=;A(iMax)4.将数组元素倒置将数组元素倒置Fori=1To102t=A(i)A(i)=A(10-i+1)A(10-i+1)=tNextI2.一维数组的应用一维数组的应用一、分类统计一、分类统计例例5.2在在例例5.1中中如如果果还还要要统统计计09,1019,2029,.8089,9099分
56、分数数段段及及100分的学生人。分的学生人。则可另用数组则可另用数组bn来存各分数段的人数,并用来存各分数段的人数,并用bn(0)存存09分的人数,分的人数,bn(1)存存1019分的人数,分的人数,bn(9)存存9099分的人数,分的人数,bn(10)存存100分的人数。分的人数。数据的排序就是将一批数据由小大到数据的排序就是将一批数据由小大到(升序)(升序)或由或由大到小大到小(降序)(降序)进行排列。常用的有进行排列。常用的有选择法、冒泡法。选择法、冒泡法。1选择法排序选择法排序算法算法(升序升序)(设有设有n个数,存放在数组个数,存放在数组A(1).A(n)中)中)1)第)第1遍遍:从
57、中选出最小的数,与第:从中选出最小的数,与第1个数交换位个数交换位置;置;(演示)(演示)753468912)第)第2遍遍:除第除第1个数外,其余个数外,其余n-1个数中选最小的个数中选最小的数,与第数,与第2个数交换位置;个数交换位置;(演示)(演示)3)依次类推)依次类推,选择了,选择了n-1次后,这个数列已按升次后,这个数列已按升序排列。序排列。选择法排序选择法排序算法的流程图:算法的流程图:选择法排序(选择法排序(升序升序)的)的VB程序程序:For i = 1 To n - 1For i = 1 To n - 1 p = i p = i For j = i + 1 To n For
58、j = i + 1 To n If a(p) a(j) Then p = j If a(p) a(j) Then p = j Next j Next j t = a(i): a(i) = a(p): a(p) = t t = a(i): a(i) = a(p): a(p) = tNext iNext i思考:如果按思考:如果按降序降序排,程序如何修改排,程序如何修改?例:用随函数产生例:用随函数产生30个个1099的随机整数,的随机整数,以按升序打印输出到窗体上。要求每行输出以按升序打印输出到窗体上。要求每行输出10个数据。个数据。2冒泡法排序(升序)冒泡法排序(升序)算法算法:(将相邻两个数
59、比较,大数交换到后面将相邻两个数比较,大数交换到后面)1)第第1趟趟:将将每每相相邻邻两两个个数数比比较较,大大数数交交换换到到后后面面,经经n-1次次两两两两相相邻邻比比较较后后,最最大大的的数数已已交交换换到到最后一个位置。最后一个位置。2)第)第2趟:将前趟:将前n-1个数(最大的数已在最后)按个数(最大的数已在最后)按上法比较,经上法比较,经n-2次两两相邻比较后得次大的数;次两两相邻比较后得次大的数;3)依次类推,)依次类推,n个数共进行个数共进行n-1趟比较,趟比较,在第在第j趟中要进行趟中要进行n-j次两两比较。次两两比较。冒泡法排序冒泡法排序算法的流程图:算法的流程图:冒泡法排
60、序(升序)程序冒泡法排序(升序)程序:For i = 1 To n - 1For i = 1 To n - 1 For j = 1 To n-i For j = 1 To n-i If a(j) a(j+1) Then If a(j) a(j+1) Then t=a(j) t=a(j): a(j)=a(j+1)a(j)=a(j+1):a(j+1)=ta(j+1)=t End if End if Next j Next jNext iNext i例例5.3用用随随机机函函数数产产生生50个个10,100)的的随随机机整整数数,并并按按照照由由小小到到大大的的顺顺序序打打印出来。印出来。程序界面如
61、下:2.6.3二维数组二维数组1.二维数组的声明二维数组的声明声明格式如下:声明格式如下:Dim数组名数组名(to,to)As其中的参数与一维数组完全相同。例如:例如:Dim a(2,3) As Single 二二维维数数组组在在内内存存的的存存放放顺顺序序是是“先先行行后后列列”。例例如如数数组组a的的各各元元素素在在内内存存中中的存放顺序是:的存放顺序是:a(0,0)a(0,1)a(0,2)a(0,3)a(1,0)a(1,1)a(1,2)a(1,3)a(2,0)(2,1)a(2,2)a(2,3)2.二维数组的引用二维数组的引用引用形式:引用形式:数组名数组名(下标下标1,下标,下标2)例如
62、:例如: a(1,2)=10 a(i+2,j)a(2,3)*2 在程序中常常通过二重循环来操作使用二维数组元素。在程序中常常通过二重循环来操作使用二维数组元素。3.二维数组的基本操作二维数组的基本操作1.二维数组数据的输入二维数组数据的输入2.求最大元素及其所在的行和列求最大元素及其所在的行和列3.计算两矩阵相乘计算两矩阵相乘4.矩阵的转置矩阵的转置(1)二维数组数据的输入二维数组数据的输入Const N=4, M=5, L=6Dim a(1 to N,1 to M) As Integer, i%, j%,k%1.给二维数组给二维数组a输入数据的程序段如下:输入数据的程序段如下: For i=
63、1 to 4 For j=1 to 5 A(i,j)=Val(InputBox(a(& I &, & j & )=?) Next j Next i(2)求最大元素及其所在的行和列求最大元素及其所在的行和列 用变量用变量max存放最大值,存放最大值,row,col存放最大值所在行列号存放最大值所在行列号Max = a(1, 1): row = 1: Col = 1 For i = 1 To N For j = 1 To M If a(i, j) a(row, Col) Then Max = a(i, j) row = i Col = j End If Next jNext iPrint 最大元素
64、是最大元素是; MaxPrint 在第在第 & row & 行行,; 第第 & Col & 列列(3)计算两矩阵相乘(略)计算两矩阵相乘(略)(4)矩阵的转置矩阵的转置方阵的转置的程序代码如下:方阵的转置的程序代码如下:For i = 2 2 To For j = 1 1 To I-1 Temp=a(i,j) a(i, j) = a(j, i) a(j, i)=Temp Next j Next i 设A是M*N的矩阵,要重新定义一个N*M的二级数组B,将A转置得到B的程序代码如下:Fori=ToForj=ToNb(j,i)=a(i,j)NextjNexti例例2.14设某一个班共有设某一个班共
65、有60个学生,期末考试个学生,期末考试5门门课程,请编一程序评定学生的奖学金,要求打印输出课程,请编一程序评定学生的奖学金,要求打印输出一、二等奖学金学生的学号和各门课成绩。(奖学金一、二等奖学金学生的学号和各门课成绩。(奖学金评定标准是:总成绩超过全班总平成绩评定标准是:总成绩超过全班总平成绩20%发给一个发给一个奖学金,超过全班总平成绩奖学金,超过全班总平成绩10%发给二个奖学金。)发给二个奖学金。)2.6.4多维数组的声明和引用多维数组的声明和引用定义多维数组的格式如下:定义多维数组的格式如下:Dim数组名数组名(to,to,)As例如:例如: Dim a(5,5,5) As Integ
66、er 声明声明a是三维数组是三维数组Dimb(2,6,10,5)AsInteger声明声明b是四维数组是四维数组2.6.5动态数组的建立及使用动态数组的建立及使用动态数组:在声明时未给出数组的大小。在程序执行时分配存储空间。动态数组:在声明时未给出数组的大小。在程序执行时分配存储空间。建立动态数组包括声明和大小说明两步:建立动态数组包括声明和大小说明两步:1在使用在使用Dim、Private或或Public语句声明括号内为空的数组。语句声明括号内为空的数组。格式:格式:Dim|Private|Public数组名()数组名()As数据类型数据类型例:例:Dima()AsInteger2在过程中用
67、在过程中用ReDim语句指明该数组的大小。语句指明该数组的大小。格式:格式:ReDimPreserve数组名(下标数组名(下标1,下标,下标2)例:例:RedimA(10)RedimPreserveA(20)说明:说明:(1)ReDim语语句句是是一一个个可可执执行行语语句句,只只能能出出现现在在过过程程中中,并并且且可可以以多多次次使使用用,改变数组的维数和大小。改变数组的维数和大小。(2)定长数组声时中的下标只能是常量,而动态数组)定长数组声时中的下标只能是常量,而动态数组ReDim语句中的下标是语句中的下标是常量,也可以是有了确定值的变量。常量,也可以是有了确定值的变量。例:例:Priv
68、ateSubForm_Click()DimNAsIntegerN=Val(InputBox(“输入输入N=?”)Dima(N)AsInteger.Endsub(3)在过程中可以多次使用)在过程中可以多次使用ReDim来改变数组的大小,也可来改变数组的大小,也可改变数组的维数。改变数组的维数。例:例:ReDimx(10)ReDimx(20)x(20)=30Printx(20)ReDimx(20,5)x(20,5)=10Printx(20,5)(4)每次使用)每次使用ReDim语句都会使原来数组中值丢失,可以在语句都会使原来数组中值丢失,可以在ReDim后加后加Preserve参数来保留数组中的数
69、据。但此时参数来保留数组中的数据。但此时只能改变最后一维的大小。只能改变最后一维的大小。2.6.6控件数组的建立控件数组的建立一、在设计时建立控件数组的步骤:一、在设计时建立控件数组的步骤:1窗体上画出控件,进行属性设置,这是建立的第一个元素;窗体上画出控件,进行属性设置,这是建立的第一个元素;2选选中中该该控控件件,进进行行“Copy”操操作作若若干干次次和和“Paste”操操作作若若干干次建立了所需个数的控件数组元素。次建立了所需个数的控件数组元素。3进行事件过程的编程。进行事件过程的编程。二、运行时添加控件数组的步骤如下二、运行时添加控件数组的步骤如下:1在在窗窗体体上上画画出出某某控控
70、件件,设设置置该该控控件件的的Index值值为为0,表表示示该该控控件件为为数数组组,这这是是建建立立的的第第一一个个元元素素,并并可可对对一一些些取取值值相相同同的的属性进行设置,如所有文本框的字体都取一样大小。属性进行设置,如所有文本框的字体都取一样大小。2在在编编程程时时通通过过Load方方法法添添加加其其余余的的若若干干个个元元素素,也也可可以通过以通过Unload方法删除某个添加的元素。方法删除某个添加的元素。Load方法和方法和Unload方法的使用格式:方法的使用格式:Load控件数组名控件数组名()Unload控件数组名控件数组名()其中,其中,为整型数据。表示控件数组的某个元
71、素。为整型数据。表示控件数组的某个元素。3通过通过Left和和Top属性确定每个新添加的控件数组元素在属性确定每个新添加的控件数组元素在窗体的位置,并将窗体的位置,并将Visible属性设置为属性设置为True。通过例通过例2-22来说明数组控件的使用:来说明数组控件的使用:例例2-22建立一个简易的能进行四则运算的计算器。建立一个简易的能进行四则运算的计算器。2.7过程和函数在在VB中的过程分为中的过程分为:事件过程和通用过程。事件过程和通用过程。我们通常把我们通常把通用过程分为:通用过程分为:Sub(子程序)过程、(子程序)过程、Function(函数)过(函数)过程。程。 2.7.1Su
72、b过程的定义和调用过程的定义和调用1.子过程的定义形式如下:子过程的定义形式如下:Public|PrivateStatic Sub 子过程名子过程名(形参表形参表) 语句组语句组 Exit Sub 语句组语句组End Sub说说明明:(1)子子过过程程名名:命命名名规规则则与与变变量量名名规规则则相相同同。子子过过程程名名不不返返回回值,而是通过形参与实参的传递得到结果,调用时可返回多个值。值,而是通过形参与实参的传递得到结果,调用时可返回多个值。(2)形形式式参参数数列列表表:形形式式参参数数通通常常简简称称“形形参参”,仅仅表表示示形形参参的的类类型型、个个数数、位置,定义时是无值的,只有
73、在过程被调用时,虚实参结合后才获得相应的值。位置,定义时是无值的,只有在过程被调用时,虚实参结合后才获得相应的值。(3)过程可以无形式参数,但括号不能省。过程可以无形式参数,但括号不能省。(4)参数的定义形式:参数的定义形式:ByValByRef变量名变量名( )As 类型类型,,ByVal表示当该过程被调用时,参数是按值传递的;缺省或表示当该过程被调用时,参数是按值传递的;缺省或ByRef表示当该过程被表示当该过程被调用时,参数是按地址传递的。调用时,参数是按地址传递的。例例6.1编一个交换两个整型变量值的子过程。编一个交换两个整型变量值的子过程。Private Sub Swap( X As
74、 Integer, Y As Integer)Dim temp As Integer Temp=X : X=Y : Y=TempEnd SubPrivate Sub command1_click()Dim a%,b% a=val(inputbox(“a=“) b=val(inputbox(“b=“) print “a=“;a,”b=“,b call swap(a,b) print “a=“;a,”b=“,bEnd Sub2.子过程的建立子过程的建立通通过过“工工具具”菜菜单单中中的的“添添加加过过程程”命命令令,出出现现“添添加加过过程程”对对话话框框(见见图图6.1),选选择择过过程程类类型
75、型(子子过过程程、函函数数、属属性性、事事件件)及及作作用用范范围围(公公有有的的Public、私有的私有的Private),单击确定后得到一个过程或函数定义的结构框架(模板),如:),单击确定后得到一个过程或函数定义的结构框架(模板),如:Public Sub Sort( )End Sub3.过程的调用过程的调用1子过程的调用子过程的调用子过程名子过程名参数列表参数列表或或Call子过程名子过程名(参数列表参数列表)说明:说明:(1)参数列表参数列表称为实参或实元,它必须与形参保持个数相同,位置与类型一称为实参或实元,它必须与形参保持个数相同,位置与类型一一对应。一对应。(2)调用时把实参值
76、传递给对应的形参。其中值传递(形参前有)调用时把实参值传递给对应的形参。其中值传递(形参前有ByVal说明)说明)时实参的值不随形参的值变化而改变。而地址传递时实参的值随形参值的改变而时实参的值不随形参的值变化而改变。而地址传递时实参的值随形参值的改变而改变。改变。(3)当参数是数组时,形参与实参在参数声明时应省略其维数,但括号不能)当参数是数组时,形参与实参在参数声明时应省略其维数,但括号不能省。省。(4)调用子过程的形式有两种,用)调用子过程的形式有两种,用Call关键字时,实参必须加圆括号括起,关键字时,实参必须加圆括号括起,反之则实参之间用反之则实参之间用“,”分隔。分隔。例:调用上面
77、定义的例:调用上面定义的Swap子过程的形式:子过程的形式: Swap a,b Call Swap(a,b)过程调用的执行过程:过程调用的执行过程:PrivateSubCmdOK()CallSwap(a,b)Swapa,bEndSubPrivateSubSwap(x%,y%)Dimtemp%Temp=XX=YY=TempEndSub2.7.2Function函数的定义和调用函数的定义和调用1.Function函数的定义函数的定义:Public|PrivateStaticFunction 函数名函数名()As 函数名函数名=返回值返回值 Exit Function 函数名函数名=返回值返回值 E
78、nd Function函数体说明:(1)函数名:函数名:命名规则与变量名规则相同。命名规则与变量名规则相同。(2)在在函函数数体体内内,函函数数名名可可以以当当变变量量使使用用,函函数数的的返返回回值值就就是是通通过过对对函函数数名名的的赋值语句来实现的,赋值语句来实现的,在函数过程中至少要对函数名赋值一次。在函数过程中至少要对函数名赋值一次。(3)AS类类型型:是是指指函函数数返返回回值值的的类类型型,若若省省略略,则则函函数数返返回回变变体体类类型型值值(Variant)。)。(4)ExitFunction:表表示示退退出出函函数数过过程程,常常常常是是与与选选择择结结构构(If或或Sel
79、ectCase语语句句)联用,即当满足一定条件时,退出函数过程。联用,即当满足一定条件时,退出函数过程。(5)形参数列表形参数列表:形参的定义与子过程完全相同。:形参的定义与子过程完全相同。2.函数的调用函数的调用调用形式如下:调用形式如下:函数名(实参列表)函数名(实参列表)说说明明:在在调调用用时时实实参参和和形形参参的的数数据据类类型型、顺顺序序、个个数数必必须须匹匹配配。函函数数调调用用只只能出现在表达式中,其功能是求得函数的返回值。能出现在表达式中,其功能是求得函数的返回值。 所所谓谓参参数数传传递递,是是在在调调用用过过程程时时给给出出过过程程的的实实际际参参数数。在在VB中中,参
80、参数数的的传传递递有有两种方法:传值方式和传址方式。两种方法:传值方式和传址方式。2.7.3过程之间参数的传递过程之间参数的传递1. 1. 传值方式传值方式 如果在声明过程时,形参使用关键字如果在声明过程时,形参使用关键字ByVal声明,声明,则规定了在调用此过程时,该参数将按值传递。则规定了在调用此过程时,该参数将按值传递。例如例如: :SubSwap1(ByValx%,ByValy%)DimTemp%Temp=x:x=y:y=TempEndSub2.传址方式传址方式 如果在声明过程时,形参使用关键字如果在声明过程时,形参使用关键字ByRef,则规则规定了在调用此过程时,该参数将按地址传递。
81、定了在调用此过程时,该参数将按地址传递。例如例如:SubSwap2(x%,y%)DimTemp%Temp=x:x=y:y=TempEndSubSubSwap1(ByValx%,ByValy%)DimTemp%Temp=x:x=y:y=TempEndSubSubSwap2(x%,y%)DimTemp%Temp=x:x=y:y=TempEndSubPrivateSubCmdOK_Click()Dima%,b%a=10:b=20Swap1a,b传传值值PrintA1=;a,B1=;ba=10:b=20Swap2a,b传地址传地址PrintA2=;a,B2=;bEndSub例如例如:分析以下程序中的数
82、据传递方式。分析以下程序中的数据传递方式。 本章学习目标本章学习目标理解和掌握基本属性理解和掌握基本属性掌握窗体的基本属性、常用事件和方法掌握窗体的基本属性、常用事件和方法了解焦点和了解焦点和TAB键设置键设置掌握命令按钮的基本属性、常用事件和方法掌握命令按钮的基本属性、常用事件和方法掌握文本框和标签的基本属性、常用事件和方法掌握文本框和标签的基本属性、常用事件和方法能够利用基本控件进行综合编程能够利用基本控件进行综合编程第第3章章窗体和基本控件窗体和基本控件VB中属性指对象的特性或性能,它反映了对象的外观和功能。中属性指对象的特性或性能,它反映了对象的外观和功能。在程序代码中引用属性的格式:
83、在程序代码中引用属性的格式: 对象名对象名.属性属性有些属性只能在设计时使用,有些属性只能在程序运行时使用。只能读有些属性只能在设计时使用,有些属性只能在程序运行时使用。只能读取不能修改的属性为只读属性。取不能修改的属性为只读属性。本章先介绍其中常用且适用于大部分控件对象的属性。本章先介绍其中常用且适用于大部分控件对象的属性。1Name属性属性Name属性用来识别窗体、控件等对象的名称。在窗体上添加一个对象属性用来识别窗体、控件等对象的名称。在窗体上添加一个对象时,其时,其Name属性的缺省值是该对象的类型加上一个惟一的整型数值。利属性的缺省值是该对象的类型加上一个惟一的整型数值。利用用Nam
84、e属性指定对象名称时,必须注意以下规则:属性指定对象名称时,必须注意以下规则:3.1基本属性基本属性(1)必须以英文字母或汉字开始,长度不得超过)必须以英文字母或汉字开始,长度不得超过40个字符。个字符。(2)可以包含数字及下划线()可以包含数字及下划线(_)字符,但不可包含标点符号或空格)字符,但不可包含标点符号或空格字符。字符。为了避免程序运行中发生冲突,虽然可以使用关键字、属性名或另一为了避免程序运行中发生冲突,虽然可以使用关键字、属性名或另一个对象的名称,但一般都不使用。个对象的名称,但一般都不使用。习惯上,对象的习惯上,对象的Name属性由类型名的缩写(小写,属性由类型名的缩写(小写
85、,3个字母)与对象个字母)与对象的作用命令组合而成,如:的作用命令组合而成,如:cmdOK、frmMain可分别代表命令按钮和可分别代表命令按钮和主窗体。主窗体。2Appearance属性属性Appearance属性用来指定控件外观的描绘方式。在属性下拉列表中提属性用来指定控件外观的描绘方式。在属性下拉列表中提供了两个设置值供选择:供了两个设置值供选择:(1)选择属性值为)选择属性值为0时,系统不用任何视觉效果显示该对象。时,系统不用任何视觉效果显示该对象。(2)选择属性值为)选择属性值为1(默认值)时,系统以三维立体效果描绘外观。(默认值)时,系统以三维立体效果描绘外观。3BackColor
86、属性和ForeColor属性BackColor属性返回或设置对象的背景颜色。ForeColor属性返回或设置在对象里显示图片和文本的前景颜色。对所有的窗体和控件,这两个属性在设计时的缺省值为:BackColor属性由常数vbWindowBackground定义的系统缺省颜色。ForeColor属性由常数vbWindowText定义的系统缺省颜色。进行有关颜色的属性设置时,属性窗口提供“调色板”和“系统”两种方式,如图3-1所示,从中选择所需的颜色即可。图3-14Caption属性属性窗体的窗体的Caption属性用来指定窗体标题栏中显示的文本内容;当属性用来指定窗体标题栏中显示的文本内容;当窗
87、体为最小化时,该文本显示在窗体图标的下面。控件的窗体为最小化时,该文本显示在窗体图标的下面。控件的Caption属性用来指定标题或显示文字。属性用来指定标题或显示文字。设置设置Caption属性的格式为:属性的格式为:对象名对象名.Caption字符串表达式字符串表达式若省略对象名,则默认为当前的活动对象;字符串表达式是要若省略对象名,则默认为当前的活动对象;字符串表达式是要显示为标题的文本。显示为标题的文本。可以用可以用Caption属性赋予控件一个访问键快捷方式。在想作为访属性赋予控件一个访问键快捷方式。在想作为访问键的字符前加符号(),该字符被加上下划线,同时按下问键的字符前加符号(),
88、该字符被加上下划线,同时按下Alt键和带下划线的字符,即可把焦点移到该控件上。键和带下划线的字符,即可把焦点移到该控件上。注意:注意:Label控件标题的大小没有限制。对于窗体和其他有标题控件标题的大小没有限制。对于窗体和其他有标题的控件,标题的长度不得超过的控件,标题的长度不得超过255个字符。个字符。5 5Enabled Enabled 属性属性EnabledEnabled属性用来确定一个窗体或控件是否能够对用户的事件做出反应,其属性用来确定一个窗体或控件是否能够对用户的事件做出反应,其属性值为布尔值(属性值为布尔值(booleanboolean)。在属性窗口中可借助下拉列表选取该属性值。
89、)。在属性窗口中可借助下拉列表选取该属性值。其中:其中:TrueTrue(缺省值)对象有效,允许对事件做出反应(缺省值)对象有效,允许对事件做出反应False False 对象无效,阻止对事件做出反应对象无效,阻止对事件做出反应有效与无效的对象,在外观上有些不同,以命令按钮控件为例,无效情况有效与无效的对象,在外观上有些不同,以命令按钮控件为例,无效情况下其上面的文字呈灰色,此时单击该命令按钮不会响应任何动作。下其上面的文字呈灰色,此时单击该命令按钮不会响应任何动作。6 6FontFont属性属性在属性窗口中看到的在属性窗口中看到的FontFont属性实质上是一个属性组合,其中包含了字体、属性
90、实质上是一个属性组合,其中包含了字体、大小、字体样式等属性成员。大小、字体样式等属性成员。设计时可直接进入设计时可直接进入FontFont属性的对话框进行设置,如果需要在程序运行时改属性的对话框进行设置,如果需要在程序运行时改变这些属性值则必须对其中各属性值分别进行设置。变这些属性值则必须对其中各属性值分别进行设置。例如,以下代码将窗体例如,以下代码将窗体Form1Form1的文字设置为粗体字,程序代码如下:的文字设置为粗体字,程序代码如下: Form1.Font.Bold = TrueForm1.Font.Bold = True或或 Form1.FontBold = TrueForm1.Fo
91、ntBold = True7Height 属性和属性和Width 属性属性Height属性和属性和Width属性可设置对象的高度和宽度,其大属性可设置对象的高度和宽度,其大小按以下规则计算:小按以下规则计算:(1)窗体的高度和宽度)窗体的高度和宽度 包括边框和标题栏。包括边框和标题栏。(2)控件的高度和宽度)控件的高度和宽度 从边框的中心度量,使边框宽度不从边框的中心度量,使边框宽度不同的控件能够正确对齐。同的控件能够正确对齐。(3)屏幕的高度和宽度)屏幕的高度和宽度 设计时无效,运行时为只读。设计时无效,运行时为只读。窗体或控件的上述属性值将随用户调整对象的大小而改变。窗体或控件的上述属性值
92、将随用户调整对象的大小而改变。Height属性和属性和Width属性的最大值与系统有关。属性的最大值与系统有关。8Left属性和属性和Top属性属性Left属性值指定对象左边边缘到其容器左边边缘的距离;属性值指定对象左边边缘到其容器左边边缘的距离;Top属性指定对象上方边缘到其容器上方边缘的距离。这两个属性指定对象上方边缘到其容器上方边缘的距离。这两个属性值是以窗体左上角为原点确定对象位置的坐标值。属性值是以窗体左上角为原点确定对象位置的坐标值。窗体的窗体的Left和和Top属性值以起作为测量单位,其他控件的度属性值以起作为测量单位,其他控件的度量单位决定于其容器的坐标系统。量单位决定于其容器
93、的坐标系统。Left和和Top属性值随移动该属性值随移动该对象而改变。对象而改变。例如,窗体被加载时,将窗体的大小设置为屏幕大小的例如,窗体被加载时,将窗体的大小设置为屏幕大小的75,并使窗体居中。程序代码如下:,并使窗体居中。程序代码如下:Private Sub Form_Click() Width=Screen.Width*0.75 设置窗设置窗体的宽度体的宽度 Height = Screen.Height*0.75 设置窗体设置窗体的高度的高度 Left = (Screen.Width Width)/2 在水平在水平方向上居中方向上居中 Top = (Screen.Height - He
94、ight)/2 在垂直在垂直方向上居中方向上居中End Sub9Visible属性属性Visible属性指定对象是否可见。程序运行时,常常属性指定对象是否可见。程序运行时,常常将一些不需要的控件隐藏起来,以向用户提供较为将一些不需要的控件隐藏起来,以向用户提供较为整洁的操作界面。整洁的操作界面。3.2窗体窗体窗体是设计图形用户界面的基本平台,所有的控件都窗体是设计图形用户界面的基本平台,所有的控件都是绘制在窗体上的,是运行时用户与应用程序交互操作是绘制在窗体上的,是运行时用户与应用程序交互操作的实际窗口。每个窗体必须有一个唯一的窗体名字,建的实际窗口。每个窗体必须有一个唯一的窗体名字,建立新窗
95、体时,缺省名为立新窗体时,缺省名为Form1,Form2在设计状态下,窗体是可见的。若需要改变窗体中的在设计状态下,窗体是可见的。若需要改变窗体中的网格点间距,可以在菜单栏上选择网格点间距,可以在菜单栏上选择“工具工具选项选项”选项,选项,在弹出的在弹出的“选项选项”对话框中选择,在对话框中选择,在“通用通用”选项卡的选项卡的“窗体设置网格窗体设置网格”框中输入框中输入“宽度宽度”和和“高度高度”;运行;运行时,可通过属性控制窗体的可见性(窗体的网格始终不时,可通过属性控制窗体的可见性(窗体的网格始终不显示)。一般情况下一个应用程序至少有一个窗体。除显示)。一般情况下一个应用程序至少有一个窗体
96、。除了一般的窗体外,还有一种了一般的窗体外,还有一种MDI多文档窗体,其中可以多文档窗体,其中可以包含若干子窗体,每个子窗体都是独立的。包含若干子窗体,每个子窗体都是独立的。3.2.1窗体的属性窗体的属性较多,设置或修改这些属性,可在设计阶段通过属性窗口完成,也可在运行时由程序代码来设置。其基本属性已在3.1节中介绍,这里只作一些属性补充。1BorderStyle属性边框样式,其属性值如下:0无边框1固定单线边框2(默认值)活动边框,可利用边框改变窗口大小3对话框,固定边框4工具窗口,活动边框2Picture属性设置窗体中要显示的图片。在属性窗口中,可以单击Picture属性设置框右边的“”按
97、钮,弹出一个加载图片对话框,选择一个图形文件装入。3ControlBox属性指明是否在窗体左上角设置控制菜单框,默认值为True。4MaxButton属性和MinButton属性指明是否显示最大、最小化按钮。5WindowState属性设置窗体窗口运行时的状态(最大、还原或最小)。6StartUpPosition属性指明运行时窗体在屏幕上的显示位置。其属性值如下:0手动1所有者中心所有者中心2屏幕中央屏幕中央3.2.2 窗体的事件窗体的事件VB采用了事件驱动的编程机制,一个采用了事件驱动的编程机制,一个VB程序员,要能灵活自如地程序员,要能灵活自如地编写编写VB程序,充分利用好各控件的功能,就
98、必须熟悉和掌握各控件程序,充分利用好各控件的功能,就必须熟悉和掌握各控件所能响应的事件,以及各种事件所产生的背景和触发条件。窗体能响所能响应的事件,以及各种事件所产生的背景和触发条件。窗体能响应绝大多数的事件,这些事件中的大多数也是其他控件的常用事件。应绝大多数的事件,这些事件中的大多数也是其他控件的常用事件。1Click事件事件 单击事件,在窗体内无控件处单击鼠标左键时发生。单击事件,在窗体内无控件处单击鼠标左键时发生。事件过程格式:事件过程格式:Private Sub Form_Click() End Sub例如:当用户单击窗体后,显示例如:当用户单击窗体后,显示“You Click Me
99、!”的提示信息,其的提示信息,其事件过程为:事件过程为:Private Sub Form_Click()MsgBox You Click Me!End Sub显显示示结结果果见图见图3-2:图3-22DblClick事件双击事件,在窗体内无控件处双击鼠标左键时发生。3MouseDown事件和MouseUp事件按下鼠标键和释放鼠标键事件,在窗体内无控件处,用户按下鼠标键就会触发MouseDown事件,释放鼠标键会触发MouseUp事件。例如:当用户在窗体上按下鼠标键后,显示“这是MouseDown事件!”的提示信息,其事件过程为:Private Sub Form_MouseDown(Button
100、 As Integer, Shift As Integer, X As Single, Y As Single)MsgBox 这是MouseDown事件!End Sub事件说明:MouseDown事件和MouseUp事件常常伴随产生,MouseDown事件在前,MouseUp事件在后,之后还将产生鼠标的单击事件Click。当MouseDown事件和MouseUp事件触发后,VB会自动将事件产生时鼠标键位的状态(Button)、键盘的组合状态(Shift)以及鼠标指针的坐标位置(X,Y),作为参数传递给事件过程的对应参数,以供程序判断处理所用。4MouseMove事件 移动鼠标事件,用户在窗体内
101、移动鼠标时触发MouseMove事件。5KeyDown事件和KeyUp事件 当控制焦点在窗体上时,用户按下键盘中的任意一键将会触发KeyDown事件,释放该键时,将触发KeyUp事件。事件过程格式为:Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)End Sub Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)End Sub事件过程中的参数KeyCode用于返回被按键的扫描代码,此代码主要反映物理键位,不区分字母大小写;Shift参数描述键盘组合键
102、的状态,可结合该参数来判断输入字母的大小写。KeyDown事件和事件和KeyUp事件产生之后,随即产生事件产生之后,随即产生KeyPress事件。事件。6KeyPress事件事件 按键事件,在窗体内按下键盘中的任意一键后又按键事件,在窗体内按下键盘中的任意一键后又释放该键时将触发释放该键时将触发KeyPress事件。事件。事件过程格式为:事件过程格式为:Private Sub Form_KeyPress(KeyAscii As Integer)End Sub该事件被触发时,被按键的该事件被触发时,被按键的ASCII码将自动传递给事件过程的码将自动传递给事件过程的KeyAscii参数保存。以后在
103、程序中,通过访问该参数的值,即可获知参数保存。以后在程序中,通过访问该参数的值,即可获知用户按下了哪一个键,并可识别字母的大小写。该事件在实际编程中,用户按下了哪一个键,并可识别字母的大小写。该事件在实际编程中,应用较广泛。应用较广泛。例如:在窗体上显示所按键的字母。例如:在窗体上显示所按键的字母。Private Sub Form_KeyPress(KeyAscii As Integer) Print Chr(KeyAscii) 输出按键的输出按键的ASCII码所对应的字母码所对应的字母End Sub7Initialize事件事件 初始化,是建立窗体时首先被触发的事件,先于初始化,是建立窗体时
104、首先被触发的事件,先于Load事件。事件。8Load事件事件 装载事件,装载事件, 把窗体装入内存,发生在把窗体装入内存,发生在Initialize事件事件之后,之后,Activate事件之前。事件之前。9Activate事件 当窗体成为活动窗口时触发该事件,发生在Load事件后。10QueryUnload事件 即将卸载,关闭窗体时(如双击“系统菜单”图标,或单击“关闭”按钮)先触发该事件,接着触发UnLoad事件。11Unload事件 卸载,从屏幕上关闭窗体时触发该事件,发生在QueryUnLoad事件之后,Terminate事件之前。Private Sub Form_Unload(Canc
105、el As Integer)End Sub该事件过程中的Cancel参数可设置为零或非零值。若为0,则表示确认关闭窗体的操作;为非0值,则表示取消当前关闭窗体的操作。12Resize事件 调整尺寸,改变窗体大小时触发该事件。13Paint事件 着色,当窗体被移动、放大或某些被遮盖的部分重新暴露时触发该事件。3.2.3 窗体的方法1Cls 清屏,清除运行期间添加在窗体上的图形和文本。其用法格式为:对象名.Cls例如:清除窗体上的文本信息 Form1.Cls2Print 显示信息,显示文本或数据。其用法格式为:其用法格式为:对象名对象名.Print 表达式表表达式表,| ;语句说明:语句说明:(1
106、)此处的)此处的“对象名对象名”可以是窗体、图片框或打印机对象(可以是窗体、图片框或打印机对象(Printer)。)。如果缺省对象,则系统默认在当前窗体上打印输出。例如:如果缺省对象,则系统默认在当前窗体上打印输出。例如:Form1.Print“Visual Basic程序设计程序设计” 在窗体在窗体Form1上显示输出该上显示输出该字符串字符串Print“Visual Basic程序设计程序设计” 缺省对象名,系统默认在当前窗缺省对象名,系统默认在当前窗体上显示输出体上显示输出Picture1.Print“Visual Basic程序设计程序设计” 在图片框在图片框Picture1上输出上输
107、出字符串字符串(2)“表达式表表达式表”可以是数值表达式或字符串表达式的一个列表。若省可以是数值表达式或字符串表达式的一个列表。若省略表达式,则打印输出一个空行。例如:略表达式,则打印输出一个空行。例如:Form1.Print “Computer” 在窗体在窗体Form1上输出字符串上输出字符串ComputerForm1.Print sqr(256)*2-10 在窗体在窗体Form1上输出数值表达式的值上输出数值表达式的值Form1.Print 在窗体在窗体Form1上一空行上一空行(3)当)当Print后的表达式有多个时,各表达式之间要用逗号或分号隔开。后的表达式有多个时,各表达式之间要用逗
108、号或分号隔开。若用逗号分隔,则数据项按标准输出格式显示,它以若用逗号分隔,则数据项按标准输出格式显示,它以14个字符位置为单位,个字符位置为单位,将一输出行分为若干区段,逗号后面的表达式就在下一个区段显示输出。将一输出行分为若干区段,逗号后面的表达式就在下一个区段显示输出。如果各表达式之间用分号作为分隔符,则按紧凑格式输出,对于数值型数如果各表达式之间用分号作为分隔符,则按紧凑格式输出,对于数值型数据,输出时前面有一个符号位,后面有一个空格,而对于字符串输出时,据,输出时前面有一个符号位,后面有一个空格,而对于字符串输出时,前后都没有空格。前后都没有空格。例如:例如:Print 8,9,122
109、,“abcd”,“access” Print 8;9;122,“abcd”;“access”(4)一般情况下,执行完)一般情况下,执行完Print语句后系统会自动换行,但若最后一语句后系统会自动换行,但若最后一个表达式的末尾带有逗号或分号,则个表达式的末尾带有逗号或分号,则Print语句执行完后,系统不会换语句执行完后,系统不会换行,下一个行,下一个Print语句的输出仍将在该行继续输出。若表达式的末尾带语句的输出仍将在该行继续输出。若表达式的末尾带的是分号,则下一个的是分号,则下一个Prin输出的内容将紧跟其后输出;若带的是逗号,输出的内容将紧跟其后输出;若带的是逗号,则在同一行的下一个显示
110、区输出。则在同一行的下一个显示区输出。3Move 移动,把窗体移动到某个位置。移动,把窗体移动到某个位置。其用法格式为:其用法格式为:对象名对象名.Move X,Y,Width,Height该方法移动窗体或控件时可改变大小,若缺省该方法移动窗体或控件时可改变大小,若缺省“对象名对象名”,则默认为,则默认为当前窗体。当前窗体。参数参数X,Y代表移动到目标位置的坐标,代表移动到目标位置的坐标,Width和和Height参数代表移参数代表移动到目标位置后,对象的宽度和高度,通过这两个参数实现对象大小的动到目标位置后,对象的宽度和高度,通过这两个参数实现对象大小的调整。若省略调整。若省略Width和和
111、Height参数,则移动过程中保持对象大小不变。参数,则移动过程中保持对象大小不变。例如:若要将窗体移动到屏幕的(例如:若要将窗体移动到屏幕的(300,400)的位置,则实现语句为:)的位置,则实现语句为:Move 300,4004Hide 隐藏,隐藏窗体,但不卸载。隐藏,隐藏窗体,但不卸载。其用法格式为:窗体名其用法格式为:窗体名.Hide5Show 显示窗体,该方法激活窗体的显示窗体,该方法激活窗体的Activate事件。事件。其用法格式为:窗体名其用法格式为:窗体名.Show窗体显示模式窗体显示模式参数说明:参数说明:“窗体显示模式窗体显示模式”参数为可选项,用于指定窗体以哪种参数为可选
112、项,用于指定窗体以哪种方式显示。其取值为方式显示。其取值为0或或1。为。为1则窗体以模态方式显示,此时用户只则窗体以模态方式显示,此时用户只能在本窗体中操作,不能切换到其它窗口,直到本窗口被关闭为止;能在本窗体中操作,不能切换到其它窗口,直到本窗口被关闭为止;若参数为若参数为0则窗体以非模态方式显示,此时用户可在本窗体与其它窗则窗体以非模态方式显示,此时用户可在本窗体与其它窗体之间任意切换操作,此值为默认值。体之间任意切换操作,此值为默认值。例如:为了让刚装入的窗体显示出来,则可用以下语句来实现:例如:为了让刚装入的窗体显示出来,则可用以下语句来实现:Form2.Show若要使窗体若要使窗体F
113、orm2以模态方式显示,则可用以下语句来实现以模态方式显示,则可用以下语句来实现Form2.Show 13.2.4 窗体的生命周期窗体的生命周期窗体在整个存活期间有窗体在整个存活期间有4种状态:创建、加载、可见及卸载状态。种状态:创建、加载、可见及卸载状态。(1)创建窗体)创建窗体 Initialize事件是创建窗体状态开始的标志。放在事件是创建窗体状态开始的标志。放在Form_Initialize事件过程中的代码,是创建窗体时最先执行的代码。事件过程中的代码,是创建窗体时最先执行的代码。(2)加载窗体)加载窗体Load事件标志着加载状态的开始。一旦窗体进入加载状事件标志着加载状态的开始。一旦
114、窗体进入加载状态,态,Form_Load事件过程中的代码开始执行。事件过程中的代码开始执行。(3)可见状态)可见状态使用窗体使用窗体Show方法,可以使窗体进入可见状态。例如:方法,可以使窗体进入可见状态。例如:Form1.Show窗体可见窗体可见Form1.Hide窗体被隐藏窗体被隐藏(4)卸载窗体)卸载窗体当当Unload事件发生后,窗体被卸载。窗体卸载时可以是事件发生后,窗体被卸载。窗体卸载时可以是隐藏的,也可以是可见的。隐藏的,也可以是可见的。3.2.5设置启动窗体设置启动窗体1设置启动窗体设置启动窗体在默认情况下,应用程序在的第一个窗体被指定为启动窗体。应用程序在默认情况下,应用程序
115、在的第一个窗体被指定为启动窗体。应用程序运行时,该窗体被显示出来。若要改变启动窗体,可按以下方法操作:运行时,该窗体被显示出来。若要改变启动窗体,可按以下方法操作:(1)在菜单栏上选择)在菜单栏上选择“工程工程-工程属性工程属性”选项;选项;(2)在弹出的对话框中选取)在弹出的对话框中选取“通用通用”选项卡;选项卡;在在“启动对象启动对象”列表框中选取作为新启动窗体的窗体,见图列表框中选取作为新启动窗体的窗体,见图3-3,单击,单击“确定确定”按钮。按钮。2设置启动过程有时应用程序启动时不加载任何窗体。例如,先装入数据文件;或先显示一个要求输入密码的对话框,以确认用户的身份,这时可先在标准模块
116、中创建一个名为Main的过程,然后用上述方法将“启动对象”设置为Main过程。Main过程必须是一个标准模块中的子过程,不能在窗体模块内。使用过程启动应用程序后,需使用Show方法显示窗体。3设置启动快速显示窗体如果启动时有一个较长的执行过程(例如从数据库装入大量数据或大型位图),可以显示一个快速显示窗体,以吸引用户注意,造成应用程序装载很快的错觉。建立快速显示窗体的方法:在菜单栏上选择“工程添加窗体”选项,弹出“添加窗体”对话框,在“添加窗体”对话框的“新建”选项卡选择“展示屏幕”选项,即可在工程中添加快速显示窗体。快速显示窗体通常显示程序名、版本信息和一个简单的位图等。显示快速显示窗体需要
117、用Sub Main过程作为启动对象,并用Show方法显示该窗体。例如:图3-3Private Sub Main() Frmsplash.Show 显示快速显示窗体显示快速显示窗体 添加启动过程等添加启动过程等 FrmMain.Show 显示主窗体显示主窗体 Unload frmsplash 卸载快速显示窗体卸载快速显示窗体End Sub3.3焦点与Tab键对象的焦点指接收用户鼠标和键盘输入的能力。当对象具有对象的焦点指接收用户鼠标和键盘输入的能力。当对象具有焦点时,可接收用户的输入。在焦点时,可接收用户的输入。在Windows环境中,任一时刻同环境中,任一时刻同时运行多个应用程序,但只有具有焦
118、点的应用程序才有活动标时运行多个应用程序,但只有具有焦点的应用程序才有活动标题栏,才能接收用户输入。例如,在有多个文本框的窗体中,题栏,才能接收用户输入。例如,在有多个文本框的窗体中,只有具有焦点的文本框才显示由键盘输入的文本。只有具有焦点的文本框才显示由键盘输入的文本。当对象得到或失去焦点时,触发当对象得到或失去焦点时,触发GotFocus事件或事件或LostFocus事件。窗体和多数控件支持这些事件。事件。窗体和多数控件支持这些事件。Tab键使焦点从一个控件移到另一个控件,移动的顺序取决于键使焦点从一个控件移到另一个控件,移动的顺序取决于控件的控件的TabIndex属性值。属性属性值。属性
119、TabIndex0的控件首先获得的控件首先获得焦点,其次是属性焦点,其次是属性TabIndex 1的控件,依此类推。因此,可的控件,依此类推。因此,可通过改变控件的通过改变控件的TabIndex属性值改变焦点的移动顺序。属性值改变焦点的移动顺序。一个控件可通过以下一个控件可通过以下3种方法获得焦点:种方法获得焦点:(1)单击控件;)单击控件;(2)按)按Tab键进行选择;键进行选择;(3)在代码中使用)在代码中使用SetFocus方法。例如,方法。例如,Text1.SetFocus可使文可使文本框本框Text1 获得焦点。具有标题属性的控件获得焦点时,其标题周围获得焦点。具有标题属性的控件获得
120、焦点时,其标题周围出现一个虚线框。出现一个虚线框。并不是所有的对象都能接收焦点。标签、框架、定时器、图片框、形并不是所有的对象都能接收焦点。标签、框架、定时器、图片框、形状、画线等控件不接收焦点。窗体只有在其中的任何控件都不具有焦状、画线等控件不接收焦点。窗体只有在其中的任何控件都不具有焦点时才能接收焦点。点时才能接收焦点。当窗体内有许多控件时,在同一时刻有且只有一个控件具有焦点,当当窗体内有许多控件时,在同一时刻有且只有一个控件具有焦点,当某个控件获得焦点时,原先具有焦点的控件即失去焦点。某个控件获得焦点时,原先具有焦点的控件即失去焦点。3.4命令按钮命令按钮是VisualBasic中最常用
121、的控件之一,它用来作为一种命令控制,通常通过鼠标单击按钮实现一个命令的启动、中断或结束。当用鼠标单击命令按钮时,看起来像有一个被按下的动作。3.4.1命令按钮的属性1Default属性指定命令按钮为窗体内的“默认”按钮。其默认值为False。Default=True时,即使焦点不在命令按钮上,按回车键也可触发其Click事件。2Cancel属性指定命令按钮为窗体内的“取消”按钮。其默认值为False。Cancel=True时,即使焦点不在命令按钮上,按Ese键也可触发其Click事件。3Style属性设置命令按钮的外观样式。当Style=0时(默认值),是标准的Windows样式;当Style
122、=1时,是图形样式,允许在命令按钮上放置图片。1.Picture属性当Style=1时,指定放置在命令按钮上的图片。设置后的图形命令按钮效果如图3-4 所示。 图3-45DisabledPicture属性当命令按钮无效时,显示在命令按钮上的图片(Style=1)。6DownPicture属性当命令按钮被按下时,显示在命令按钮上面的图片(Style=1)。7ToolTipText属性鼠标指向命令按钮时,允许显示一个提示框,该属性值是提示框的字符串。8Value属性属性 指定命令按钮的选中状态。指定命令按钮的选中状态。该属性只在程序运行时使用。逻辑值为该属性只在程序运行时使用。逻辑值为False(
123、默认值)(默认值)/True该属性的另一个重要用途是用于以程序方式该属性的另一个重要用途是用于以程序方式来激活命令按钮。当在程序中将某命令按钮的来激活命令按钮。当在程序中将某命令按钮的Value属性值设为属性值设为True或或1时,将激活该命令时,将激活该命令按钮的按钮的Click事件,从而执行其事件过程。事件,从而执行其事件过程。例如,若要在程序中调用执行命令按钮例如,若要在程序中调用执行命令按钮Command3的的Click事件过程,则可采用如下事件过程,则可采用如下语句来实现:语句来实现:Command3.Value=True或或 Command3.Value=19ToolTipText
124、属性属性 用于设置当鼠标指向用于设置当鼠标指向命令按钮时显示的提示文本。命令按钮时显示的提示文本。3.4.2 命令按钮的事件命令按钮的事件1Click事件事件 单击鼠标左键时发生。单击鼠标左键时发生。2GotFocus事件事件 获得焦点时发生。获得焦点时发生。3LostFocus事件事件 失去焦点时发生。失去焦点时发生。3.4.3 命令按钮的方法命令按钮的方法1SetFocus方法方法 设置焦点。设置焦点。2Move 方法方法 移动并可改变大小。移动并可改变大小。3.4.4 命令按钮应用实例命令按钮应用实例例例3-1 设计如图设计如图3-5所示的窗体,包含所示的窗体,包含4个命令按钮。运行时,
125、个命令按钮。运行时,“我我出来啦出来啦”按钮不可见;单击按钮不可见;单击“显示显示”按钮,按钮,“我出来啦我出来啦”按钮显示出来按钮显示出来(见图(见图3-5);单击);单击“隐藏隐藏”按钮,按钮,“我出来啦我出来啦”按钮被隐藏(见图按钮被隐藏(见图3-6)。)。1在窗体上绘制在窗体上绘制4个命令按钮,设计好界面,然后按表个命令按钮,设计好界面,然后按表3.1所示的属所示的属性设置值来设置各控件的属性。性设置值来设置各控件的属性。表3.1控件对象属性设置值对象类型(对象名)属性名称属性设置值说明窗体(Form1)Caption命令按钮例子命令按钮(Command1)Caption显示命令按钮(
126、Command2)Caption隐藏命令按钮(Command3)Caption结束命令按钮(Command4)Caption我出来啦2编编写程序代写程序代码码(略)略)3保存工程,运行程序。保存工程,运行程序。 图3-5图3-63.5文本框和标签文本框和标签文本框控件既可用来显示文本,也允许在其中输入或修改文本。它经常用来实现数据的输入、编辑和修改等。标签控件通常用作其他控件的说明,但标签控件本身没有文本输入的功能。标签的标题属性可以提供说明性的文本,这些文本在运行期间不可通过输入修改。3.5.1 文本框的属性1Text属性 输入存放在文本框内的字符串。默认值为“Text1”、“Text2”等
127、。在编程中,可通过访问文本框架的Text属性来获得用户的输入值。例如:为了获得用户在Text1文本框中所输入内容,可通过如下语句来实现:Dim Txt As StringTxt=Text1.Text若要在程序中清除文本框中所显示的内容,则可用如下语句来实现:Text1.text=”2MultiLine属性属性 设置是否允许存放多行文本。默认值为设置是否允许存放多行文本。默认值为False,只允许存放一行文本。若该属性设置为,只允许存放一行文本。若该属性设置为True,则文本框,则文本框具有自动换行功能,可输入或显示多行文本。否则,文本框只能具有自动换行功能,可输入或显示多行文本。否则,文本框只
128、能输入或显示单行正文,不能自动换行。输入或显示单行正文,不能自动换行。当没有水平滚动条时,多行文本会使一个长的字符串自动换行。当没有水平滚动条时,多行文本会使一个长的字符串自动换行。3ScrollBars属性属性 设置文本框内是否有滚动条。其中:设置文本框内是否有滚动条。其中: 0无滚动条(默认值);无滚动条(默认值); 1只有水平滚动条;只有水平滚动条; 2只有垂直滚动条;只有垂直滚动条; 3有水平和垂直滚动条。有水平和垂直滚动条。4MaxLength属性属性 设置文本框内文本的最大长度(字符数)设置文本框内文本的最大长度(字符数)。若若MaxLength = 0(默认值),则文本的最大长度
129、为(默认值),则文本的最大长度为32 000;用户可按需要设置最大长度(不能超过;用户可按需要设置最大长度(不能超过65535,实际允许的长,实际允许的长度还受到内存容量的限制)。度还受到内存容量的限制)。5PasswordChar属性属性 密码替换符。在文本框内输入口令密码替换符。在文本框内输入口令时,时,PasswordChar属性设置显示在文本框内的字符。例如,当属性设置显示在文本框内的字符。例如,当PasswordChar属性设置为属性设置为“*”时,无论在文本框内输入什么时,无论在文本框内输入什么字符,显示出来的都是星号。若该属性值为空(默认),则文本字符,显示出来的都是星号。若该属
130、性值为空(默认),则文本框不作为输入密码使用。框不作为输入密码使用。6Locked属性 锁定文本内容,防止更改文本内容。默认值为False。该属性设置为True时,文本框不响应键盘输入,变为只读文本框,但仍可通过Text属性改变文本框中的内容。7HideSelection属性 隐藏选定的文本,默认值为Ture,不呈反相显示。当HideSelectionFalse时,若指定的文本框失去焦点,选定的文本将呈反相显示。8ToolTipText属性 设置提示框文本,同命令按钮。9SelText属性 其值为一个字符串,等于文本框内被选定的文本。10SelLength属性 选定文本的长度,单位为字符。11
131、SelStart属性 选定文本的开始位置。如果没有选定文本,则指示插入点位置。12IMEMode属性 输入法编辑器模式,返回或设置输入法编辑器的当前操作模式。其中: 0无操作模式(默认值); 1打开输入法; 2关闭输入法,此时不接收汉字输入法。3.5.2 文本框的事件1KeyPress事件 按下并放开键盘上字符键时触发该事件。该事件返回一个ASCII参数。例如,键入字符“A”时,返回的ASCII值为65;当ASCII值为13时,表示输入了一个回车符。如果我们要求在文本框中输入的只能是0-9这10个数字,可在其KeyPress事件过程中编写代码:Private Sub Text1_KeyPres
132、s(KeyAscii As Integer)如果按键所对应的ASCII字符小于字符0的ASCII码 Asc(0),或大于字符9的ASCII码 Asc(9)If KeyAscii Asc(9) Then KeyAscii = 0 清除不满足条件的非数值字符 End IfEnd Sub 2KeyDown事件 按下键盘上任意键时触发该事件。3KeyUp事件 松开键盘上任意键时触发该事件。4Change事件 文本框内的文本发生改变时触发该事件。5MouseMove事件 移动鼠标时触发该事件。6GotFocus事件 输入焦点移动到文本框内时触发该事件。7LostFocus事件 文本框失去焦点时触发该事件
133、。3.5.3 标签的属性标签的属性1Caption 属性属性 设置标签框所显示的文本信息。其最大长度为设置标签框所显示的文本信息。其最大长度为1024个字节。个字节。2AutoSize属性属性 自动缩放,调整标签的水平宽度,使之适合标题文本自动缩放,调整标签的水平宽度,使之适合标题文本的宽度。默认值为的宽度。默认值为False。3WordWrap属性属性 自动调整标签的高度,使之适合标题文本的高度。自动调整标签的高度,使之适合标题文本的高度。默认值为默认值为False。4Alignment属性属性 设置标题文本的对齐方式。属性值如下:设置标题文本的对齐方式。属性值如下: 0左对齐(默认值);左
134、对齐(默认值); 1右对齐;右对齐; 2置中。置中。5BackStyle属性属性 背景样式,指定标签控件是透明或不透明的。属性背景样式,指定标签控件是透明或不透明的。属性值如下:值如下: 0透明的;透明的; 1不透明的(默认值)。不透明的(默认值)。6BorderStyle属性属性 边框样式,属性值如下:边框样式,属性值如下: 0无边框(默认值);无边框(默认值); 1有固定单线边框。有固定单线边框。7UseMnemonic属性属性 指定是否将标签指定是否将标签Caption属性中的符号定义属性中的符号定义为访问键定义符。默认值为为访问键定义符。默认值为True。3.5.4标签的事件标签能响应
135、绝大多数的事件,其常用的事件有以下两个。1Click事件单击时发生。2DblClick事件双击时发生。3.5.5应用实例例3-2 设计一个登陆窗口,在文本框内输入密码,若密码正确则出现一个欢迎窗口,否则提示出错,并等待重新输入密码。1设计应用程序界面(从略)2各控件对象的属性设置参见表3-2。对象类型(对象名)属性名称属性设置值说明窗体(Form1)Caption登陆窗口标签框(Label1)Caption请输入密码:文本框(Text1)PasswordChar*密码替换符为“*”命令按钮(Command1)Caption确定命令按钮(Command2)Caption取消表3-2控件对象属性设
136、置值3 3编编写程序代写程序代码码(略)(略)4 4保存工程,运行程序,保存工程,运行程序,结结果果见图见图3-7所示:所示:图图3-73.6基本控件综合实例基本控件综合实例例例3-3 3-3 建立一个建立一个简单编辑简单编辑器。用器。用户户在文本框中在文本框中输输入文本后,入文本后,选选中某些中某些文本文本时时可可进进行行“剪切剪切”、“复制复制”和和“粘粘贴贴”操作。操作。提示:用字符串提示:用字符串变变量先将量先将选选定文本定文本进进行保存,以便完成行保存,以便完成“复制复制”和和“粘粘贴贴”的功能。的功能。1 1设计应设计应用程序界面(用程序界面(见图见图3-8)2 2各控件各控件对对
137、象的属性象的属性设设置参置参见见表表3-33-3。对象类型(对象名)属性名称属性设置值说明窗体(Form1)Caption简单编辑器文本框(Text1)MultiLineTrue命令按钮(Command1)Caption剪切命令按钮(Command2)Caption复制命令按钮(Command3)Caption粘贴命令按钮(Command4)Caption结束表3-3控件对象属性设置值4 4保存工程,运行程序,保存工程,运行程序,结结果果见图见图3-8所示:所示:图图3-83编写程序代码编写程序代码3.7本章小结本章介绍了VB的窗体和其基本控件:命令按钮、标签控件和文本框控件,并介绍了焦点和T
138、ab键的设置。其中,主要介绍了标准控件的一些基本属性和窗体的常用属性、事件和方法;命令按钮的常用属性、事件和方法;标签和文本框常用属性及事件。这些内容是VB的最基础知识,读者一定要学习并掌握。练习与思考1若要使窗体的关闭按钮失效,即单击后,不会关闭窗体,如何编程实现?2命令按钮的名称属性和Caption属性有何不同?Enabled属性与Visible属性呢?3怎样使得控件具有焦点?4标签控件与文本框控件有何异同点?5 5设计设计一个程序,由用一个程序,由用户户从从键盘键盘上上输输入两个数,入两个数,单击单击“求和求和”按按钮钮,将,将这这两两个数的和个数的和显显示出来。用示出来。用户户界面如界
139、面如图图3-93-9。图图3-9第第4章章常用控件常用控件本章学习目标本章学习目标框架控件框架控件单选按钮的属性、事件及应用实例单选按钮的属性、事件及应用实例复选框的属性、事件及应用实例复选框的属性、事件及应用实例列表框和组合框的基本属性、常用方法及事件列表框和组合框的基本属性、常用方法及事件定时器的基本属性和定时器的基本属性和TimerTimer事件事件滚动条的基本属性和常用事件滚动条的基本属性和常用事件4.1框架框架框架(Frame)控件同窗体一样,可用作其他控件的容器。在容器中的控件不仅可以随着载体同时移动,而且控件的位置属性也是相对容器的位置设置的。框架控件不仅可以作为其他控件的载体,
140、而且可用框架控件把窗体按功能细分,即将其他控件分成可标识的控件组。4.1.1 框架的属性1BorderStyle属性 边框样式,属性值如下:0无边框(默认值);1有固定单线边框。2Caption属性 设置框架显示的标题信息。可将该属性设置为空,让框架形成封闭的边框。4.2单选按钮控件4.2.1 单选按钮的属性单选按钮的属性单选按钮(单选按钮(Option)控件除常用属性外,还有以下属性:)控件除常用属性外,还有以下属性:1Value属性属性 控件是否选中的标记,默认值为控件是否选中的标记,默认值为Flase。Value=True表示该按钮被选中,可在代码中设置表示该按钮被选中,可在代码中设置
141、Value属性来选属性来选定按钮。定按钮。2Style属性属性 指定是否使用图形样式,其中:指定是否使用图形样式,其中: 0(默认值)常规样式:(默认值)常规样式: 1图形样式,此时允许在按钮上设置图片。图形样式,此时允许在按钮上设置图片。3Picture属性属性 指定设置在单选按钮上的图片指定设置在单选按钮上的图片,仅在仅在Style=1时时有效。有效。4DownPicture属性属性 指定按钮按下时显示在按钮上的图片指定按钮按下时显示在按钮上的图片,仅在仅在Style=1 时有效。时有效。5DisabledPicture属性属性 当当Enalbed=False时显示在按钮上时显示在按钮上的
142、图片,仅在的图片,仅在Style=1时有效。时有效。4.2.2 单选按钮的事件单选按钮的事件Click(单击单击)事件:选定按钮时将触发其事件:选定按钮时将触发其Click事件。是否有必要响事件。是否有必要响应该事件,将取决于应用程序的功能。应该事件,将取决于应用程序的功能。4.2.3 单选按钮应用实例单选按钮应用实例根据程序功能的需要,可将单选按钮分组。把单选按钮绘制在不同根据程序功能的需要,可将单选按钮分组。把单选按钮绘制在不同的容器控件(如的容器控件(如Frame控件、控件、PictureBox控件,或窗体等容器控件)控件,或窗体等容器控件)中,运行时,用户可在每个选项组中选定一个单选按
143、钮。例如,把单中,运行时,用户可在每个选项组中选定一个单选按钮。例如,把单选按钮分别添加到窗体和窗体上的一个选按钮分别添加到窗体和窗体上的一个Frame控件中,相当于创建两控件中,相当于创建两组不同的单选按钮,可在两组单选按钮中各自选定一个单选按钮。组不同的单选按钮,可在两组单选按钮中各自选定一个单选按钮。在一组单选按钮控件中,每个控件代表一个选项。当某个选项被选在一组单选按钮控件中,每个控件代表一个选项。当某个选项被选中时,其他按钮自动处于未选状态。在任一时刻,只能有一个单选按中时,其他按钮自动处于未选状态。在任一时刻,只能有一个单选按钮处于被选状态。钮处于被选状态。运行时选择单选按钮控件的
144、方法:用鼠标单击按钮,用运行时选择单选按钮控件的方法:用鼠标单击按钮,用Tab键将焦键将焦点移动到控件,或者在代码中将按钮的点移动到控件,或者在代码中将按钮的Value属性设置为属性设置为True。例例4-1 设计一个程序,用户界面由四个单选按钮、一个框架控件、设计一个程序,用户界面由四个单选按钮、一个框架控件、一个标签控件和一个命令按钮组成,程序开始运行后,用户单击某个一个标签控件和一个命令按钮组成,程序开始运行后,用户单击某个单选按钮,就可将它对应的内容(星期、日期、月份或年份)显示在单选按钮,就可将它对应的内容(星期、日期、月份或年份)显示在标签框中。标签框中。1 1设计应设计应用程序界
145、面(从略)用程序界面(从略)2 2各控件各控件对对象的属性象的属性设设置参置参见见表表4-14-1。对象类型(对象名)属性名称属性设置值说明窗体(Form1)Caption单选按钮的使用标签框(Label1)Caption设置为空标签框(Label1)BorderStyle1边框为单线框框架(Frame1)Caption请选择单选按钮(Option1)Caption日期单选按钮(Option2)Caption星期单选按钮(Option3)Caption月份单选按钮(Option4)Caption年份命令按钮(Command2)Caption结束表4-1控件对象属性设置值3编写程序代码编写程序代
146、码(略略)保存工程,运行程序,结果见图保存工程,运行程序,结果见图4-1图4-14.3复选框在多项选择问题中常使用复选框(CheckBox)控件。在同一组复选框中,用户可以同时选择多个选项。选定复选框控件时,该控件将显示选定标记。通常用该控件提供Yes/No或True/False选项。可用分组的复选框控件显示多个选项,供用户从中选择一个或多个选项。复选框控件与单选按钮控件的比较:相同点:每个控件都用来指示用户的选择。不同点:一组单选按钮中,一次只能选定其中一个按钮;一组复选框中,一次可选定任意个复选框。4.3.1 复选框的属性1Value属性 指示复选框处于选中、未选中或禁选状态(暗淡)。其中
147、,Value=0表示未选中(默认值),Value=1表示选中,Value=2表示禁选。2Style属性 指定是否使用图形样式,其中,Style=0表示常规样式(默认值);Style=1表示图形样式,用法同单选框。更改Style属性的设置值后使用Picture、DownPicture和DisabledPicture属性,可增强视觉效果。4.3.2 复选框的事件Click(单击)事件:无论何时单击复选框控件都将触发Click事件,然后编写应用程序,根据复选框的状态执行某些操作。每次单击复选框控件时,都将改变其Value属性,以指示选定或未选定状态。注意:复选框控件不支持双击事件。4.3.3 复选框
148、应用实例例例4-24-2 设计一个程序,单击复选框可以改变文本的字体、字型、颜色及大小。1设计应用程序界面(从略)2各控件对象的属性设置参见表4-2。对象类型(对象名)属性名称属性设置值说明窗体(Form1)Caption复选框的使用标签框(Label1)Caption请在下面输入一段文字:标签框(Label1)BackStyle0标签背景透明文本框(Text1)MultiLineTrue复选框(Check1)Caption宋体复选框(Check2)Caption斜体复选框(Check3)Caption16点复选框(Check4)Caption红色表4-2控件对象属性设置值4 4保存工程,运行
149、程序,保存工程,运行程序,结结果果见图见图4 4-2图4-23编写程序代码(略)列表框(Listbox)控件可显示一个含有若干选项的列表,程序运行时可用鼠标或箭头键从中选择一项或多项,选中的项呈反相显示。4.4.1 列表框的属性1List属性 设置或返回列表框中的列表项内容。该属性实际上是一个字符型数组,数组的元素就是列表中的每个项目,数组下标是列表项的顺序号,从0开始编号。设计时,该属性栏提供一个文本框,可在其中输入一些选择项。运行时,可通过该属性实现对列表项内容的设置或访问。引用列表项目的语法格式:列表框名.List(Index)其中,Index是项目的位置,List(0)指向第一项,Li
150、st(1)指向第二项等。2ListCount属性 列表框中包含项目的总数。3ListIndex属性 当前选中项目的索引号。其中,第一项选中时索引号为0,第二项选中时索引号为1。无选中项目时,该属性值为-1。该属性常与List属性配合使用,以获得当前被选中的列表项内容,使用格式为:当前被选中的列表项内容=对象名.List(对象名.ListIndex)该属性只在运行时可用,一旦设置列表框的ListIndex属性,将触发控件的Click事件。4Text属性 包含当前在列表框中选定的项目,属性值与List(ListIndex)相同。该属性在设计时和运行时均为只读属性。5Selected属性 指示某个项
151、目的选中状态。例如,Selected(0)=True表示第一项被先选中。6Style属性 指定列表框的样式。其中,0(默认值)常规样式:1复选框样式,每个选项前带有一个复选框,允许同时选择多个选项。7MultiSelect属性 指明是否允许在列表框内同时选中多个选项。其中:0不允许多项选择(默认值,标准列表框)。1简单多项选择,移动光标键指向某个选项,单击鼠标或按空格键可在选与不选之间切换,可同时选中多项2扩展多项选择,可用Shift+单击或Shift+箭头键选定从上一个选定项到当前的选项之间的所有选项。Ctrl+单击选定(或撤销选定)列表中的项目。8Sorted属性 指定列表中的各选项是否自
152、动按字母顺序排序(排序时不区分大小写)。默认值为False(不按字母顺序排序)。9Columns属性 指定列表框中的各选项在一列中垂直滚动或在多列中水平滚动。其中:0垂直滚动的单列列表框。1水平滚动的单列列表框。2水平滚动的多列列表框。列表框为用户提供了选项的列表。虽然可以设置多列列表,但在缺省时将在单列列表中垂直显示选项。如果选项数目超过列表框可显示的数目,控件将自动出现滚动条,用户可在列表框中上、下、左、右滚动。4.4.2 列表框的事件列表框主要有以下事件:1.Click(单击)事件。2.DblClick(双击)事件。3.ItemCheck复选项事件。当Style=1且选择或清除了一个选项
153、时触发该事件。说明:在实际应用中,列表框常与命令按钮配合使用,在列表框中选择好列表项后,再通过命令按钮执行相应的操作。命令按钮的Click事件过程对应于列表框的选项操作。双击列表框中的项目与先选定项目然后单击命令按钮具有相同的效果。因此,应在列表框控件的DblClick事件过程中调用命令按钮的Click事件过程,这将为使用鼠标的用户提供快捷方式。其调用方法为:Private Sub List1_DblClick() Command1_Click 或 Command1.Value=TrueEnd Sub4.4.3 列表框的方法列表框的方法主要有:1AddItem(添加项)方法 向列表框添加一个项
154、目 。语法格式:列表框名. AddItem 要增加的列表项 列表项序号说明:“列表项序号”用于指定新插入的项在列表框中的位置。若省略该参数,则将项目插入在末尾(或按排序次序插入在适当的位置)。例子:List1.AddItem “计算机应用基础教研室” ,22RemoveItem(删除项)方法 从列表框中删除一个项目。语法格式:列表框名.RemoveItem 列表项序号3Clear(清除)方法 清除列表框中的所有项目。4.4.4 列表框应用实例例例4-3 编程实现学生选修课程。该窗体有两个列表框,左边列表框提供所供选修的课程目录,右边列表框显示用户进行选修的课程。运行时,双击左边列表框中某个项目
155、则该项目添加到右边列表框中;或单击左边列表框中某项,然后单击“”按钮,则该项目添加到右边列表框中;单击“”按钮则将左边列表框中所有课程全部添加到右边列表框中。1设计应用程序界面(从略)2各控件对象的属性设置参见表4-3。表4-3控件对象属性设置值对象类型(对象名)属性名称属性设置值窗体(Form1)Caption计算机系04级第三学期专业选修课程标签框(Label1)Caption开设课程标签框(Label2)Caption选修课程列表框(List1)列表框(List2)命令按钮(Command1)Caption命令按钮(Command2)Caption命令按钮(Command3)Captio
156、n删除命令按钮(Command4)Caption统计命令按钮(Command5)Caption退出3编写程序代码(略)编写程序代码(略)4保存工程,运行程序,结果见图4-3、图4-4图4-3单击统计单击统计按按钮钮,会出,会出现统计现统计信息,如信息,如图图4 4-4所示。所示。图图4 4-44.5组合框组合框组合框(组合框(ComboBox)控件是文本框和列表框的组合,)控件是文本框和列表框的组合,包含一个文本框和一个列表框。用户既可在文本框部分输包含一个文本框和一个列表框。用户既可在文本框部分输入选项,也可用列表框部分选择选项。入选项,也可用列表框部分选择选项。4.5.1 组合框的属性组合
157、框的属性组合框的属性与列表框基本相同,另外还增加了一些与组合框的属性与列表框基本相同,另外还增加了一些与文本框相关的属性。文本框相关的属性。单击统计按钮,会出现统计信息,如图单击统计按钮,会出现统计信息,如图4-4所示。所示。1List 属性属性 设置或返回组合框中的项目内容,字符串设置或返回组合框中的项目内容,字符串数组。数组。2ListCount属性属性 组合框中所含项目的总数。组合框中所含项目的总数。3ListIndex属性属性 选中项目的索引号。选中项目的索引号。4Text属性属性 文本框内的字符串。通常指选中项目的内文本框内的字符串。通常指选中项目的内容。容。5Sorted 属性属性
158、 指定列表中的各项是否自动按字母顺指定列表中的各项是否自动按字母顺序排序(排序时并不区分大小写)。默认值为序排序(排序时并不区分大小写)。默认值为False。6Locked属性指定是否允许编辑修改各列表项。默认值为False,即不锁定,允许编辑修改各列表项。1.Style属性组合框有3种样式(见图4-5):Style=0(默认值)时,为下拉式组合框;Style=1时,为简单组合框;Style=2时,为下拉式列表框。每种样式都可在设计或运行时设置。图图4 4-5(1)下拉式组合框在缺省设置(Style=0)下,组合框为下拉式组合框。单击组合框右侧的箭头,可下拉一个选项列表框。从选项列表框中选择一
159、个选项后,该选项出现在组合框中的文本框内,同时关闭选项列表。此外,也可以直接在文本框内输入需要的文本。下拉式组合框适用于建议性的选项列表。可将不在列表中的选项输入文本区域中。只有单击组合框的向下箭头时才显示选项列表,所以组合框节省了窗体的空间。(2)简单组合框若Style=1,将指定一个简单组合框。与下拉式组合框不同的是,此时选项列表不能被关闭,任何时候都在显示选项列表。若要显示列表中所有选项,必须将列表框绘制得足够大。当选项数超过可显示的限度时,将自动插入一个垂直滚动条。用户既可以直接输入文本,也可以列表中选择。简单组合框适用于建议性的选项列表,但要显示列表中所有选项,必须将列表框绘制得足够
160、大。(3)下拉式列表框若Style=2,组合框为下拉式列表框,此时,文本框只能显示选项而不允许输入文本。下拉式列表框与列表框的区别:除非单击列表框右侧的箭头,否则不显示列表。下拉式列表框与下拉式组合框的主要差别:用户不能在列表框中输入选项,只能在列表中选择。下拉式列表框适用于希望将输入限制在列表之内。只有单击列表框的向下箭头时才显示全部列表。因此,下拉式列表框可节省窗体的空间。4.5.2 组合框的事件组合框的常用事件为Change。当用户修改了组合文本框中的内容或用代码修改了文本框的Text属性,即触发Change 事件。注意:Change事件仅在Style=0或Style=1时才会发生。4.
161、5.3 组合框的方法组合框的方法与列表框相似,主要包括:1AddItem(添加项)方法向列表框添加一个选项。2RemoveItem (删除项)方法从列表内删除一个选项。3Clear(清除)方法 清除列表中的所有选项。4.5.4 组合框应用实例例例4-44-4 输入一个人的姓名和出生年月日,输出其信息。1设计应用程序界面(从略)2各控件对象的属性设置参见表4-4。对象类型(对象名)属性名称属性设置值说明窗体(Form1)Caption输入一个人的生日标签框(Label1)Caption姓名标签框(Label2)Caption生日标签框(Label3)Caption年标签框(Label4)Capt
162、ion月标签框(Label5)Caption日标签框(Label6)Caption输出信息组合框(Combo1)Style0下拉式组合框组合框(Combo2)Style2下拉式列表框组合框(Combo3)Style2下拉式列表框命令按钮(Command1)Caption确定命令按钮(Command2)Caption退出表4-4控件对象属性设置值3编写程序代码4保存工程,运行程序,结果见图4-6图图4 4-64.6定时器定时器定时器(Timer)控件用来计时,当所预定的时间到了的时候,系统会自动触发其Timer事件,从而完成指定的操作。例如,移动一个条幅或一幅图片,构成动态效果,显示时钟等。在窗
163、体上放置计时器控件后,尽管在程序运行时不可见,但它依然在工作。因此,设计窗体时,可随意地把计时器控件放在窗体的某个位置上,并且允许同时使用多个定时器控件。4.6.1 定时器的属性定时器的属性较少,常用属性如下:1Enabled 属性 用于决定是否启动定时器。当该属性的值为True时,启动定时器的Timer事件;当该属性值为False时,关闭定时器。定时器的Enabled属性不同于其他对象的Enabled属性。对于大多数对象,Enabled属性决定对象是否响应用户触发的事件;定时器控件的Enabled属性值为False时,将暂停定时器操作。2Interval 属性 两次定时器事件触发的时间间隔(
164、ms)。Interval 属性的有效值在0到65 535s之间,其属性值既可在设计时设置,也可在程序运行时设置。由于硬件的某些原因,VB不会十分精确地按设置的间隔激活Timer事件。由于系统每秒生成18个时钟信号,因此,即使用ms来计量Interval属性,实际的时间间隔精确度误差不会超过1/18s。如果想得到准确的时间间隔,应让定时器检查系统时钟。定时器Interval属性值越小,定时器事件触发越频繁,响应事件所使用的处理器事件就越多,这将降低系统综合性能。除非有必要,否则不要设置过小的时间间隔。如果Interval=0,定时器停止工作。4.6.2 定时器的事件定时器控件的事件只有一个Tim
165、er事件。只要定时器控件的属性Enabled=True,而且Interval属性值大于0,则Timer事件以Interval 属性指定的时间间隔发生。在Timer事件过程中编写需要定时进行的处理,可以周期性地激活Timer事件,每隔一段时间自动地调用一次Timer事件过程。4.6.3定时器应用举例例例4-54-5 创建一个数字时钟,要求时钟的前景为绿色,背景为黑色,字体为宋体28点阵大小。程序开发步骤:1在窗体上绘制一个计时器控件和一个标签控件,设计好界面,然后按表4-5所示的属性设置值来设置各控件的属性对象类型(对象名) 属性名称属性设置值说明窗体(Form1)Caption时钟窗体(For
166、m1)BorderStyle3设置窗体为固定边界的对话框风格标签框(Label1)Caption设置为空标签框(Label1)BorderStyle1设置为单线型标签框标签框(Label1)Font宋体28点阵计时器(Timer1)Interval1000设置间隔为1秒表4-5控件对象属性设置值2双击计时器控件,在其Timer事件过程中编写程序代码:Private Sub Timer1_Timer( )Label1.Caption = Time 利用Time函数获取系统日期End Sub 图4-7 3保存工程,运行程序。界面如图4-7所示。 4.7滚动条滚动条滚动条通常用来附在窗体边上帮助观察
167、数据或确定位置,作为速度、滚动条通常用来附在窗体边上帮助观察数据或确定位置,作为速度、数量的指示器来使用,也可用来作为数据输入的工具。滚动条分为水数量的指示器来使用,也可用来作为数据输入的工具。滚动条分为水平滚动条(平滚动条(HscrollBar)和垂直滚动条()和垂直滚动条(VscrollBar)。除方向不)。除方向不一样外,水平滚动条和垂直滚动条的结构与操作是完全相同的。一样外,水平滚动条和垂直滚动条的结构与操作是完全相同的。滚动条的两端各有一个滚动箭头,在滚动箭头之间有一个滚动块。滚动条的两端各有一个滚动箭头,在滚动箭头之间有一个滚动块。滚动块从一端移至另一端时,其值在不断变化。垂直滚动
168、条的值由上滚动块从一端移至另一端时,其值在不断变化。垂直滚动条的值由上往下递增,水平滚动条的值由左往右递增。其值均以整数表示,取值往下递增,水平滚动条的值由左往右递增。其值均以整数表示,取值范围为范围为3276832767。最小值和最大值分别在两个端点,其坐。最小值和最大值分别在两个端点,其坐标系和滚动条的长度(高度)无关。标系和滚动条的长度(高度)无关。4.7.1 滚动条的属性滚动条的属性1Max 属性属性 滚动条所能表示的最大值。滚动条所能表示的最大值。2Min属性属性 滚动条所能表示的最小值。滚动条所能表示的最小值。3Value属性属性 表示当前滚动条所代表的值,范围在表示当前滚动条所代
169、表的值,范围在Max与与Min之间。之间。4LargeChange属性属性 当用户单击滚动块和滚动箭头之间的区当用户单击滚动块和滚动箭头之间的区域时,滚动条控件域时,滚动条控件 (HScrollBar 或或 VScrollBar)的)的Value属性值的改变属性值的改变量,默认值为量,默认值为1。5SmallChange属性属性 表示当用户单击滚动条两端的箭表示当用户单击滚动条两端的箭头时,头时,Value属性值的增加或减小的量,默认值为属性值的增加或减小的量,默认值为1。4.7.2 滚动条的事件滚动条的事件滚动条的最常用的是滚动条的最常用的是Scroll事件和事件和Change事件。事件。1
170、Scroll事件事件 在滚动条内拖动滚动框时,触发产生在滚动条内拖动滚动框时,触发产生Scroll事件。事件。2Change事件事件滚动条内的值发生改变时触发产生滚动条内的值发生改变时触发产生Change事件。事件。例如例如 利用滚动条改变文本框中所显示文本的字号大小。利用滚动条改变文本框中所显示文本的字号大小。程序代码如下:程序代码如下: Private Sub HScroll1_Change()() Label1.Caption = HScroll1.Value Text1.FontSize = HScroll1.Value End Sub4.7.3滚动条的应用1界面设计 在窗体上绘制三个
171、水平滚动条,分别对应红、绿、蓝三种颜色值。由于红、绿、蓝三基色可以合成各种各样的颜色,每一种颜色其变化又有256种,故滚动条取值范围为0255。2各控件对象的属性设置参见表4-6。对象类型(对象名)属性名称属性设置值说明窗体(Form1)Caption调色板标签框(Label1)Caption红色分量值:标签框(Label2)Caption绿色分量值:标签框(Label3)Caption蓝色分量值:标签框(Label4)Caption输出颜色合成滚动条(HScroll1)Max255滚动条(HScroll1)Min0滚动条(Hscroll2)Max255滚动条(Hscroll2)Min0滚动条
172、(Hscroll3)Max255滚动条(Hscroll3)Min0表4-6控件对象属性设置值4 4运行程序,运行程序,结结果果见图见图4 4-8图4-83编写程序代码编写程序代码48本章小结本章小结本章介绍了本章介绍了VB中的常用控件:框架、单选按钮和复选框控件、中的常用控件:框架、单选按钮和复选框控件、列表框控件、组合框控件、计时器和滚动条控件,主要介绍了它列表框控件、组合框控件、计时器和滚动条控件,主要介绍了它们常用的属性、事件和方法,以及在编程中的应用。们常用的属性、事件和方法,以及在编程中的应用。其中,框架用作其他控件的容器;单选按钮和复选框用于实现其中,框架用作其他控件的容器;单选按
173、钮和复选框用于实现选择的功能,一组单选框一次只能选定其中的一个,一组复选框选择的功能,一组单选框一次只能选定其中的一个,一组复选框控件可选定任意数目的复选框;列表框可显示一个含有若干选项控件可选定任意数目的复选框;列表框可显示一个含有若干选项的列表,而组合框是文本框和列表框的组合,既可在文本框内输的列表,而组合框是文本框和列表框的组合,既可在文本框内输入选项,也可用列表框部分选择选项,其入选项,也可用列表框部分选择选项,其Style属性用于设置组属性用于设置组合框的样式(下拉式组合框、简单组合框和下拉式列表框);计合框的样式(下拉式组合框、简单组合框和下拉式列表框);计时器用来计时,它的时器用
174、来计时,它的Interval属性于来设置两次计时器事件触属性于来设置两次计时器事件触发的时间间隔;滚动条是一种常用的工具控件,常用作提供数量、发的时间间隔;滚动条是一种常用的工具控件,常用作提供数量、速度的指示器。本章内容是全书的重点之一,读者要认真学习并速度的指示器。本章内容是全书的重点之一,读者要认真学习并掌握。掌握。 练习与思考1设计一个数字表,显示当前的日期、时间以及上午或下午。窗口如图4-9。 图4-92设计一个成绩录入与统计程序。要求输入的数据必须是0-100之间的整数,根据复选框选中的课程进行合计,程序界面如图4-10。图4-103 3利用利用单选单选框、复框、复选选框和框架来框
175、和框架来设计设计一个程序,一个程序,对对字体的字形、字体的字形、颜颜色等色等属性属性进进行行设设置,程序界面如置,程序界面如图图4 4-11。图4-114列表框与组合框的主要区别是什么?列表框与组合框的主要区别是什么?5设计一个程序,运行时的窗体如图设计一个程序,运行时的窗体如图4-12所示。所示。窗体包含两个列表框。左窗体包含两个列表框。左边边列表框中列出若干城市的名称。当双列表框中列出若干城市的名称。当双击击某个城某个城市名称市名称时时,这这个城市从左个城市从左边边列表框中消失,同列表框中消失,同时时出出现现在右在右边边列表框中。其列表框中。其中,左中,左边边列表框中的城市名称是在程序运行
176、列表框中的城市名称是在程序运行时时添加到列表框中的。添加到列表框中的。图4-12第第5 5章章 应用程序界面设计应用程序界面设计本章,主要介绍菜单、多文档界面、工具栏、状态栏等一些与界面设计有关的知识。5.1 菜单的规划与设计5.2 弹出式菜单5.3 工具栏与状态栏的设计5.4 MDI窗体5.5 综合应用5.1 5.1 菜单的规划与设计菜单的规划与设计5.1.1 菜单的结构与功能5.1.2 菜单的规划5.1.3 菜单的设计5.1.1 5.1.1 菜单的结构与功能菜单的结构与功能菜单栏:指位于窗口标题栏下方包含若干个菜单标题的水平矩形条状区域。菜单标题:指菜单栏中菜单的名称。每个菜单标题标识了一
177、个下拉列表。菜单项:包含于菜单之中的各个选项,当选中了某个菜单项后,可能会执行一条命令,也可能是执行了一个过程或函数,甚至可能弹出一个子菜单。子菜单:是指激活一个带有“”标记的菜单选项后打开的列表,它由一系列菜单项构成。菜单系统一般有4个部分组成:5.1.2 5.1.2 菜单的规划菜单的规划在进行菜单系统的规划时,一般应考虑以下原则: (1)面向用户 (2)菜单名称通俗易懂(3)合理组织菜单项(4)设置合适的分隔线 (5)控制菜单项的数目 (6)设置合适的访问键和快捷键5.1.3 菜单的设计 VisualVisualBasicBasic中中的的菜菜单单通通过过菜菜单单编编辑辑器器,即即菜菜单单
178、设设计计窗窗口口建建立立。将将要要建建立立下下拉拉菜菜单单的的窗窗体体设设为为活活动动窗窗体体后后,可可以以通过通过4 4种方法进入菜单编辑器:种方法进入菜单编辑器:(1 1)执行)执行“工具工具”菜单中的菜单中的“菜单编辑器菜单编辑器”命令命令 (2 2)使用热键)使用热键Ctrl+ECtrl+E。(3 3)单击工具栏中的)单击工具栏中的“菜单编辑器菜单编辑器”按钮。按钮。(4 4)在在要要建建立立菜菜单单的的窗窗体体上上单单击击鼠鼠标标右右键键,将将弹弹出出一一个个菜单,在该菜单中单击菜单,在该菜单中单击“菜单编辑器菜单编辑器”命令。命令。 通通过过以以上上任任一一方方法法,均均可可调调出
179、出菜菜单单编编辑辑器器。如如5-25-2图图所示。所示。属性设置区菜单控件编辑按钮菜单控件列表框【例5.1】菜单设计。建立一个如图5-1所示的菜单,用户可以通过选择菜单中的菜单项改变文本框中内容的外观。设计步骤如下。(1)建立控件 在窗体上添加一个文本框,将它的Text属性置为空。(2)设计菜单在窗体设计状态下选择“工具”菜单下的“菜单编辑器”命令,调出菜单设计窗口。在菜单设计窗口中,按表5-2设计菜单项。当当完完成成所所有有的的输输入入工工作作后后,菜菜单单设设计计窗窗口口就就成成为为如如图图5-35-3所所示示的的窗窗口口,单单击击“确确定定”按按钮钮退退出出就完成了菜单的建立过程。就完成
180、了菜单的建立过程。(3 3)把代码连接到菜单上)把代码连接到菜单上在在窗窗体体窗窗口口单单击击菜菜单单标标题题,然然后后在在下下拉拉菜菜单单中中单单击击要要连连接接代代码码的的菜菜单单项项,在在屏屏幕幕上上就就会会出出现现代代码码窗窗口口,并并自自动动给给出出事事件件过过程程的的头头尾尾语语句句。只只要在头尾语句间输入代码即可。要在头尾语句间输入代码即可。PrivatesubSetColor_Color_Click(IndexAsInteger)SelectCaseIndexCase1Text1Forecolor=RGB(255,0,0)Case2Text1Forecolor=RGB(0,25
181、5,0)Case3Text1Forecolor=RGB(0,0,255)EndSelectEndSub5.2 5.2 弹出式菜单弹出式菜单与下拉菜单不同,弹出式菜单不需要在窗口顶部下拉打开,而是通过单击鼠标右键在窗体的任意位置打开,因而使用方便,具有较大的灵活性。建立弹出式菜单通常有两步:首先用菜单编辑器建建立弹出式菜单通常有两步:首先用菜单编辑器建立菜单,然后用立菜单,然后用PopupMenuPopupMenu方法弹出显示。第一步方法弹出显示。第一步的操作与前面介绍的基本相同,唯一的区别是如果的操作与前面介绍的基本相同,唯一的区别是如果不想在窗体顶部显示该菜单,就应把菜单名(即主不想在窗体顶
182、部显示该菜单,就应把菜单名(即主菜单项)的菜单项)的“可见可见”属性设置为属性设置为False(False(子菜单项不要子菜单项不要设置为设置为False)False)。PopupMenuPopupMenu方法用来显示弹出式菜单,其格式方法用来显示弹出式菜单,其格式为:为: 对象对象.PopupMenu.PopupMenu菜单名菜单名,Flags,x,y,BoldCommand,Flags,x,y,BoldCommand【例例5.25.2】我我们们将将例例5.15.1中中的的“设设置置字字体体”菜菜单单的的内内容作为弹出式菜单的内容。容作为弹出式菜单的内容。我们只需在代码窗口添加如下代码:我们
183、只需在代码窗口添加如下代码: PrivatePrivateSubSubForm_MouseDown(ButtonForm_MouseDown(ButtonAsAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Integer,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2ThenIfButton=2ThenPopupMenuSetFontPopupMenuSetFontEndIfEndIfEndSubEndSub 运运行行程程序序,鼠鼠标标右右键键单单击击窗窗体体,即即可可弹弹出出“设设置置字体字体”菜单的菜单内
184、容。菜单的菜单内容。5.3 5.3 工具栏和状态栏工具栏和状态栏在Windows应用程序中,更简便的操作是采用工具栏中的工具按钮。工具栏有若干个按钮构成,每个按钮上一般都有图片,从而形象地表明该按钮的作用。每个按钮一般与应用菜单中的菜单项相对应,用来访问应用程序中最常用的功能和命令。 状态栏用于显示应用程序的运行状态,一般放在窗口的底部。ToolBar控件: 把ToolBar控件添加到工具箱,将“MicrosoftWindowsCommonControls6.0”将控件添加到工具箱,通过ToolBar、ImageList组合使用建立工具栏,步骤:1.在ToolBar控件中创建Button对象。
185、2.在ImageList控件中添加所需的图象3.ToolBar控件的ButtonClick()事件程序的编写4.在ButtonClick事件中用SelectCase语句对各按钮进行相应的编程。5.3.1 工具栏 1、在ToolBar控件中添加按钮ToolBar与ImageList的连接工具栏样式5.3.1 工具栏 2、在ImageList控件中添加图象ImageList控件不单独使用,专门为其它控件提供图像库.索引(Index)、关键字(Key)在ToolBar中引用图象文件的扩展名为:.ico、.bmp、.gif、.jpg等5.3.1 工具栏 3.为工具栏增加按钮索引(Index)、关键字(
186、Key)每个按钮的编号、标识,ButtonClick事件中引用;图象(Image)ImageList对象中的图象,值可以是Key或Index样式(Style),共5种除菜单按钮(5)外的4种样式5.3.1 工具栏 4、响应ToolBar控件事件ToolBar控件常用的事件有两个:ButtonClick和ButtonMenuClick。前者对按钮样式为0-2,后者对样式为5的菜单按钮。(1)用索引Index确定按钮(2)用关键字Key确定按钮PrivateSubToolbar1_ButtonClick(ByvalButtonAsComctlLib.Button)SelectCaseButton.
187、IndexCase1FileNewProcCase2FileOpenProcEndSelectEndSub注意:第1个按钮的Index值为1。用Index还是用Key比较,Key可读性好,可维护性好。SelectCaseButton.KeyCaseTNewFileNewProcCaseTOpenFileOpenProc.StatusBar 控件能提供一个长方条的框架状态栏,通常在窗体的底部,也可通过Align属性决定状态栏出现的位置。用它可以显示出应用程序的运行状态,如光标位置、系统时间、键盘的大小写状态等。一、建立状态栏可插入图象显示的文本样式5.3.2 状态栏二、动态显示状态栏信息运行时,
188、有些状态栏信息系统已具备,能自动显示,如图14-9状态栏中的第35窗格,但第2个窗格的值要通过编程来实现,以动态地显示光标在文本中的位置。Private Sub DocBox_Click() 当单击文本框时,当前光标位置在状态栏的第2个窗格显示 Findstart = DocBox.SelStart MDIForm1.StatusBar1.Panels(2).Text= FindstartEnd Sub5.4 5.4 多重文档界面(多重文档界面(MDIMDI) 多多文文档档界界面面允允许许同同时时打打开开多多个个文文档档,每每一一个个文文档档都都显显示示在在自自己己的的被被称称为为子子窗窗体体
189、的的窗窗体体中中,如如我我们们非非常常熟熟悉悉的的WordWord9797、ExcelExcel9797等等都都是是多多文文档档界界面面。多多文文档档界界面面由由父父窗窗体体和和子子窗窗体体组组成成。在在VBVB中中,父父窗窗体体就就是是MDIMDI窗体,子窗体就是指窗体,子窗体就是指MDIChildMDIChild属性为属性为TrueTrue的普通窗体。的普通窗体。 1创建MDI窗体用用户户要要建建立立一一个个MDIMDI窗窗体体,可可以以选选择择“工工程程”菜菜单单中中的的“添添加加MDIMDI窗窗体体”命命令令,弹弹出出如如图图下下图图所所示示的的“添添加加MDIMDI窗窗体体”对对话话
190、框框,选选择择“MDIMDI窗窗体体”,再再单单击击“打开打开”按钮。按钮。2子窗体 MDIMDI子子窗窗体体是是一一个个MDIChildMDIChild属属性性为为TrueTrue的的普普通通窗窗体体。因因此此,要要创创建建一一个个MDIMDI子子窗窗体体,应应先先创创建建一一个个新新的的普普通窗体,然后将它的通窗体,然后将它的MDIChildMDIChild属性置为属性置为TrueTrue。 MDIMDI子子窗窗体体的的设设计计与与MDIMDI窗窗体体无无关关,但但在在运运行行时时总总是是包包含含在在MDIMDI窗窗体体中中,当当MDIMDI窗窗体体最最小小化化时时,所所有有的的子子窗窗体
191、体都都被被最最小小化化。每每个个子子窗窗体体都都有有自自己己的的图图标标,但但只只有有MDIMDI窗窗体体的的图图标标显显示示在在任任务务栏栏中中。子子窗窗体体相相互互之之间间没有约束关系,它们可以用不同的方式排列。没有约束关系,它们可以用不同的方式排列。3与MDI有关的方法和事件(1 1)ArrangeArrange方法方法该该方方法法用用来来以以不不同同的的方方式式排排列列MDIMDI中中的的窗窗体体或或图标。其格式为:图标。其格式为: MDI.Arrange.Arrange 方方式式:是是一一个个整整数数值值,用用来来指指定定MDIMDI窗窗体体中中子子窗体或图标的排列方式。窗体或图标的
192、排列方式。(2 2)显示)显示MDIMDI窗体及其子窗体的方法窗体及其子窗体的方法显示显示MDIMDI窗体及其子窗体的方法是窗体及其子窗体的方法是ShowShow。(3 3)QueryUnloadQueryUnload事件事件当当用用户户从从MDIMDI窗窗体体的的控控制制菜菜单单框框中中选选择择“关关闭闭”命命令令,或或者者从从提提供供的的菜菜单单项项中中选选择择“退退出出”命命令令时时,系系 统统 就就 会会 试试 图图 卸卸 载载 MDIMDI窗窗 体体 , 此此 时时 就就 会会 触触 发发QueryUnloadQueryUnload事事件件,然然后后每每一一个个打打开开的的子子窗窗体
193、体也也都都触触发发该该事事件件。若若在在这这些些QueryLoadQueryLoad事事件件过过程程中中没没有有代代码码,则则取取消消QueryUnloadQueryUnload事事件件,逐逐个个卸卸载载子子窗窗体体,最最后后,MDIMDI窗体也被卸载。窗体也被卸载。 由由于于QueryUnloadQueryUnload事事件件在在窗窗体体卸卸载载之之前前被被触触发发,因因此此在在窗窗体体卸卸载载以以前前可可以以给给用用户户一一个个保保存存变变动动后的窗体信息的机会。后的窗体信息的机会。第6章图形设计6.1坐标系6.2颜色6.3图形控件与绘图方法 6.4图像和图片框控件6.5动画设计6.1坐标
194、系6.1.1坐标系与坐标单位一、坐标系二、坐标系的单位1、标准刻度:ScaleMode属性坐标系的原点2、自定义坐标系设置坐标系对象.Scale(x1,y1)-(x2,y2)把对象在x方向上分成x2-x1等分,在y方向上分为y2-y1等分-200,200200,-2000,0如:Scale(-200,200)-(200,-200)6.1.2坐标系的使用坐标系的使用例6-1本例用窗体内两个命令按钮的单击事件说明用Scale方法改变坐标系统后产生的影响,命令Line(0,0)-(1500,1500)表示从坐标原点到(1500,1500)画一根直线。PrivateSubCommand1_Click(
195、)ClsForm1.Scale采用缺省坐标系Line(0,0)-(1500,1500)EndSubPrivateSubCommand2_Click()ClsForm1.Scale(0,1500)-(1500,0)定义用户坐标系Line(0,0)-(1500,1500)EndSubCommand2_Click事件定义用户坐标系,坐标原点在窗体的左下角,X轴的正向向左,Y轴的正向向上,窗体的左上角坐标为(0,1500),右下角坐标为(1500,0)。例题6-1函数函数效果效果函数函数效果效果QBColor(0)黑色黑色QBColor(8)灰色灰色QBColor(1)蓝蓝色色QBColor(9)亮亮
196、蓝蓝色色QBColor(2)绿绿色色QBColor(10)亮亮绿绿色色QBColor(3)深青色深青色QBColor(11)亮青色亮青色QBColor(4)红红色色QBColor(12)亮亮红红色色QBColor(5)品品红红色色QBColor(13)亮品亮品红红色色QBColor(6)深黄色深黄色QBColor(14)亮黄色亮黄色QBColor(7)纸纸QBColor(15)亮白色亮白色6.2颜色1、RGB(red,green,blue)2、QBColor(color)6.3.1图形控件1Line控件通过设置BorderColor属性,BorderStyle属性,BorderWidth属性改
197、变线段的颜色、线形和粗细,通过设置起点坐标X1、Y1和终点坐标X2、Y2属性改变线段的长短。2Shape控件Shape控件是图形控件,显示矩形、正方形、椭圆、圆形、圆角矩形或者圆角正方形。Shape属性返回或设置一个值,该值指示一个Shape控件的外观。6.3图形控件与绘图方法图形控件与绘图方法一、cls方法二、画直线、矩形方法(Line)三、画点方法(Pset)四、画圆方法(Circle)一、Cls方法Cls将清除图形和打印语句在运行时所产生的文本和图形语法:对象.Cls6.3.2图形方法图形方法二、Line方法lLine方法用来绘制直线和矩形。根据参数的不同,该方法既可以画出直线,也可以画
198、出空心矩形或实心矩形。l格式:object.LineStep(x1,y1)-Step(x2,y2),Color,BFl说明:(1)Step指定相对于由CurrentX,CurrentY属性提供的当前图形位置的坐标。可选。(2)(x1,y1)直线或矩形的起点坐标,度量单位由ScaleMode属性决定。若省略,则从CurrentX和CurrentY指示的位置开始。单精度参数Line方法(3)Step指定相对于线的起点的终点坐标。可选。(4)(x2,y2)直线或矩形的终点坐标。单精度参数。(5)Color画线颜色。若省略,则使用对象的ForeColor属性值。为可选的长整型参数。(6)B利用对角坐标
199、画出矩形。可选。(7)F规定矩形的填充规则,若用了F选项,就必须用B选项。若用了B选项,则F选项规定以矩形边框的颜色填充。若只用B选项而不用F选项,则矩形用当前的FillColor和FillStyle填充。三、pset方法lPset方法用来设置对象上指定的点的颜色,即用指定的颜色画出一个点。l格式:object.PsetStep(x,y),Colorl说明:(1)Step指定相对于由CurrentX,CurrentY属性提供的当前图形位置的坐标(即与当前坐标的相对位置)。可选。(2)(x,y)设置所画点的水平(x轴)和垂直(y轴)坐标,是单精度参数。(3)Color设置该点像素的前景色,可选。
200、(4)用Pset方法可以清除一点。四、Circle方法lCircle方法用来绘制圆形、椭圆形、扇形和弧形。该方法参数较多,有些参数是可选的。传送不同的参数,可以分别画出不同的图形。l格式:object.Circle Step(x,y),radius,color,start,end,aspectl说明:(1)Step关键字,用来指定圆、椭圆或弧的中心。它们相对于当前对象的CurrentX和CurrentY属性提供的坐标。可选。(2)(x,y)圆、椭圆或弧的中心坐标。单精度浮点数。circle(3)radius圆、椭圆或弧的半径。单精度浮点数。(4)color圆周的RGB颜色。若省略,则使用For
201、eColor属性值。可选,长整型数。(5)start指定弧的起点位置,单位为弧度。其范围从-22。默认值是0。可选,单精度浮点数。(6)end指定弧的终点位置,单位为弧度。其范围从-22。默认值是2。可选,单精度浮点数。(7)aspect圆的纵横尺寸比。默认值为1.0,它在任何屏幕上都产生一个标准圆(非椭圆)。可选,单精度浮点数。6.3.3打印方法1.Print方法语法:对象.print输出项2.printForm方法3.使用打印机集合4.使用Printer对象6.4图像和图片框控件Image控件(图像框)lImage控件用来显示图形。Image控件可以显示来自位图、图标或者元文件的图形,也可
202、以显示增强的元文件、JPEG或GIF文件。lImage控件使用较少的系统资源,重画起来比PictureBox控件要快。但它只支持PictureBox控件的一部分属性、事件和方法。lImage控件没有AutoSize属性,但是它可以通过设置Stretch属性来确定是否缩放图形来适应控件大小。PictureBox控件(图片框)PictureBox控件用来显示图形。PictureBox控件中的图形的大小是不能改变的。如果控件不足以显示整幅图像,则裁剪图像以适应控件的大小。PictureBox控件的常用属性有:(1)CurrentX、CurrentY属性:返回或设置下一次打印或绘图方法的水平(Curr
203、entX)或垂直(CurrentY)坐标。(2)BorderStyle属性:返回或设置控件的边框样式。设置值0,无边框;设置值1,固定单边框(默认值)。(3)Picture属性:返回或设置控件中要显示的图片。(4)AutoSize属性:指定PictureBox控件是否自动改变大小,以适应图形的大小6.5动画设计6.5.1动画原理动画是一种运动的模拟,其实现方法是在屏幕上快速地显示一组相关的图像。使图像移动或变化的基本方法有三种,即:1用Image对象的Move方法移动图像,其Left和Top属性指示了Image对象的当前左上角位置;2调用LoadPicture函数装载不同的图像,并赋给Imag
204、e对象的Picture属性,将在对象中显示不同的图像,即实现图像变化;3修改Image对象的Width和/或Height属性可以缩放图像。6.5.2动画设计实例第7章文件系统文件管理控件文件及其访问方式文件的处理通用对话框本章要点7.1、文件管理控件驱动器列表框(DriveListBox)1.Drive属性保存当前选定的驱动器名ChDrive语句用来改变当前驱动器2.目录列表框(DirListBox)Path属性用来读取或指定当前工作目录ChDir语句用来改变当前目录3.文件列表框(FileListBox)FileName属性返回或设置文件的路径和文件名Pattern属性设定允许显示文件的文件
205、类型7.2文件及其访问方式文件的基本概念:文件的基本概念:文件是存储在外部介质(如磁盘)上的以文件名标识的数据的集合。为访问存放在外部介质上的数据,应先按文件名找到所指定的文件,然后再从该文件中读取数。文件是数据的集合,VB的文件由记录组成,记录由字段组成,一组相关的字段就组成一条记录。7.2.1、文件的分类根据数据的存储方式和结构,可以将文件分为顺序存取文件、随机存取文件和二进制文件。1顺序文件:顺序存取方式是将要保存的数据,依序逐个转换成ASCII字符,然后存入磁盘。以顺序存取的方式保存数据的文件叫作顺序存取文件,简称顺序文件。顺序文件的结构比较简单,文件中的记录一个接一个地存放,记录与记
206、录之间有分界字符。分界字符分界字符 记录n-1记录n记录n+1 顺序文件的特点:顺序文件的特点:在顺序文件中,只知道第一个记录的存放位置,其他记录的位置无从知道。当要在顺序文件中查找某个记录时,只能从文件头开始,一个记录一个记录地顺序读取,逐个比较,直到找到要查找的记录。随机文件:以随机存取方式存取数据的文件称为随机存取文件,也称直接存取文件,简称随机文件。随机文件由大小相同的数据记录组成。记录记录n记录记录n+1记记录录号号n记录号记录号n+1字段1字段2字段1字段22随机文件随机文件的优点是访问速度快,读、写、修改灵活方便;但由于在每个记录前增加了记录号,从而使文件占用的存储空间增大,数据
207、组织较复杂。随机文件的特点:随机文件的特点:3二进制文件:这种文件中的数据均以二进制的方式存储,存储单位是字节(随机文件按记录存取,顺序文件按行存取)。在二进制文件中,能够存取任意所需要的字节,可以把文件指针移动到文件中的任何地方,因此,这种存取方式最为灵活。3二进制文件7.2.2、文件操作(读写)的步骤在VB中,对数据文件的操作一般按下述步骤进行:1打开文件在创建新文件或使用旧文件之前,必须先打开文件。打开文件的操作,会为这个文件在内存中准备一个读写时使用的缓冲区,并且声明文件在什么地方,叫什么名字,文件处理方式如何。2访问文件所谓访问文件,即对文件进行读/写操作。从磁盘将数据送到内存称为“
208、读”,从内存将数据存到磁盘称为“写”。这些都是通过相应的读写函数完成。3关闭文件打开的文件使用(读/写)完后,必须关闭,否则会造成数据丢失。关闭文件会把文件缓冲区中的数据全部写入磁盘,释放掉该文件缓冲区占用的内存。返回7.3文件的处理创建新的新的顺序文件格式:Open文件名ForOutputAs#文件号write#文件号,数据列表close#文件号说明:(1)文件名:指要打开的文件的名字。(2)文件号:是一个1511之间的整数。它用来代表所打开的文件,文件号可以是整数或数值型变量。(3)forOutput:打开方式。如果该文件存在,则原来已有的数据被抹去,即新写上的数据将原有的数据覆盖。如果该
209、文件不存在,则创建一个新的顺序文件。(4)write#文件号“数据列表”:是准备写入到文件中的数据,可以是变量名也可以是常数,数据之间用“,”或“;”隔开。(5)Close#文件号:关闭已打开的文件。【例1】:创建一个新的顺序文为c:cj.txtPrivateSubCommand1_Click()Openc:cj.txtForOutputAs#1Write#1,xh,vb,vc,vfp“Write#1,1,80,70,90Close#1End sub想一下,文件的内容为什么?向顺序文件添加数据添加数据格式:Open文件名ForAppendAs#文件号write#文件号,数据列表close#文件
210、号说明:ForAppend:对文件执行写操作时写入的数据将追加到文件尾部。PrivateSubCommand1_Click()Openc:cj.txtForAppendAs#1Write#1,20,60,70,80Close#1End sub想一想,现在文件的内容又是什么?例2:将数据追加到c:cj.txt文件的尾部。从已存在的顺序文件中读取数据从已存在的顺序文件中读取数据格式:Open文件名ForInputAs#文件号Input#文件号,变量名列表close#文件号说明:ForInput以读取方式打开文件。Input#文件号,该语句将从文件中读出数据,并将读出的数据分别赋给指定的变量。Pri
211、vateSubCommand1_Click()Open c:cj.txt For Input As #1For i = 1 To 3 Input #1, a, b, c, d Print a, b, c, d Next IClose #1End Sub在实际应用中,可以直接用windows的写字板或记事本建立和修改顺序文件(cj.txt),然后用Openc:cj.txtForInputAs#1打开读出数据。例3、从文件c:cj.txt中读出数据。随机文件随机文件1随机文件的打开与关闭随机文件的打开与关闭在对一个随机文件操作之前,也必须用Open语句打开文件,随机文件的打开方式必须是Random
212、方式,同时要指明记录的长度。与顺序文件不同的是,随机文件打开后,可同时进行写入与读出操作。Open语句的一般格式:Open文件名ForRandomAs#文件号Len=记录长度随机文件的关闭同顺序文件一样,用Close语句。1用Get语句进行随机文件的读操作。Get语句格式一般为:Get#文件号,记录号,变量Get语句把文件中由记录号指定的记录内容读入到指定的变量中。例如,Get#2,3,u表示将2号文件中的第三条记录读出后存放到变量u中。2用Put语句进行随机文件的写操作。Put#文件号,记录号,变量例如,Put#1,11,t表示将变量t的内容送到1号文件中的第11号记录去。2随机文件的读随机
213、文件的读/写操作写操作与文件操作有关的命令与函数1)文件的删除:Kill语句从磁盘中删除文件。语法Kill 文件名2)文件的拷贝:FileCopy语句复制一个文件。语法:FileCopysource,destination3)建立和删除文件目录在VisualBasic中可以通过MkDir语句建立一个目录,RmDir语句删除一个文件目录。2.与文件操作有关的函数1.LOF()函数以字节方式返回被打开文件的大小,结果为一Long型数据。其语法如下:LOF(文件号)2.LOC()函数返回被打开的文件中读写指针的当前位置。语法如下:LOC(文件号)该函数对不同文件访问方式的文件产生的返回值不同(见下表
214、)。3.EOF()函数返回读文件过程中是否到了文件尾部。当读指针到达文件的尾部时,返回布尔值True,否则返回False。语法如下:EOF(文件号)在对文件进行读写操作时,经常使用EOF函数来判断是否到达文件的尾部,避免试图在文件结尾处进行输入/出而产生错误。方式返回值随机最后对文件进行读出或写入的记录号顺序以128字节为单位,返回当前位置是第几个128字节。(顺序文件一般不需要使用Loc的返回值)二进制最后读出或写入的字节位置Loc函数的返回值PrivateSubForm_Load()DimstuAsstudentOpenc:stu.datForRandomAs#1Len=Len(stu)T
215、itle$=输入学生记录Fori=1To3stu.name=InputBox(请输入第+Str(i)+个学生的姓名,Title)stu.age=Val(InputBox(请输入第+Str(i)+个学生的年龄,Title)stu.address=InputBox(请输入第+Str(i)+个学生的地址,Title)Put#1,i,stuNextiClose#1EndSub例4向Stu.dat文件中输入3条学生记录并保存起来。7.4通用对话框1.方法:ShowColor,ShowFont,ShowHelp,ShowOpen,ShowPrinter和ShowSave2Action属性3.FileNam
216、e属性4.DialogTitle属性 5Filter属性6FilterIndex属性7InitDir属性常用对话框1.“打开”/“另存为”对话框通过使用CommonDialog控件的ShowOpen和ShowSave方法可显示“打开”和“另存为”对话框。2.颜色对话框通过使用CommonDialog控件的ShowColor方法可显示颜色对话框。颜色对话框用以从调色板选择颜色,或是生成和选择自定义颜色。常用对话框3.字体对话框使用CommonDialog控件的ShowFont方法可显示字体对话框。字体对话框用以通过指定字体、大小、颜色、样式选择一种字体。4.打印对话框通过使用CommonDial
217、og控件的ShowPrinter方法可显示打印对话框。第8章ActiveX控件初步应用8.1ActiveX控件概述8.2ActiveX控件 8.3建立和使用ActiveX文档8.4综合实例综合实例8.5本章小结本章小结习题习题ActiveX控件的来源包括3个反面:系统提供,第三方厂商提供,用户开发。ActiveX控件包含:工具栏(Toolbar)、数据组合框(DataCombo)、数据列表框(DataList)等。不同版本的Visual Basic提供的控件数量不同,其中学习版提供的控件比较少,专业版和企业版提供的控件比较 8.1ActiveX控件概述返回8.2ActiveX控件8.2.1Ac
218、tiveX控件的使用8.2.2ActiveX控件的创建8.2.3通过向导制作ActiveX控件返回8.2.1ActiveX控件的使用ActiveX控件使用前,必须将其添加到工具箱中。操作步骤如下:在菜单栏上选择“工程部件”选项,或在工具箱中单击鼠标右键,在弹出的快捷菜单中选择“部件”选项,弹出“部件”对话框,。该对话框中列出所有可以使用的部件,包括“控件”、“设计器”和“可插入对象”等。在“控件”选项卡中选择要插入的控件,被选择中控件名称左边的复选框中 有一个标记“”。单击“确定“按钮,关闭“部件”对话框,被中的控件出现在工具箱中。例如,在“部件”对话框的“控件”选项卡中选择“Microsof
219、t Windows Common Controls6.0”并将其添加到工具箱中,工具箱中即可增加工具栏(ToolBar)、状态栏(StatusBar)、进度条(ProgressBar)、树状视图(TreeView)、列表视图(ListView)、滑快(Slider)等9个控件。1工具栏控件(ToolBar)工具栏是按钮对象的集合,默认名称为ToolBar。工具栏控件的使用可参阅5.3节中的介绍。2状态栏控件(StatusBar)状态栏用于显示应用程序的运行状态,默认名称为StatusBar。状态栏控件的使用可参阅5.3节中的介绍。 3进度条(ProgressBar)进度条控件是一个给用户提供操
220、作进程的动态指示器(如显示文件传输操作完成百分比)。操作过程中,该控件显示一条色带,这条色带随着时间的增加而伸长。创建进度条的操作步骤如下:在工具箱中选择进度条控件并画到窗体中,创建一个进度条。按需要报告的操作范围设置该控件的属性值。几个主要的属性:Height属性:设置进度条的高度Width属性:设置进度条的宽度。通常进度条的宽度是高度的几备。Value属性:设置或检索进度条被填充的程度。Min属性:设置允许Value属性使用的最小值(下限),默认为0。Max属性:设置允许Value属性使用的最大值(上限),默认为100。 4数状视图(TreeView)TreeView控件显示Node对象的
221、分层列表,每个Node对象均由一个标签和一个可选的位图组成。TreeView一般用于显示文档标题、索引入口、磁盘上的文件和目录或能被有效地分层显示的其它各种信息。类似于Win98的资源管理器的界面就可以用该控件来实现。在设计时可以通过TreeView控件的属性页来指定控件的部分属性。在TreeView控件的属性中,比较重要的有如下属性:(1)样式(Style)属性返回或设置Node对象的图形类型(图像、文本、+/-号、直线)以及出现在TreeView控件中每一Node对象上的文本类型。(2)行样式(LineStyle)属性 返回或设置在Node对象之间显示的线的样式。注意:若Style属性设置
222、为包含直线的值,则LineStyle属性就确定了直线的外观。如果Style属性设置为不含直线的值,则LineStyle属性将被忽略。 (3)imageList属性:读出或设置与本控件相联系的imageLis控件。(4)Indentation属性: 设置各个新的Node对象缩进的量度。(5)LabelEdit属性:设置用户是否编辑本控件中Node对象的标签。它有0和1两个属性值,0代表自动编辑标签,1代表人工编辑标签。(6)Nodes属性: 设置访问控件的NodeS对象集合。 5列表视图(列表视图(ListView)ListView控件比前面几种控件要复杂一些,通过此控件,可将项目组成带有或不带
223、有列标头的列,并显示伴随的图标和文本。ListView控件是由ColumnHeader和ListItem对象所组成的,其中ColumnHeader对象的个数决定了控件的列数,而ListItem对象的个数则决定了控件的行数。ColumnHeader对象是ListView控件中包含标头文字的项目。利用ColumnHeader对象,用户可以:单击对象触发ColumnClick事件并根据数据项目将项目排序。拖动对象的右边框来调整列宽度。在报表视图中隐藏ColumnHeader对象。ColumnHeader对象的数目决定每个ListItem对象可包含的子项目数目。删除ColumnHeader对象后所有与
224、列关联的子项目也将被删除,并且每个ListItem对象的子项目数组将平移以更新ColumnHeader的索引,而这将导致剩余的列标头SubItemIndex属性的改变。ColumnHeader对象的SubItemIndex属性该属性返回与ListView控件中ColumnHeader对象关联的子项目的索引。子项目是字符串数组,代表显示在报表视图中的ListItem对象的数据。第一列的列标头SubItemIndex属性设置为0,这是因为小图标和ListItem对象的文字总出现在第一列中,而且它们被当作ListItem对象而不是子项目。列标头数目取决于子项目数目。列标头数目总是比子项目数目多1。L
225、istItem对象的SubItems属性返回或设置一个字符串(子项目)数组,它代表ListView控件中ListItem对象的数据。ListItem对象可包含任意多个的关联项目数据字符串(子项目),但每个ListItem对象子项目数目必须相同。每个子项目都对应于相关的列标头,无法直接向子项目数组添加元素,只有通过ColumnHeaders的Add方法添加列标头的方法来添加子项目。ListView控件的View属性ListView控件可使用四种不同视图显示项目,这可以用View属性来确定。该属性返回或设置ListView控件中ListItem对象的外观。ListView控件的SortOrder,
226、SortKey和Sorted属性控件中的ListItem对象可以按要求进行排序,与排序有关的属性是SortOrder,Sorted和SortKey属性。SortOrder属性返回或设置一个值,此值决定ListView控件中的ListItem对象以升序或降序排序。SortKey属性返回或设置一个值,此值决定ListView控件中的ListItem对象如何排序。Sorted属性返回或设置确定ListView控件中的ListItem对象是否排序的值。下面的代码说明了如何创建ColumnHeaders和ListItem对象,SubItemIndex和SubItem属性的使用方法以及如何排序。 建立Ac
227、tive控件的步骤如下:1、创建Active控件工程通过创建新的Active控件工程开始创建Active控件。在该工程中可以创建任意数量的Active控件。为了便于使用Active控件,应当将相关的控件组合到一个工程中。创建一个Active控件时,将显示默认的用户控件。用户控件与窗体类似,其中包含用于控件客户接口的窗口和用于处理控件事件的代码。如果要在工程内定义多个控件,可在菜单栏上选择“工程添加用户控件”命令,即可为工程中定义的每个控件添加一个用户控件。2、创建控件的用户接口。在类似窗体的UserControl对象上设计控件界面,在UserControl对象上可以加入现有的各种控件。创建控件
228、的用户接口有3种基本方式:组合已有控件的方式:通过将几个其他控件组合到新控件来建立控件。用于组成新控件的控件称为组元控件。例如,可以用文本框和滚动条建立一个微调控件。增强已有控件的方式:通过向已有控件添加属性、方法和事件来建立增强的控件。例如,建立一个用户的文本框控件,该文本框提供标准文本框的全部功能,但只允许输入数值。重新开始建立控件的方式:建立的控件称为客户设计的控件。在用户需要特效的接口或其他特殊要求时,应当重新开始建立控件。在用户控件窗口中建立控件的用户接口时,可以按新控件的要求添加或设计控件,也可以向用户控件添加除了OLE容器外的任意控件。用户窗口激活时,该控件在工具箱中无效。8.2
229、.2ActiveX控件的创建3编写控件的程序代码一般来说,控件的开发者希望控件能按设计要求提供一组基本功能;而控件的终端用户可能希望控件能具有某种行为的能力(单击某个按钮可实现向一个文本框输入)。可以通过向控件添加代码来满足这些需求。Visual Basic提供了Active控件界面向导,以帮助用户映射属性、方法和事件。只要在菜单上选择“外接程序外接程序管理器”命令,在弹出“外接程序管理器”对话框中选择“VB6.0 Active控件接口向导”并单击“确定”按钮,即可在“外接程序”菜单中添加一个菜单项“Active控件接口向导”。在“Active控件接口向导”的帮助下,用户可创建Active控件
230、工程和控件的用户接口,然后用该向导帮助建立控件的全部代码。4为控件添加属性、事件和方法控件添加方法与创建类的方法相同。UserControl对象及其子控件的属性,对最终用户是不可见的。用户开始创建控件时,VB赋予它一些简单的属性,如Name、Visible等。其中最主要的是Name属性,在使用控件时用于标识控件。控件的其他属性一般通过简单显示UserControl对象或其子控件的现有属性来实现。在“工程”菜单中选择当前工程的属性选项,可以设置Active控件工程的属性。5建立属性页属性页不是一个控件必须有的,但建立属性页有助于控件的使用。几乎VB提供的所有Active控件都有属性页,VB也为用
231、户设计的Active控件准备了4个标准属性页:StandardFont、StandardColor、StandardPicture和StandardDataFormat。如果要使用这些属性页,应在UserControl1的属性页中选种PropertiesPage属性,弹出的“连接属性页”对话框,如图所示。从中选择要用的属性页。 在测试窗体中添加Active控件并选种该控件,在菜单栏上选择“视图属性页”选项,弹出该控件的“属性页”对话框,如图所示。该对话框包含4个选项卡,分别对应4个属性页。系统自动把字体类型的属性对应到StandardFont;把颜色类型的属性对应到StandardColor;
232、把图片类型的属性对应到StandardPicture;StandarddataFormat用来数据格式。如果VB提供的标准属性页不能满足要求,则用户可以定制自己的属性页。 6测试控件为了能在制作控件的同时进行测试,提前建立一个“标准EXE”测试工程,与Active控件工程组成工程组,随时测试控件。测试Active控件的操作步骤如下:(1)在菜单栏上选择“文件添加工程”选项,以便向工程组添加测试工程。可以添加已有的工程或新的工程。通过向集成开发环境添加另一个工程而创建了可以保存的工程组。然后可以打开工程组(而不是单一的工程),以便打开集成开发环境中的工程。(2)在“工程”窗口中选择要测试的工程并
233、设置属性。(3)关闭Active控件工程。(4)向测试工程中的窗体添加一个控件。(5)将测试工程设置为启动工程。(6)运行测试工程。演示控件将如何为终端用户操作,可根据需要编辑和调试控件。(7)关闭和再打开工程。测试设计时属性的保存。7将控件编译为.OCX文件若控件对于一个特殊应用程序是私有的,可保留在工程而不必分别编译;如果控件要提供给其他开发人员,则不必编译和分配.8发布控件 一旦编译了Active控件工程,就可以把该Active控件工程发布给其他程序员。随后,这些程序员就可以向应用程序中的任意窗体添加控件。在大多数的情况下,控件使用者仅仅取得.OCX文件并不能使用控件。因为VB创建的Ac
234、tive控件需要VB运行的DLL,如果控件使用了子控件,可能还需要其他的支持文件。为了确保发布所有必要的支持文件,最好使用安装向导,生成Active控件的安装程序。8.2.3通过向导制作ActiveX控件为了减轻用户在制作ActiveX控件时为添加属性、事件、方法或属性页所作的编码工作,VB提供了ActiveX控件接口向导。 ActiveX控件接口向导可以引导用户创建控件的属性、事件和方法,并生成相应的基本代码,但不用创建用户界面。使用ActiveX控件接口向导前,必须创建一个具有目标界面元素的ActiveX控件。 利用ActiveX控件接口向导和属性页向导可以添加各种需要的属性、方法和事件并
235、设置其属性。 1ActiveX控件界面向导ActiveX控件界面向导引导用户快速地创建控件的属性、事件和方法,生成相应的基本代码,但界面仍然需要自己制作。用向导制作ActiveX控件的操作步骤如下:(1)在菜单栏上选择“文件新建工程”选项,在弹出的“新建工程”对话框中选择“ActiveX控件”图标,单击“确定”按钮,生成一个新的工程和UserControl1控件。(2)在菜单栏上选择“工程工程1属性”选项,在弹出的“工程1工程属性”对话框。选择“通用”选项卡并填写相关内容,单击“确定”按钮。(3)在工程中双击UserControl1,使其处于激活状态。(4)在属性窗口中将UserControl
236、1的Name属性修改为所需要的名字。(5)按需求在对象窗口中添加一些控件。(6)在菜单栏上选择“工程添加用户控件”选项,在弹出的对话框中选择“VB ActiveX控件用户界面向导”选项,弹出“添加用户控件”对话框。(7)单击“打开”按钮,进入VB ActiveX控件界面向导程序。在该向导的指导下,生成与控件有关的属性、方法和代码,完成ActiveX控件的生成。 2属性页向导属性页向导能为用户控件建立各种属性也提供帮助。是一个外接程序。如果“外接程序”菜单中没有“属性页向导”,应使用“外接程序”菜单中的“外接程序管理器”命令加载8.3建立和使用ActiveX文档ActiveX文档是信息的特殊显示
237、。ActiveX文档可以说是一个电子表格、图形、图表或数据的任意形式显示。ActiveX文档类似于窗体,通过向工程添加用户文档,可以在工程中创建ActiveX文档。ActiveX文档服务器是用户文档的ActiveX EXE或ActiveX DLL工程。ActiveX文档服务器提供给另一应用程序ActiveX文档对象。ActiveX文档容器可以请求ActiveX文档并显示它。 ActiveX文档使用户能建立可以在网上传输的应用程序,在笔记本电脑上或在遥远的额办公室甚至在家中,都可以通过Wwb浏览器来使用。但是ActiveX文档不等于Web网页,而是一个应用程序。另外,用户可以通过浏览器把Acti
238、veX文档和Web网页紧密地结合在一起。 返回建立ActiveX文档服务器的一般步骤如下。1、创建ActiveX文档文档服务器工程 创建新的ActiveX服务器工程,或把一个已有工程转换成ActiveX文档服务器,可建立ActiveX文档。该工程含有ActiveX文档。 操作步骤如下:启动一个新的ActiveX文档DLL或ActiveX文档EXE工程,把一个用户文档作为默认模块插入工程中:或启动一个新的ActiveX文档DLL或ActiveX文档EXE工程,将一个类模块作为默认模块插入工程中。在菜单上选择“工程-添加用户文档”命令,添加用户文档;或打开已有工程,将该工程转换为ActiveX文档
239、服务器工程。在菜单上选择“工程-添加属性页”命令,将工程类型更改为ActiveX EXE或ActiveX DLL。在菜单上选择“外接程序-外接程序管理器”命令,在“外接程序管理器”对话框中选择“VB6 ActiveX文档移植向导”并单击“确定”按钮。此时,“外接程序”菜单中添加一个菜单项“ActiveX文档移植向导”。在菜单上选择“外接程序- ActiveX文档移植向导”命令,遵循该向导的指令将工程中的窗体转换为ActiveX文档。无论是按哪些步骤执行该进程,都应当在工程中ActiveX文档服务器工程和至少有一个用户文档。2、建立用户文档可以向ActiveX文档服务器添加一个或多个用户文档,每
240、个用户文档定义了ActiveX文档用户接口。建立用户文档的方法类似与建立窗体,并可以向窗体中添加控件。用户文档保存在扩展名为.dob的文件中。如果用户文档含有该图形数据,该数据保存在扩展名为.dox的文件中.这两种文件类型与用于窗体的.frm和.frx文件类似。程序设计时,可以向窗体添加代码。同样,也可以在用户文档添加代码。但是,用户文档不能加载和卸载。向窗体Load和Unload事件过程添加的代码,通常也可以添加给用户文档的Initialize和Terminate事件。3、开发ActiveX文档服务器的代码可以在ActiveX文档服务器工程添加任意的其他窗体、类模块和标准模块。这些附加模块可
241、以向用户提供ActiveX文档的支持。4、设定用户文档属性用户文档有效的属性与提供给窗体的属性类似。此外,HscrollSmallChange属性和VscrollSmallChange属性仅对用户文档有效。这两个属性标识用户在ActiveX文档容器的视区内(滚动时)用户文档将滚动过的距离(一twin为单位)。5、设置ActiveX文档服务器的工程属性在“工程”菜单中选择该工程属性命令,定义文档服务器的工程设置。6、测试ActiveX文档由于测试ActiveX文档需要ActiveX文档容器,因此不能简单地通过运行ActiveX文档服务器工程来测试ActiveX文档。运行诸如Internet Ex
242、plorer的ActiveX文档容器应用程序可以测试ActiveX文档。ActiveX文档容器应用程序从ActiveX文档服务器请求ActiveX文档。带有扩展名的.vbd的Visual Basic文档保存ActiveX文档的定义及其相关的ActiveX文档服务器。打开ActiveX文档容器应用程序中的Visual Basic文档时,该容器应用程序读取文件并决定实现哪个ActiveX文档服务器,以及从该服务器请求哪个ActiveX文档。因此,可以把Visual Basic文档作为对相应ActiveX文档的引用。 测试ActiveX文档的操作步骤如下:运行ActiveX文档服务器工程。该工程不是
243、处于运行模式,应确认Start Mode工程属性设置为ActiveX组件。运行工程时,临时性的Visual Basic文档在工程中每个ActiveX文档的Visual Basic目录中创建。用户文档的Name属性作用与Visual Basic文档文件名,扩展名为.vbd.启动ActiveX容器应用程序.如果Web浏览器支持ActiveX文档,则可以使用ActiveX文档用浏览器的Open功能打开.vbp文件。这些文件将驻留在Visual Basic目录中。打开文件时,ActiveX文档应当出现在浏览器内。测试ActiveX文档。使用ActiveX文档的功能。由于正在按设计模式运行工程,因而可以
244、像处理其他工程一样设置断点、观察点以及进行其他测试。7、编译ActiveX文档服务器在菜单上选择“工程-生成工程”选项,Visual Basic将指定工程编译为.EXE或.DLL文件,并为ActiveX文档服务器中的每个用户文档创建文档文件(.VBD).这些文件将创建在已编译的ActiveX文档服务器的同一目录中.ActiveX文档文件可以重命名.用上述步骤创建的.vbd文件也可以测试已编译的ActiveX文档服务器.8、发布ActiveX文档和服务器ActiveX文档服务器编译后,就可以对其进行发布或向Web结点添加文件。随后,其他用户可以从任意的ActiveX文档容器浏览ActiveX文档
245、。8.4综合实例综合实例首先新建一个工程。在窗体中引入1个图像列表框,1个ListView控件,两个单选按钮控件和一个状态栏控件。引入控件的窗体如图所示。 其中,ImageList控件为ListView控件提供图形,状态栏显示某一列表框项目的有关信息,单选按钮用来选择是否排序。返回按下面步骤设置个控件属性:(1)设置窗体属性 激活窗体的属性窗口,设置名称为MySetup,Caption属性为“控制面板示例”,其它属性采用默认值。(2)设置状态栏属性 激活属性页窗口,单击通用选项卡,设置样式属性值为“1-sbrSimple”。这时状态条以简单形式出现。(3)设置单选按钮属性设置Option1的C
246、aption属性为“排序”,Option2的Caption属性为“不排”,其它属性采用默认值。(4)设置ListView控件属性按以下步骤设置ListView控件的属性:激活ListView控件的属性页对话框,。属性页对话框的通用选项卡选用系统默认设置。单击图像列表选项卡,其中的普通列表框用来设置与ListView控件相连的ImageList控件,这里设置为ImageList1,其他采用缺省设置.单击分类选项卡,可以在这个窗口中是否排序、排序的关键字、排序的顺序等。这里不做设置。其他几个选项卡不常用,就不介绍了。(5)设置ImageList控件为了使ImageList控件能显示图标,还需在Im
247、ageList控件中引入几个图像,设置结果如图所示。添加程序代码(略):程序运行后界面如图所示,窗体下面的状态栏显示了对象的个数。当调整窗体的大小时,界面同样同样美观。当将排序按钮设置为真,并且选中显示器一项时,界面如图8-21所示。可以看到,列表项的排列方式发生了变化,状态栏的内容也发生了变化。8.5本章小本章小结结Visual Basic 应用程序的界面主要由控件构成。Visual Basic工具箱提供了命令控件、文本框等常用控件。这些控件总是出现在工具箱中,可以直接使用,这种控件称为标准控件,又称内部控件。标准控件包含在Visual Basic的.EXE文件中,系统安装后,即可直接使用。
248、Visual Basic工具箱中只有20个标准控件,对于复杂的应用程序,这些控件是不够的。ActiveX控件以单独的文件存在,是Visual Basic工具箱的扩充。ActiveX控件可以被添加到工具箱中,也可以从工具箱中删除。ActiveX控件的使用方法与其他标准控件完全一样。在程序中添加后,即可成为开发和运行环境的一部分。ActiveX控件包含:工具栏(Toolbar)、数据组合框(DataCombo)、数据列表框(DataList)等。创建ActiveX控件的步骤包括: (1)创建“ActiveX 控件工程(2)在UserControl1对象上添加可能得到的各种对象。(3)编写程序代码。
249、(4)参考类的创建,为控件添加属性、事件和方法。(5)如果需要,可以为控件建立属性页。(6)建立一个标准的EXE工程测试所建立的ActiveX 控件。(7)编译成OCX文件发布返回 习题习题一、思考题1. 说明创建Active控件的主要步骤。2. 试说明Active控件与标准控件的差异。3. 如何在应用程序中使用工具栏和状态栏控件?试举例说明。4. 通过向导完成Active控件Add_Name的制作。二、程序设计题1用工具栏控件设计一个工具栏,其功能和界面自定。2用状态栏控件设计一个状态栏,其功能和界面自定。3创建一个能显示日期和时间的Active控件。4设计一个输入学生信息的Active控件
250、,该控件可以输入姓名、性别、年龄和机关信息,如果输入的姓名与已输入姓名不重名,即添加到学生名清单中 返回第9章程序调试与错误处理9.1程序调试9.2错误处理程序设计9.3错误处理实例9.1程序调试9.1.1应用程序错误与调试9.1.2段点设置与立即窗口返回9.1.1应用程序错误与调试应用程序错误与调试1应用程序的错误应用程序的错误 为了更有效的使用调试手段,把可能遇到的错误分成为了更有效的使用调试手段,把可能遇到的错误分成3类,类,即编译错误、运行错误、逻辑错误即编译错误、运行错误、逻辑错误 2调试工具栏调试工具栏 VisualBasic6.0不能诊断或更正错误,但能提供工具帮不能诊断或更正错
251、误,但能提供工具帮助用户分析程序是如何从过程的一部分流向另一部分,分析变量助用户分析程序是如何从过程的一部分流向另一部分,分析变量和属性是如何随着语句的执行而改变。有了调试工具,就能深入和属性是如何随着语句的执行而改变。有了调试工具,就能深入到应用程序内部去观察,从而确定到底发生了什么,以及会发生。到应用程序内部去观察,从而确定到底发生了什么,以及会发生。返回9.1.2段点设置与立即窗口1VisualBasic的模式2中断与程序调试3监视与监视表达式4立即窗口返回1VisualBasic的模式Visual BasicVisual Basic的运行有三种模式:设计模式、运行模式(的运行有三种模式
252、:设计模式、运行模式(RunRun)和中段模式)和中段模式(Break)(Break)。 启动启动Visual BasicVisual Basic后进入设计模式,主窗口标题栏有后进入设计模式,主窗口标题栏有“ 设计设计”二字。二字。建立应用程序的所有步骤基本上都在设计模式下完成。建立应用程序的所有步骤基本上都在设计模式下完成。 执行执行“启动启动”命令后进入执行模式,命令后进入执行模式,Visual BasicVisual Basic的主窗口标题栏上的的主窗口标题栏上的“ 设计设计”变成了变成了“ 运行运行”。在运行模式下,。在运行模式下,Visual BasicVisual Basic把全部
253、控制权把全部控制权都交给应用程序,可以查看程序代码,但不能修改程序代码,还可以执行都交给应用程序,可以查看程序代码,但不能修改程序代码,还可以执行“结束结束”命令回到设计模式。命令回到设计模式。 中断模式是程序执行过程的一个暂停状态,进入中断模式后主窗口标题中断模式是程序执行过程的一个暂停状态,进入中断模式后主窗口标题栏上的栏上的“ 运行运行”变成了变成了“break”.break”.在中断模式下,可以检查、修改程序在中断模式下,可以检查、修改程序代码,也可以检查程序中变量的中间值,还可以继续执行代码,也可以检查程序中变量的中间值,还可以继续执行 2中断与程序调试VisualBasic提供段点
254、和Stop语句,把应用程序置于中断模式下。可以使用以下方法进入中断模式:(1在程序中使用Stop语句,程序运行到Stop语句进入中断模式;(2)在设计或中断模式下设置程序的断点;(3)程序运行时出现错误,自动进入中断模式;(4)程序运行时,按下Ctrl+Break键进入中断模式;(5)程序运行时,在菜单栏上选择“运行中断”选项进入中断模式;(6)程序运行时,单击工具栏上的“中断”按钮进入中断模式。 设置断点的方法:在程序代码窗口中,将光标移到希望中断的语句上,在菜单上选择“调试-切换段点”选项,光标所在语句设置为断点。被设为断点的语句为反向显示并在其前面显示一个原点。利用断点只能粗略的判断错误
255、发生的位置。利用程序跟踪可以直接看到程序的执行情况和执行顺序,找到发生错误的位置。对于逻辑错误,利用断点可以跟踪到程序运行的去向。VisualBasic的跟踪方式包括逐语句执行,逐过程执行和跳出执行。逐语句执行是每次只执行一个语句,并根据输出结果判断执行的语句是否正确。逐语句执行开始后,程序进入执行模式,执行一条语句切换到中断模式,并把下一条语句作为待执行的语句。逐过程执行与逐语句执行基本相同。逐过程执行不跟踪到过程中,即把被调用的过程当作一条语句一次执行完毕。“跳出”可以执行当前过程的饿其他部分,并在调用过程的下一行中断执行。若想暂时避开程序的某一部分,可以通过跳出执行来实现。 3监视与监视
256、表达式调试程序时,一个计算可能得不道想要的结果,当某个变量或属性取特定范围内的值时,可能会现问题。许多调试问题不是由单个语句产生的,因而需要在整个过程观察变量或表达式的情况。Visual Basic自动对监视表达式进行监视。应用程序进入中断模式后,这些监视表达式出现在“监视”窗口中,可在该处观察其值。 无论何时,只要表达式的值改变或等于一个特定的值,就可把应用程序设置为中断模式直接观察。例如,循环计数器达到一个特定值时,可用一个监视表达式把应用程序设置为中断模式,而不是一次一条语句执行数十次乃至数百次循环。当过程中的一个标志值改变时,都可使应用程序进入中断。 在设计或中断模式下,可添加监视表达
257、式。方法:在菜单栏上选择“调试添加监视”选项,弹出“添加监视”对话框,在该对话框中添加监视表达式 添加监视表达式的步骤如下:1.在菜单栏上选择“调试添加监视”选项,弹出“添加监视”对话框。2.代码编辑器中的当前表达式将出现在“表达式”框中。如果这不是需要监视表达式,可在“表达式”框中直接输入表达式。3.若有必要,设置要监视的变量的范围。如果在“上下文”中选定“过程”或“添加模块”选项,则从相应的列表框中选定一个过程、窗体或模块名。4.若有必要,在“监视类型”组中选定选项按钮,以确定对监视表达式的响应方式。5.单击“确定”按钮,完成设置。 4立即窗口程序进入中断模式后,将自动激活立即窗口;也可以
258、直接在系统菜单栏上选择“试图立即窗口”选项,打开立即窗口。若中断时程序正在执行某个过程,该过程的代码窗口与立即窗口一起显示。在立即窗口中,可以直接执行VisualBasic语句,并且不影响代码窗口的程序代码。 9.2错误处理程序设计9.2.1应用程序错误与调试9.2.2Resume语句 9.2.3Err对象和Erl函数 9.2.4错误处理程序 9.2.1应用程序错误与调试1设置错误陷阱语句 2取消该错误捕捉功能 1设置错误陷阱语句VisualBasic用OnError语句捕捉程序运行时的错误,以便设置错误陷阱,并利用Err对象及相关的属性、方法确定程序运行时的错误起因,以选择响应的解决措施,实
259、现在线错误处理。语句格式:OnError语句有3种基本格式。 格式1:OnError格式2:OnError0格式3:OnErrorResumeNext功能:设置或取消错误捕捉功能。说明:在程序中,用OnError语句语句设置的错误捕捉功能一直起作用,直到另一个OnError语句取消所设置的错误捕捉功能。在错误捕捉处理程序起作用期间,一旦发生错误,程序即转向指定的行标号并执行错误处理程序。格式1设置从指定行号开始的错误处理程序。行号可以是任意的行标号或行号,并要求与OnError语句在同一过程内。格式2取消已设置的错误捕捉程序。在已设置错误捕捉处理程序的情况下,执行该语句将已激活的错误处理程序变
260、成无效。格式3指明发生运行错误时程序跳过错误继续执行,即发生错误时,不对错误做任何处理,直接跳到产生错误语句的下一个语句继续执行。若希望在程序出错时进行错误处理,必须用格式1重新设置其他错误处理,或用格式 2取消该错误捕捉功能例如: PrivateSubForm_Load()OnErrorGotoErrLineIfn=100OnErrorResumeNextEndIfExitSubErrLineEndSub9.2.2Resume语句语句格式:该语句有3种格式。 格式1:Resume格式2:ResumeNext格式3:Resume功能:该语句放在错误处理程序中,指定执行错误处理程序后继续执行的语
261、句,以便在指定位置恢复程序的执行。 说明:该语句与Return语句类似,但只能用于错误处理程序中,即必须与OnError语句配套使用。9.2.3Err对象和Erl函数Err对象含有关于运行出错时的错误信息,其属性由错误的生成者设置。该错误生成着可能是Visual Basic系统,也可能是某对象,或者是程序设计者。Err对象的默认属性是Numeber。该默认属性可以直接用对象名称Err表示,所以不必修改以前Err函数或Err语句书写的程序代码。出现错误时,Err返回错误的代码,错误代码的取值范围为132676。Err函数返回错误语句的行号。若发生错误的程序没有行号,则Err函数总是返回0。虽然V
262、isual Basic中也可以使用行号,但行号只是某一行的标识,但与旧版本Basic语言兼容,与程序的执行顺序无关。只有在发生错误时,Err对象和Erl函数才返回有意义的值,通常把它们放在错误处理程序中,用来确定所发生的是什么错误,以及采取什么操作纠正错误。 以下程序可以查出错误代码对应的错误信息。Private Sub Command_Click() Dim Msg,NI,UsrErr On Error GoTo ErrHand NI=Chr(10) Msg=“请输入一个错误号查看相应错误信息” UsrErr=InputBox(Msg) Error UsrErr Exit SubErrHan
263、d: Msg=“错误号”& Err &“的信息是:”& NI & & Error(Err) & sgBox Msg Resume NextEnd Sub 9.2.4错误处理程序 应用程序运行过程中,出现错误是不可避免的,硬件出现的问题或用户的误操作,都会造成运行出错,这些错误可能使程序意外的终止,一般无法使应用程序继续运行。有些错误也许不会中断程序运行,但可能使代码产生意想不到的结果。因此必须用On Error语句捕获错误并执行错误处理程序,以避免应用程序不必要的意外中断。在程序设计中,通过设置错误对象Err的各种属性,如错误号、描述等,使应用程序在错误发生时可以对错误状况作出响应或处理。设计
264、错误处理程序包括3个步骤:1、设置错误捕获 当应用程序执行到On Error语句时,激活错误捕获,用On Error语句指定错误处理程序开始的标号。当错误发生时,通知应用程序在分支点设置或激活错误捕获。当包含错误捕获的过程处于活动时,错误捕获始终是激活的,即直到该过程执行Exit sub、Exit函数、Exit属性、End Sub、End函数或End属性语句时,错误捕获才停止。尽管在任一时刻任一过程中只能激活一个错误捕获,但可建立几个选择的错误捕获并在不同的时刻激活不同的错误捕获程序。 2、编写错误处理程序 错误处理程序应对所有能预见的错误都不得作出响应或处理。错误处理程序逻辑的第一步,是添加
265、行标号,行标号标志着错误处理程序的开始。行标号应该有一个具有描述性的名称,其后必须加冒号。 基本的约定:把错误处理代码放在过程末端,该过程在紧靠行标号前方处使用Exit Sub、Exit函数或Exit属性语句。这样,如果未出现错误,过程可避免行错误处理代码。 错误处理程序体包含实际处理错误的代码,通常以Select Case 或if.ThenElse语句的形式出现。程序中需要确定可能会发生什么错误,对每种错误提供响应的操作方法。例如,在“磁盘未准备好”错误的情况下,需要提示用户插盘。为了处理所有意想不到的错误,应使用else或case else语句提供选项,以对不能预测的错误作出响应。 Err
266、对象的Number属性包含数值型的错误代码,错误代码表最新的运行错误号。借助Err对象与select case或if thenelse语句的组合,可以对出现的任何错误采取有针对性的处理和操作。 3、出错误处理程序 在错误处理程序中,可以用 ResumeNext语句使程序返回出错语句之后的语句。 9.3错误处理实例首先建立程序,这个程序的目的是要求一个整数的阶乘。当输入一个正整数时,程序首先对输入参数进行有效性检查,如果参数有效则求出阶乘并返回结果,否则提示输入参数无效,并要求重新输入。按下面步骤建立这个程序:运行Visual Basic6.0并建立标准工程。单击工具栏中的Lable控件,在Fo
267、rm1窗体上绘制一个标签,并将其Caption属性社为“请输入(020)之间整数”。单击工具栏中的Text控件,并在Form1窗体中绘制一个文本框,然后将其Text设置为空。单击工具栏中的CommandButton控件,并放置在窗体中,将其Caption属性设为“计算阶乘”。最后再放置两个标签到窗体Form1中,属性采用缺省值。在这个程序中需要处理的事件过程只有Command1_Click。在该过程中,需要进行参数检查和进行阶乘计算。这里编写了两个函数来完成这两个功能。函数CheckParameters用来检查用户输入的参数。返回值是检查过的合法参数。函数JIECHENG计算一个数的阶乘值。它
268、返回计算结果 函数Checkparaneters的代码如下:Function checkprameters()将用户输入转化为数值参数x=Val(text1.text)检查用户输入是否有效如果输入错误,则提示用户重新输入输入正确,就把检查过的参数作为结果返回if x20 and x=0thenlabel3.caption=str$(jiecheng(retV)endifendsub到此,完成了这个程序的编写。下面测试程序的运行。(1)按F5键运行程序,并在文本框中输入0,单击计算阶乘按扭,得到图所示的结果。这个结果是正确的。(2)测试计算-1的阶乘,正常情况下程序应显示输入错误等提示。在文本框
269、中输入“-1”,单击计算阶乘按钮,这时看到图所示结果。 显然这个结果与预期的不符,是错误的。下面就来查找该错误。由于输入无效参数-1时程序并没有显示出错提示所以推测在检查参数的代码中出了问题。(3)打开代码窗口,在调用CHeckPARAMETERS处设置断点,以便程序在检查参数之前中断运行,这样可以查看程序状态和中间结果。加入断点的操作可按下面步骤进行。代码窗口中,把光标移动到要加断点的一行。打开调试菜单,单击切换断点菜单项或按F9键。这时所选的语句出现一红色亮条,标识所设断点处。图显示了加入断点后的情形。 如果要去除断点,可以打开调试菜单,单击切换断点菜单项或按F9键。也可打开调试菜单,单击
270、清除所有断点菜单项以清除所有断点。(4)按F5键运行程序。在文本框中输入“-1”,单击计算阶乘按钮,这时程序在断点处中断,。下面单步执行,跟踪检查参数这部分代码的运行。(5)打开调试菜单,单击语句菜单项或按F8键单步执行。这时,程序转入CHECKPARAMETER函数中。在执行到IF 语句处时,打开视图菜单击立即窗口菜单项,这时桌面上出现了立即窗口。在立即窗口中输入“?X”,观程序接收到的参数值。 立即窗口中显示的X值为-1,说明程序接收到的参数是正确的,错误可能在后面,所以继续单步执行。(6)按F8键使用单步运行,程序流程转到ELSE语句处。现在发现问题就出在这里,因输入的-1不在0-20之
271、间,程序应执行LABEL2。CAPTION=“输入错误!请重新输入!”语句,以显示输入错误提示,而现在没有执行这条语句,因此在IF判断语句中的条件设置可能有问题。仔细查看IF 语句,发现果然有问题,这条语句写的是:if x20 and x20 and x20 OR x可视化数据管理器”如图101所示,即可启动VisData。10.2.2用数据库管理器建立数据库用数据库管理器建立数据库1.建立数据库结构建立数据库结构 以以建建立立一一个个如如下下结结构构的的学学生生表表为例:为例: (1)在在“可可视视化化数数据据管管理理器器”窗窗口口中中执执行行“文文件件”菜菜单单中中的的“新新建建”命命令令
272、(假假设设选选择择MicrosoftAccess,版版本本7.0MDB)后后,弹弹出出如如图图13-4所所示示的的对对话框。话框。 (2)在在对对话话框框中中选选择择数数据据库库文文件件保保存存的的位位置置,并并输输入入文文件件名名后后(保保存存类类型只能是型只能是MDB)单击保存按钮,将打开如图)单击保存按钮,将打开如图13-5所示的建立数据表窗口。所示的建立数据表窗口。 (3)右击数据库窗口,在弹出的菜单中选择)右击数据库窗口,在弹出的菜单中选择“新建表新建表”命令,打开如图命令,打开如图13-6所示的所示的“表结构表结构”对话框。对话框。图图13-5建立数据表窗口建立数据表窗口图图10-
273、14“表结构表结构”对话框对话框 (4)在在“表表结结构构”对对话话框框中中输输入入表表名名后后,单单击击“添添加加字字段段”按按钮钮,在在弹弹出出的的如如图图13-7所所示示的的“添添加加字字段段”对对话话框框中中输输入入字字段段名名,选选择择字字段段类类型型(Text类类型型字字段段还还需需输入字段大小)。重复此过程直至添加完所有字段后,单击输入字段大小)。重复此过程直至添加完所有字段后,单击“关闭关闭”按钮。按钮。图10-15“添加字段”对话框3建立索引建立索引 单单击击“表表结结构构”对对话话框框的的“添添加加索索引引”按按钮钮,在在弹弹出出的的对对话话框框中中(如如图图13-8所所示
274、示)输输入入索索引引名名称称,选选择择索索引引字字段段后后,单单击击“确确定定”按按钮钮即即完完成成了了索索引引的的建建立立过程。过程。图图10-16“添加索引添加索引”对话框对话框图图示示“数据库数据库”窗口窗口2.修改表结构修改表结构 在数据库窗口中用鼠标右击要修改的表名称,选择“设计”选项,打开“表结构”对话框,即可对表的结构进行修改。3.输入数据记录输入数据记录 建立表结构后,可以把记录数据输入到表中。输入数据时,可以分为使用数据控件、不使用数据控件、使用DBGrid控件3种方式操作。4.删除记录删除记录(1)使用DBGrid控件(2)不使用DBGrid控件10.3数据控件和数据绑定控
275、件数据控件和数据绑定控件10.3.1数据控件的外观和功能数据控件的外观和功能 1.数据控件的外观数据控件的外观 在工具箱中双击数据控件图标,或单击该控件后在窗体上拖动画出控件,都可以看到数据控件的外观及各个按钮提供的基本功能如图1026所示。2.数据控件的功能数据控件的功能 数据控件用于将一个数据源连接到一个数据绑定控件,数据源可以是DAO/Jet或ODBC。使用数据控件可以完成以下功能而不需要编写任何代码。(1)完成对本地和远程数据库的连接。(2)打开指定数据库的表,或者是基于SQL的查询集。(3)将表中的字段传值至数据绑定控件,并针对数据绑定控件的修改更新数据库。(4)捕获访问数据时出现的
276、错误。(5)关闭数据库。10.3.2数据控件和数据绑定控件的常用属性数据控件和数据绑定控件的常用属性一、数据控件的主要属性一、数据控件的主要属性1.Connect属性属性指定数据库类型指定数据库类型VB可识别的数据库有:可识别的数据库有:MDB文件、文件、DBF文件、文件、DB文件、文件、DF文件和文件和ODBC数据库数据库2.DatabaseName属性属性指定具体使用的数据库。指定具体使用的数据库。3.RecordType属性属性确定记录集合类型。确定记录集合类型。4.RecordSource属性属性确定具体可访问的数据表。确定具体可访问的数据表。5.EofAction和和BofActio
277、n属性决定数据控件要采取的操作。属性决定数据控件要采取的操作。6.RedaOnly属性用于控制能否对记录集进行写操作。属性用于控制能否对记录集进行写操作。要使关联控件能被数据库约束,必须对控件的两个属性进行设置:要使关联控件能被数据库约束,必须对控件的两个属性进行设置:7.DataSource属性通过指定一个有效的数据控件连接一个数据库。属性通过指定一个有效的数据控件连接一个数据库。8.DataField属性设置数据库有效的字段。属性设置数据库有效的字段。二、数据绑定控件常有的属性二、数据绑定控件常有的属性数数据据控控件件用用于于数数据据文文件件的的连连接接,但但没没有有显显示示数数据据记记录
278、录的的能能力力。因因此此,数数据据控控件件还还要要和和其其他他控控件件相相结结合合,才才能能对对数数据据库库中中的的记记录录进进行行操操作作,这这些些与与数数据据控控件件相相结结合合来来操操作作记记录录的的控控件件,称称为为数数据据绑绑定定控控件件。数数据据绑绑定定控控件件通通过过DataSource属属性性和和Datafield属属性性来来连接某个数据控件。连接某个数据控件。1.DataSource该该属属性性提提供供一一个个下下拉拉式式列列表表,用用户户可可从从中中选选择择要要连连接接的的数数据据控控件件名名称称,数数据据绑绑定定控控件通过该属性绑定到一个数据控件。件通过该属性绑定到一个数
279、据控件。2.DataFieldDataSource属属性性指指定定数数据据绑绑定定控控件件需需要要的的表表信信息息。Datafield属属性性指指定定表表中中的的某某个个字字段段作为该控件所要显示和更新的内容。作为该控件所要显示和更新的内容。10.3.3使用使用Recordset对象访问数据库对象访问数据库1.Recordset对象的主要属性对象的主要属性Recordset对象的主要属性如表对象的主要属性如表105所示。所示。属性名设置值及意义EOF表示该记录指针是否在Recordset中的最后一条记录之后,逻辑型。BOF表示该记录指针是否在Recordset中的第一条记录之前,逻辑型。NoM
280、atch该属性值为True时表示未找到匹配项,逻辑型。RecordCount返回一个表示该Recordset对象所包含的记录数。AbsolutePosition返回或设置一个表示该Recordset对象的当前记录的绝对位置。Fields包含一个Recordset所存储的字段对象集合。Sort返回或设置一个Recordset对象中的记录排列顺序。Type返回表示该Recordset属于表、Dynaset或Snapshot类型的值。表表10-5Recordset对象的主要属性对象的主要属性2.Recordset对象的主要方法Recordset对象的主要方法如表106所示。方法名功能Move方法群组
281、MoveFirst将控件定位到第一条记录。MoveLast将控件定位到最后一条记录。MovePrevious将控件定位到前一条记录。MoveNext将控件定位到后一条记录。AddNew增加新记录。Delete删除当前记录。Update更新当前记录。Edit将记录复制到缓冲区,以便编辑该记录。Find方法群组FindFirst查找指定条件的第一条记录。FindLast查找指定条件的最后一条记录。FindPrevious查找指定条件的前一条记录。FindNext查找指定条件的后一条记录。Move记录指针移动到指定的行数(/)。Close关闭该Recordset对象记录。Requery通过再次运行查
282、询来更新一个Recordset对象中的数据。Seek通过已被设置为索引的字段查找符合条件的记录。表表10-6Recordset对象的主要方法对象的主要方法10.4ADO数据控件10.4.1ADO数据控件ADO数据控件是ActiveX控件,要创建一个客户或前端数据库应用程序,应再窗体中添加ADO数据控件Adodc以及其他所需的任何VB控件。为了使用ADO数据控件,需通过“工程部件”向工具箱中添加“MicrosoftADODataControl6.0(OLEDB)”(Adodc控件)、“MicrosoftDataListControl6.0(OLEDB)”(DataList、DataCombo控件
283、)、“MicrosoftDataGridControl6.0(OLEDB)”(DataGrid控件)、“MicrosoftHierarchicalFlexGridControl6.0(OLEDB)”(MSHFlexGrid控件)等,这些控件在工具箱中的图标如图1032所示。1.用Adodc控件连接数据库并创建数据源2.Adodc控件的主要属性和方法控件的主要属性和方法(1)Connectionstring属性该属性指定有效的与数据源连接的字符串,通过该字符串使Adodc控件与指定的数据库建立连接。(2)RecordSource属性设置或返回记录集的SQL查询语句或表名,字符串类型。(3)Com
284、mandType属性说明执行命令的类型,数值型。(4)Recordset属性对象型,返回或设置对下一级ADORecordset对象的引用。该对象的属性、方法和用法与Data控件的Recordset对象相似。(5)Refresh方法打开或重新打开连接的数据源,并能重建控件的Recordset属性。3.Adodc控件的主要事件(1)WillMove/MoveComplete事件更改Recordset中的当前记录指针位置前/后引发。(2)WillChangeRecord/RecordChangeComplete事件在Recordset中的一个或多个记录更改前/后引发。(3)WillChangeFie
285、ld/FieldChangeComplete事件对Recordset中的一个或多个Field对象值进行更改前/后引发。10.4.ADO对象模型ADO对象模型定义了一个可编程的分层对象集合,主要包括3个对象:连接对象(Connection)、命令对象(Command)、记录集对象(Recordset)。ADO对象的分工见表1010所示。1.ADO的Connection对象图图1038ADO对象模型对象模型2.ADO的Command对象 命令对象(Command)定义了将对数据源执行的指定命令,作用相当于一个查询。使用Command对象查询数据库,并返回Recordset对象中的记录,以便执行大量
286、操作或处理数据库结构。(1)Command对象的主要属性ActiveConnection属性:设置或返回指定的Command对象当前所属的Connection对象。CommandText属性:设置或返回命令(SQL语句、表名)的字符串值。CommandType属性:指示Command对象的类型。(2)Command对象的主要方法Execute方法用于执行在CommandText中指定的查询、SQL语句。3.ADO的的Recordset对象象(1) Source属性用于指示Recordset对象中数据的来源(可以是Command对象、SQL语句或表的名称)。(2)ActiveConnection
287、属性用于设置或返回指定的Recordset对象当前所属的Connection对象。 (3)Open方法用于打开表、查询结果或者以前保存的Recordset中记录集。 (4)UpdateBatch方法用于更新记录集。10.4.3结构化查询语言结构化查询语言SQL一、一、SQL概述概述结构化查询语言SQL是操作数据库的工业标准语言。在SQL语言中,指定要做什么而不是怎么做。只要告诉SQL需要数据库做什么,可以确切指定想要检索的记录以及按什么顺序检索。可以在设计或运行时对数据控件使用SQL语句。用户提出一个查询,数据库返回所有与该查询匹配的记录。1.SQL语言与分类语言与分类SQL语言具有以下功能语
288、言具有以下功能:(1)在数据库中查找并返回符合条件的记录。在数据库中查找并返回符合条件的记录。(2)创建、更改和删除数据库中的表、字段和索引等。)创建、更改和删除数据库中的表、字段和索引等。(3)可以对表中的数据进行统计,如计算总和、平均值等)可以对表中的数据进行统计,如计算总和、平均值等标准标准SQL语言的分类:语言的分类:(1)数据查询DQL(2)数据操作语言DML(3)数据定义语言DDL2.VB环境下SQL的使用方法(1)在VisData中,先打开一个数据库,如“F:水利水电教材用学生管理系统Stud05.mdb”,SQL语句窗口中输入SQL语句如:SELECT * FROM 学籍,单击
289、“执行”命令按钮,运行结果如图1039所示。(2)在ADO/DAO对象编程中设置RecordSource属性,或在Connection对象、Command对象的Excute方法和Recordset对象的Open方法中的命令串中使用SQL语句。 二、二、SQL数据查询语句数据查询语句1.SQL语句基本格式SELETESELETEALL|DISTINCTAlias.Select_ItemAS Column_Name,Alias.Select_ItemAS Column_NameFROMFROMTable_NameASLocal_Alias,Table_NameASLocal_Alias,WHERE
290、WHEREGROUP BYGROUP BY groupfieldlistORDER BYORDER BY ASC|DESC其中:ALL或*:指定选取所有满足条件的记录。DISTINCT:有两个以上相同记录时,仅选择一个。Select_Item:选择表的字段名,多个字段名之间用逗号相隔。 Column_Name:查询结果显示时,显示的列标题名,省略时显示字段名。Table_Name:获取数据的表或视图名称,多个表名间显示字段名。Local_Alias:数据源表或视图的别名,Select子句中的Alias与它相同。WHERE:建立一个子句,指定返回的查询结果应满足的条件。GROUP BY:按照选定
291、的字段将查询结果分组。ORDER BY:指明返回的查询结果按哪些字段、按升序(ASC)还是降序(DESC)排序。多个字段名之间用逗号相隔。2.有条件的SELECT查询语句 设定WHERE子句中的条件表达式,可获得满足条件的查询结果。在条件表达式中,SQL提供的基本运算符有:算术运算符、关系运算符和逻辑运算符。此外SQL还增加了一组运算符:Between运算符:用于数值或日期类型的字段。Between运算符:用于数值或日期类型的字段。Like运算符:用于找出符合指定条件的字段值。Like中可以使用的特殊字符见表1014。如找出姓名以“刘”开始的学生的学籍情况用:姓名 Like “刘*”。In运算
292、符:判断表达式的数值是否等于指定列表(集合)中几个数据项中的一个。例例10108 SQL8 SQL语言示例二(查询均在学籍表中)语言示例二(查询均在学籍表中)(1 1)查询姓名为)查询姓名为“刘小芳刘小芳”的学生信息。的学生信息。SELECT * FROM 学籍学籍 WHERE 姓名姓名”刘小芳刘小芳”提示提示:在在SQL中字符串用中字符串用单引号或双引号均可引号或双引号均可。3.组合查询 组合查询是指所查询的数据源来自多个表格。在这种情况下,被查询的多个表中每两个表至少有一个字段数据相同,且两个表格相互比较的字段,其数据类型必须相同,一个复杂的查询其用到的表可能会有很多个。4.分组查询 在S
293、ELECT语句中利用GROUP BY 子句将查询结果按该子句后指定的字段名(最多10个)分组显示。例1010 SQL语言示例四。按学号分组显示学生的学号,姓名,课程,分数。所用的查询语句是:SELECT 学籍.学号,学籍.姓名,成绩.课程,成绩.分数 FROM 学籍,成绩 WHERE 学籍.学号=成绩.学号 ORDER BY 学籍.学号5.分类统计的SELECT语句在SELECT语句的字段名表中,可以使用以下几个常用的统计函数:COUNT(字段名):返回满足条件的记录数,不包括Null值字段。除非字段名用“*”.SUM(字段名):返回指定字段值的总和(不包括Null值字段)。AVG(字段名):
294、返回指定字段值的算术平均值(不包括Null值字段)。MAX(字段名):返回指定字段的最大值。MIN(字段名):返回指定字段的最小值。例1011 SQL语言示例五。(1)统计学籍表男生的总人数。SELECT COUNT(*) AS 男生人数 FROM 学籍 WHERE 性别=男三、SQL数据操作语句1.INSERT语句 INSERT语句用来向表中添加一个或多个记录2.UPDATE语句UPDATE语句用来更新指定记录的指定字段的数据。3.DELETE语句DELETE语句用来删除指定表中的记录。四、数据绑定控件在VB6.0的标准控件中,具有数据绑定功能的控件有:复选框(CheckBox)、文本框(T
295、extBox)、列表框(ListBox)、组合框(ComboBox)、标签(Lable)、图片框(PictureBox)、图像框(Image)等。另外VB6.0中还提供了许多具有数据绑定功能的ActiveX控件,如:数据列表框(DBList)、数据组合框(DBCombo)、数据网格控件(DataGrid)、分层式网格控件(HierarchicalFlexGrid)、图表控件(MSChart)等。一般情况下,数据绑定控件使用以下3个属性进行属性绑定。(1)DataSource(数据源)该属性指定控件要绑定到那个数据源。这些数据源可以式已经创建好的ADO数据控件、数据环境、数据类模块以及用代码创建
296、的ADO记录集对象。(2)DataMember(数据成员)该属性指定控件要绑定到数据源中的哪个命令,即哪个记录集。对于ADO数据控件和用代码创建的ADO记录集对象,由于只有一个记录集,不必指定该属性。(3)DataField(数据字段)该属性指定控件要绑定到记录集中的哪个字段。由于各种网格和图表控件绑定到整个记录集,因而这几种控件不必指定该属性。一般情况下,数据绑定控件使用以下3个属性进行属性绑定。(1)DataSource(数据源)该属性指定控件要绑定到那个数据源。这些数据源可以式已经创建好的ADO数据控件、数据环境、数据类模块以及用代码创建的ADO记录集对象。(2)Datamember(数
297、据成员)该属性指定控件要绑定到数据源中的哪个命令,即哪个记录集。对于ADO数据控件和用代码创建的ADO记录集对象,由于只有一个记录集,不必指定该属性。(3)DataField(数据字段)该属性指定控件要绑定到记录集中的哪个字段。由于各种网格和图表控件绑定到整个记录集,因而这几种控件不必指定该属性。1.用数据用数据绑定控件定控件显示数据示数据ADO数据控件连接数据库并创建数据源后,若要显示数据库中的记录,最简单的方式使通过各种数据绑定控件。数据绑定控件被“绑定”到整个记录集或记录集的某个字段上。2.DataGrid控件的使用控件的使用DataGrid控件可一次显示多个记录,并将数据的更改自动更新
298、到数据库中。使用DataGrid控件时,将DataSource属性设置为一个ADOData控件。程序运行时,DataGrid控件将显示ADO控件创建的Recordset对象中的记录。例1016DataGrid控件应用举例(略)10.5数据环境设计器10.5.1数据环境设计器概述数据环境设计器概述数据环境设计器是一个功能非常强大的创建数据库应用程序的形象化界面。使用环境设计器,只需要通过几个对话框就可以建立到数据源或记录源的连接。它比使用ADO数据控件要友好。数据环境设计器界面如图10-45所示:使用数据环境设计器,可以完成以下工作()添加一个数据环境设计器到一个VB工程中。()创建Connec
299、tion对象。()基于存储过程、表、视图、同义词和SQL语句创建Command对象。()基于Command对象的一个分组,或通过一个或多个Command对象相关来创建Command的层次结构。()为Connection和Recordset对象编写和运行代码。()从数据环境设计器中拖动一个Command对象中的字段到一个VB窗体或数据报表设计器。10.5.2Connection对象对象Connection对象代表与数据源进行的惟一会话。对象代表与数据源进行的惟一会话。数据环境设计器可以在设数据环境设计器可以在设计时创建一个或多个计时创建一个或多个ConnectionConnection对象,连接
300、到本地数据库或网络数据源。对象,连接到本地数据库或网络数据源。 在数据环境设计器被创建时,自动添加了一个连接对象在数据环境设计器被创建时,自动添加了一个连接对象Connection1。选。选择择Connection对象并右击鼠标,选择对象并右击鼠标,选择“属性属性”命令,或单击数据环境设计器命令,或单击数据环境设计器工具栏上的工具栏上的“属性属性”图标,可以打开数据链接属性对话框,如图图标,可以打开数据链接属性对话框,如图1046所示。所示。10.5.3Command对象对象 要操作数据源的数据,就要先创建要操作数据源的数据,就要先创建Command对象。对象。Command对象可以查询数对象
301、可以查询数据库返回的据库返回的Recordset对象中的记录,也可以进行数据库操作或处理数据库结构。对象中的记录,也可以进行数据库操作或处理数据库结构。 创建了创建了Connection对象之后,有两种方法创建对象之后,有两种方法创建Connection对象对象Command1,选,选中一个中一个Connection对象如对象如Connection1,在数据环境设计器工具栏上单击,在数据环境设计器工具栏上单击“添加命添加命令令”按钮,添加一个按钮,添加一个Command1对象;或在对象;或在Connection对象上右击鼠标,在快捷菜对象上右击鼠标,在快捷菜单上选择单上选择“添加命令添加命令”
302、,添加一个,添加一个Command1对象。结果如图对象。结果如图1047所示。所示。1.设置设置Command对象的属性对象的属性 选中一个Command对象,右击鼠标在快捷菜单中选择“属性”,或者在数据环境设计器工具栏上单击“属性”图标,都可以打开属性对话框。2.创建分组记录集创建分组记录集 层次结构记录集适用于希望从多个表中检索数据。但是它不能把数据合并到一个单一的表中。创建层次结构有两种方法,一种是通过父命令和子命令对象来创建,另一种是使用属性对话框的“分组”选项卡。3.创建合计数据创建合计数据在属性对话框的“合计”选项卡,可以为记录集或层次结构记录集创建合计数据。可以在分组层次的基础上
303、定义合计,也可以为所有的记录集定义总数。合计数据将作为层次结构记录集的一部分出现。10.6数据报表设计器和报表数据报表设计器和报表10.6.1数据报表设计器数据报表设计器1.数据报表设计器在集成开发环境的菜单栏上选择“工程添加DataReport(添加数据报表)”选项,即可在当前工程中添加一个数据报表设计器。此外,创建数据工程时系统自动创建一个数据报表(DataReport)对象并添加到工程中。数据报表对象的默认名是“DataReport1”。2.数据报表的界面一个完整的报表应包含以下区域:一个完整的报表应包含以下区域:(1)表报标头)表报标头/报表注脚报表注脚(2)页标头)页标头/页注脚页注
304、脚(3)分组标头)分组标头/分组注脚分组注脚(4)细节)细节10.6.2用数据报表设计器创建报表用数据报表设计器创建报表 在数据报表设计器中,用鼠标拖放操作即可完成创建和打印报表的操作,几乎不用书写一行代码。创建报表一般包含以下步骤:(1)建立报表要使用的)建立报表要使用的ADO记录源。记录源。(2)在)在VB工程中加入一个数据报表对象。工程中加入一个数据报表对象。(3)将字段放在数据报表设计窗体上,设计报表结构。()将字段放在数据报表设计窗体上,设计报表结构。(4)在程序中编)在程序中编写显示报表的代码。写显示报表的代码。(5)预览和打印报表。预览和打印报表。10.6.3报表控件的使用报表控
305、件的使用在数据报表中不能使用VB的标准控件。在工具箱中单击“数据报表”部件选项卡,可在工具箱中显示6中专门用于数据报表的控件。数据报表控件与对应VB标准控件的功能和使用方法类似。表1016列出了数据报表控件的功能。控件名称对应的标准控件说明RptLabelLabel显示静态文本RptTextBoxTextBox显示字段内容RptLineLine显示直线RptShapeShape显示正方形等图形RptFuncyion-显示计算字段RptImageImage显示图片10.6.4预览、打印和导出报表预览、打印和导出报表1.预览报表预览报表 预览报表有两种方法:将报表窗体设置为启动对象;添加菜单或命令
306、按钮,在菜单预览报表有两种方法:将报表窗体设置为启动对象;添加菜单或命令按钮,在菜单或命令按钮的或命令按钮的Click事件过程中调用数据报表的事件过程中调用数据报表的Show和和PrintReport方法。方法。2.2.打印报表打印报表(1)在预览时打印报表在预览时打印报表(2)用用PrintReport方法方法3.3.导出报表导出报表(1)预览时导出报表)预览时导出报表 预预览览报报表表时时,在在报报表表窗窗体体的的工工具具栏栏上上单单击击“导导出出”按按钮钮,即即可可导导出出当当前前报报表。表。(2)用)用ExportReport方法方法 预预览览报报表表时时,在在报报表表窗窗体体的的工工
307、具具栏栏上上单单击击“导导出出”按按钮钮,即即可可导导出出当当前前报报表。表。第11章管理信息系统的开发本章学习目标本章学习目标通过本章学习,应该:通过本章学习,应该:掌握应用系统分析、设计的基本方法;掌握应用系统分析、设计的基本方法;掌握安装程序的制作方法。掌握安装程序的制作方法。管理信息系统(管理信息系统(MIS)是人们借助计算机进行企事业)是人们借助计算机进行企事业现代化管理的重要手段。随着可视化的第四代程序设计现代化管理的重要手段。随着可视化的第四代程序设计语言的出现,快速原型法已经成为语言的出现,快速原型法已经成为MIS开发的常用方法。开发的常用方法。本章以快速原型法为例介绍应用系统
308、设计的方法以及应本章以快速原型法为例介绍应用系统设计的方法以及应用程序的分发方法。用程序的分发方法。11.1管理信息系统设计方法11.1.1管理信息系统及其组成管理信息系统(Management Information Systems 简称 MIS)是由人和计算机等组成的系统,它能实测企业的各种运行情况,能利用过去的数据预测未来,能从全局出发辅助企业进行决策,利用信息控制企业的活动并帮助实现其规划目标。管理信息系统是由信息的采集、传递、存储、加工、维护和使用6个方面组成。管理信息系统是一个人造的系统,需要从系统观点出发,运用系统工程的方法,按照系统发展的客观规律来展研制工作。11.1.2 管理
309、信息系统的生命周期管理信息系统的发展是无止境的,一个系统用了几年后,可能出现新情况、新问题,提出新要求。这时,再次改进系统目标,又要更新系统。这种周期循环叫做系统的生命周期。管理信息系统的开发要经历系统分析、系统设计和系统实施等三大阶段,每个阶段又分若干子阶段。1系统分析系统分析是系统开发的第一阶段,包括可行性分析和需求分析,其目标是确定用户对目标系统的要求。(1)可行性分析。可行性研究主要几种在技术可行性、经济可行性、法律可行性等方面。(2)需求分析。由于目标系统通常源于当前系统但又往往高于当前系统因此需求分析总是在现有系统上进行的,其任务是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解
310、决目标系统“做什么”的问题。需求分析的步骤是:调查研究当前系统的工作状况。对调查内容进行分析和抽象,列出用户许可的目标系统需求。对列出的需求进行数据分析,即确定目标系统中使用的全部数据并对他们进行定义;同时对列出的需求进行功能分析,以确定用户对目标系统数据处理功能的需求。2系统设计系统设计是在对现行系统详细分析的基础上,根据系统分析的结果,确定具体的系统实现方案,即根据新系统的逻辑模型建立新系统的物理模型,其任务是解决“怎样做”的问题。系统设计包括数据库设计、输入输出设计、系统结构设计、模块设计。(1)数据库设计。通常将数据库设计过程分为以下3个步骤:概念设计。实现设计。物理设计。(2)输入输
311、出设计:根据用户的使用习惯设计输入输出方式、数据的输入输出格式(包括屏幕格式和报表格式)及输入输出数据内容。(3)系统结构设计:根据需求分析阶段确定的新系统的目标、功能和逻辑模型,把系统功能划分为若干个子系统,明确各子系统的子目标和子功能,然后按层次划分功能模块,并画出系统结构图。(4)模块设计:确定功能模块子功能的实现方法,通常还要将模块进一步细化为多个子模块,模块的划分要遵循模块的独立性强、相互之间联系小、模块大小合适的原则。3系统实施系统实施是指新系统的具体实现、运行和维护。主要任务是物理系统(计算机硬件系统、网络设备等)的实施、应用程序的编写与调试、系统安装、系统维护和评价。11.1.
312、3管理信息系统的开发方法和界面特点1开发方法(1)结构化的生命周期法结构化的生命周期法,是把管理信息系统的生命周期分为系统分析、系统设计和系统实施等三大阶段,强调采用系统工程的思想核方法严格区分上述工作阶段来完成信息系统的整个开发过程。在整个开发过程中强调文档的规范化及标准化。(2)快速原型法快速原型法摒弃了严格区分管理信息系统生命周期各个阶段的方式,而是一开始就凭借开发人员对用户需求的理解,利用强有力的开发工具实现一个实实在在的系统模型(称为原型),即开发一个不太完善,也不一定完全符合用户需求的管理信息系统(或整个系统的一部分),这个模型表达开发人员对用户需求的理解和他认为系统实现后的形式。
313、然后开发人员和用户一起对这个模型进行评价,并以用户为主对模型的不足之处提出改进意见。根据评价结果,开发人员对模型进行修改。如此反复,直到用户满意为止。快速原型法的开发过程可用如图111所示的流程来表示。(3)面向对象法面向对象法的思想源于面向对象程序设计。面向对象的分析方法是从现实世界抽象出对象及发生在对象上的事件,从而建立起数据对象和处理操作之间的联系。利用面向对象的开发工具去实现面向对象的模型是一件很自然的转换过程。2界面特点在计算机软件技术中,用户界面设计已经发展成为一个重要的分支。MIS的用户界面设计一般遵循以下的基本原则:(1)通信功能作为界面设计的核心(2)界面必须始终一致(3)界
314、面必须使用户随时掌握任务的进展情况(4)界面必须能够提供帮助(5)界面友好,使用方便(6)输入画面尽可能接近实际(7)具有较强的容错功能11.2开发实例学生信息管理系统11.2.1系统需求分析系统要求能够完成学生信息管理的事务处理,包括学籍管理、系统管理、课程管理、成绩管理及报表等模块。该系统中相关的数据表有学籍表、成绩表、用户表、课程表等。11.2.2系统设计1数据库设计数据库选择Access,根据需求中对数据的要求可以归纳出系统所需的数据表及表结构。清单如下:(1)表名学籍表:用于存放学生学籍的基本情况,这些数据基本不变。字段名称学号姓名性别出生日期班级字段类型TextTextTextDa
315、teText大小格式16102820表111学籍表结构(2)表名课程信息:用于保存所有课程的名称。字段名称课号课程字段类型TextText大小格式1020(3)表名成绩表:用于保存学生的成绩。字段名称学号课程分数字段类型TextTextInteger大小格式16202表112课程信息表结构表113成绩表结构(4)表名用户表:用来保存系统定义的用户信息。表114用户表结构字段名称用户名密码权限字段类型TextTextText大小格式161610(5)表名临时:用来保存临时信息。表115临时表结构字段名称学号姓名成绩字段类型TextTextInteger大小格式16102系统功能模块图如图112所
316、示。第一层为主控模块,通过菜单系统的顶层菜单项来实现,第二层为功能模块,显示系统所需的各个子功能,通过各子菜单来实现。2.系统结构根据需求分析中对数据处理的要求,本系统的主要功能包括:用户管理:添加、删除用户,修改密码,修改权限等。学籍信息管理:添加、修改和查询学籍信息。课程管理:添加和修改课程信息。成绩管理:输入、修改和查询成绩报表:显示和打印学籍报表、成绩报表。系统功能模块图如图112所示。11.2.3系统模块清单本系统各功能模块在主窗体中的名称及所对应的窗体名称见表116。表116学生信息管理系统结构主菜单名子菜单名窗体名功能简介系统mnuSys添加用户mnuAddUserfrmuser
317、向用户表中添加用户删除用户mnuDelUserfrmdeluser删除用户表中的数据更改权限mnuModiPow更改用户的权限修改密码mnumodipassfrmmodipass修改用户的密码退出系统mnuExit退出整个系统学籍管理mnuEss添加学籍mnuAddEssfrmAddEss添加新生的学籍信息修改学籍mnuModiEssfrmModiEss修改学生的学籍信息查询学籍mnuQueryEssfrmQueryEss查询学生的学籍信息课程管理mnuCourse添加课程mnuAddCoursefrmAddCourse向课程表中添加新的课程修改课程mnuModiCoursefrmModiCo
318、urse修改课程表中的课程成绩管理mnuGrade输入成绩mnuInGradefrmInGrade向成绩表中输入新的成绩修改成绩mnuModiGradefrmModiGrade修改成绩表中的成绩查询成绩mnuQueryGradefrmQueryGrade根基条件查询成绩报表mnuReport学籍报表mnudpessdpess显示、打印学籍报表成绩报表mnudpgradedpGrade显示、打印成绩报表帮助mnuHelp关于mnuAbout用一个消息框显示相关信息frmlogin用户身份验证frmmain用菜单形式显示系统各模块续表116 学生信息管理系统结构11.3应用程序的编译与分发在创建在
319、创建VB应用程序后应用程序后,程序程序 员可以通过磁盘、员可以通过磁盘、CD-ROM、网络、网络等途径来分发应用程序。使用等途径来分发应用程序。使用VB6.0的打包和展开向导的打包和展开向导(Package and Deployment向导)可为向导)可为VB应用程序创建安装应用程序创建安装程序包,并将它们安装到最终用户的机器上。打包和展开向导通程序包,并将它们安装到最终用户的机器上。打包和展开向导通过提供有关如何配置过提供有关如何配置.cab文件(文件(.cab文件是一种经过压缩的、很文件是一种经过压缩的、很适合通过磁盘或适合通过磁盘或Internet进行分发的文件)的选项,使分发应用进行分
320、发的文件)的选项,使分发应用程序所包含的许多步骤得以自动进行。在分发应用程序时,先将程序所包含的许多步骤得以自动进行。在分发应用程序时,先将应用程序打包,然后展开。应用程序打包,然后展开。VB6.0的的“Package and Deployment向导向导”程序可在程序可在VB6.0的外接程序或开始菜单的的外接程序或开始菜单的VB6.0中文版程序组中启动,它的界面中文版程序组中启动,它的界面如图如图1116所示,所示,“打包和展开向导打包和展开向导”中有中有3个选项。个选项。图1116打包和展开向导1.打包:将工程打包,可以将工程制作成一个标准的安装文件,或者是将工程打成一个.cab的包放在网
321、上。2.将打包后的软件包分发到磁盘、CDROM或网络上,如Internet的服务器上。3.管理脚本:重新命名或是备份,并删除工程中打包的附加文件。11.3.1为应用程序打包在“打包和展开向导”上,单击“浏览”选择一个将要打包分发的工程名,这里是“F:水利水电教材用学生管理系统学生信息系统.vbp”。然后单击“打包”开始为应用程序打包。如果此工程没有编译,系统会显示一个对话框,提示向导要求这个工程的可执行文件,通过“浏览”查找该工程的可执行文件或通过“编译”对该工程进行编译以便建立这个工程的可执行文件,然后进入“打包和展开向导包类型”对话框。1.在在“包类型包类型”对话框中,选择标准安装包,即将
322、应用程序和支对话框中,选择标准安装包,即将应用程序和支持文件打包在一起,安装程序自动附加上应用程序的安装程序,持文件打包在一起,安装程序自动附加上应用程序的安装程序,使整个程序成为一个自动安装程序。标准安装包中的文件又:使整个程序成为一个自动安装程序。标准安装包中的文件又:Setup.exe文件文件预安装可执行程序;预安装可执行程序;Setup1.exe文件文件主安装程序;所有必需的支持文件(存放在主安装程序;所有必需的支持文件(存放在Suport子文子文件夹下);一个或多个件夹下);一个或多个.cab文件。然后单击文件。然后单击“下一步下一步”;2.进入进入“打包文件夹打包文件夹”对话框,选
323、择包的存放位置,单击对话框,选择包的存放位置,单击“下一下一步步”;3.进入进入“包含文件包含文件”对话框,显示打包文件中所包含的应用程序对话框,显示打包文件中所包含的应用程序文件和支持文件。如图文件和支持文件。如图1117所示。可以通过单击所示。可以通过单击“添加添加”往包中加入自己需要的支持文件,或者通过单击复选框删除包往包中加入自己需要的支持文件,或者通过单击复选框删除包中不必要的支持文件。数据库应用系统中应该加入数据库文件,中不必要的支持文件。数据库应用系统中应该加入数据库文件,本例中加入本例中加入“stud05.mdb”。单击。单击“下一步下一步”;图1117“打包和展开向导包含文件
324、”对话框4.进入“压缩文件选项”对话框。该对话框让用户选择打包文件的大小。若选择“单个压缩文件”则将所有安装应用程序所需的文件复制到一个单一的.cab文件中;若选择“多个压缩文件”则可通过向导的展开功能将打包文件分发到软盘,同时在“压缩文件大小“的下拉列表框中可以根据软盘的规格选择每个安装文件的大小,将应用程序文件复制到多个更小的指定大小的.cab文件中,单击”下一步“;5.进入“安装程序标题”对话框,输入安装程序运行时所显示的标题“”,该名称将在用户运行Setup.exe程序时显示。单击“下一步”;6.进入“启动菜单项”对话框,如图1118所示。这是指定在应用程序安装后,在最终用户计算机上创
325、建的开始菜单的程序组和组中的程序项。可以在下面两个位置中的一个为应用程序创建组和项:在“开始”菜单的主层次,或者在“开始”菜单的“程序”子文件夹。单击“新建组”和“新建项”创建新的程序组和程序项。选择默认程序组和程序项“”,单击“下一步”;7.进入“安装位置”对话框。该对话框用于修改安装文件的安装路径,但通常取默认值。单击“下一步”;图1118“打包和展开向导启动菜单项”对话框8.进入“共享文件”对话框,选择哪些文件是作为共享方式安装的。共享文件是在用户机器上可以被其他应用程序使用的文件。当最终用户卸载应用程序时,如果计算机上还存在别的应用程序在使用该文件,该文件不会被删除。单击“下一步”;9
326、.进入“已完成”对话框,保存上述对话过程用户的输入信息,脚本取名为“”,单击“完成”。最后安装向导会生成一个含有安装目录等其他信息的“安装报告”。11.3.2 分发应用程序包1. 应用程序打包完成后,就可分发应用程序。在“打开和展开向导”上,单击“展开”开始分发应用程序。进入“打开和展开向导展开脚本”对话框。2.在“展开脚本”对话框中,选择展开脚本。如果打包时选择多个压缩文件,即用软盘来分发应用程序,请选择“软盘展开文件”,否则选择“展开文件夹”。单击“下一步”;2.进入“展开的包”对话框,选择准备展开的包,如“”。单击“下一步”;3.进入“展开方法”对话框,选择展开方法。在“软盘、文件夹、W
327、eb公布”3中展开方法中选择其中的一个。单击“下一步”;4.进入相应的对话框,开始复制文件,直到全部复制完成。分发文件准备好后,即可测试该软件的安装程序。方法是运行分发文件中的安装程序Setup.exe(如果是软盘分发,它存放在第一张软盘上)。同时用户可以修改Setup.lst文件,使安装过程更符合用户的需要。Setup.lst文件描述了分发的应用程序必需安装到用户计算机上的所有文件,此外还包含有关安装过程的关键信息。例如告诉系统每个文件的名称、安装位置以及应如何进行注册等。11.4本章小节本章首先介绍了管理信息系统程序的设计方法,包括本章首先介绍了管理信息系统程序的设计方法,包括管理信息系统
328、的概念、组成、生命周期及生命周期各阶管理信息系统的概念、组成、生命周期及生命周期各阶段的主要工作;同时说明了管理信息系统的界面特点,段的主要工作;同时说明了管理信息系统的界面特点,并用一个简单的实例学生信息管理系统阐述了上述理并用一个简单的实例学生信息管理系统阐述了上述理论。论。其次,用图示的方法介绍了应用程序的编译和分发过其次,用图示的方法介绍了应用程序的编译和分发过程。程。思考与练习思考与练习1什么是什么是MIS?MIS系统由哪些部分组成?其生命系统由哪些部分组成?其生命周期是什么?周期是什么?2MIS的界面有哪些特点的界面有哪些特点3简述应用程序的打包和分发过程简述应用程序的打包和分发过程4做一个简单的工资管理系统。做一个简单的工资管理系统。5将工资管理系统编译成将工资管理系统编译成.EXE文件并打包。文件并打包。