Visual Basic程序设计教程课件

上传人:桔**** 文档编号:573883256 上传时间:2024-08-15 格式:PPT 页数:262 大小:1.48MB
返回 下载 相关 举报
Visual Basic程序设计教程课件_第1页
第1页 / 共262页
Visual Basic程序设计教程课件_第2页
第2页 / 共262页
Visual Basic程序设计教程课件_第3页
第3页 / 共262页
Visual Basic程序设计教程课件_第4页
第4页 / 共262页
Visual Basic程序设计教程课件_第5页
第5页 / 共262页
点击查看更多>>
资源描述

《Visual Basic程序设计教程课件》由会员分享,可在线阅读,更多相关《Visual Basic程序设计教程课件(262页珍藏版)》请在金锄头文库上搜索。

1、Visual Basic程序设计程序设计 http:/ 1Visual Basic程序设计教程程序设计教程Visual Basic程序设计程序设计 2目录目录Visual Basic程序设计程序设计 http:/ 3第第1 1章章 Visual Basic Visual Basic概述概述Visual Basic程序设计程序设计 4Visual BasicVisual Basic语言的发展语言的发展 1991年微软公司在Basic语言的基础上推出了新一代面向对象程序设计语言VisualBasicforWindows(简称VisualBasic)VisualBasic60有学习版、专业版、企业版

2、三种版本Visual Basic程序设计程序设计 5Visual BasicVisual Basic的特点的特点 可视化的设计平台可视化的设计平台面向对象的程序设计方面向对象的程序设计方法法事件驱动的编程机制事件驱动的编程机制软件的集成式开发软件的集成式开发完备的帮助功能完备的帮助功能Visual Basic程序设计程序设计 6Visual BasicVisual Basic的集成开发环境的集成开发环境 VisualBasic60的IDE主要由主窗口(Main)、工具箱窗口(ToolBox)、窗体设计窗口(Form)、代码窗口(Code)、工程管理窗口(Project)、属性窗口(Proper

3、ties)、窗体布局窗口(FormLayout)等组成Visual Basic程序设计程序设计 7创建创建Visual BasicVisual Basic应用程序的步骤应用程序的步骤创建应用程序的界面(包括建立窗体和各种控件对象)设置对象的属性编写程序代码保存程序调试运行应用程序生成可执行文件返回Visual Basic程序设计程序设计 http:/ 8第第2 2章章 面向对象程序设计初步面向对象程序设计初步 Visual Basic程序设计程序设计 9面向对象程序设计的基本概念及基本方法面向对象程序设计的基本概念及基本方法 对象类属性事件方法Visual Basic程序设计程序设计 10窗体

4、的常用属性窗体的常用属性-1-1设置属性的语句格式如下:对象名属性名对象名属性名=表达式表达式其中,表达式是属性所能接受的属性值。Visual Basic程序设计程序设计 11窗体的常用属性窗体的常用属性-2-2Name属性属性一个新窗体的缺省名是Form加上一个特定的整数Caption属性属性确定显示在窗体对象的标题栏中的文本BorderStyle属性属性设置对象的边框样式一个对象的Name属性必须以一个字母开始并且最长可达40个字符。它可以包括数字和带下划线(_)的字符,但不能包括标点符号或空格。Visual Basic程序设计程序设计 12窗体的常用属性窗体的常用属性-3-3Contro

5、lBox属性属性Height、Width、Left、Top属性属性单位是特维(Twip)。一个Twip等于1/1440英吋。Icon属性属性返回在运行时窗体处于最小化时显示的图标,通过该属性可以为窗体设置图标。Picture属性属性返回或设置窗体或控件中要显示的图片Form1.Picture=LoadPicture(C:WINDOWSGreenstone.bmp)Visual Basic程序设计程序设计 13窗体的常用属性窗体的常用属性-4-4Font属性属性Font属性是一个集合属性BackColor、ForeColor属性属性MaxButton、MinButton属性属性Enabled属性

6、属性Visible属性属性FontBold:设置字形是否为粗体FontItalic:设置字形是否为斜体FontStrikethru:设置字体中是否加删除线FontUnderline:设置字体下是否加下划线FontName:设置字体名FontSize:设置字体大小Visual Basic程序设计程序设计 14窗体常用事件窗体常用事件Click事件事件DblClick事件事件Load事件事件Unload事件事件Resize事件事件Activate、Deactivate事事件件GotFocus、LostFocus事事件件Windows规定当前窗口中也只允许一个控件处理键盘事件,而其它对象都不能接受键

7、盘输入。这个能处理键盘事件的对象称为“拥有焦点”,而不能接受键盘输入的对象称为“不拥有焦点”。一个对象原来不拥有焦点,现在能接受键盘输入了,称为“获得焦点”,反之,称为“失去焦点”。Visual Basic程序设计程序设计 15窗体常用方法窗体常用方法 -1 -1Show方法方法该方法用以显示该方法用以显示MDIForm或或Form对象。语法对象。语法为:为:对象名对象名.ShowStyleHide方法方法该方法仅将窗体隐藏起来,不能使其卸载,如该方法仅将窗体隐藏起来,不能使其卸载,如需要卸载窗体,则要使用需要卸载窗体,则要使用Unload语句,其语语句,其语法格式是:法格式是:Unload使

8、用使用Unload语句只能卸载一个窗体,可以使用语句只能卸载一个窗体,可以使用End语句结束应用程序的运行语句结束应用程序的运行 Style是一个可选的参数,它用以决定窗体是有模式还是无模式,有模式的窗体不能与其他窗体进行活动窗口的切换。Style为0,窗体是无模式的;Style为1,则窗体是有模式的。Visual Basic程序设计程序设计 16窗体常用方法窗体常用方法 -2 -2Print方法方法Print是输出数据、文本的一个重要方法是输出数据、文本的一个重要方法。格式如下:。格式如下:对象名对象名Print输出项列表输出项列表Cls方法方法清除运行时清除运行时Form或或Picture

9、Box所生成的图形和文本所生成的图形和文本 Move方法方法用于移动窗体或控件。格式为:用于移动窗体或控件。格式为:Move,其中只有其中只有Left参数是不可缺少的。参数是不可缺少的。对象名可以是窗体(Form)、立即窗口(Debug)、图片框(PictureBox)、打印机(Printer),如果省略对象名,则输出到当前窗体上。输出项列表可以是一个或若干个输出项,每个输出项可以是常量、变量、函数、表达式等。其格式为:Spc(n)|Tab(n);|,如果输出项是表达式,则先计算表达式的值然后输出;如果输出项是常量则原样输出。如果输出项有多个,则每两个输出项之间用分号或逗号等分隔符进行分隔。若

10、无输出项则输出一个空行。分隔符用于确定下一个输出项的位置。若用逗号分隔,则按标准格式显示数据项,以14个字符位置为单位把输出行分为若干个区段,每区段输出一个表达式的值。如果表达式之间用分号作为分隔符,则按紧凑格式输出。一般情况下,每执行一次Print方法要自动换行,也就是说,后面执行Print时将在新的一行显示信息。为了仍在同一行上显示,可在上一个Print语句末尾加上逗号或分号。Spc(n)用于在显示或打印列表项前面输出n个空格,此函数只能用于Print方法中。Tab(n)用于指定输出项在第n列上进行输出,此函数只能用于Print方法中。Visual Basic程序设计程序设计 17标签的常

11、用属性标签的常用属性Caption属性属性Alignment属性属性AutoSize属性属性BackStyle属性属性BordStyle属性属性 Visual Basic程序设计程序设计 18文本框的常用属性文本框的常用属性-1-1Text属性Alignment属性Locked属性MaxLength属性MultiLine属性PasswordChar属性Visual Basic程序设计程序设计 19文本框的常用属性文本框的常用属性-2-2ScrollBars属性属性该属性的取值受限制于该属性的取值受限制于MultiLine属属性性 SelLength、SelStart和和SelText属性属性

12、TabIndex属性属性该属性用于返回或设置窗体中大部该属性用于返回或设置窗体中大部分对象的分对象的TabTab 键次序键次序SelLength属性用于设置或返回在文本框中选定的属性用于设置或返回在文本框中选定的文本长度;文本长度;SelStart属性用于设置或返回在文本属性用于设置或返回在文本框中选定的文本的起始位置,文本框中的第一个框中选定的文本的起始位置,文本框中的第一个字符的位置为字符的位置为0;SelText属性用于返回或设置包属性用于返回或设置包含当前所选择文本的字符串,如果没有字符被选含当前所选择文本的字符串,如果没有字符被选中,则为零长度字符串中,则为零长度字符串 (“”)。这

13、些属性在设计。这些属性在设计时是不可用的。时是不可用的。Visual Basic程序设计程序设计 20文本框的常用方法文本框的常用方法SetFocus方法通过该方法可将焦点移至指定的文本框。其通过该方法可将焦点移至指定的文本框。其使用格式为:使用格式为:对象名对象名.SetFocusRefresh方法强制全部重绘一个窗体或控件强制全部重绘一个窗体或控件Visual Basic程序设计程序设计 21文本框的常用事件文本框的常用事件Change事件事件当文本框的内容(当文本框的内容(Text属性值)发生改变属性值)发生改变时将触发该事件时将触发该事件 LostFocus事件事件当用户用当用户用“T

14、ab”键或用鼠标选取窗体上键或用鼠标选取窗体上其它对象而离开该文本框时,触发该事其它对象而离开该文本框时,触发该事件,也称件,也称“失去焦点失去焦点”事件。事件。 GotFocus事件事件 当用当用“Tab”键或用鼠标选择对象,或用键或用鼠标选择对象,或用SetFocus方法使焦点落在控件上或窗体方法使焦点落在控件上或窗体上时,触发该事件,也称上时,触发该事件,也称“获得焦点获得焦点”事件事件。KeyPress事件事件在键盘上按下某个键时触发该事件。在键盘上按下某个键时触发该事件。Visual Basic程序设计程序设计 22按钮的常用属性按钮的常用属性-1-1Caption属性属性通过该属性

15、可设置按钮的访问键通过该属性可设置按钮的访问键 方法:在方法:在Caption属性的文字内容中插入一个属性的文字内容中插入一个“&”符号符号Cancel属性属性返回或设置一个值,用来设置命令按钮是否为取消按钮。当某返回或设置一个值,用来设置命令按钮是否为取消按钮。当某个按钮的个按钮的Cancel属性为属性为“True”时,按下时,按下Esc键就等同于单键就等同于单击这个按钮。对话框中常用的击这个按钮。对话框中常用的“取消取消”(Cancel)按钮的)按钮的Cancel属性一般就设置为属性一般就设置为True。Default属性属性返回或设置一个值,以确定哪一个返回或设置一个值,以确定哪一个Co

16、mmandButton控件是窗控件是窗体的缺省命令按钮。程序运行时,按下体的缺省命令按钮。程序运行时,按下Enter键等同于单击键等同于单击Default属性为属性为“True”的命令按钮。对话框中常用的的命令按钮。对话框中常用的“确确定定”按钮的按钮的Default属性一般就设置为属性一般就设置为True。一个窗体中只能设置一个缺省按钮和一个取消按钮。一个窗体中只能设置一个缺省按钮和一个取消按钮。Visual Basic程序设计程序设计 23按钮的常用属性按钮的常用属性-2-2Picture、Style属性属性通过通过Picture属性可在命令按钮上加载图片。属性可在命令按钮上加载图片。St

17、yle属性用于确定命令按钮上显示内容的类属性用于确定命令按钮上显示内容的类型型 Picture属性受限制于属性受限制于Style属性。若通过命令按属性。若通过命令按钮的钮的Picture属性设置了图片,则属性设置了图片,则Style属性值属性值必须为必须为1,否则将不能显示所设置的图片。,否则将不能显示所设置的图片。ToolTipText属性属性Value属性属性返回Visual Basic程序设计程序设计 http:/ 24第第3 3章章 Visual Basic Visual Basic语言基础语言基础Visual Basic程序设计程序设计 25Visual BasicVisual Ba

18、sic字符集与保留字字符集与保留字 VB的基本字符集包括:的基本字符集包括:数字:数字:0 1 2 3 4 5 6 7 8 9英文字母:英文字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z特殊字符:特殊字符:Space(空格)空格) ! # $ % & ( ) * + , / : ; ? _ | Visual Basic程序设计程序设计 26保留字保留字 保留字也称关键字,它们在保留字也称关键字,它们在语法上有着固定的含义,是语法上

19、有着固定的含义,是语言的组成部分,通常表示语言的组成部分,通常表示系统提供的标准过程、函数、系统提供的标准过程、函数、运算符、常量等。在运算符、常量等。在VB中,中,约定关键字的首写字母为大约定关键字的首写字母为大写字母,当用户在代码编辑写字母,当用户在代码编辑器窗口中键入关键字后,不器窗口中键入关键字后,不论键入时是否为大写,系统论键入时是否为大写,系统都能够识别并自动转换成为都能够识别并自动转换成为系统的标准形式。系统的标准形式。 Visual Basic程序设计程序设计 27Visual BasicVisual Basic数据类型数据类型 VB提供的基本数据类型提供的基本数据类型有:数值

20、型、字符型、有:数值型、字符型、逻辑型、日期型等逻辑型、日期型等 Visual Basic程序设计程序设计 28数值型数据数值型数据数值型数据支持数值型数据支持6种数据种数据类型:类型:Integer(整型)、(整型)、Long(长整型)、(长整型)、Single(单精度浮点型)、(单精度浮点型)、Double(双精度浮点型)(双精度浮点型)、Currency(货币型)(货币型)和和Byte(字节型)(字节型) Visual Basic程序设计程序设计 29字符串型数据字符串型数据字符串(字符串(String)是由一)是由一组计算机字符组成的序组计算机字符组成的序列,其中每个字符都以列,其中每

21、个字符都以ASCII码表示,字符串用码表示,字符串用西文双引号括起来西文双引号括起来。Visual Basic程序设计程序设计 30布尔型数据布尔型数据 布尔(布尔(Boolean)型数)型数据的取值有两个:据的取值有两个:True(真)或(真)或False(假)(假)Visual Basic程序设计程序设计 31日期型数据日期型数据 日期型(日期型(Date)数据用)数据用来保存日期和时间来保存日期和时间 ,可,可以表示的日期范围从公以表示的日期范围从公元元100年年1月月1日到公元日到公元9999年年12月月31日,时间日,时间可以从可以从0:00:00到到23:59:59。在。在Visu

22、al Basic 6.0中必须用中必须用“#”把日期把日期和时间的值括起来。和时间的值括起来。 Visual Basic程序设计程序设计 32对象型数据对象型数据 对象型(对象型(Object)数据用)数据用来进行对象的引用来进行对象的引用 。利用利用Set语句,声明为语句,声明为Object的变量可以被赋值的变量可以被赋值为任何对象的引用为任何对象的引用 。Visual Basic程序设计程序设计 33变体型数据变体型数据 变体型(变体型(Variant)数据)数据是一种数据类型可以改是一种数据类型可以改变的数据类型。变的数据类型。如果变量不被说明为某如果变量不被说明为某种数据类型,系统均按

23、种数据类型,系统均按变体型数据处理。变体型数据处理。 Visual Basic程序设计程序设计 34 枚举类型枚举类型 枚举类型可以使一串有序的名称与枚举类型可以使一串有序的名称与常数数值相关联常数数值相关联 。建立枚举类型的格式是:建立枚举类型的格式是: Public|PrivateEnum=EndEnum建立枚举类型的建立枚举类型的Enum语句必须置语句必须置于模块的声明部分,建立过后可以于模块的声明部分,建立过后可以声明为局部变量、模块级变量和全声明为局部变量、模块级变量和全局变量。局变量。Visual Basic程序设计程序设计 35自定义类型自定义类型 用用Type语句自定义数据类语

24、句自定义数据类型型 ,这种数据类型中包含,这种数据类型中包含多个成员(元素),每个成多个成员(元素),每个成员有自己的成员名和数据类员有自己的成员名和数据类型型 。自定义数据类型的定义格式自定义数据类型的定义格式是:是:Type数据类型名数据类型名成员名成员名1AS类型名类型名1成员名成员名2AS类型名类型名2EndType(1)数据类型名是用户自定义的数据类型的名称,必须以字母开头,可包含数字、字母和下划线,长度为140个字符。(2)成员名是自定义的数据类型中所包含的元素,类型名是元素的数据类型名,可以是整型、长整型、单精度浮点型、双精度浮点型、布尔型、字符型、变体型、对象型等数据类型,也可

25、以是用户自定义的类型或对象类型。Visual Basic程序设计程序设计 36常量与变量常量与变量 常量的值在程序执行期常量的值在程序执行期间始终不变。间始终不变。变量代表内存中指定的变量代表内存中指定的存储单元,存储单元在存储单元,存储单元在程序中可以根据需要赋程序中可以根据需要赋予不同的值予不同的值 。Visual Basic程序设计程序设计 37 常量常量 常量就是在程序运行期间,其值常量就是在程序运行期间,其值始终保持不变的量始终保持不变的量 。VB的常量分为的常量分为 :普通常量和符号:普通常量和符号常量常量 。普通常量即数据本身,符号常量普通常量即数据本身,符号常量则是用某种标识符

26、表示的常量。则是用某种标识符表示的常量。 Visual Basic程序设计程序设计 38普通常量普通常量 普通常量的类型和值由常量本身的表示普通常量的类型和值由常量本身的表示形式决定。形式决定。为了显式地指明常量的数据类型,可以为了显式地指明常量的数据类型,可以在常量后面加上类型说明符在常量后面加上类型说明符 。类型说明符指定的数据类型类型说明符指定的数据类型%整型#双精度浮点型&长整型货币型!单精度浮点型$字符型Visual Basic程序设计程序设计 39符号常量符号常量 用标识符表示的常量称用标识符表示的常量称为符号常量为符号常量 。常量声明的格式常量声明的格式 :Public|Priv

27、ateConstAs=在常量的作用域内,不在常量的作用域内,不允许重新给常量赋值,允许重新给常量赋值,也不允许在程序运行过也不允许在程序运行过程中改变其值,否则会程中改变其值,否则会出现错误。出现错误。Visual Basic程序设计程序设计 40变量变量 一个有名字的内存单元称为一个有名字的内存单元称为变量。变量。 在在VB6.0中,变量的命名规中,变量的命名规则是:则是:变量名中可包含字母、数字变量名中可包含字母、数字和下划线。和下划线。变量名必须以字母开头。变量名必须以字母开头。变量名中不允许出现空格。变量名中不允许出现空格。变量名不许使用变量名不许使用VB的保留字。的保留字。变量名的长

28、度不得超过变量名的长度不得超过255个个字符。字符。在在VB6.0中不区分变量名的大中不区分变量名的大小写。小写。Visual Basic程序设计程序设计 41变量的声明变量的声明- -隐式声明隐式声明 Visual Basic允许数据不进行类型允许数据不进行类型声明。如果没有指定变量的类型,声明。如果没有指定变量的类型,则此变量默认的数据类型是则此变量默认的数据类型是Variant类型。类型。 隐式声明除了增加程序运行的负隐式声明除了增加程序运行的负担外,也容易出现错误。担外,也容易出现错误。 在在VB中使用中使用Option Explicit语句语句来强制代码中的变量进行声明。来强制代码中

29、的变量进行声明。 执行“工具”菜单中的“选项”命令,在弹出的对话框中单击“编辑器”选项卡,选中“要求变量声明”复选框。VB会在随后建立的任何一类模块中,自动在程序代码的顶部加上OptionExplicit语句,但是不会加入到现有模块中。打开代码编辑窗口,在对象列表框中选择“通用”,在过程列表框中选择“声明”,然后输入OptionExplicit语句。Visual Basic程序设计程序设计 42变量的声明变量的声明- -显式声明显式声明 显式声明变量语句的格式为:显式声明变量语句的格式为:Dim|Private|Static|Public|As,As其中:其中:Dim、Private、Stat

30、ic、Public是是VB用于说明变量的用于说明变量的关键字,使用不同的关键字声明变量,变量的作用域关键字,使用不同的关键字声明变量,变量的作用域将会不同。将会不同。是用户定义的标识符,应遵循标识符命名是用户定义的标识符,应遵循标识符命名规则。规则。可以是可以是VB提供的各种标准类型名称或用户自提供的各种标准类型名称或用户自定义类型标识符,缺省定义类型标识符,缺省AS 子句时,被说明的变量类子句时,被说明的变量类型是变体型变量。型是变体型变量。在一个声明语句中可以声明多个变量,每两个变量之在一个声明语句中可以声明多个变量,每两个变量之间用逗号分隔。间用逗号分隔。Visual Basic程序设计

31、程序设计 43变量作用域与生命周期变量作用域与生命周期 根据定义变量的位置和根据定义变量的位置和定义变量的关键字不同,定义变量的关键字不同,变量可以分为过程级变变量可以分为过程级变量(局部变量)、模块量(局部变量)、模块级变量、全局变量和静级变量、全局变量和静态变量。态变量。 Visual Basic程序设计程序设计 44过程级变量过程级变量 在过程中用在过程中用Dim声明的变声明的变量是过程级变量,也称量是过程级变量,也称为局部变量。为局部变量。 其作用范围仅限于该过其作用范围仅限于该过程程 。Visual Basic程序设计程序设计 45模块级变量模块级变量 在应用程序的窗体模块或标准模在

32、应用程序的窗体模块或标准模块的通用声明段用块的通用声明段用Private或或Dim语句声明的变量是模块级变量语句声明的变量是模块级变量 。其作用范围是所在的窗体或标准其作用范围是所在的窗体或标准模块,模块级变量可作用于同一模块,模块级变量可作用于同一个模块内的所有过程。个模块内的所有过程。 Visual Basic程序设计程序设计 46全局变量全局变量 在窗体模块或标准模块的通用声在窗体模块或标准模块的通用声明段用明段用Public语句声明的变量是语句声明的变量是全局变量全局变量 。其作用范围是整个应用程序中的其作用范围是整个应用程序中的所有窗体或标准模块中的过程,所有窗体或标准模块中的过程,

33、即一个即一个VB程序中的任何一个代程序中的任何一个代码段都可以使用全局变量。码段都可以使用全局变量。 Visual Basic程序设计程序设计 47静态变量静态变量 在过程中使用在过程中使用static语句语句声明的局部变量声明的局部变量 。该关键字只能在过程中该关键字只能在过程中使用使用 。过程结束,静态变量的过程结束,静态变量的值仍然保留。值仍然保留。 Visual Basic程序设计程序设计 48同名变量同名变量 当不同作用域的同名变量发生冲突当不同作用域的同名变量发生冲突时,时,VB优先访问局限性大的变量。优先访问局限性大的变量。 访问变量的顺序是:如果在本过程访问变量的顺序是:如果在

34、本过程中有相关变量的定义,则使用本过中有相关变量的定义,则使用本过程中定义的变量,否则到窗体模块程中定义的变量,否则到窗体模块中寻找,若找到则使用,若找不到中寻找,若找到则使用,若找不到再到标准模块中找。若都未找到,再到标准模块中找。若都未找到,则将此变量当作未定义的变量处理,则将此变量当作未定义的变量处理,未定义的变量的作用域为所在过程未定义的变量的作用域为所在过程(即为局部变量),其数据类型为(即为局部变量),其数据类型为变体型。变体型。 Visual Basic程序设计程序设计 49常用系统函数常用系统函数 Visual Basic 6.0的函数分的函数分为两类:一种由系统提为两类:一种

35、由系统提供,称为标准函数,也供,称为标准函数,也叫内部函数、系统函数;叫内部函数、系统函数;另一种是用户根据需要另一种是用户根据需要自己创建,称为自定义自己创建,称为自定义函数。函数。VB的内部函数一般分为的内部函数一般分为4类:数学函数、字符串类:数学函数、字符串函数、日期函数、日期/时间函数、时间函数、转换函数等。转换函数等。 Visual Basic程序设计程序设计 50数学函数数学函数数学函数用于各种数学数学函数用于各种数学运算,包括三角函数、运算,包括三角函数、求平方根、绝对值及对求平方根、绝对值及对数、指数函数等。数、指数函数等。Visual Basic程序设计程序设计 51字符串

36、函数字符串函数 -1 -1字符串长度函数字符串长度函数Len()()字符串截取函数:字符串截取函数:Left$(s,n)right$(s,n) Mid$(s,p,n)删除空格函数删除空格函数:Ltrim$(s)Rtrim$(s)Trim$(s)String()函数()函数Visual Basic程序设计程序设计 52字符串函数字符串函数 -2 -2Space()函数()函数InStr()函数()函数大小写转换函数大小写转换函数UCase$(s)LCase$(s)Visual Basic程序设计程序设计 53日期时间函数日期时间函数 Date函数函数Date函数函数Time函数函数Now函数函数

37、Year()函数()函数Month()函数()函数Day()函数()函数Weekday()函数()函数Visual Basic程序设计程序设计 54转换函数转换函数 -1 -1Str()函数()函数Str()函数()函数Val()函数()函数Chr()函数()函数Asc()函数()函数CStr()函数()函数Visual Basic程序设计程序设计 55转换函数转换函数 -2 -2Int()函数()函数返回值是小于或等于参数的最大整数(即下取整),数返回值是小于或等于参数的最大整数(即下取整),数据类型与参数的数据类型相同。据类型与参数的数据类型相同。CInt()函数()函数返回值是将参数的小

38、数部分进行舍入得到的整型。舍入返回值是将参数的小数部分进行舍入得到的整型。舍入的规则为:当小数部分大于的规则为:当小数部分大于0.5时,向上进;当小数部时,向上进;当小数部分小于分小于0.5时,舍掉;当小数部分恰好为时,舍掉;当小数部分恰好为0.5 时,时,CInt会将它转换为最接近的偶数值(保证结果为偶数)。会将它转换为最接近的偶数值(保证结果为偶数)。 Fix()函数()函数返回值是将返回值是将x的小数部分截掉,只保留整数部分。数据类的小数部分截掉,只保留整数部分。数据类型与参数的数据类型相同。型与参数的数据类型相同。Visual Basic程序设计程序设计 56其他函数其他函数 -1 -

39、1Rnd()函数()函数格式:格式:Rnd或或Rnd(x)随机生成一个小于随机生成一个小于1但大于但大于或等于或等于0的单精度值。的单精度值。为了生成某个范围内的随机为了生成某个范围内的随机整数,可使用以下公式:整数,可使用以下公式:Int(upperbound-lowerbound+1)*Rnd+lowerbound)upperbound是随机数范围的是随机数范围的上限,而上限,而lowerbound 则是则是随机数范围的下限随机数范围的下限。Visual Basic程序设计程序设计 57其他函数其他函数 -2 -2Format()函数()函数功功能能:将将数数值值、日日期期、时时间间或或字

40、字符符串串等等表表达式转换成指定的格式输出。达式转换成指定的格式输出。格式:格式:Format(表达式(表达式,格式,格式)Visual Basic程序设计程序设计 58Format中常用数值格式化符号常用数值格式化符号符号符号含含义0数字位。若与数字位。若与0对应的表达式位置上无数字,的表达式位置上无数字,则该位位显示示0。#数字位。若表达式中的数字数字位。若表达式中的数字对应于格式中的于格式中的#,则显示示该数字;若无数字数字;若无数字对应与格式中的与格式中的#,则不不显示。示。.显示小数点。示小数点。,显示千位分隔号。示千位分隔号。%显示百分比符号,表达式中的数据需乘以示百分比符号,表达

41、式中的数据需乘以100。- + $ () 空格空格按符号的原按符号的原样显示。示。E+ E-用科学用科学计数法数法显示。示。Visual Basic程序设计程序设计 59其他函数其他函数 -3 -3Spc()函数()函数Tab()函数()函数InputBox()函数()函数MsgBox()函数()函数IsNumeric 函数函数Visual Basic程序设计程序设计 60 运算符与表达式运算符与表达式运算符有四类:算术运算符、字符运算符、关系运算符和逻辑运算符。由常量、变量、函数等数据和运算符组成的式子称为表达式。Visual Basic程序设计程序设计 61算术运算符算术运算符算术运算符的

42、操作对象是数值型数据。算术运算符的操作对象是数值型数据。+、-、*、/ 、 、MOD 、/+、-、*的用法与数学中的一致。如果两个操作数的的用法与数学中的一致。如果两个操作数的类型相同,则运算结果的类型也是该类型;如果操类型相同,则运算结果的类型也是该类型;如果操作数的类型不同,则运算结果的类型是操作数中存作数的类型不同,则运算结果的类型是操作数中存储长度较长的操作数的类型。例如,一个整型数与储长度较长的操作数的类型。例如,一个整型数与一个长整型数进行运算,结果为长整型数;一个整一个长整型数进行运算,结果为长整型数;一个整型数与一个单精度型数进行运算,结果为单精度数;型数与一个单精度型数进行运

43、算,结果为单精度数;一个长整型数与一个单精度型数运算,结果为双精一个长整型数与一个单精度型数运算,结果为双精度数,以此类推。度数,以此类推。/为浮点除法,不论除数与被除数的类型如何,结果为浮点除法,不论除数与被除数的类型如何,结果都是双精度数。都是双精度数。为整数除法,操作数一般为整型值,结果也为整型为整数除法,操作数一般为整型值,结果也为整型值。如果操作数为浮点数,需要先将其转换为整型值。如果操作数为浮点数,需要先将其转换为整型数或长整型数,然后进行整除运算,运算结果为整数或长整型数,然后进行整除运算,运算结果为整型数或长整型数。型数或长整型数。Mod为取模运算。结果是第一个操作数整除第二个

44、为取模运算。结果是第一个操作数整除第二个操作数所得的余数,正负与第一个操作数相同,类操作数所得的余数,正负与第一个操作数相同,类型为整型。要求参与运算的两个数应该是整数,如型为整型。要求参与运算的两个数应该是整数,如果不是整数,则自动转换为整数。果不是整数,则自动转换为整数。为指数运算。用来计算乘方和求根式运算的值,结为指数运算。用来计算乘方和求根式运算的值,结果为双精度类型。果为双精度类型。Visual Basic程序设计程序设计 62算术表达式算术表达式由数值型的常量、变量、由数值型的常量、变量、算术运算符等构成的式算术运算符等构成的式子称为子称为“算术表达式算术表达式”,其结果为一数值。

45、,其结果为一数值。 Visual Basic程序设计程序设计 63字符运算符字符运算符字符运算符有两个:字符运算符有两个:&和和+,功,功能均为将两个操作数的字符拼能均为将两个操作数的字符拼接起来组成一个新字符串。接起来组成一个新字符串。“+”既可以是算术加运算符,既可以是算术加运算符,又可以是字符连接运算符。当又可以是字符连接运算符。当两个操作数都是字符型数据时,两个操作数都是字符型数据时,它才是字符连接运算符。它才是字符连接运算符。“&”不论两个操作数是何种不论两个操作数是何种类型,均是字符连接运算符。类型,均是字符连接运算符。由于由于“&”是长整型数据的类是长整型数据的类型说明符,型说明

46、符,VB会先将其视为会先将其视为类型说明符,因此当类型说明符,因此当“&”作作为字符运算符时应当与前后的为字符运算符时应当与前后的运算对象之间加上空格,以免运算对象之间加上空格,以免产生错误。产生错误。 Visual Basic程序设计程序设计 64字符表达式字符表达式 由字符型常量、变量以由字符型常量、变量以及字符串运算符等构成及字符串运算符等构成的式子称为的式子称为“字符表达字符表达式式”,其结果为一字符,其结果为一字符串。字符表达式用于将串。字符表达式用于将字符串进行连接。字符串进行连接。 Visual Basic程序设计程序设计 65关系运算符关系运算符 关系运算(也叫比较运算)用于对

47、两个关系运算(也叫比较运算)用于对两个数进行比较,比较结果为逻辑值数进行比较,比较结果为逻辑值True或或False。、=、=、字符运算符字符运算符关系运算符关系运算符逻辑运算符逻辑运算符算术运算符的优先顺序由高到低依次算术运算符的优先顺序由高到低依次为:为: 、-(负数)、(负数)、*和和/、Mod、+和和-;字符运算符的两个运算符同级;关;字符运算符的两个运算符同级;关系运算符的八个运算符同级;逻辑运算系运算符的八个运算符同级;逻辑运算符的优先顺序由高到低依次为:符的优先顺序由高到低依次为:Not、And、Or、Xor。返回Visual Basic程序设计程序设计 http:/ 70第第4

48、 4章章 程序控制结构与算法基础程序控制结构与算法基础Visual Basic程序设计程序设计 71代码书写规则代码书写规则每个语句一行,以回车键结束;多个语句可以写在同一行上,各语句之间用冒号(:)进行分隔;一条长语句可以分成多行书写,在除最后一行之外的其余各行的末尾使用下划线(_)作为续行符,并且续行符与它前面的字符之间至少要有一个空格;所有语句中的变量名、函数名、关键字、对象名、对象属性名、对象方法名等均不区分大小写,但保留定义时所使用的大小写格式;代码的物理行最多可含1023个字符,一个逻辑行最多可由10个物理行组成。Visual Basic程序设计程序设计 72自动语法检测自动语法检

49、测VB的IDE默认情况下具有自动语法检测功能。如果用户输入有语法错误的语句,在按下回车键后,系统将弹出一个出错提示框,并用红色标出有语法错误的语句。Visual Basic程序设计程序设计 73赋值语句赋值语句格式:变量对象.属性名 =表达式可以给一个变量(或对象的属性)多次赋值,但变量中保留的是最后一次的值。累加:B=B+N累乘:C=C*NVisual Basic程序设计程序设计 74交换两个变量的值交换两个变量的值中间变量法T=AA=BB=T数值加减法A=A+BB=A-BA=A-B适合任何两个相同类型的变量适合两个数值类型的变量Visual Basic程序设计程序设计 75赋值相容赋值相容

50、相容是指变量或对象的属性能够正确存取赋值号右边的表达式的值。一般要求用于赋值的表达式的结果类型与变量的类型保持一致。Visual Basic程序设计程序设计 76示例示例DimAAsInteger,BAsLong,CAsSingle,DAsDate,SAsStringA=100B=200C=14.5D=31.4S=3.14A=S纯数字字符串可以当作数赋给数值类型的变量B=D日期型数据可转换为数值D=A一个数值也可以转换为日期时间S=C任何类型的数据均可给字符串型变量赋值S=XYZA=S出错,类型不匹配此外,还可以将数值(含纯数字字符串)赋值给Boolean类型的变量,所有不等于0的数值转换为T

51、rue,0转换为False。将Boolean类型的数据赋值给数值类型的转换方法为:True-1,False0Visual Basic程序设计程序设计 77给对象类型的变量赋值给对象类型的变量赋值格式:Set 对象变量=对象引用示例DimfrmAsObject定义frm为Object类型的变量Setfrm=Form1将对窗体Form1的引用赋给frmfrm.Caption=Hello将窗体Form1的标题设置为“Hello”Visual Basic程序设计程序设计 78暂停、结束、注释暂停、结束、注释暂停:Stop,VB进入中断模式,打开“立即窗口”。Stop语句被执行后,并不退出VB系统,如果

52、在可执行文件(.EXE)中含有Stop语句,则将会关闭文件。结束:End,结束VB程序执行。注释单引号:单引号后的内容为注释Rem:注释一整行Visual Basic程序设计程序设计 79算法算法程序=数据结构+算法算法是解决问题的方法、步骤,是程序的核心。算法的特性确定性能行性有穷性输入输出Visual Basic程序设计程序设计 80传统流程图传统流程图图形符号图形符号名称名称含义含义起止框表示一个算法的开始或结束输入/输出框在框中指定输入或输出的数据处理框 表示一种处理判断框框中指出判断条件,框外可连接两条流程线,分别指明条件为真(True)时或条件为假(False)时的处理流向流程线用

53、于连接各个图形框,表示处理流向Visual Basic程序设计程序设计 81流程图示例流程图示例输入两个数A与B,求出其中大的数并输出。开始结束输入A,BAB?Max=AMax=B输出MaxTrueFalseVisual Basic程序设计程序设计 82程序的三种基本结构程序的三种基本结构顺序结构:按语句书写顺序执行。分支结构:也叫选择结构,根据一个条件决定程序执行的走向。循环结构:将某些语句重复执行有限次。Visual Basic程序设计程序设计 83顺序结构顺序结构语句A语句BVisual Basic程序设计程序设计 84示例示例输入正方形边长,求其周长与面积。开始输入边长AL=4*AS=

54、A2输出L、S结束Private Sub Command1_Click() Dim A As Single, L As Single, S As Single A = Val(Text1.Text)获取Text1中的内容 L = 4 * A S = A 2 Text2.Text = L在Text2中输出周长 Text3.Text = S在Text3中输出面积End SubVisual Basic程序设计程序设计 85分支结构分支结构-If-If语句语句单行结构If语句If 条件 Then 语句A Else 语句B块结构If语句If 条件 Then 语句块AElse 语句块BEnd IfVisu

55、al Basic程序设计程序设计 86IfIf语句流程图语句流程图条件语句A条件语句A语句BTrueTrueFalse(a)(b)FalseVisual Basic程序设计程序设计 87示例示例输入一个整数,若为偶数,则输出“偶数”,否则输出“奇数”。开始X0输入A偶数FalseTrue结束奇数PrivateSubForm_Click()DimXAsIntegerX=Val(InputBox(输入一个整数A)IfXMod2=0ThenPrint偶数ElsePrint奇数EndSubVisual Basic程序设计程序设计 88说明说明If语句中的条件一般是一个逻辑表达式,也可以是一个返回值为数

56、值的表达式。如果是数值表达式,则0对应False,非0的任何数对应True。If语句中如果条件成立,则执行对应的语句或语句块,然后便跳出条件语句结构。在块结构的条件语句中,语句块中的语句不能与Then、Else书写在同一行上。单行结构的条件语句中不能有EndIf,而块结构的条件语句中不能缺少EndIf。Visual Basic程序设计程序设计 89练习练习输入一个三位正整数,判断其是否为水仙花数。水仙花数:一个三位整数等于其各位数字的立方和,如153=13+53+33输入一个年份,判断该年是否为闰年。满足下列条件之一的年份即为闰年年份能被4整除但不能被100整除年份能被400整除Visual

57、Basic程序设计程序设计 90多分支语句多分支语句-If-ElseIf-If-ElseIfIf 条件1 Then 语句块1 ElseIf 条件2 Then 语句块2ElseIf 条件3 Then 语句块3Else 语句块n+1End If条件条件11语句块语句块11TrueTrueFalseFalse条件条件22语句块语句块22TrueTrueFalseFalse条件条件33TrueTrueFalseFalse语句块语句块33语句块语句块n+1n+1ElseIf中的Else与If之间不能有空格!ElseIf语句的数量没有限制!前面的条件成立执行对应语句后结束!Visual Basic程序设计

58、程序设计 91多分支语句多分支语句-Select Case-Select CaseSelect Case 测试表达式 Case 表达式列表1 语句组1 Case表达式列表2 语句组2 Case表达式列表3 语句组3 Case Else 语句组n+1End SelectVisual Basic程序设计程序设计 92Select CaseSelect Case语句功能语句功能首先计算出测试表达式的值,然后自上而下依次与各个表达式列表进行比较,如果匹配,则执行相应的语句组,然后跳到EndSelect后面的语句继续执行;如果测试表达式的值不能与给出的任何一个表达式列表匹配,则执行CaseElse之后的

59、语句组。如果缺省了CaseElse部分,而测试表达式的值不能与给出的任何一个表达式列表匹配,则不执行任何语句组,直接跳到EndSelect后的语句执行。Visual Basic程序设计程序设计 93测试项的形式测试项的形式1.具体的取值(表达式),值与值之间用逗号分隔。如:1,3,5,A+B等。2.连续的范围,范围是用关键字To连接的两个值。如:10To20,”A”To“Z”。3.使用Is关键字构成的比较表达式。如:Is=10。也可以是上述几种形式的也可以是上述几种形式的组合,用逗号分隔开。组合,用逗号分隔开。Visual Basic程序设计程序设计 94示例示例输入一个成绩,输出此成绩相应的

60、等级。CJ=90TrueFalseDJ=”良好良好”TrueFalseTrueFalseDJ=”中等中等”开始开始CJ=80CJ=70CJ=60TrueDJ=”及格及格”DJ=”不及格不及格”FalseDJ=”优秀优秀”输出输出DJ结束结束输入输入CJPrivateSubCommand1_Click()DimCJAsSingle,DJAsStringCJ=Val(Text1.Text)获取成绩SelectCaseCJ判断等级CaseIs=90DJ=优秀CaseIs=80DJ=良好CaseIs=70DJ=中等CaseIs=60DJ=及格CaseElseDJ=不及格EndSelectText2.T

61、ext=DJ输出等级EndSub注意注意在SelectCase语句中,各测试项执行的顺序是自上而下依次判断的,如果执行到“CaseIs=80”,说明“Is=90”已经不成立,一定要注意书写的顺序,如果顺序混乱,可能导致结果不正确。Visual Basic程序设计程序设计 95练习练习输入一个月份,输出该月有多少天。编写一个简单计算器,只要能实现辊减乘除运算即可。Visual Basic程序设计程序设计 96IIfIIf函数函数格式:IIf(逻辑表达式逻辑表达式,值值1,值值2)IIf函数的功能类似于有两个分支的If语句。当逻辑表达式的值为True时,函数返回值1,当逻辑表达式的值为False时

62、,函数返回值2。If AB Then MaxData=AElse MaxData=BEnd If可以简化为:可以简化为:MaxData=IIf(AB,A,B) Visual Basic程序设计程序设计 97循环结构循环结构-For-For循环循环For循环也叫计次循环,格式为:For循环变量循环变量=初值初值To终值终值Step步长步长循环体循环体ExitFor循环体循环体Next循环变量循环变量Visual Basic程序设计程序设计 98说明说明-1-1(1)循环变量。用做循环计数器的数值变量,不能)循环变量。用做循环计数器的数值变量,不能是布尔类型或数组元素。是布尔类型或数组元素。(2)

63、初值。循环变量的初始值,一般是一个数值表)初值。循环变量的初始值,一般是一个数值表达式。达式。(3)终值。循环变量的终值,一般是一个数值表达)终值。循环变量的终值,一般是一个数值表达式。式。(4)步长。循环变量的增量,一般是一个数值表达)步长。循环变量的增量,一般是一个数值表达式。其值可正可负,但不能为式。其值可正可负,但不能为0。步长可以省略,。步长可以省略,若省略,则步长为若省略,则步长为1。(5)循环体。放在)循环体。放在 For 和和 Next 之间的一条或多条之间的一条或多条语句,它们将被执行指定的次数。语句,它们将被执行指定的次数。(6)Exit For。退出当前一层。退出当前一层

64、For-Next循环。循环循环。循环中可以在任何位置放置任意个中可以在任何位置放置任意个 Exit For 语句,随语句,随时退出循环。时退出循环。Exit For通常在条件判断之后使用,通常在条件判断之后使用,例如例如 If.Then,并将控制权转移到紧接在,并将控制权转移到紧接在 Next 之之后的语句。后的语句。(7)Next。循环结构的最后一个语句,其后的循环。循环结构的最后一个语句,其后的循环变量可以缺省,若不缺省,则要与变量可以缺省,若不缺省,则要与For语句中的循语句中的循环变量一致。环变量一致。Visual Basic程序设计程序设计 99说明说明-2-2For-Next循环遵

65、循“先检查后循环”的原则。步长为正,循环变量初值大于终值时,不循环;步长为负,循环变量初值小于终值时,不循环。Visual Basic程序设计程序设计 100ForFor循环的执行循环的执行1.把初值赋给循环变量;2.检查循环变量值是否超过终值,若超过,则不执行循环体而转到Next后一条语句执行,否则转到3;3.执行一次循环体;4.循环变量=循环变量+步长;5.转到2。循环变量循环变量=初值初值循环变量超循环变量超过终值?过终值?FalseTrue循环体循环体循环变量循环变量=循环变量循环变量+步长步长Next后一条语句后一条语句Visual Basic程序设计程序设计 101示例示例求1+2

66、+3+100。I=1I100?FalseTrueS=S+II=I+1开始开始S=0输出输出S结束结束DimIAsInteger,SAsIntegerForI=1To100S=S+INextPrint1+2+3+.+100=;S循环结束后I=?Visual Basic程序设计程序设计 102注意注意如果在For循环中,循环变量的初值、终值及步长是用变量表示的,则这些变量在循环体中的改变不会影响循环次数。问:如下程序循环多少次?DimAAsInteger,BAsIntegerDimCAsInteger,IAsIntegerA=1:B=10:C=1ForI=AToBStepCA=A+1B=B-1C=

67、C+1Next答案:10次Visual Basic程序设计程序设计 103练习练习求N!输入一个整数,判断其是否为素数。素数:一个整数除了1与本身之外再无其他因子。随机生成10个两位整数并输出。找出1000以内所有同构数。Visual Basic程序设计程序设计 104循环结构循环结构-Do-Do循环循环Do循环有当型与直到型两种。DoWhile条件条件循环体循环体ExitDo循环体循环体LoopDo循环体循环体ExitDo循环体循环体LoopWhile条件条件DoUntil条件条件循环体循环体ExitDo循环体循环体LoopDo循环体循环体ExitDo循环体循环体LoopUntil条件条件当

68、型直到型条件循环体TF条件循环体TF条件循环体FT条件循环体FTVisual Basic程序设计程序设计 105说明说明(1)对于循环次数未知的情况下,Do-Loop循环十分有用。(2)在DoWhile循环中,当条件为真时,要继续循环;在DoUntil循环中,条件为真时,结束循环。(3)在Do-Loop循环中可以没有While或Until部分,也称为无条件循环,但在循环体中一定要有ExitDo语句,否则会造成死循环。与ExitFor语句一样,ExitDo语句通常在条件判断之后使用。(4)ExitDo语句可以退出当前一层Do循环,把控制权转移到Loop语句后的语句。Visual Basic程序设

69、计程序设计 106示例示例求两个整数的最大公约数。经典算法:欧几里德算法开始开始输入输入M、NR0M=NN=R输出输出N结束结束TrueFalseR=M Mod NDimMAsInteger,NAsInteger,RAsIntegerM=InputBox(输入M)N=InputBox(输入N)R=MModNDoWhileR0M=NN=RR=MModNLoopPrint最大公约数为:;NVisual Basic程序设计程序设计 107结构的嵌套结构的嵌套一个结构把另一个结构完全包含。注意嵌套的层数没有限制。一个控制结构必须完全位于另一个结构之内。结构层次比较多时,应尽可能让程序呈现锯齿形。多个循

70、环结构嵌套时,注意循环控制变量的使用。正确的嵌套正确的嵌套错误的嵌套错误的嵌套Visual Basic程序设计程序设计 108嵌套中的嵌套中的ExitExit语句语句当有多个Do循环嵌套时,ExitDo语句只跳出当前一层Do循环;当有多个For循环嵌套时,ExitFor语句只跳出当前一层For循环;当Do循环与For循环嵌套时,使用ExitDo语句可退出Do循环,若内层循环为For循环,则ExitDo语句同时跳出For循环;使用ExitFor语句可退出For循环,若内层循环为Do循环,则ExitFor语句同时跳出Do循环。Visual Basic程序设计程序设计 109练习练习随机生成十个能被

71、3整除但不能被5整除的三位整数。用矩形法求定积分。计算近似值。返回Visual Basic程序设计程序设计 http:/ 110第第6 6章章 过程过程Visual Basic程序设计程序设计 111事件过程与通用过程事件过程与通用过程VisualBasic将一个工程分为多个模块,每一个模块中的代码又分为多个相互独立的过程。事件过程的过程名称构成控件对象名控件对象名|Form_事件名事件名(参数列表参数列表)通用过程分为Sub与Function两种。如果是窗体的事件过程,过程名总是以Form开头,与窗体的名称无关,而其他对象的事件过程名则以对象名开头。事件过程中的参数由系统决定,用户不可以随意

72、添加或减少。Visual Basic程序设计程序设计 112SubSub过程过程语法Public|PrivateStaticSub过程过程名名(形式参数列表形式参数列表)局部变量和常量的声明局部变量和常量的声明语句块语句块ExitSub语句块语句块EndSub过程首部过程首部过程体过程体Visual Basic程序设计程序设计 113说明说明以关键字Public定义的过程是全局过程,该过程可以在同一应用程序的所有模块中调用。调用在另一个过程中定义的全局过程时需要在过程名前加上窗体名作为前缀。窗体名窗体名.过程名(过程名(实际参数列表实际参数列表)以关键字Private定义的过程是模块级过程,只

73、能被在本模块中的其他过程调用。若既无Public关键字也无Private关键字,则默认为Public,即全局过程。如果使用关键字Static,则表示过程中所有的局部变量均为静态变量,不管在过程中定义这些变量用关键字Dim还是关键字Static。在过程定义时使用的参数称为“形式参数”,简称“形参”。形参的作用是接收过程被调用时传递过来的实际参数的值或地址。过程可以没有形参,但括号不能省略。EndSub语句标志着过程的结束,返回到调用过程中调用语句后的逻辑上要执行的下一条语句。ExitSub语句可以强制Sub过程结束,返回到调用过程继续执行。过程不能嵌套定义,即在一个Sub过程或Function过

74、程中不能再定义其他Sub过程或Function过程。Visual Basic程序设计程序设计 114形式参数形式参数格式ByValByRefOptionalParamArray形式参形式参数名数名()As数据类型数据类型形式参数名命名规则与普通变量命名的规则相同,既可以是变形式参数名命名规则与普通变量命名的规则相同,既可以是变量名,也可以是数组名(后面有括号)。若有多个形式参数,量名,也可以是数组名(后面有括号)。若有多个形式参数,参数与参数之间用逗号分隔。参数与参数之间用逗号分隔。关键字关键字ByVal表示其后的形参是按值传递的参数。表示其后的形参是按值传递的参数。关键字关键字ByRef表示

75、其后的形参是按地址传递的参数。若形参前表示其后的形参是按地址传递的参数。若形参前无关键字,则默认为按地址传递。无关键字,则默认为按地址传递。关键字关键字Optional表示其后的形参是可选的。含有可选形参的过表示其后的形参是可选的。含有可选形参的过程在被调用时,调用过程可以没有数据传递给可选形参。程在被调用时,调用过程可以没有数据传递给可选形参。关键字关键字ParamArray后的形参应是一个数组,表示是不定数量后的形参应是一个数组,表示是不定数量的形参。的形参。每个形参后都可以加每个形参后都可以加“As 数据类型数据类型”,也可以不加,若无,也可以不加,若无“As 数数据类型据类型”,则表示

76、此形参是,则表示此形参是Variant类型的。类型的。 注意注意形参名不能与过程名相同。形参名不能与过程名相同。形参不可以是定长字符串类型变量;形参在形参不可以是定长字符串类型变量;形参在过程中不能用过程中不能用Dim语句声明,否则会出现重语句声明,否则会出现重复声明的错误;形参是过程级变量。复声明的错误;形参是过程级变量。Visual Basic程序设计程序设计 115创建通用过程创建通用过程在“代码编辑器”窗口中,所有过程之外直接输入过程的定义语句。在“代码编辑器”窗口中,执行“工具”菜单中的“添加过程”菜单项,系统弹出“添加过程”对话框。Visual Basic程序设计程序设计 116调

77、用调用SubSub过程过程使用Call语句调用Call过程名过程名(实际参数列表实际参数列表)用过程名直接调用过程名过程名实际参数列表实际参数列表实际参数是调用过程向子过程传递数据时所用的常量、变量、数组、表达式、对象属性等。如果形参前没有Optional或ParamArray时,实参的个数与形参的个数应相同。Visual Basic程序设计程序设计 117过程调用示意图过程调用示意图123Call sub25 5678Sub1Sub2Sub312345Call sub37 78123456785 57 7调用结束后,返回到调用语句的调用结束后,返回到调用语句的下一句下一句Visual Bas

78、ic程序设计程序设计 118示例示例编写一个求圆面积的Sub过程,然后调用此过程,根据给定的半径输出圆的面积。PrivateSubArea(rAsSingle)ConstPiAsSingle=3.14DimSAsSingleS=Pi*r2Print圆的面积为:;SEndSubPrivateSubCommand1_Click()DimrAsSingler=Val(InputBox(请输入圆的半径)Ifr=0ThenMsgBox半径不能为0!,vbCriticalExitSubElseCallArea(r)EndIfEndSubVisual Basic程序设计程序设计 119FunctionFun

79、ction过程过程语法Public|PrivateStaticFunction函数名函数名(形式参形式参数列表数列表)As数据类型数据类型局部变量和常量的声明局部变量和常量的声明语句块语句块函数名函数名=表达式表达式ExitFunction语句块语句块EndFunction函数首部函数首部函数体函数体Visual Basic程序设计程序设计 120说明说明函数名的命名规则与变量的命名规则相同。在函数体内,可以把函数当变量使用。函数定义好后有一个初始值,由返回值的数据类型决定。ExitFunction语句可以退出Function过程,返回调用过程,同时将函数的值返回给调用过程。As数据类型数据类

80、型:用来指定函数返回值的数据类型,若缺省此项,则函数返回值的类型为Variant。Visual Basic程序设计程序设计 121调用调用FunctionFunction过程过程使用Call语句调用Function过程Call函数名函数名(实际参数列表实际参数列表)函数名的直接调用函数名函数名实际参数列表实际参数列表像调用标准函数一样调用Visual Basic程序设计程序设计 122示例示例编写一个求n!的函数PrivateFunctionFac(nAsInteger)AsLongDimIAsIntegerFac=1ForI=1TonFac=Fac*INextEndFunctionVisua

81、l Basic程序设计程序设计 123参数传递参数传递形实结合形实结合实参向形参传递数据有两种方式按值传递按地址传递当形参所在的过程没有被调用时,形参的内存并没有被分配。实参与形参的名称可以相同,也可以不同。当有多个实参向多个形参传递数据时,他们是按位置的对应关系进行形实结合的。若形参是变量,则实参可以是常量、变量、表达式、数组元素、对象属性等;若形参是数组,则实参必须是数组,且数据类型要一致。Visual Basic程序设计程序设计 124按值传递按值传递-1-1如果在定义通用过程时,在形参前加上关键字ByVal,就规定了实参向形参是按值传递的。按值传递就是将实参的值传递给形参,系统将实参复

82、制到内存的一个临时单元中,然后将此单元与相应形参对应。通用过程在使用形参时,实际上是使用实参的一个副本,所有对形参的操作都不会影响到实参。Visual Basic程序设计程序设计 125按值传递按值传递-2-2100实参2000H3000H100形参内存形参的一切改变不会影响到实参。按值传递的数据传递是单向的。如果形实结合时是按值传递的,则不要求如果形实结合时是按值传递的,则不要求形参与实参的数据类型一致,只要求数据形参与实参的数据类型一致,只要求数据类型相容即可。类型相容即可。常量、表达式总是按值传递的。常量、表达式总是按值传递的。Visual Basic程序设计程序设计 126按地址传递按

83、地址传递-1-1如果在定义通用过程时,形参前没关键字或有关键字ByRef,实参向形参是按地址传递的。如果是按地址传递的,则过程被调用时,调用过程中的实参将内存中的存储单元的地址传递给形参,从而形成了实参与形参对应于内存中的同一地址。换句话说,实参与形参其实就是同一个内存地址的不同表现名称而已。当在通用过程中改变形参的值,则实参的值也同步变化。Visual Basic程序设计程序设计 127按地址传递按地址传递-2-2100实参2000H内存形参3000H2000H2000H按地址传递参数时,要求实参与形参的数据类型完全一致。形参的变化会实时地影响到实参的值。按地址传递的数据传递是双向的。如果规

84、定了按地址传递参数,而用户又不想实参的值被修改,则可以将变量变成表达式。最简单的就是在实参变量外加一层括号。如:Call Sub1(a)Visual Basic程序设计程序设计 128* *可选参数与不定数量参数可选参数与不定数量参数 一般通用过程中有几个形参数,则调用过程中也应有几个实参与之对应。可选参数如果在形参前有关键字Optional,则这个形参是可选参数,在向通用过程传递参数时,可以不向可选参数传递数据。在通用过程中,可以用IsMissing函数测试过程被调用时可选参数有没有被传递数据。若有实参向此可选参数传递了数据,则IsMissing函数值返回为True。不定量参数不定数量参数可

85、以用关键字ParamArray来定义,格式为:ParamArray数组名数组名()其中,数组只能为Variant类型的数组。不定数量参数只能作为形参列表中的最后一个参数;关键字ParamArray不能与ByVal、ByRef、Optional一起使用。Visual Basic程序设计程序设计 129练习练习找出指定区间的所有素数。若两个素数之差为2,则称此两个素数为孪生素数。找出100以内所有的孪生素数。随机生成十个互不相同的三位正整数,然后将其中升序数找出并输出,若不存在升序数,则输出“无升序数!”。直接插入排序。求出介于正整数M、N之间所有包含4个因子的数(因子不包含1和自身)。Visua

86、l Basic程序设计程序设计 130递归递归递归就是一个过程调用过程本身,是计算机领域一种很重要的算法。递归调用分为两种直接递归:过程A调用过程A。间接递归:过程A调用过程B,过程B又调用过程A。递归两要素递推关系递归出口(结束条件)Visual Basic程序设计程序设计 131示例示例-递归求解递归求解n! n! 逐层调用逐层返回Visual Basic程序设计程序设计 132递归练习递归练习用递归法求两个自然数的最大公约数。用递归法,逆序输出一个字符串。汉诺塔游戏。Visual Basic程序设计程序设计 133变量的作用域与生命期变量的作用域与生命期 类别声明关声明关键字字声明位置声

87、明位置作用域作用域生命期生命期访问方式方式局部局部变量量Dim过程中程中所在所在过程程所在所在过程程的的运行运行时间所在所在过程直接使用程直接使用模模块级变量量DimPrivate窗体模窗体模块或或标准准模模块通用声通用声明明处所在模所在模块所在模所在模块的的运行运行时间模模块中的中的过程直接使用程直接使用全局全局变量量Public窗体模窗体模块或或标准准模模块通用声通用声明明处应用程用程序序应用程序用程序的的运行运行时间标准模准模块中声明的全局中声明的全局变量在量在过程中直接使用;窗体程中直接使用;窗体模模块中中声明的全局声明的全局变量需要在量需要在变量名量名前加上前加上“窗体名窗体名.”作

88、作为前前缀才能才能在在过程中使用程中使用静静态变量量Static过程中程中所在所在过程程应用程序用程序的的运行运行时间所在所在过程直接使用程直接使用模块级过程、全局过程的访问与对应的变量类似。Visual Basic程序设计程序设计 134同名变量的处理同名变量的处理 应用程序中一个过程中的局部变量与另一个过程中的局部变量之间没有任何关系,完全可以同名,不存在名称的冲突。VB中,当不同作用域的变量发生了同名冲突时,优先访问作用域小的变量,作用域大的变量被屏蔽。当局部变量与模块级变量或全局变量同名时,优先访问局部变量;当模块级变量与全局变量同名时,优先访问模块级变量。DimXAsIntegerP

89、rivateSubCommand1_Click()X=1模块级变量PrintXEndSubPrivateSubCommand2_Click()DimXAsIntegerX=2局部变量PrintXEndSub若要访问全局变量,而局部变量与全局变量同名,则可以在全若要访问全局变量,而局部变量与全局变量同名,则可以在全局变量前加上局变量前加上“模块名模块名.”作为变量的前缀,从而可以同时使用同作为变量的前缀,从而可以同时使用同名的两个变量。例如在名为名的两个变量。例如在名为Module1的标准模块中定义了一个的标准模块中定义了一个全局变量全局变量X,在按钮的事件过程中定义了一个局部变量,在按钮的事件

90、过程中定义了一个局部变量V,若要,若要同时使用这两个变量,用法如下:同时使用这两个变量,用法如下:Private Sub Command1_Click() Dim V As Integer V = 1 局部变量局部变量 Module1.V = 2 Print V; Module1.V 全局变量全局变量End SubVisual Basic程序设计程序设计 135静态变量静态变量 静态变量只在过程第一次被调用时初始化一次,当其所在的过程运行结束后,静态变量的值仍然保留在内存中,系统不回收其内存存储单元。当其所在的过程再次被调用时,静态变量不再初始化,且原先保留在内存中的值可以继续使用。例如,有如

91、下过程:PrivateSubCommand1_Click()StaticNAsIntegerN=N+1Print按钮被点击&N&次。EndSub程序运行时,连续四次点击按钮后的结果如图所示。Visual Basic程序设计程序设计 136标准模块标准模块 一个应用程序可以有多个窗体,这些窗体可能需要调用一些公共代码,如果在每个窗体中都包含这些代码,就会造成代码的冗余。可以在窗体模块或标准模块中,定义全局过程,然后各窗体便均可调用。由于窗体中的全局过程在调用时需要在过程名之前加上窗体名作为前缀,因此,为了使用的简便,通常将这些全局过程定义在标准模块中。标准模块中还可以有常量、变量等的声明。注意注

92、意标准模块中只能有通用过程,不能出现事件过程。Visual Basic程序设计程序设计 137设置启动窗体设置启动窗体 缺省情况下,应用程序中的第一个窗体为启动窗体。可以改变启动窗体。返回Visual Basic程序设计程序设计 http:/ 138第第7 7章章 Visual Basic Visual Basic常用控件常用控件 Visual Basic程序设计程序设计 139控件的公共属性控件的公共属性 属属 性性说说 明明Name设置对象在程序代码中的引用名,运行时为只读属性设置对象在程序代码中的引用名,运行时为只读属性Caption设置或返回窗体的标题栏中、控件上面或后面的文本设置或返

93、回窗体的标题栏中、控件上面或后面的文本Font设置或返回文本的字体、字型、字号等设置或返回文本的字体、字型、字号等Left 设置或返回对象的左边界距容器坐标系纵轴的距离设置或返回对象的左边界距容器坐标系纵轴的距离Top 设置或返回对象的上边界距容器坐标系横轴的距离设置或返回对象的上边界距容器坐标系横轴的距离Height 设置或返回对象的高度设置或返回对象的高度Width设置或返回对象的宽度设置或返回对象的宽度Alignment设置或返回一个值,决定控件中的文本、及设置或返回一个值,决定控件中的文本、及CheckBox或或OptionButton控件的对控件的对齐方式。对齐方式。对CheckBo

94、x、OptionButton和和TextBox控件,在运行时为只读。控件,在运行时为只读。0Left Justify为左对齐,为左对齐,1Right Justify为右对齐,为右对齐,2Center为居中。为居中。Enabled设置或返回一个布尔值,用来确定一个窗体或控件是否能够对用户产生的事件作设置或返回一个布尔值,用来确定一个窗体或控件是否能够对用户产生的事件作出反应,出反应,True为激活(默认),为激活(默认),False为不激活。为不激活。Visible设置或返回一个布尔值,用来确定对象是否可见,设置或返回一个布尔值,用来确定对象是否可见,True为可见(默认),为可见(默认),Fa

95、lse为不不可见。为不不可见。BackColor设置或返回对象的背景色设置或返回对象的背景色ForeColor设置或返回在对象里显示图片和文本的前景色设置或返回在对象里显示图片和文本的前景色Index设置或返回控件在控件数组中的标识号,只有当控件是控件数组的一部分时,才设置或返回控件在控件数组中的标识号,只有当控件是控件数组的一部分时,才可用该属性。可用该属性。TabStop设置或返回一个布尔值,该值用来指示是否能够使用设置或返回一个布尔值,该值用来指示是否能够使用TAB键来将焦点从一个对象键来将焦点从一个对象移动到另一个对象,移动到另一个对象,True为可用(默认),为可用(默认),Fals

96、e为不可用。为不可用。TabIndex设置或返回窗体中的对象响应设置或返回窗体中的对象响应Tab键的顺序,键的顺序,Visual Basic程序设计程序设计 140控件的公共事件控件的公共事件 - -鼠标事件鼠标事件 MouseMove 事件事件当移动鼠标时引发的事件。当移动鼠标时引发的事件。MouseMove事件伴随鼠标指针在对象间移动时连续事件伴随鼠标指针在对象间移动时连续不断地产生。除非有另一个对象捕获了不断地产生。除非有另一个对象捕获了鼠标,否则,当鼠标位置在对象的边界鼠标,否则,当鼠标位置在对象的边界范围内时该对象就能接收范围内时该对象就能接收MouseMove事件。事件。Mouse

97、Down、MouseUp 事件事件当按下(当按下(MouseDown)或者释放)或者释放(MouseUp)鼠标按钮时发生。)鼠标按钮时发生。Visual Basic程序设计程序设计 141控件的公共事件控件的公共事件 - -键盘事件键盘事件KeyPress事件事件 当用户按下和松开一个当用户按下和松开一个ANSI键时发生。键时发生。 KeyDown和和KeyUp事件事件这些事件是当一个对象具有焦点时,按下这些事件是当一个对象具有焦点时,按下 ( KeyDown ) 或松开或松开 ( KeyUp ) 一个键时发生的。一个键时发生的。Visual Basic程序设计程序设计 142列表框常用属性列

98、表框常用属性 -1 -1List属性属性 用于返回或设置控件的列表部分的项目。该属性是一个字符用于返回或设置控件的列表部分的项目。该属性是一个字符串数组,数组的每一项就是一个列表项目。串数组,数组的每一项就是一个列表项目。 ListCount属性属性 用于返回控件的列表中项目的个数用于返回控件的列表中项目的个数ListIndex属性属性 用于返回或设置控件中当前选择项目的序号,设计时无效。用于返回或设置控件中当前选择项目的序号,设计时无效。如果没有选择项目,如果没有选择项目,ListIndex属性值为属性值为-1。列表中的第一。列表中的第一项的项的ListIndex为为0 Text属性属性 返

99、回列表框中选中项目的文本;返回值与表达式返回列表框中选中项目的文本;返回值与表达式List(Listindex)的返回值相同。在设计与运行时都为只读。)的返回值相同。在设计与运行时都为只读。Visual Basic程序设计程序设计 143列表框常用属性列表框常用属性 -2 -2Columns属性属性 返回或设置一个值,以决定返回或设置一个值,以决定ListBox控件是水平控件是水平还是垂直滚动。该值为还是垂直滚动。该值为0时垂直滚动,该值时垂直滚动,该值1时水平滚动,默认值为时水平滚动,默认值为0。 Sorted属性属性用于设置列表框中的项目是否自动按用于设置列表框中的项目是否自动按ASCII

100、码值码值排序。排序。 Selected属性属性 用于返回或设置在列表框中项目的选择状态。在用于返回或设置在列表框中项目的选择状态。在设计时不可用。设计时不可用。Visual Basic程序设计程序设计 144列表框常用属性列表框常用属性 -3 -3MultiSelect属性属性用于返回或设置列表框中的项目是否可以复选,用于返回或设置列表框中的项目是否可以复选,以及如何进行复选。以及如何进行复选。 0不可复选,不可复选,1简单复选,简单复选,2扩展复选扩展复选Style属性属性用于设置列表框的显示样式。用于设置列表框的显示样式。0标准显示,标准显示,1在每个列表项的左边加一个复在每个列表项的左边

101、加一个复选框,可以选择多项选框,可以选择多项Visual Basic程序设计程序设计 145列表框常用方法列表框常用方法 -1 -1AddItem方法方法 用于将项目添加到列表框中。用于将项目添加到列表框中。格式为:格式为:AddItem,RemoveItem方法方法用于从列表框中删除指定的项目用于从列表框中删除指定的项目格式为:格式为:RemoveItemClear方法方法用于清除列表框中所有的列表项。执行用于清除列表框中所有的列表项。执行Clear方方法后,法后,ListCount属性为属性为0格式为:格式为:ClearVisual Basic程序设计程序设计 146组合框组合框 Comb

102、oBox控件将TextBox控件和ListBox控件的特性组合在一起,既可以在控件的文本框部分输入信息,也可以在控件的列表框部分选择一项。组合框控件的属性、方法和事件与列表框控件大致相同Visual Basic程序设计程序设计 147组合框属性组合框属性Stytle属性属性 用于控制组合框的风格,在运行时用于控制组合框的风格,在运行时是只读的,取值可为是只读的,取值可为0、1和和2 。Text属性属性 Style属性设置为属性设置为 0(下拉组合框)或为(下拉组合框)或为1(简单组合框),返回或设置编辑域(简单组合框),返回或设置编辑域中(文本框)的文本。中(文本框)的文本。Style 属性设

103、置属性设置为为2(下拉列表),与(下拉列表),与 ListBox 控件同,控件同,用于返回列表框中选择的项目,返回值用于返回列表框中选择的项目,返回值与表达式与表达式List(ListIndex)的返回值相同。的返回值相同。在设计与运行时均为只读。在设计与运行时均为只读。 0(缺省值),组合框为一下拉式组合框,包括一个下拉式列表和一个文本框,可以从列表选择或在文本框中输入。1,简单组合框,包括一个文本框和一个不能下拉的列表。可以从列表中选择或在文本框中输入。简单组合框的大小包括编辑和列表部分。按缺省规定,简单组合框的大小调整在没有任何列表显示的状态。增加Height属性值可显示列表的更多部分。

104、2,下拉式列表框,设置成这种风格时仅允许从下拉式列表框中选择,用户无法手工输入内容。Visual Basic程序设计程序设计 148选项按钮属性选项按钮属性 Alignment属性对齐属性。对齐属性。Value属性用于设置或返回选项按钮的状态。用于设置或返回选项按钮的状态。True表示该按钮被选中;表示该按钮被选中;False(缺省值)表示该按钮没有被选中。(缺省值)表示该按钮没有被选中。Style属性用于设置控件的类型。有两个值:用于设置控件的类型。有两个值:0(缺省值)表示是标准类(缺省值)表示是标准类型控件;型控件;1表示是图形风格的控件,此时可以在控件上显表示是图形风格的控件,此时可以

105、在控件上显示图片,并且控件的外观表现为普通按钮的样式。示图片,并且控件的外观表现为普通按钮的样式。Picture属性用于为控件设置可显示的图片,前提是用于为控件设置可显示的图片,前提是Style属性值被设置为属性值被设置为1。Visual Basic程序设计程序设计 149复选框属性复选框属性 Value属性属性 用于设置或返回复选框的状态。取值可为用于设置或返回复选框的状态。取值可为0、1和和2 Style属性属性用于设置控件的风格用于设置控件的风格0(缺省值)表示是标准类型控件;(缺省值)表示是标准类型控件;1表示是图形表示是图形风格的控件,此时可以在控件上显示图片,并风格的控件,此时可以

106、在控件上显示图片,并且控件的外观表现为普通按钮的样式。且控件的外观表现为普通按钮的样式。Picture属性属性用于为控件设置可显示的图片用于为控件设置可显示的图片Visual Basic程序设计程序设计 150框架框架 框架是一个容器,可以框架是一个容器,可以向其中添加控件向其中添加控件 。使用框架将控件分组的使用框架将控件分组的步骤是:步骤是:首先在窗体上绘首先在窗体上绘制制 Frame 控件,然后通过控件,然后通过单击工具箱中的控件,在单击工具箱中的控件,在Frame 里面分别将控件逐里面分别将控件逐个添加进去。个添加进去。注意注意:在向Frame里面添加控件时,不能采用双击工具箱中控件的

107、方法,也不能将在Frame外部绘制的控件移动到框架内部,那样控件将浮在Frame的上部,而不是一个整体。Visual Basic程序设计程序设计 151图像(图像(ImageImage) Image控件用来显示图形。可以显示位图、图标或图控件用来显示图形。可以显示位图、图标或图元文件的图形,也可以显示增强的图元文件、元文件的图形,也可以显示增强的图元文件、JPEG或或GIF文件文件 。 Picture属性该属性的设置方法有两种:通过属性窗口直接对该属性的设置方法有两种:通过属性窗口直接对Picture属性设置;也可以在程序代码中,通过属性设置;也可以在程序代码中,通过LoadPicture函数

108、对其赋值。函数对其赋值。LoadPicture函数格式如函数格式如下下.Picture=LoadPicture(“文件名文件名”)Stretch属性属性用来指定一个图形是否要调整大小,以适应用来指定一个图形是否要调整大小,以适应Image控件控件的大小。为的大小。为True 时表示图形要调整大小以适应控件时表示图形要调整大小以适应控件的大小;为的大小;为False(缺省值)时,表示控件要调整大(缺省值)时,表示控件要调整大小以适应图形的大小。小以适应图形的大小。 Visual Basic程序设计程序设计 152图片框图片框 (PictureBoxPictureBox) PictureBox控件

109、比控件比Image控件的应用更灵活广泛,控件的应用更灵活广泛,使用时需要占用的内存较多。使用时需要占用的内存较多。PictureBox控件还能控件还能作为其它控件的容器作为其它控件的容器 。AutoSize 属性属性 决定控件是否自动改变大小以显示其全部内容。为决定控件是否自动改变大小以显示其全部内容。为True时,时,自动改变控件大小以显示全部内容;为自动改变控件大小以显示全部内容;为False(缺省值)时,(缺省值)时,保持控件大小不变,超出控件区域的内容被遮盖。保持控件大小不变,超出控件区域的内容被遮盖。 Print方法方法 Cls方法方法 Visual Basic程序设计程序设计 15

110、3滚动条属性滚动条属性 1 1Value属性返回或设置滚动条滑块的当前位置,其返回值始终介于返回或设置滚动条滑块的当前位置,其返回值始终介于Max和和Min 属性值之间属性值之间 Max属性属性取值为取值为-32,768 32,767 范围之间的一个整数,缺省值为范围之间的一个整数,缺省值为32767。返回或设置当滚动条滑块处于顶部或最右位置时,滚动条。返回或设置当滚动条滑块处于顶部或最右位置时,滚动条的的Value 属性最大值。属性最大值。Min属性属性 取值为取值为-32,768 32,767 范围之间的一个整数,缺省值为范围之间的一个整数,缺省值为0。返。返回或设置当滑块处于底部或最左位

111、置时,滚动条的回或设置当滑块处于底部或最左位置时,滚动条的Value 属属性最小值。如果性最小值。如果Max被设为比被设为比Min小的值,那么最大值将被小的值,那么最大值将被分别设为水平或垂直滚动条的最左或最上位置处。分别设为水平或垂直滚动条的最左或最上位置处。 Visual Basic程序设计程序设计 154滚动条属性滚动条属性 2 2LargeChange属性返回和设置当用户单击滚动条和滚返回和设置当用户单击滚动条和滚动箭头之间的空白区域时,滚动动箭头之间的空白区域时,滚动条的条的 Value属性值的改变量。属性值的改变量。SmallChange属性属性返回或设置当用户单击滚动箭头时,返回

112、或设置当用户单击滚动箭头时,滚动条的滚动条的 Value 属性值的改变量。属性值的改变量。Visual Basic程序设计程序设计 155滚动条事件滚动条事件Change事件事件在滚动条滑块移动后或通过代码改在滚动条滑块移动后或通过代码改变变Value 属性的值时触发该事件属性的值时触发该事件。Scroll事件事件拖动滑块时触发该事件。拖动滑块时触发该事件。Visual Basic程序设计程序设计 156定时器属性定时器属性 Enabled属性属性用于设置控件是否有效。值为用于设置控件是否有效。值为True时,时,Timer控件有效;值为控件有效;值为False时,时,Timer控件无效。控件

113、无效。Interval属性属性返回或设置对返回或设置对Timer控件的控件的Timer事事件调用的时间间隔,单位为毫秒。件调用的时间间隔,单位为毫秒。值为值为0(缺省值)时(缺省值)时Timer控件无控件无效;值为效;值为1到到65,535之间的数时,之间的数时,设置相应的时间间隔,且在设置相应的时间间隔,且在Timer 控件控件Enabled属性设置为属性设置为True 时开时开始有效。始有效。Visual Basic程序设计程序设计 157定时器事件定时器事件Timer事件Timer控件唯一响应的事件。其作用控件唯一响应的事件。其作用是是Timer控件每间隔了一个控件每间隔了一个Inter

114、val设定的时间后所触发的事设定的时间后所触发的事件件。Visual Basic程序设计程序设计 158常用常用ActiveXActiveX控件控件VisualBasic6.0的控件可分为三类:内部控件、ActiveX控件和可插入的对象。内部控件存在于VisualBasic6.0的.exe文件中;ActiveX控件是扩展名为.ocx的独立文件Visual Basic程序设计程序设计 159将将ActiveX控件加入工具控件加入工具箱的步骤为:箱的步骤为:单击单击“工程工程”菜单中菜单中“部件部件”命令命令单击单击“控件控件”选项卡,根据选项卡,根据需要,将要添加到工具箱中需要,将要添加到工具箱

115、中的的ActiveX控件名左边的复选控件名左边的复选框选定。框选定。单击单击“确定确定”按钮。按钮。Visual Basic程序设计程序设计 160常用常用ActiveXActiveX控件控件 ActiveX控件控件功能功能CommonDialog提供一提供一组标准准对话框,包括框,包括“打开打开”、“保存保存”、“打印打印”等等DBGrid对Data控件中的控件中的Recordsets集合集合进行行显示或示或操作操作DBCombo显示与之相示与之相连的的Data控件中的数据的控件中的数据的组合框,合框,并能自并能自动随之更新随之更新DBList显示与之相示与之相连的的Data控件中的数据的列

116、表框,控件中的数据的列表框,并能自并能自动随之更新随之更新FlatScrollBar提供一个具有多种外提供一个具有多种外观风格的格的滚动条条ImageCombo提供一个内容更提供一个内容更为丰富的丰富的组合框,可在列表合框,可在列表中包含中包含图片等。片等。MonthView提供一个月提供一个月历,用于,用于浏览和和选择日期日期ProgressBar提供一个用于表示提供一个用于表示过程程进展情况的展情况的进度条度条RichTextBox该控件具有控件具有TextBox标准控件的全部功能,准控件的全部功能,还具有更高具有更高级的格式的格式设置功能置功能Visual Basic程序设计程序设计 1

117、61通用对话框控件通用对话框控件 通用对话框控件通用对话框控件(CommonDialog)是比)是比较常用的较常用的ActiveX控件,控件,它提供了一组它提供了一组Windows风格的通用对话框,如风格的通用对话框,如打开和保存文件、选择打开和保存文件、选择颜色、设置打印选项及颜色、设置打印选项及帮助等帮助等 。在在“部件部件”对话框选择对话框选择“Microsoft Common Dialog Control 6.0”可以可以将将CommonDialog控件添控件添加到工具箱中。加到工具箱中。Visual Basic程序设计程序设计 162通用对话框控件可调用的方法通用对话框控件可调用的方

118、法方法显示的对话框ShowOpen显示“打开”对话框ShowSave显示“另存为”对话框ShowColor显示“颜色”对话框ShowFont显示“字体”对话框ShowPrinter显示“打印”或打印选项”对话框ShowHelp调用Windows帮助引擎Visual Basic程序设计程序设计 163 RichTextBox RichTextBox控件控件RichTextBox控件可用于输控件可用于输入和编辑文本,它提供了比入和编辑文本,它提供了比常规的常规的TextBox控件更高级控件更高级的格式特性,可用于编写处的格式特性,可用于编写处理内容较多的文本文件的应理内容较多的文本文件的应用程序,

119、也可在任何应用程用程序,也可在任何应用程序中实现功能完备的文本编序中实现功能完备的文本编辑器。使用辑器。使用RichTextBox控控件之前需先将其添加到工具件之前需先将其添加到工具箱中,其部件名为箱中,其部件名为Microsoft Rich TextBox Control 6.0。返回Visual Basic程序设计程序设计 http:/ 164第第8 8章章 菜单、工具栏和状态栏菜单、工具栏和状态栏 Visual Basic程序设计程序设计 165菜单菜单 下拉式菜单下拉式菜单菜单栏一般位于标题栏的下方,它由一个或多个菜单项构成,每个菜单项由一个或多个菜单命令构成,一般采用下拉式列表方式显

120、示,菜单项可以有下一级菜单称为子菜单。菜单栏菜单项下拉式菜单子菜单Visual Basic程序设计程序设计 166创建菜单栏的方法创建菜单栏的方法利用菜单编辑器可以创建新的菜单栏,或对现有的菜单中的菜单项进行添加、编辑和删除等操作。通过以下三种方法可以打开菜单编辑器:使用“工具”菜单中的“菜单编辑器”命令单击“标准”工具栏中的按钮快捷键Ctrl+EVisual Basic程序设计程序设计 167菜单控件的属性菜单控件的属性由于菜单栏中的每一菜单项都是VB中的对象,也叫菜单控件,它们同样具有属性和事件。因此对话框中的每个项目就是对菜单对象进行的属性设置,菜单控件有两个最重要的属性即名称和标题属性

121、。名称(Name):用于设置在代码中用来引用菜单控件的名称。标题(Caption):用于设置显示在菜单控件上的文本,若要用Alt键访问某菜单项,可在其文本后面加上西文括号和&字符及字母。索引:当使用菜单控件数组时,用唯一的索引值Index属性来标识该菜单控件在数组中的位置,其位置与控件的屏幕位置无关。快捷键:用于设置访问菜单命令的快捷键,它出现在菜单中相应菜单项的右边,可以为频繁使用的菜单项指定一个快捷键,它提供了一种键盘的快捷访问方法。复选:允许在菜单项的左边设置复选标记。选中该项,则在初次打开菜单时该菜单的左边显示一个“”,通常用它来指出切换选项的开关状态。有效:用于设置菜单项是否响应单击

122、事件,此项不选中,该菜单项失效并以灰色显示在菜单栏中,同时也不响应单击事件。可见:用于设置菜单项是否显示在菜单中。显示窗口列表:在MDI应用程序中,确定菜单控件是否包含一个打开的MDI子窗体列表。左右按钮:用于改变菜单的等级,VB中可以创建四个子菜单等级。上下按钮:用于改变菜单项在菜单中的位置。“下一个”按钮:用于添加新的菜单项目,并将选定移动到下一行。“插入”按钮:用于在菜单列表框的当前选定行的上方插入新的菜单项目。“删除”按钮:用于删除菜单列表框中当前选定的菜单项目。Visual Basic程序设计程序设计 168菜单控件的事件菜单控件的事件菜单控件只能响应Click单击事件。当菜单设置完

123、成后,单击“确定”按钮关闭菜单编辑器,在窗体上将显示菜单,此时只完成了菜单的创建工作,若要实现每个菜单的功能,可以通过单击某菜单项,将自动切换到“代码”窗口的该菜单的Click事件模板,编写相应的事件代码即可。Visual Basic程序设计程序设计 169弹出式菜单弹出式菜单当单击鼠标右键时出现的菜单,叫弹出式菜单,也叫快捷菜单。特点是独立于下拉式菜单栏显示在窗体上的浮动菜单,其中可以包含经常使用的命令,针对不同的对象可以设置不同的快捷菜单。Visual Basic程序设计程序设计 170创建弹出式菜单的方法创建弹出式菜单的方法弹出式菜单也是通过菜单编辑器进行设计。可以将设计好的菜单栏中的至

124、少含有一个菜单项的任何菜单都可以作为弹出式菜单被显示;也可以将一些常用的命令组合,作为一个弹出式菜单但不在菜单栏中显示。要创建一个不显示在菜单栏里的菜单,只要在设计时使顶级菜单项目为不可见,即在菜单编辑器里的“Visible”复选框不要选中,这样当VisualBasic显示一个弹出式菜单时,指定的顶级菜单的Visible属性会被忽略。Visual Basic程序设计程序设计 171快捷菜单的显示快捷菜单的显示PopupMenu方法若要在设计时对不同的对象显示不同的快捷菜单,应首先在菜单编辑器中进行设置,然后可以通过所选取的对象的MouseUp事件中使用PopupMenu方法实现快捷菜单的显示。

125、例如,窗体上有一个按钮Cmd1,同时设置了菜单,其中有二个菜单项分别为mnuFile和mnuTest,以下代码实现在不同的对象上单击右键显示不同的快捷菜单。窗体上单击右键时显示快捷菜单mnuFilePrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2ThenPopupMenumnuFileEndSub按钮上单击右键时显示快捷菜单mnuTestPrivateSubCmd1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSin

126、gle)IfButton=2ThenPopupMenumnuTestEndSubVisual Basic程序设计程序设计 172工具栏工具栏 工具栏是为用户快速访问应用程序中的最常用功能和命令提供的图形接口,工具按钮与菜单栏中的菜单项相对应。Visual Basic程序设计程序设计 173ActiveXActiveX控件控件在VB中可以通过ImageList控件、Toolbar控件和StatusBar控件方便地为用户创建常用的工具栏和状态栏。这几个控件不是VB的常用控件,属于ActiveX控件,添加ActiveX控件的步骤是:通过“工程”菜单中的“部件”命令打开“部件”对话框在对话框中“控件”

127、选项卡中选中MicrosoftWindowsCommonControl6.0(SP6)控件,单击“确定”按钮Toolbar控件控件 ImageList控件控件 StatusBar控件控件 Visual Basic程序设计程序设计 174 ImageList ImageList控件控件该控件是由ListImage对象即任意大小的位图或图标构成的集合,其作用相当于图像的储藏室,该控件在运行时不显示且不能独立使用,只是作为一个向其它控件提供图像的资料中心,其中所储存的图像需要第二个控件才能显示,第二个控件可以是任何能显示图像的控件,如Toolbar控件。使用时必须设置第二个控件即显示图像的控件其Im

128、ageList属性为ImageList控件与之链接,这样该集合中的每个图像就可以通过其索引或关键字被引用。Visual Basic程序设计程序设计 175ToolBarToolBar控件控件 该控件是由Button对象即单个按钮构成的集合,其作用是通过将Button对象添加到Buttons集合中来创建与应用程序相关联的工具栏,每个Button对象都可以显示图象或文本,还可以有工具提示,图像由与之链接的ImageList控件提供。Visual Basic程序设计程序设计 176建立工具栏的方法及步骤建立工具栏的方法及步骤 添加ImageList控件,并将所用的图像添加到ImageList控件中;

129、添加Toolbar控件,在“属性”窗口中的“自定义”,或者右击该对象在快捷菜单中选择“属性”;“通用”选项卡用于设置通用的属性,其中“图像列表”框用于设置为其提供图像的ImageList控件,同时还可以设置工具按钮的外观和样式等;“按钮”选项卡用于向工具栏中插入或删除按钮,以及设置每个按钮上所显示的图像、文本或工具提示和关键字等;设置完成后,单击“确定”按钮,此时将工具栏添加到窗体上。Visual Basic程序设计程序设计 177状态栏状态栏 状态栏一般位于窗口的下方,用于显示程序运行时的状态及相关信息,在VB程序设计中可以通过Label控件创建简单的状态栏,也可以通过ActiveX控件中的

130、StatusBar控件创建一个具有多个窗格的状态栏。Visual Basic程序设计程序设计 178StatusBarStatusBar控件控件该控件是由panel对象即窗格构成的集合,它最多可以有16个窗格,每一个窗格中都能包含文本或图片,其作用是通过设置窗格的相关属性,显示程序运行时的状态和相关信息。Visual Basic程序设计程序设计 179创建状态栏的方法和步骤创建状态栏的方法和步骤 添加一个StatusBar控件,在“属性”窗口中的“自定义”,或者右击该对象在快捷菜单中选择“属性”;“通用”选项卡用于设置通用属性;“窗格”选项卡中用于向状态栏中添加或删除窗格,并设置窗格的显示方式

131、;设置完成后,单击“确定”按钮,状态栏将显示在窗体的下方。返回Visual Basic程序设计程序设计 http:/ 180第第9 9章章 文件操作文件操作Visual Basic程序设计程序设计 181文件的基本概念文件的基本概念 文件是一组相关信息的集合,计算机中的程序、数据、文档都是以文件的形式存放在磁盘上,用户或程序也是以文件为单位对磁盘中的信息进行访问和操作的。Visual Basic程序设计程序设计 182文件的分类文件的分类根据文件包括什么类型的数据,从而确定合适的文件访问类型。在VB中,有三种文件访问的类型:顺序文件随机文件二进制文件Visual Basic程序设计程序设计 1

132、83顺序文件顺序文件顺序文件是以ASCII码方式进行存储的,它以字符为单位顺序存放,所以占用内存空间比较少。顺序访问模式是从第一个字符依次顺序地读到最后一个字符,不可以跳跃式访问,因此其规则较简单,但存取速度较慢,数据的更新较繁琐,因此该模式适用于处理文本文件,或大量数据的成批处理。Visual Basic程序设计程序设计 184随机文件随机文件随机文件是以记录的方式进行存储的,每条记录的长度都是相同的,记录与记录之间不需要特殊的分隔符号,所以占用内存空间较大。随机访问模式是按记录号进行访问的,可以直接访问某一特定记录,其优点是存取速度快,数据更新容易,因此该模式适用于大量查找或修改文件中的数

133、据。Visual Basic程序设计程序设计 185二进制文件二进制文件是以二进制码方式进行存储的,是以字节为单位存放,因此可以存放任意希望存储的数据。二进制访问模式是最原始的文件类型,它直接将二进制码存放在文件中,没有什么格式,以字节数来定位数据,允许程序按所需的任何方式组织和访问数据,也允许对文件中各字节数据进行存取和访问。然而,为了能够正确地对它检索必须精确地知道数据是如何写到文件中的。Visual Basic程序设计程序设计 186文件操作文件操作对文件的操作均包括三个步骤:打开-Open语句对文件做任何读/写操作之前都必须先打开,打开意味着将文件的相关信息加载到内存,系统将分配一个缓

134、冲区供文件进行读写之用,并决定缓冲区所使用的访问方式读出/写入不同类型的文件语句不同关闭Close语句在结束各种读写操作后,必须将文件关闭,否则会造成数据丢失Visual Basic程序设计程序设计 187顺序文件的打开顺序文件的打开格式:Open“文件名文件名”For模式模式As#文件号文件号文件名:可以是字符串常量也可以是字符串变量,可以包括盘符和路径。模式:顺序文件提供了三种访问模式,分别是:文件号:是一个介于1-511之间的整数,打开一个文件时需要指定一个唯一的文件号,即分配一个缓冲区供该文件使用,直到文件关闭后这个号才可以被其他文件所使用。若打开的文件较多时,可以利用FreeFile

135、()函数获得下一个可以利用的文件号,将在后面介绍。OutPut输出模式,即将对该文件进行写操作Input输入模式,即将对该文件进行读操作Append添加模式,即将在该文件末尾追加记录Visual Basic程序设计程序设计 188OpenOpen语句的注意事项语句的注意事项在OutPut模式下若打开一个不存在的文件,VB将建立一个文件,若文件已经存在,则该文件中的原数据将会被覆盖,即被清空。在Input模式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在Append和Output模式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。Visual Basic程序设

136、计程序设计 189顺序文件的写操作顺序文件的写操作Print#语句格式:Print#文件号,文件号,输出列表输出列表作用:将一个或多个数据写入到顺序文件中。输出列表可以是一个或多个数据,它们之间以逗号或分号进行分隔,若省略输出列表,但文件号后面的逗号不能省略,此时将在文件中输出一个空行。该语句将数据写入文件的格式与窗体的Print方法类同。Write#语句格式:Write#文件号,文件号,输出列表输出列表作用:将一个或多个数据以紧凑格式写入到顺序文件中,数据之间以逗号进行分隔。该语句将数据写入文件时,各数据项之间自动插入逗号,并给字符串加上双引号。Visual Basic程序设计程序设计 19

137、0注意注意Print#语句与Write#语句的根本区别在于,前者写入文件时数据与数据之间没有明显的分界;而后者写入文件时用逗号将数据分界,同时自动给字符串加上双引号,以确保每个数据域的完整性,因此可以保证今后调用文件时,用Input#再将数据正确读出。Visual Basic程序设计程序设计 191顺序文件的读操作顺序文件的读操作Input#语句格式:Input#文件号,变量列表文件号,变量列表作用:将从文件中读出的数据分别赋给指定的变量,变量列表要与文件中的数据类型匹配。可与Write#语句配套使用。LineInput#语句格式:LineInput#文件号,字符串变量文件号,字符串变量作用:

138、从文件中读出一行字符,并将读出的数据赋给指定的字符串变量,读出的数据中不包含回车符和换行符,可与Print#语句配套使用。Input函数格式:Input$(读取的字符数,读取的字符数,#文件号文件号)作用:该函数可以读取指定数目的字符或读出所有的字符,包括逗号、回车符、空白列、换行符、引号和前导空格等。Visual Basic程序设计程序设计 192关闭文件关闭文件 Close Close语句语句格式:Close#文件号文件号,#文件号文件号若省略文件号,则将所有打开的文件关闭。在执行Close语句时,文件与其文件号之间的关联将终结,所有与该文件相关联的缓冲区空间都将被释放。Visual Ba

139、sic程序设计程序设计 193随机文件的打开随机文件的打开Open“文件名文件名”ForRandomAs#文件号文件号Len=记录长度记录长度说明:随机文件的访问模式为Random,若缺省For子句,则以随机访问模式打开。Len记录长度,可以是一个小于或等于32767(字节)的整数,若缺省为128个字节。在Random模式下若打开一个不存在的文件,VB将建立一个文件;同时可以用不同的文件号打开同一文件,而不必先将该文件关闭;文件一旦打开,可以同时进行读写。Visual Basic程序设计程序设计 194随机文件的写操作随机文件的写操作PutPut语句语句 格式:Put#文件号,文件号,记记录号

140、录号,变量名,变量名作用:将一个记录变量的内容,写入所打开的磁盘文件指定的记录位置;其中的记录号是大于1的整数,表示写入的是第几条记录,如果忽略不写,则表示在当前记录后插入一条记录。Visual Basic程序设计程序设计 195随机文件的读操作随机文件的读操作GetGet语句语句格式:Get#文件号,文件号,记记录号录号,变量名,变量名作用:从磁盘文件中将一条由记录号指定的记录内容读入记录变量中;其中的记录号是大于1的整数,表示对第几条记录进行操作,如果忽略不写,则表示当前记录的下一条记录。Visual Basic程序设计程序设计 196用户自定义数据类型用户自定义数据类型 Type Typ

141、e语句语句格式:Private|PublicType自定义类型的自定义类型的名称名称变量名变量名As类型类型变量名变量名As类型类型.EndType其中自定义类型名称由用户命名,其中的变量名是记录中要包含的各个字段名,每个字段可以是不同的类型,若为字符型最好定义为定长字符串,使用时可以将某一记录变量的类型设置为该类型。例如,用Type语句定义一个用户自定义类型为User,用于存放一组人员的姓名、QQ号和联系电话的信息,其应用格式为:PrivateTypeUser自定义类型名为User,由三个字段构成NameAsString*4QQAsString*8TelAsString*11EndTypeP

142、rivateSubForm_Click()DimPeopleAsUser定义记录变量People为自定义类型People.Name=张一平为记录变量People的字段赋值People.QQ=12345678People.Tel=EndSubVisual Basic程序设计程序设计 197TypeType语句的特点语句的特点作用:Type语句用于定义包含一个或多个元素的用户自定义的数据类型。因为除变长字符串和变体型之外其它数据类型长度是固定的,因此用Type语句定义的用户类型,只要在其中不要使用变长字符串和变体型数据类型,其长度就是固定的。当用Open语句打开随机文件时,将其Len长度指定为Le

143、n(用户自定义类型),一方面保证了记录的长度与Open语句中的Len指定的长度相同,同时也可以通过下面公式计算出随机文件中的记录个数:记录个数记录个数=文件长度文件长度/记录长记录长度度其中,文件长度由函数LOF(文件号)取得,记录长度由函数Len(用户自定义类型)取得。Visual Basic程序设计程序设计 198二进制文件的打开二进制文件的打开格式:Open“文件名文件名”ForBinaryAs#文件号文件号二进制文件的访问模式为Binary;在Binary模式下若打开一个不存在的文件,VB将建立一个文件;同时可以用不同的文件号打开同一文件,而不必先将该文件关闭;文件一旦打开,可以同时进

144、行读写。Visual Basic程序设计程序设计 199二进制文件的读写操作二进制文件的读写操作二进制模式的读写操作与随机模式类似,读用Get语句,写用Put语句,语句格式也相同区别:二进制模式的访问单位是字节,随机模式的访问单位是记录。特点:在该模式下打开文件时,文件指针指向第一个字节,以后随文件处理命令的执行指针的位置随之移动,可以把文件指针定位到文件中的任何地方。Visual Basic程序设计程序设计 200文件常用操作语句文件常用操作语句 文件操作语句实现了在程序中对存储在磁盘上的文件和文件夹的管理,如复制、删除、重命名等Visual Basic程序设计程序设计 201语句语句格式源

145、文件名,目标文件名功能复制一个文件说明文件名中不能使用通配符;也不能复制一个已用Open语句打开的文件Kill语语句句格式Kill文件名功能删除一个或多个文件说明文件名中可以使用通配符“*,?”Name语语句句格式Name旧文件名As新文件名功能重新命名一个文件或目录说明文件名中不能使用通配符;由于文件名中可以包含路径,因此具有移动文件功能;不能对已用Open语句打开的文件进行重命名操作ChDrive语语句句格式ChDrive驱动器功能改变当前驱动器说明如果驱动器为空,则当前驱动器不变;如果驱动器中有多个字符,则只会使用首字母Visual Basic程序设计程序设计 202MkDir语语句句格

146、式MkDir文件夹名功能创建一个新的文件夹说明文件夹名中可以包含驱动器,如果没有指定驱动器,则会在当前驱动器上创建新的目录或文件夹ChDir语句语句格式ChDir文件夹名功能改变当前目录说明改变默认目录,但不改变默认驱动器。例如,如果缺省的驱动器是C,则下面的语句将会改变驱动器D上的缺省目录,但是C仍然是缺省的驱动器:ChDirD:TMPRmDir语语句句格式RmDir文件夹名功能删除一个存在的目录说明不能删除一个含有文件的目录Seek语句语句格式Seek#文件号,位置功能设置下一个读/写操作的位置说明对于随机文件返回的是记录位置,否则是字符位置Visual Basic程序设计程序设计 203

147、文件操作函数文件操作函数 LOF函函数数格式LOF(文件号)功能返回一个整数或长整数,表示用Open语句打开的文件的大小,该大小以字节为单位函数函数格式文件名功能返回指定文件的长度,返回值为长整数说明当调用函数时,如果所指定的文件已经打开,则返回的值是这个文件在打开前的大小FreeFile函函数数格式Free功能返回一个可供Open语句使用的有效的文件号,指定0(缺省值)则返回一个介于1255之间的文件号;指定1则返回一个介于256511之间的文件号EOF函函数数格式EOF(文件号)功能返回一个文件指针是否达到文件结尾的逻辑值,到达结尾其值为True,否则为FalseSeek函函数数格式See

148、k(文件号)功能返回打开文件当前的读/写位置,即文件指针的位置,返回值为长整数Visual Basic程序设计程序设计 204文件控件文件控件程序开发设计中,若要访问或保存文件时,需要指定文件在磁盘上的存放位置、类型及文件名,VB提供了三个用于管理文件的控件:驱动器列表框(DriveListBox)目录列表框(DirListBox)文件列表框()Visual Basic程序设计程序设计 205驱动器列表框(驱动器列表框(DriveListBoxDriveListBox) Drive属性属性返回或设置运行时选择的驱动器,该属性在设计时不可用。Drive属性的有效驱动器包括在运行中连接到系统上的所

149、有驱动器,Drive属性的缺省值为当前驱动器。设置方法:在运行时通过单击驱动器列表框进行设置代码进行设置,格式:.Drive=驱动器名Change事件事件当驱动器列表框的Drive属性发生变化时,将引发驱动器列表框的Change事件。它是驱动器列表框最常用的事件,在该事件过程中添加相应的代码,就可与目录列表框(DirListBox)链接,从而实现驱动器列表框与目录列表框的联动,即当选择不同的工作盘时目录列表框随之变化为当前盘符下的文件夹目录。Visual Basic程序设计程序设计 206目录列表框(目录列表框(DirListBoxDirListBox) 作用是在运行时以分层的形式显示系统当前

150、盘的目录结构即文件夹列表。目录列表框中以蓝底显示的是当前目录,索引值为-1,下面的是该文件夹的下一级文件夹,其索引值依次为0、1、2、3;当前目录上面的是它的上一级文件夹,再上一级文件夹,直到当前驱动器的根目录,其索引值依次为-2、-3、-4,它们是按逐层缩进的方式显示的。-10123-2-3-4Visual Basic程序设计程序设计 207常用属性和事件常用属性和事件Path属性属性返回或设置目录列表框的当前路径,该属性在设计时不可用。设置方法运行时通过双击目录列表框中的项目进行设置通过代码设置,格式为:.Path=路径Change事件事件当目录列表框的Path属性发生变化时,将引发目录列

151、表框的Change事件。它是目录列表框最常用的事件,在该事件过程中添加相应的代码,就可与驱动器列表框(DirListBox)和文件列表框实现联动,从而实现文件的管理。Visual Basic程序设计程序设计 208文件列表框()文件列表框() 常用属性常用属性Path属性属性返回或设置文件列表框的当前路径,该属性在设计时不可用。同目录列表框一样,文件列表框的Path属性的值是一个指示路径的字符串,可以通过代码进行设置,其代码的格式为:.Path = 路径路径Pattern属性属性用来设置在文件列表框中所要显示的文件类型,该属性既可以在属性窗口中设置,也可以在运行时通过代码设置,缺省时值为“*.

152、*”,即显示所有文件若在文件列表中只要显示某种类型文件,该属性可设置为“*.类型名”,若要显示几种类型文件,该属性设置格式为:. Pattern =“*.类型名;类型名;*.类型名类型名”属性属性用来返回或设置所选文件的路径和文件名,可以是一个包含盘符、路径和文件名的字符串,该属性在设计时不可用。该属性可以通过程序代码设置,且可以使用通配符“*”或“?”,其代码格式为:. = 文件名文件名Visual Basic程序设计程序设计 209常用事件常用事件PathChange事件事件当文件列表框的Path属性发生变化时,将引发文件列表框的PathChange事件。由于文件列表框的Path属性会同时

153、改变驱动器列表框的Drive属性和目录列表框的Path属性,因此在该事件中添加相应的代码,将会与驱动器列表框和目录列表框同步变化,从而实现文件管理的功能。PatternChange事件事件当文件列表框的Pattern属性发生变化时,将引发文件列表框的PatternChange事件。Click事件和事件和DblClick事件事件返回Visual Basic程序设计程序设计 http:/ 210第第1111章章 数据库编程数据库编程Visual Basic程序设计程序设计 211数据库的基本概念数据库的基本概念数据库(Database,DB)以一定的方式组织并存储在一起的相互有关的数据的集合。数据

154、库管理系统(DatabaseManagementSystem,DBMS)对数据库管理和操作DBMS是用户与数据库之间的接口,它可以实现数据库的创建、数据的查询等操作。数据库系统(DatabaseSystem,DBS)由数据库、数据管理系统与用户组成,其中数据库管理系统是核心。Visual Basic程序设计程序设计 212关系型数据库基本概念关系型数据库基本概念-1 -1 关系型数据库把数据组织成若干张二维表(简称为表),每张表即为一个关系。表(Table)通常用于描述一个实体集,将相关的数据按行和列的形式组织成一张二维表。表中的每一行叫做一个记录(Record)。它由若干个字段组成,对应于一

155、个实体。表中的每一列称为一个字段(Field)。一个字段即为实体的一个属性,每个字段都包含字段的名称、数据类型、宽度等信息。表结构(Structure)用于指定一个表中含有几个字段,各字段的名称、数据类型、宽度等信息均属于表结构的内容。Visual Basic程序设计程序设计 213关系型数据库基本概念关系型数据库基本概念-2-2如果表中的某个字段或多个字段的组合能唯一确定一条记录,则称此字段或字段的组合为候选关键字(CandidateKey)。一个表中可以有多个候选关键字,在这些候选关键字中选出一个作为主关键字(简称主键,PrimaryKey)。一个表中只能有一个主关键字,主关键字的值是唯一

156、的,且不能为空。在关系型数据库中可以为表与表创建关系,以显示某个表中的字段或字段组合如何链接到另一表中的字段或字段组合。表与表之间的关系可分为三种:一对一、一对多、多对多关系。其中,以一对多的关系最为常用。外部关键字是用来与另一张表建立关系的字段。外部关键字可以与其他表的主关键字相匹配,外部关键字的值可以不是唯一的。索引(Index)就是对表中的字段进行排序,目的是为了能够快速查找。每个索引必须有一个索引名与索引表达式。索引表达式就是排序的依据,可是一个字段,也可以是多个字段的组合。一张表中可以创建多个索引,但只有一个是主索引。主索引的索引表达式就是表中的主关键字,值不允许重复。Visual

157、Basic程序设计程序设计 214AccessAccess数据库简介数据库简介 Access是MicrosoftOffice套件中的一个桌面关系型数据库管理系统,是目前使用较广泛的数据库管理系统之一。Access可以利用各种来源的数据,包括运行于PC机上的数据库(如FoxPro等)和运行于服务器、小型机或大型机上的SQL数据库中的数据。同时,可以通过定义表、查询、窗体和报表,并利用一些简单的宏或VisualBasic代码将其连接起来,以建立应用程序。VB默认的数据库类型就是Access数据库,数据库中所有的表与索引等都存储在一个文件(.MDB)中。Visual Basic程序设计程序设计 21

158、5AccessAccess的主要特点的主要特点 具有方便、及时的帮助主题和丰富的向导。Access提供了新建数据库向导、表向导、窗体向导、查询向导、报表向导、宏向导和模块向导等。既能作为独立的数据库管理系统使用,也能作为为客户提供SQL之类的服务。此外,还具有开放式数据库互连性(ODBC)特性,可以与许多外部数据库(如Oracle、Sybase等)相连接。具有InternetExplorer风格的界面。可以方便地通过E-mail发送数据访问页,或将它们作为HTML页发布到Web上。提供了超级链接界面,用户可以方便地创建、编辑和删除超级链接。支持数据访问标准OLEDB。Visual Basic程

159、序设计程序设计 216AccessAccess字段数据类型字段数据类型 数据数据类型型可存可存储的数据的数据大小大小文本文本或文本与数字的组合最长255个字符备注文本或文本与数字的组合最长65535个字符数字数值1、2、4或8个字节日期/时间日期或时间值8个字节货币货币数据8个字节自动编号序号,每次递增14个字节是/否 逻辑值1位OLE对象其他程序创建的对象最大1G超级链接超级链接最长64000个字符查阅向导允许使用组合框来选择另一个表中的值4个字节Visual Basic程序设计程序设计 217SQLSQL语言语言 SQL(StructuredQueryLanguage,结构化查询语言)最早

160、源于IBM,由ANSI(美国国家标准局)确认的关系型数据库语言的标准。是对关系型数据库中的数据进行定义、修改、控制及查询的语言标准。SQL语言主要包括数据定义语言和数据处理语言两大类。数据定义语言主要是用来在数据库中创建各种对象的一组CREATE语句。如CREATETable(定义表)、CREATEIndex(创建索引)、CREATEUser(创建用户)等。数据定义语言的功能一般在DBMS软件中都有相应可视化的操作。数据处理语言主要有选择查询语句(SELECT)、插入查询语句(INSERTINTO)、更新查询语句(UPDATE)和删除查询语句(DELETE)等。Visual Basic程序设计

161、程序设计 218SELECT-SQLSELECT-SQL语句语句 SELECT字段列表字段列表FROM表名表名WHERE条件条件ORDERBY列名列名ASC|DESCGROUPBY列名列名HAVING条件条件Visual Basic程序设计程序设计 219说明说明SELECT语句从FROM子句所指定的表中按照WHERE子句所指定的条件选取符合条件的记录,并按ORDERBY子句所指定的顺序来排序。若需要对表中记录进行统计,则需要使用GROUPBY子句进行分组。字段列表可以是表中的字段,也可以是对字段进行运算的表达式。可以用“*”表示表中所有字段。若省略WHERE子句,则表示对表中所有记录进行操作

162、。ORDERBY子句中的ASC表示结果按升序排列,DESC表示结果按降序排列。若缺省ASC或DESC,则默认为升序。在GROUPBY子句中的HAVING可以对合计后的结果进行筛选。排序与分组中的列名均可以有一个或一个以上的字段作为依据。汇总函数Count():计数Sum():求和Max():求最大值Min():求最小值Avg():求平均值Visual Basic程序设计程序设计 220示例示例设学生表与成绩表的结构为1、查询学生表中所有学生信息。Select*From学生2、查询学生表中所有男同学的信息。Select*From学生Where性别=“男”3、统计学生表中各班级同学人数。Selec

163、t班级,Count(*)As人数From学生GroupBy班级4、查询各学生的平均成绩,输出字段为:学号、姓名、平均成绩。Select学生.学号,学生.姓名,Avg(成绩.成绩)As平均成绩From学生InnerJoin成绩On学生.学号=成绩.学号GroupBy学生.学号Visual Basic程序设计程序设计 221INSERT-SQLINSERT-SQL语句语句 INSERT-SQL语句可以向表中插入一条新记录。INSERTINTO表名表名(字段列表)(字段列表)VALUES(值列表)(值列表)值列表是与字段列表中对应的字段的值,次序一定要对应。字段列表也可以省略,表示是一个表所有字段。

164、向学生表中添加一条记录:学号为“200804004”,姓名为“赵成”,性别为“男”,出生日期为“1989-12-30”,班级为“08信息”。InsertInto学生(学号,姓名,性别,出生日期,班级)Values(200804004,赵成,男,#1989-12-30#,08信息)Visual Basic程序设计程序设计 222UPDATE-SQLUPDATE-SQL语句语句 UPDATE-SQL语句可以修改符合条件的记录的某些字段的值。UPDATE表名表名SET字段字段1=值值1,字段,字段2=值值2,WHERE条件条件若缺省WHERE子句,表示对表中所有记录进行操作。将学生表中学号为“200

165、804004”的学生专业代号修改为“04”。Update学生SET专业代号=04Where学号=200804004Visual Basic程序设计程序设计 223DELETE-SQLDELETE-SQL语句语句 DELETE-SQL可以删除表中满足条件的记录。DELETEFROM表名表名WHERE条件条件若缺省WHERE子句表示删除表中的所有记录。注意注意记录一旦被删除不可以恢复,所以删除操作一定要谨慎。删除学生表中学号为“200804004”的记录。DeleteFrom学生Where学号=200804004Visual Basic程序设计程序设计 224使用数据控件访问数据库使用数据控件访问

166、数据库 Data控件(标准控件)Connect属性:用于设置控件所访问的数据库类型,默认为Access数据库。DatabaseName属性:用于设置控件所访问的数据库名。RecordSource属性:用于设置控件所访问的数据库中表的名称。ADODC控件(扩展控件)Visual Basic程序设计程序设计 225ADODCADODC控件控件“工程”/“部件”,添加扩展控件。Visual Basic程序设计程序设计 226ADODCADODC控件的主要属性控件的主要属性 ConnectionString:设置或返回建立到数据源的连接信息。CommandTimeout:以秒为单位返回或设置提供者等待

167、从服务器返回一个命令的时间,默认为30秒。如果服务器在规定的时间内没有完成命令的执行,则提供者就向调用的应用程序提出一个异常并取消此命令的执行。CommandType:用于通知提供者CommandText属性的内容,可能包括Command对象的源类型。ConnectionTimeout:以秒为单位返回或设置连接持续的时间,默认为15秒。CursorType:返回或设置当从指定的查询中打开一个结果记录集时所使用的游标类型。LockType:返回或设置打开一个结果记录集后的锁定类型。提供者,可以理解为数据源的驱动,不同的数据源需要不同的驱动才可以连接、打开。Visual Basic程序设计程序设计

168、 227RecordsetRecordset属性属性ADODC控件的Recordset属性是一个对象属性,有若干属性与方法。在成功执行了SQL命令后,ADODC控件将返回一个Recordset对象,存储于Recordset属性中。Visual Basic程序设计程序设计 228RecordsetRecordset对象常用的属性与方法对象常用的属性与方法-1 -1 BOF属性:若记录指针指向记录的开始标志时,返回True,否则返回False。EOF属性:若记录指针指向记录的结束标志时,返回True,否则返回False。RecordCount属性:返回当前记录集的记录总数,只读属性。AddNew方

169、法:在当前记录集中添加一条记录。Delete方法:删除记录集中当前的一条记录。Update方法:保存对当前记录的修改。在执行了AddNew方法或Delete方法后,需要使用Update方法来确认修改。Visual Basic程序设计程序设计 229RecordsetRecordset对象常用的属性与方法对象常用的属性与方法-2-2MoveFirst方法:将记录指针移到第一条记录上。MovePrevious方法:将记录指针移到前一条记录上。MoveNext方法:将记录指针移到下一条记录上。MoveLast方法:将记录指针移到最后一条记录上。Visual Basic程序设计程序设计 230使用使用

170、ADODCADODC控件控件添加控件到窗体。设置属性页。选择数据库,可以测试连接选择数据库,可以测试连接Visual Basic程序设计程序设计 231使用使用ADOADO对象访问数据库对象访问数据库 ADO(ActiveXDataObject)使用户的应用程序能够通过OLEDB提供者访问和操作在数据库服务器中的数据,或者通过ODBC访问支持ODBC的数据库。OLEDB是一套组件对象模型(COM)接口,可提供对存储在不同信息源进行统一访问的能力。数据源可能像文本文件一样简单,也可能像一堆异构数据库那样复杂,或者是尚未定型的某种数据。它不要求预先设定访问和操作数据源的方式。而ADO是一座连接应用

171、程序和OLEDB的桥梁,是一个简单、一致的应用程序编程接口(API)。通过ODBC,ADO几乎兼容所有的数据库系统,不和是何种数据库,ADO提供相同的处理方法。ADO也支持多种程序设计语言,如VisualBasic、VisualC+等。Visual Basic程序设计程序设计 232ADOADO对象模型图对象模型图 Visual Basic程序设计程序设计 233ADOADO对象模型对象模型Connection对象包含Error数据集合,在Error数据集合中包含数据源响应失败时所建立的Error对象。Command对象包含Parameters数据集合,在Parameters数据集合中包括Co

172、mmand对象所有的Parameter对象。RecordSet对象包含Fields数据集合,在Fields数据集合中包含了RecordSet对象的所有Field对象。Connection对象、Command对象、RecordSet对象与Field对象都包含一个Properties集合,在Properties集合中包含所对应Connection、Command、RecordSet与Field对象的Property对象。Visual Basic程序设计程序设计 234使用使用ADOADO操作数据库的一般步骤操作数据库的一般步骤第1步:连接数据库。可以使用Connection对象、Command对象

173、或RecordSet对象。第2步:必要时可以建立一个事务(Transaction)。可以使用Connection对象或Command对象的相关属性。第3步:设置存取数据源的SQL命令。可以使用Connection对象、Command对象或RecordSet对象的相关方法与属性。第4步:必要时可以在SQL命令中传递不同的参数。可以使用Command对象的Parameters数据集合来完成。第5步:运行SQL命令。可以使用Connection对象、Command对象或RecordSet对象的相关方法与属性。第6步:浏览、增加、删除或修改已取得的数据。可以使用RecordSet对象的相关方法与属性。

174、第7步:如果在第二步已经建立了事务,在此可以决定是否完成或取消事务,可以使用Connection对象或Command对象的相关属性。联接数据库联接数据库建立事务建立事务设置设置SQL命令命令传递参数传递参数执行执行SQL命令命令控制数据控制数据完成或取消事务完成或取消事务Visual Basic程序设计程序设计 235引用引用ADOADO对象对象 使用ADO对象之前需要先在工程中添加引用。Visual Basic程序设计程序设计 236使用使用ConnectionConnection对象对象Connection对象代表了打开的、与数据源的连接,它代表了与数据源的唯一会话。创建Connectio

175、n对象的方法如下:DimConnection对象名对象名AsADODB.Connection然后在使用前需要用如下语句给Connection对象赋值:SetConnection对象名对象名=NewADODB.ConnectionSet是给对象类型的变量赋值的语句。也可以改写为:DimConnection对象名对象名AsNewADODB.ConnectionVisual Basic程序设计程序设计 237ConnectionConnection对象的常用属性与方法对象的常用属性与方法 ConnectionString属性:用于设置建立到数据源的连接信息。Open方法:用于打开数据源。Close方

176、法:用于关闭已打开的数据源。Execute方法:用来执行对数据库操作的SQL语句。两种格式:Setrs=conn.Execute(SQL语句语句)conn.ExecuteSQL语句。语句。第一种格式会返回一个记录集存放在rs对象中Visual Basic程序设计程序设计 238打开数据源打开数据源 使用DSN打开数据源Connection对象名对象名.OpenDSN=数据源名称数据源名称;UID=用户名用户名;PWD=密码密码;使用ADO连接串打开数据源Connection对象名对象名.OpenDBQ=数据库文件名数据库文件名;DefaultDir=默默认目录认目录;DRIVER=ODBC驱动

177、程序驱动程序;使用OLEDB连接串打开数据源Connection对象名对象名.OpenProvider=Microsoft.Jet.OLEDB.4.0;DataSource=数据库文件名数据库文件名Visual Basic程序设计程序设计 239创建创建DSN DSN “控制面板”/“管理工具”/“数据源(ODBC)”Visual Basic程序设计程序设计 240示例示例Dim conn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim cmdsql As String, cstring As Stringcstring = da

178、ta source=d:成绩管理成绩管理.mdb;cstring = cstring & provider=microsoft.jet.oledb.4.0conn.ConnectionString = cstringconn.Opencmdsql = select * from 学生学生Set rs = conn.Execute(cmdsql)Do While Not rs.EOF Print rs(学号学号) & Space(2) & rs(姓名姓名) rs.MoveNextLooprs.Closeconn.CloseSet conn = NothingSetconn=Nothing语句可以

179、清除conn对象。Visual Basic程序设计程序设计 241CommandCommand对象对象 Command对象负责对数据库提供请求,也就是传递指定的SQL命令。Command对象必须经过一个已建立的连接(Connection对象)发出SQL来操作数据源的数据。创建Command对象的方法:DimCommand对象名对象名AsNewADODB.CommandVisual Basic程序设计程序设计 242CommandCommand对象的常用属性与方法对象的常用属性与方法 ActiveConnection属性:指定Command对象所关联的Connection对象。CommandTe

180、xt属性:定义可执行的文本,可以是SQL语句、表名或存储过程名。Execute方法:执行命令,并在适当的时候返回一个记录集。Command对象可以通过Parameter对象与Parameters数据集合定义参数化查询或存储过程参数。Visual Basic程序设计程序设计 243示例示例DimconnAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimcmdAsNewADODB.CommandDimcmdsqlAsString,cstringAsStringcstring=datasource=d:成绩管理.mdb;cstring=cstring&

181、provider=microsoft.jet.oledb.4.0conn.ConnectionString=cstringconn.Opencmdsql=select*from学生cmd.ActiveConnection=conncmd.CommandText=cmdsqlSetrs=cmd.ExecuteDoWhileNotrs.EOFPrintrs(学号)&Space(2)&rs(姓名)rs.MoveNextLooprs.Closeconn.CloseSetconn=NothingVisual Basic程序设计程序设计 244RecordSetRecordSet对象与对象与FieldFi

182、eld对象对象 RecordSet对象负责浏览与操作从数据库取出的数据,表示的是来自基本表或命令执行结果的记录集。RecordSet对象类似于一个二维数组,数组的每一列表示查询结果的一个数据列,每个数据行包含一个或多个数据字段(Field对象)。RecordsSet对象包含Fields和Properties两个数据集合,Fields数据集合中包含了RecordSet对象的所有Field对象,而Properties数据集合中包含了RecordSet对象的所有属性。创建RecordSet对象的方法:DimRecordSet对象名对象名AsNewADODB.RecordSetVisual Basic

183、程序设计程序设计 245RecordSetRecordSet对象的常用属性与方法对象的常用属性与方法 ActiveConnection属性:用于指定RecordSet对象所关联的Connection对象。Source属性:用于指定RecordSet对象中数据的来源,可以是Command对象、SQL语句、表的名称或存储过程。CursorType属性:用于指定RecordSet对象中游标(记录指针)的类型。LockType属性:用于指定RecordSet对象中记录的锁定类型。其余常用属性及方法见前面内容。Visual Basic程序设计程序设计 246 CursorType CursorType属

184、性值说明属性值说明 常量常量值说 明明AdOpenForwardOnly0(默认值)仅向前类型游标。除了只能在记录中向前滚动,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。AdOpenKeyset1键集类型游标。除无法查看其他用户添加的记录外,键集游标与动态游标相似。仍然可以看见其他用户更改的数据。AdOpenDynamic2动态类型游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动,但不包括提供者不支持的书签操作。AdOpenStatic3静态类型游标。可以用来查找数据或生成报告的记录集合的静态副本。对其他用户所作的添加、更改或删除不可见。Vis

185、ual Basic程序设计程序设计 247LockTypeLockType属性值属性值 常量常量值说 明明AdLockReadOnly1(默认值)只读。不能改变数据。AdLockPessimistic2保守式锁定(逐个)。提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录。AdLockOptimistic3开放式锁定(逐个)。提供者使用开放式锁定,只在调用Update方法时才锁定记录。AdLockBatchOptimistic4开放式批更新。用于批更新模式(与立即更新模式相对)。Visual Basic程序设计程序设计 248Field Field 对象对象 Recor

186、dSet对象包括Field对象组成的Fields集合。每个Field对象对应RecordSet集中的一列。使用Field对象的Value属性可设置或返回当前记录的数据。Fields集合的Count属性反映了集合中Field对象的个数。对于Fields集合中的所有Field对象,都有一个唯一的索引号(Index),索引号为0时表示第一个字段。利用Fields集合的Item方法可以访问集合中的任何一个Field对象,语法如下:SetField对象名对象名=RecordSet对象名对象名.Fields.Item(Index)或SetField对象名对象名=RecordSet对象名对象名.Fields

187、(Index)利用Field对象的Name属性和Value属性就可以取得Field对象的字段名和字段数据值。利用Fields集合的FieldCount属性可以取得当前记录集中的字段总数。返回Visual Basic程序设计程序设计 http:/ 249第第1212章章 程序调试与错误处理程序调试与错误处理 Visual Basic程序设计程序设计 250错误类型错误类型语法错误语法错误程序由语句构成,每个语句都有相应的格式与规则,若在输入代码时违反了语法规则,或者语句格式不正确,将会出现语法错误。运行错误运行错误运行错误是在代码运行时可捕获的错误,诸如“溢出”、“下标越界”或“未找到方法与数据

188、成员”等等,当系统出现运行错误时,将出现错误信息提示框,且程序进入中断状态,单击提示框中的“确定”或“调试”按钮,光标将定位在出现错误的地方,且加亮显示。逻辑错误逻辑错误逻辑错误是当程序运行得到的结果和预期结果(即正确结果)不一致时,程序中存在的错误。逻辑错误通常是由于错误的算法设计而引起的,因此系统通常无法自动检测,只能通过验证结果的正确性来判断是否存在逻辑错误。一般逻辑错误不会有提示,但有些逻辑错误会引发运行错误从而导致程序的中断。Visual Basic程序设计程序设计 251程序模式程序模式设计模式设计模式 创建应用程序的大多数工作都是在设计模式下完成的,如设计用户界面和属性,以及编写

189、程序代码等;同时还可以设置断点和创建监视表达式,但不能使用其它调试工具。运行模式运行模式 当用户运行程序时进入运行模式,此时用户可以查看程序的代码,但不能修改代码。中断模式中断模式程序在执行过程中中断运行将进入中断模式,该模式下可以利用调试工具进行程序调试查找并修改程序中的错误。在中断模式下,将光标移动并停留在某个变量或数组元素上时将显示该变量或数组元素的当前值,以便于观察程序的动态变化。Visual Basic程序设计程序设计 252中断模式中断模式当下列情况发生时程序会自动进入中断模式:程序中有运行错误。执行到一个设有断点的代码行。执行“中断”命令或按下Ctrl+Break快捷键。设置了单

190、步调试。“添加监视”对话框中定义的中断条件为真时(与定义方式有关)。Visual Basic程序设计程序设计 253调试窗口调试窗口本地窗口本地窗口用于显示所有在当前过程中的变量声明及变量值立即窗口立即窗口当应用程序处于中断模式时,允许执行代码或查询变量的值监视窗口监视窗口用于显示监视表达式的值Visual Basic程序设计程序设计 254断点及单步调试断点及单步调试一般在程序出现错误且能够大概确定错误的位置时,利用断点可以有选择地中断程序执行,从而查找错误的程序代码。运行时,当VisualBasic正在运行一个过程并遇到一行具有断点的代码时,将切换到中断模式。设置断点的方法:在代码行的左边

191、空白区单击鼠标单击“调试”菜单的“切换断点”按下F9键Visual Basic程序设计程序设计 255单步调试应用程序一旦运行到断点处将被中止执行,且断点行的代码并未执行,此时可以采用单步调试方法观察跟踪程序中变量的变化及走向;且可以在“代码”窗口以及调试窗口之间移动焦点,动态地检查应用程序的当前状态。逐语句逐语句一次执行一个在当前执行点上的语句,如果此语句是对一个过程的调用,下一个被显示的语句就是该过程内的第一个语句。逐过程逐过程将过程视为一个基本单位来执行,执行完一个语句后再继续执行下一个语句。不过,下个被显示的语句,就是当前过程中的下一个语句,不会因为当前语句为一过程调用而有所改变。跳出

192、跳出执行当前执行点所在过程或函数中剩余未执行的行,即所有在当前与最后的执行点间的代码都会被执行。当前语句指示器将指向调用过程或函数的下一个语句。此功能仅在中断模式中有效。Visual Basic程序设计程序设计 256错误捕获及处理错误捕获及处理在编写程序过程中,错误信息的捕获及处理是非常重要的部分。在软件运行时有些错误是由于用户错误的输入或算法设计等方面的原因而产生的,这就需要程序设计员对算法及程序的流程做到心中有数,能够对程序中可能出现的错误给予预测,并编写相应的错误处理程序,以便在错误发生时不会中断程序运行,而是执行相应的错误处理程序,并给出错误信息,便于后序的错误处理。Visual B

193、asic程序设计程序设计 257Err对象作用:该对象含有关于运行时最新错误的信息。说明:Err对象是具有全局范围的固有对象,当程序运行时遇到一个错误,或者当我们使用Err对象的Raise方法故意引发一个错误时,便形成Err对象的属性。Err对象的属性由错误的生成者来设置,这个生成者或者是VisualBasic,或者是对象,或者是程序设计员。Visual Basic程序设计程序设计 258ErrErr对象的属性对象的属性属性说明Number用于标识该错误的专用号码(缺省)Source当前VB项目的名字Description表义性的错误消息。如果某个错误没有这个字符串,本属性就会指明“应用程序定

194、义的错误或对象定义的错误”HelpFile与错误相关的VB帮助文件所在的驱动器、路径和文件名HelpContextVB帮助文件用于该错误的上下文IDVisual Basic程序设计程序设计 259ErrErr对象的方法对象的方法Raise方法方法用于生成运行时错误。Clear方法方法用于在处理错误之后,清除Err对象的所有属性设置。在任意形式的Resume或OnError语句之后以及在错误处理子程序内的ExitSub、ExitFunction语句之后,可使用Clear方法将Err对象的属性重新设置为零或长度为零的字符串。Visual Basic程序设计程序设计 260Error函数格式:Err

195、or(ErrorNumber)作用:返回对应于已知错误号的错误信息,其值对应于Err对象的Description属性。说明:ErrorNumber参数可以为任何有效的错误号,有以下几种情况:若ErrorNumber是有效的错误号,但尚未被定义,则Error将返回字符串“应用程序定义的错误或对象定义的错误”。若ErrorNumber不是有效的错误号,则会导致错误发生。若省略ErrorNumber,将返回与最近一次运行时错误对应的消息。若没有发生运行时错误,或者ErrorNumber是0,则Error返回一个长度为零的字符串()。Visual Basic程序设计程序设计 261On ErrorOn

196、 Error语句语句当程序中出现运行错误时,如果不使用OnError语句,则任何运行时的错误都是致命的,其结果会导致程序中止运行并显示错误信息。而OnError语句的作用是启动或禁止一个错误处理程序的执行,并指定该子程序在一个过程中的位置,这样当运行错误发生时不会中断程序运行,而是根据需要对错误做出相应的处理。错误处理程序是当程序运行过程中发生运行错误时如何对错误进行处理的一段程序代码,它是由OnError语句打开并激活的。Visual Basic程序设计程序设计 262On Error On Error 语句的语法格式语句的语法格式 语句说明On Error GoTo Line 启动错误处理程序,且该例程从必要的line参数中指定的行开始。line 参数可以是任何行标签或行号。如果发生一个运行时错误,则控件会跳到line,激活错误处理程序。指定的line必须在一个过程中,这个过程与OnError语句相同;否则会发生编译时间错误。On Error Resume Next当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的语句,并在此继续运行。访问对象时要使用这种形式而不使用OnErrorGoTo。On Error GoTo 0禁止当前过程中任何已启动的错误处理程序。返回

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号