Visual Basic
This presentation is the property of its rightful owner.
Sponsored Links
1 / 242

Visual Basic 程序设计基础 PowerPoint PPT Presentation


  • 274 Views
  • Uploaded on
  • Presentation posted in: General

Visual Basic 程序设计基础. 本课程知识结构. 第 1 章 Visual Basic 6.0 概述 第 2 章 Visual Basic 6.0 语言基础  第 3 章 程序控制结构 第 4 章 构造数据类型 第 5 章 过程  第 6 章 鼠标和键盘事件过程 第 7 章 界面设计 第 8 章 图形与图像设计 第 9 章 文件 第 10 章 数据库程序设计. 小提示. Visual Basic 把程序设计比作兴建工程。因此,启动 Visual Basic 时首先要新建一个工程或打开一个工程文件。.

Download Presentation

Visual Basic 程序设计基础

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Visual basic

Visual Basic程序设计基础


Visual basic

本课程知识结构

第1章 Visual Basic 6.0概述

第2章 Visual Basic 6.0语言基础

第3章 程序控制结构

第4章 构造数据类型

第5章 过程

第6章 鼠标和键盘事件过程

第7章 界面设计

第8章 图形与图像设计

第9章 文件

第10章 数据库程序设计


Visual basic

小提示

Visual Basic把程序设计比作兴建工程。因此,启动Visual Basic时首先要新建一个工程或打开一个工程文件。

第1章 Visual Basic 6.0概述

引例 一个简单的Visual Basic程序

操作步骤如下。

1.新建工程

(1)执行“开始”→“所有程序”→“Visual Basic 6.0中文版” →“Visual Basic 6.0中文版”命令,启动Visual Basic 6.0。

(2)在弹出的“新建工程”对话框中选择“标准EXE”选项,并单击“打开”按钮,创建一个新的工程。


Visual basic

小提示

第1章 Visual Basic 6.0概述

引例 一个简单的Visual Basic程序

2.在窗体中新建对象

单击工具箱中的TextBox(文本框)控件,然后在窗体中拖曳鼠标,窗体中就生成了一个新对象,对象名为Text1。单击工具箱中的CommandButton(按钮命令)控件,然后在窗体中拖曳鼠标,窗体中就生成了一个名为Command1的新对象。

在VB的界面中有一个工具箱(一般在左边),工具箱中有很多“工具”,这些工具又称为控件。单击工具箱中的控件,然后在窗体中拖曳鼠标,就可以在窗体中绘制相应的控件,这些具体的控件就称为对象。


Visual basic

第1章 Visual Basic 6.0概述

引例 一个简单的Visual Basic程序

3.修改对象的属性

选中窗体中的一个对象,属性窗口就会显示出这个对象的所有属性。选中Text1对象,然后在属性窗口中选择Text属性,把其值Text1改为空。用同样的操作方法选中Command1对象,然后在属性窗口中选择Caption属性,将其值Command1改为“显示”。

4.编写程序

双击Command1对象,打开代码窗口。在Command1的Click事件中编写程序,如图所示。


Visual basic

第1章 Visual Basic 6.0概述

引例 一个简单的Visual Basic程序

5.运行程序

单击工具栏上的“启动”按钮运行程序,运行结果如图所示。


Visual basic

第1章 Visual Basic 6.0概述

引例 一个简单的Visual Basic程序

6.保存程序

(1)执行“文件”→“保存工程”命令保存程序,此时弹出“文件另存为”对话框。

(2)保存窗体。选择文件夹、输入文件名,然后单击“保存”按钮。此时保存的是Form(窗体)文档,系统默认的扩展名为.frm。接着弹出“工程另存为”对话框。

(3)保存工程。选择文件夹、输入文件名,然后单击“保存”按钮。此时保存的是工程文档,系统默认的扩展名为.vbp。


Visual basic

第1章 Visual Basic 6.0概述

1.1Visual Basic基础知识

1.1.1Visual Basic语言简介

Visual的含义是“可视的”,Visual Basic简称VB,是在Basic语言的基础上发展而来的,是可视化编程技术与Basic语言结合的产物。Visual Basic沿用了Basic语言中的一些语法,但是具有可视化、面向对象、事件驱动编程机制等特点,是当今世界上应用最广泛的可视化编程语言之一,被公认为是编程效率最高的一种编程工具,无论是开发功能强大、性能可靠的软件,还是编写用于处理实际问题的实用小程序,Visual Basic都显示出其快速和简便的特点,对于初学者学习一般应用程序的开发尤为合适。


Visual basic

第1章 Visual Basic 6.0概述

1.1Visual Basic基础知识

1.1.2Visual Basic的常用版本及特点

1.VB的常用版本

Microsoft公司于1991年推出了Visual Basic 1.0版本,随后的几年中相继推出了2.0、3.0、4.0和5.0版本,从5.0版本开始出现了中文版。1998年,Microsoft公司推出Visual Basic 6.0版,功能更加强大,Visual Basic 6.0包括学习版、专业版和企业版3种。


Visual basic

第1章 Visual Basic 6.0概述

1.1.2Visual Basic的常用版本及特点

2. Visual Basic的特点

1)可视化的开发环境

2)面向对象的程序设计

3)结构化的程序设计语言

4)事件驱动编程机制

5)强大的第三方支持

6)开发数据库程序

7)良好的中文支持


Visual basic

第1章 Visual Basic 6.0概述

1.2Visual Basic 6.0的开发环境

启动Visual Basic 6.0后,屏幕上会根据不同的设计阶段出现若干不同的窗口,主要包括应用程序主窗口、窗体设计器、工具箱、“属性”窗口、代码窗口、工程资源管理器、“窗体布局”窗口等有用的开发工具,Visual Basic 6.0的工作界面如图所示。


Visual basic

第1章 Visual Basic 6.0概述

1.3可视化编程的基本概念

1.3.1对象

对象(object)是具有某些特性的具体事物的抽象。对象是人的意识的反映,是一种以概念而存在的东西,所以对象在现实生活中随处可见,如一个人、一棵树、一辆汽车、一台计算机等都是对象。因此,可以把对象想象成日常生活中的各种物体。以计算机为例,计算机本身就是一个对象,而计算机又可以拆分为主板、中央处理器、内存、外设等部件,这些部件又分别是对象,因此计算机对象可以说是由多个“子”对象构成的,即是一个容器(container)对象。


Visual basic

第1章 Visual Basic 6.0概述

1.3.2类

VB提供的面向对象的程序设计的一个主要特性就是类的使用。许多具有相近属性的对象集合在一起,构成了类。

例如,“学生”是一个类,“张三”和“李四”是学生,都是学生类的实例,或称对象。一个类描述一类事物,描述这些事物所应具有的属性,如学生有姓名、性别、年龄、民族、身高、体重等属性。

一个对象是一个类的实例,它具有确定的属性,如张三(学生的实例),男,21岁,汉族,身高180 cm,体重70 kg。

学生类只有一个,学生类的实例可以有无数个。


Visual basic

第1章 Visual Basic 6.0概述

1.3.3属性

属性是指对象所具有的特征,如窗体的外观,窗体的背景颜色,窗体的宽度、高度都属于窗体的属性。

在Visual Basic 6.0中,每个对象都有自己的属性,如窗体对象就有Caption、Name等属性,设计者可以通过设置对象的属性值来改变对象的外观。

修改对象属性有以下两种方法:

(1)在对象的“属性”窗口中找到相应的属性进行设置。

(2)在程序代码中通过编程设置,设置方法为:

对象名.属性名=属性值

例如,将一个名为cmdReturn的命令按钮的Caption属性赋值为“返回”,则在程序代码中写为:

cmdReturn.Caption="返回"


Visual basic

第1章 Visual Basic 6.0概述

1.3.4事件

事件是对象要完成的任务,即对象相应的动作。VB中的对象都有一系列预先定义好的对象事件。如鼠标在某对象表面移动时,就会在该对象上产生一个鼠标移动事件(MouseMove);若单击该对象,则会在该对象上产生一个单击事件(Click)等。VB中的对象与对象之间、对象与系统之间以及对象与程序之间的通信都是通过事件来进行的,一个对象往往可以识别和响应多个不同的事件。

在VB中,由于系统事先已经对每个对象都定义好一系列事件,设计者要做的就是判定该事件是否响应以及如何响应,即为哪些事件编写程序。


Visual basic

第1章 Visual Basic 6.0概述

1.3.5方法

方法是VB中一些特殊的过程和函数,系统将这些通用的过程和函数编写好并封装起来,供用户直接调用。方法的调用形式为:

对象名.方法名

例如,Form1.Print"欢迎学习Visual Basic"

该语句是使用Form1对象的Print方法在Form1窗体中显示字符串“欢迎学习Visual Basic”。


Visual basic

第1章 Visual Basic 6.0概述

1.3.6窗体

在拥有多个窗体的工程文件中,一定要有一个开始窗体。系统默认原缺省窗体名为Form1的窗体为开始窗体,如果要指定其他窗体为开始窗体,可单击“工程”菜单中对应的“属性”命令,在弹出的工程属性对话框中进行设置,其对话框如图所示。


Visual basic

第1章 Visual Basic 6.0概述

1.3.6窗体

  • 窗体的属性

  • 2. 窗体的方法

  • 1)Print方法

  • 2)Cls方法

  • 3)Move方法

  • 4)Load方法

  • 5)UnLoad方法

  • 6)Show方法

  • 7)Hide方法


Visual basic

第1章 Visual Basic 6.0概述

1.3.6窗体

3. 窗体的事件

窗体最常用的事件有Click、DblClick、Load、UnLoad、Activate。

Click事件:进行单击操作时触发该事件。

DblClick事件:进行双击操作时触发该事件。

Load事件:当一个窗体被装入工作区时触发该事件。

UnLoad事件:当一个窗体被卸载时触发该事件。

Activate事件:当一个窗体成为活动窗口时触发该事件。用户单击某个窗体或在程序代码中用Show方法显示窗体,或用SetFocus将焦点设置在某窗体上都使该窗体成为活动窗口,此时触发该事件。


Visual basic

第1章 Visual Basic 6.0概述

1.3.7控件

1.控件的概念

控件是应用程序的“积木块”,一个VB 程序就是由窗体及其上放置的控件构成用户界面。控件以图标的形式放在工具箱中,每种控件都有与之对应的图标。

2.控件的分类

VB的控件分为3类,即内部控件、ActiveX控件和可插入对象。

3.控件的画法

单击工具箱中的某个图标,只能在窗体上画一个相应的控件。若要画多个控件,则要多次单击工具箱中的控件图标。若想单击一次控件图标即可在窗体上画出多个相同类型的控件,可执行以下操作:

(1)按住Ctrl键,同时单击工具箱中要画的控件的图标,然后释放Ctrl键。

(2)用前面介绍的方法在窗体上画出控件(可画一个或多个)。

(3)画完控件后,单击工具箱中的指针图标或其他图标即可。


Visual basic

第1章 Visual Basic 6.0概述

1.3.7控件

4.控件的基本操作

1)选择控件

在VB中,经常要对控件进行操作,如移动或删除控件,改变控件的大小或位置等。对控件进行操作,首先要选择控件,单击控件就选择了控件。一个控件被选中后,其周围有8个小方块,如图所示。


Visual basic

第2章 Visual Basic 6.0语言基础

引例 计算梯形的面积

有一个梯形,上底为10 cm,下底为15 cm,高为15 cm。在VB中计算梯形的面积。

分析:

(1)梯形面积公式为:(上底+下底)×高÷2。

(2)上面的公式是数学中用的计算梯形面积的公式,在VB中无法识别,所以需要将其转换为VB中能够识别的表达式。设上底用a表示,下底用b表示,高用h表示,面积用S表示,则在VB中的表达式为:

(a+b)*h/2

设计步骤:

(1)启动Visual Basic 6.0,新建一个工程。

(2)双击窗体,修改“过程/事件框”为Click,如图所示。


Visual basic

第2章 Visual Basic 6.0语言基础

引例 计算梯形的面积

3)编写Click事件的程序代码如下:

Private Sub Form_Click()

a=10: b=15: h=15

S=(a+b)*h/2

Print S

End Sub

运行程序,单击窗体后,窗体上显示187.5,即面积是187.5 cm2。


Visual basic

第2章 Visual Basic 6.0语言基础

2.1VB中数据的基本类型

2.1.1数值型数据

Visual Basic中的数值型数据分为整型数和浮点数两类。其中,整型数又分为整数和长整数,浮点数又分为单精度浮点数和双精度浮点数。数值型数据的分类如图所示。


Visual basic

小提示

这里的双引号是英文标点符号中的双引号。

第2章 Visual Basic 6.0语言基础

2.1.2字符串型数据

字符串是一个字符序列,由ASCII字符组成,包括标准的ASCII字符和扩展的ASCII字符。在Visual Basic中,字符串是放在双引号内的若干个字符,其中长度为0(即不含任何字符)的字符串称为空字符串。例如:

"Hello"

"We are students"

""

"1234"


Visual basic

第2章 Visual Basic 6.0语言基础

2.1.3布尔型数据

布尔型数据用来进行逻辑判断,也称逻辑型数据,用Boolean表示。它只有True和False两个值,当逻辑数据转换成整型数据时,True转换为1,False转换为0;当将其他类型数据转换成逻辑数据时,非0数转换为True,0转换为False。例如,3>2的结果是True,3<2的结果是False。


Visual basic

第2章 Visual Basic 6.0语言基础

2.1.4日期型数据

日期型数据用Date表示,按8字节的浮点数来存储,表示的日期范围为公元100年1月1日~9999年12月31日,而时间范围为0:00:00~23:59:59。其表示法有两种:一种是以任何字面上可被认作日期和时间的字符,需要用号码符(#)括起来表示;另一种是以数字序列表示。

例如,#January 1,1997#、#1 Jan,97#、#5/12/98#、#1998-5-12 12:30 PM#等都是合法的日期型数据。


Visual basic

第2章 Visual Basic 6.0语言基础

2.1.5对象型数据

对象型数据(Object)用来表示图形、OLE对象或其他对象,用4个字节(32位)的地址形式来存储。在使用时,通常使用SET语句指定一个被声明为对象型的变量来引用应用程序所识别的任何实际对象,例如:

Dim a As Object \`定义一个对象变量a

Set a=Picture1 \`给对象变量a赋值,使用其引用窗体中图片框对象Picture1

a.Print "你好!" \`在图片框中输出“你好!”字符串


Visual basic

第2章 Visual Basic 6.0语言基础

2.1.6可变数据类型

  • Variant是一种可变的数据类型,可以表示任何值,包括数值、字符串、日期/时间等。它为Visual Basic的数据处理增加了智能性,是所有未定义的变量的缺省数据类型。它对数据的处理完全取决于程序上下文的需要。它还可以包含以下4个特殊的数据:

  • Empty(空):表示未指定确定的数据。

  • Null(无效):表示数据不合法。

  • Error(出错):指出过程中出现了一个错误条件。

  • Nothing(无指向):表示数据还没有指向一个具体对象。


Visual basic

第2章 Visual Basic 6.0语言基础

2.2变量和常量

2.2.1常量

1.文字常量

Visual Basic中的文字常量又分为字符串和数值两种。

(1)字符串常量。

字符串常量由字符组成,可以是除双引号和回车符之外的任何ASCII字符。例如,

"25000.00""Number of Employees"。

(2)数值常量。

数值常量共有4种表示方式,即整型数、长整型数、货币型数和浮点数。其中整型数和长整型数有3种形式,即十进制、十六进制和八进制;货币常量是货币型数,也称定点数;浮点常量也称实数,分为单精度浮点数和双精度浮点数。


Visual basic

第2章 Visual Basic 6.0语言基础

2.2.1常量

2.符号常量

在Visual Basic中,可以定义符号常量,用来代替数值或字符串,其语法格式如下:

Const 常量名=表达式[,常量名=表达式]…

“常量名”是一个名字,通过这个名字可以引用常量。为常量命名时应遵循以下规则:

(1)名字只能由字母、汉字、数字和下划线组成。

(2)名字的第一个字符必须是英文字母,最后一个字符可以是类型说明符。

(3)名字的有效字符为255个。

(4)不能用Visual Basic的保留字作常量名,但可以把保留字嵌入常量名中;同时,常量名也不能是末尾带有类型说明符的保留字。


Visual basic

第2章 Visual Basic 6.0语言基础

2.2.2变量

1.声明普通变量

在Visual Basic中,可以不加任何声明而直接使用一个变量,这种方法叫做隐式声明,该方法使用简单但容易发生错误,所以对于变量最好先声明后使用。声明变量的格式为:

Public|Static|Dim|Private 变量名 [As类型]


Visual basic

第2章 Visual Basic 6.0语言基础

2.2.2变量

2.记录类型变量

记录类型变量与基本数据类型变量的定义没有什么区别,但在引用时有所不同。

例如,假设有如下的记录类型:

Type TypeStudent

Name As String*8\`Name是定长为8的字符串类型变量

Age As Integer

Sex As String*2

则可用下面的语句定义TypeStudent的变量:

Static Stu As TypeStudent

以后就可以用“变量.元素”的格式引用记录中的各个成员。例如:

Stu.Name

Stu.Age

Stu.Sex

这种格式与前一章介绍过的“对象.属性”格式类似,要注意区分


Visual basic

请注意

当指数是一个表达式时,必须加上括号。

第2章 Visual Basic 6.0语言基础

2.3Visual Basic中的运算符与表达式

2.3.1算术运算符及其表达式

  • 算术运算符

  • 1)幂运算

  • 幂运算用来计算乘方和方根,其运算符为“^”。例如,10^2表示10的2次方。该运算还可以计算方根,如16^0.5表示16的平方根。


Visual basic

第2章 Visual Basic 6.0语言基础

2.3.1算术运算符及其表达式

2)浮点数除法

浮点数除法运算符(/)执行标准除法操作,其结果为浮点数。

3)整数除法

整数除法运算符(\)执行整除运算,结果为商的整数部分,因此,表达式5\2的值为2。

4)取模运算

取模运算符Mod用来求余数,其结果为第一个操作数整除第二个操作数所得的余数。

5)算术运算符的优先级

在9个算术运算符中,幂运算符(^)优先级最高,其次是取负(-)、乘(*)、浮点除(/)、整除(\)、取模(Mod)、加(+)、减(-)、字符串连接(&)。其中乘和浮点除是同级运算符,加和减是同级运算符。


Visual basic

第2章 Visual Basic 6.0语言基础

2.3.1算术运算符及其表达式

2.算术表达式

为了检验每个函数的操作,可以在“立即”窗口中通过命令行直接显示函数的执行结果。“立即”窗口可以通过“视图”菜单中的“立即窗口”命令打开。“立即”窗口如图所示。


Visual basic

第2章 Visual Basic 6.0语言基础

2.3.2逻辑运算符及其表达式

1. Not(非)

由真变假或是由假变真,进行“取反”运算。

2. And(与)

当参加运算的两个表达式的值均为True,结果才为True;否则为False。

3. Or(或)

当参加运算的两个表达式中有一个表达式的值为True,结果就为True;只有两个表达式的值均为False时,结果才为False。

4. Xor(异或)

当两个表达式同时为True或同时为False时,结果为False,否则为True,也就是当两个表达式的值不同时,结果为True。

5. Eqv(等价)

只有两个表达式同时为True或False,结果才为True。

6. Imp(蕴含)


Visual basic

(1)如果两个操作数都是数值型,则按其大小进行比较。

(2)如果两个操作数都是字符型,则按字符的ASCII码值从左到右依次比较,即首先比较第1个字符,其ASCII码值大的字符串大,如果第1个字符相同,则比较第2个字符,以此类推,直到出现不同的字符为止。

(3)关系运算符的优先级相同

请注意

第2章 Visual Basic 6.0语言基础

2.3.3关系运算符及其表达式

关系运算符也称比较运算符,用来对两个表达式的值进行比较,比较的结果是一个逻辑值,即真(True)或假(False)。


Visual basic

第2章 Visual Basic 6.0语言基础

2.3.4字符串运算符及其表达式

1.字符串运算符

Visual Basic提供了两个用于字符串连接的运算符“+”和“&”。算术运算符“+”用于把两个字符串连在一起,生成一个较长的字符串。例如:

A$="Mouse",B$="Trap",则执行C$=A$+B$后,C$值为“MouseTrap”。“&”作为字符串连接符,和“+”的功能是一样的。


Visual basic

第2章 Visual Basic 6.0语言基础

2.3.4字符串运算符及其表达式

2.字符串表达式

字符串表达式是使用字符串运算符将字符串常量、字符串变量、字符串函数等连接起来的式子。

Visual Basic提供了大量的字符串操作函数,字符串函数大都以类型说明符“$”结尾,表明函数的返回值为字符串。在Visual Basic 6.0中,函数尾部的“$”也可以省略,其功能相同。


Visual basic

第2章 Visual Basic 6.0语言基础

2.3.5各种运算符的优先级

一个表达式可能含有多种运算,计算机按一定的顺序对表达式求值。表达式的运算顺序如表所示。


Visual basic

第2章 Visual Basic 6.0语言基础

2.4常用的内部函数

Visual Basic中除了前面介绍过的数学函数外,还提供了大量的其他函数,如转换函数、日期、时间函数等。教材表2-9中列出了Visual Basic中常用的内部函数。


Visual basic

第3章 程序控制结构

引例 三角形的输出

设计步骤如下:

(1)新建一个工程。

(2)修改窗体属性。设置Font属性:字号为四号字,字形为粗体,ForeColor属性为红色。

(3)双击窗体,打开代码窗口,修改“过程/事件框”为Click。

(4)编写如下程序代码。

Private Sub Form_Click()

For i=1 To 10

For j=1 To i

Print "* ";

Next j

Print

Next i

End Sub


Visual basic

请注意

下划线前至少要有一个空格,以示与前面的命令字符分隔开。

第3章 程序控制结构

3.1 基本语句

指令又称为语句,程序就是按照一定功能编写组织而成的有机语句序列。语句中包含识别语句的关键字、常量、变量、函数、表达式、属性等,都应该按其各自的特点和原则描述,汇集到一条语句中,更要遵守语句的格式规则。

VB中的语句一般独成一行,以回车结束。也允许多个语句放在同一行中,语句之间用冒号(:)相隔,但一行不能超过1 023个字符。相反,如果一个语句字符多于一行而显示不下、需要分行书写时,在行的末尾用下划线作为续行连接符,表示这行的字符与下行的字符组成同一个命令。


Visual basic

第3章 程序控制结构

3.1 基本语句

1.Let

【功能】将表达式的值赋给变量或属性。

【格式】[Let]<变量名>=<表达式>

【说明】Let关键字通常都省略。表达式值的类型最好与变量声明的数据类型一致,否则就可能在编译时出现错误。如果把一种数值类型的表达式赋给另一种数值类型的变量时,系统会强制将该表达式的值转换为结果变量的数值类型。可以用字符串或数值表达式给变体型变量赋值,但反过来则不一定,任何除Null之外的变体型变量都可以赋值给字符串变量,但只有当变体型变量的值可以转换为某个数时才能赋值给数值变量。


Visual basic

第3章 程序控制结构

3.1 基本语句

2.Rem

【功能】在程序中标注注释信息。

【格式】Rem <注释内容>

【说明】Rem及其引出的注释信息只是起到对语句或程序的说明或解释作用,不会参与程序的编译和执行。在Rem与<注释内容>之间要加一个空格。Rem引出的注释一般要单独成行,如果要在其他语句行后紧接着使用Rem关键字,则必须使用冒号与语句隔开。常常使用一个单引号来代替Rem关键字,因为使用单引号引出的注释可以直接跟在语句行后,不必使用冒号相隔。


Visual basic

第3章 程序控制结构

3.1 基本语句

3. Date

【功能】设置系统日期。

【格式】Date=<日期型表达式>

【说明】<日期型表达式>可以是日期型的常量、变量、函数以及表达式。与日期相关的函数如Date(),功能是返回当前的系统日期,可以省略后面的一对括号,下面例子Print中的Date以及加法表达式中的Date即为系统日期函数。


Visual basic

第3章 程序控制结构

3.1 基本语句

4.Time

【功能】设置系统时间。

【格式】Time=<系统时间>

【说明】<系统时间>可以是任何能够表示时间的数值表达式、字符串表达式或它们的组合。如果<系统时间>是字符串表达式,系统会试着根据指定的时间,利用时间分隔符将其转换成一个时间。如果无法转换成一个有效的时间,会导致发生错误。


Visual basic

第3章 程序控制结构

3.1 基本语句

5.Stop

【功能】暂停执行。

【格式】Stop

【说明】使用Stop语句,就相当于在程序代码中设置断点,可以在过程中的任何地方放置Stop语句。Stop语句会暂停程序的执行,但它不像End语句,因为Stop语句不会关闭任何文件或清除变量,除非它是以编译后的可执行文件(.exe)方式来执行的。此时程序员可以在此断点处进行相关变量或结果的观察,以便发现问题,调试程序。


Visual basic

第3章 程序控制结构

3.1 基本语句

6.End 

【功能】结束一个过程或块。

【格式】End语句根据其所在位置,有以下几种形式。

(1)End:停止执行,可以放在过程中的任何位置关闭代码执行、关闭以Open语句打开的文件并清除变量。

(2)End Function:用于结束一个Function函数过程的定义

(3)End If:用于结束一个If…Then…Else语句块。

(4)End Property:用于结束一个Property Let、Property Get或Property Set过程。

(5)End Select:用于结束一个Select Case语句。

(6)End Sub:用于结束一个Sub过程的定义。

(7)End Type:用于结束一个用户自定义类型的定义(Type语句)。

(8)End With:用于结束一个With语句。


Visual basic

第3章 程序控制结构

3.1 基本语句

7.Exit

【功能】退出Do…Loop、For…Next、Function、Sub或Property代码块。

【格式】Exit语句根据其所在的位置,有以下几种形式:

(1)Exit Do:在Do…Loop型循环中使用,表示强制退出Do…Loop型循环。

(2)Exit For:在For…Next型循环中使用,表示强制退出For型循环。

(3)Exit Function:从包含该语句的Function过程中退出。

(4)Exit Property:从包含该语句的Property过程中退出。

(5)Exit Sub:从包含该语句的Sub过程中退出。


Visual basic

第3章 程序控制结构

3.1 基本语句

8.GoSub…Return

【功能】从一个过程中的某语句跳到另一个语句段中执行,执行后再返回。

【格式】GoSub <标签号行号>

…

<标签号行号>

…

Return

【说明】可以在过程中的任何地方使用GoSub…Return,但是GoSub和与之相应的Return语句必须放在同一个过程中,不能使用GoSub…Return来进入或退出Sub过程。一个子过程中可以包含一个以上的Return语句,但是当碰到第一个Return语句时,程序就会返回到紧接在刚刚执行的GoSub语句之后的语句继续执行。创建分开的子过程,并使用GoSub…Return来调用,可以使程序更结构化。


Visual basic

第3章 程序控制结构

3.2 顺序结构

顺序结构是使用最普遍的一种控制结构,这种控制结构按照命令从前到后的自然排列顺序逐条执行,可以将其看做是系统默认的控制结构,不需要专门的控制语句。程序流程图如图所示,先执行程序段A后,继续执行相邻的程序段B。程序段是由一条或多条语句组成的语句序列。


Visual basic

第3章 程序控制结构

3.3 选择结构

3.3.1单分支选择结构

单行条件语句比较简单,其格式如下:

If 条件 Then 语句1 [Else 语句2]

该语句的功能是:如果“条件”为True,则执行“语句1”,否则执行“语句2”。

其中各参数的说明如下:

“语句1”和“语句2”可以包含一个或多个VB语句,当含有多个语句时,各语句之间用冒号隔开。

If语句中的Else部分是可选的,当该项省略时,If语句简化为:

If 条件 Then 语句1

它的功能是:若“条件”为True,则执行“语句1”,否则执行下一行程序。


Visual basic

第3章 程序控制结构

3.3.2块结构条件语句

1.块结构条件语句

块结构条件语句一般语法格式如下:

If 条件1 Then 

语句块1

[ElseIf 条件2 Then

语句块2]

[ElseIf 条件3 Then

语句块3]

…

[Else 

语句块n]

End If

块结构条件语句的功能是如果“条件1”为True,则执行“语句块1”;如果“条件2”为True,则执行“语句块2”……否则执行“语句块n”。


Visual basic

第3章 程序控制结构

3.3.2块结构条件语句

2.IIf函数

Visual Basic还提供了IIf函数,可用来执行简单的条件判断操作,格式如下:

变量名=IIf(条件,值1,值2)

当“条件”为真时,返回“值1”;当“条件”为假时,返回“值2”。例如,r=IIf(a>5,1,2)表示当a>5时,r=1,否则r=2。


Visual basic

第3章 程序控制结构

3.3.3多分支选择结构

情况语句的一般语法格式如下:

Select Case 测试表达式

Case 表达式列表1

语句块1

[Case 表达式列表2

[语句块2]]

…

[Case Else

[语句块n]]

End Select 

情况语句以Select Case开头,以End Select结束。其功能是,根据“测试表达式”的值,从多个语句块中选择符合条件的一个语句块执行。


Visual basic

第3章 程序控制结构

3.3.3多分支选择结构

其中各参数的含义如下:

(1)“测试表达式”可以是数值表达式或字符串表达式,通常为变量或常量。

(2)每个语句块由一行或多行合法的Visual Basic语句组成。

(3)“表达式列表1”、“表达式列表2”……称为域值。

(4)情况语句的执行过程是:先对“测试表达式”求值,然后测试该值与哪一个Case子句中的“表达式列表”相匹配;如果找到了,则执行与该Case子句有关的语句块,并把控制转移到End Select后面的语句;如果没找到,则执行与Case Else子句有关的语句块,然后把控制转移到End Select后面的语句。

(5)如果同一个域值的范围在多个Case子句中出现,则只执行符合要求的第一个Case子句的语句块。

(6)在情况语句中,Case子句的顺序对执行结果没有影响,但是应注意,Case Else子句必须放在所有的Case子句之后。


Visual basic

第3章 程序控制结构

3.4 循环结构

3.4.1For循环结构

For循环也称For…Next循环或计数循环。其一般格式如下:

For 循环变量=初值 To 终值 [Step 步长]

[循环体]

[Exit for]

Next[循环变量][,循环变量]…


Visual basic

第3章 程序控制结构

3.4.1For循环结构

For循环语句的执行过程是:首先把“初值”赋给“循环变量”,接着检查“循环变量”的值是否超过终值,如果超过就停止执行“循环体”,跳出循环,执行Next后面的语句;否则执行一次“循环体”,然后把“循环变量+步长”的值赋给“循环变量”,重复上述过程,该循环语句的执行过程如图所示。


Visual basic

第3章 程序控制结构

3.4.1For循环结构

“步长”表示循环变量的增量,是一个数值型表达式。值可以是正数(递增循环)或负数(递减循环),但不能为0。如果步长为1,则省略不写。

循环次数由初值、终值和步长3个因素确定,计算公式为:

循环次数=Int(终值-初值)/步长+1

Next后面的循环变量名必须与For语句中的循环变量名相同,并且可以省略。

For…Next循环可以嵌套使用,嵌套层数没有具体限制,其基本要求是:每个循环必须有一个唯一的变量名作为循环变量;内层循环的Next语句必须放在外层循环的Next语句之前,内外循环不得互相“骑跨”。


Visual basic

第3章 程序控制结构

3.4.2While…Wend循环结构

在Visual Basic中,还提供了用于循环的当循环语句,其格式如下:

While 条件

[循环体]

Wend 

当循环语句的功能是:当给定的“条件”为True时,执行循环体。

While循环语句的执行过程是:如果“条件”为True(非0值),则执行“循环体”,当遇到Wend语句时,控制返回到While语句并对“条件”进行测试,如仍然为True,则重复上述过程;如果“条件”为False,则执行Wend后面的语句,该语句的执行过程如图所示。


Visual basic

第3章 程序控制结构

3.4.2While…Wend循环结构


Visual basic

第3章 程序控制结构

3.4.3Do…Loop循环结构

1.格式1

Do

[循环体]

[Exit Do]

Loop[While | Until 循环条件]

2.格式2

Do[While | Until 循环条件]

[循环体]

[Exit Do]

Loop

其中各参数的说明如下:

Do…Loop循环语句的功能是:当指定的“循环条件”为True 或直到指定的“循环条件”变为True之前重复执行循环体。

Do…Loop循环语句本身不能修改循环条件,必须在“循环体”内设置相应的语句,使整个循环趋于结束,以避免死循环。

可以在“循环体”内放入Exit Do语句,随时跳出循环。

在格式1中,While和Until放在循环的末尾,分别叫做Do…Loop While和Do…Loop Until循环,它们的逻辑流程如图所示。


Visual basic

第3章 程序控制结构

3.4.3Do…Loop循环结构


Visual basic

第3章 程序控制结构

3.4.3Do…Loop循环结构

在格式2中,While和Until放在循环的开头,即紧跟在关键字Do之后,组成两种循环,分别叫做Do While…Loop循环和Do Until…Loop循环,它们的执行过程分别如图所示。


Visual basic

第3章 程序控制结构

3.4.4循环的嵌套

通常把循环体内不含循环语句的循环叫做单层循环,把循环体内含有循环语句的循环称为多重循环,把循环体内含有一个循环语句的循环称为二重循环,把含有多个循环语句的称为多重循环或多层循环。


Visual basic

第4章 构造数据类型

4.1数组基础知识

1.什么是数组

在程序设计中,将一组排列有序、个数有限的数据作为一个整体,用一个统一的名字表示,这些有序数据的全体称为数组。

在VB中,为了确定各数据与数组中每一元素的一一对应关系,必须给数组中的这些数编号,即顺序号(用下标来指出顺序号,数组也成下标变量)。因此,数组是用名字代表顺序排列的一组数。

数组由数组名和圆括号组成,圆括号中括起来的是顺序号:

cj(5)

↑↑

数组名顺序号


Visual basic

第4章 构造数据类型

4.1数组基础知识

2.数组的命名规则

数组的命名规则与简单变量的命名规则是一样的,即由1~40个字符组成,组成的字符可以是字母、数字或小数点,并且必须以字母开头,如果有类型声明符时,必须放在尾部。例如,a,x,xscj%等。

3.什么是数组的维数

数组下标的个数就是数组的维数。

(1)一维数组:数组中的所有元素,能按行、列顺序排成一行,即用一个下标便可以确定它们各自所处的位置。

(2)二维数组:数组中的所有元素,能按行、列顺序排成一个矩阵,即必须用两个下标才能确定它们各自所处的位置。

(3)三维数组:由3个下标才能确定所处的位置。


Visual basic

第4章 构造数据类型

4.1数组基础知识

4.什么是数组元素

在同一数组中,构成该数组的元素称为数组元素。组成数组的各个元素一般为变量,由于这些变量共用一个变量名,即所在的数组名,因此,必须用下标才能区别,故数组元素也称为下标变量。

在VB中,引用数组的某一元素,要指出数组名和用括号括起来的数组元素在数组中位置(顺序号)的下标,即下标变量的标识为:

<数组名>(<下标表>)

其中,<下标表>是指一个或几个下标(代表一维或几维),各下标之间应用逗号分隔。


Visual basic

第4章 构造数据类型

4.1数组基础知识

5.数组的类型

在VB中,数据有多种数据类型,相应的数组也有多种类型。可以声明任何基本数据类型的数组,包括用户自定义类型和对象变量,但是一个数组中的所有元素具有相同的数据类型。

但是,当数组类型为Variant(变体型)时,各个元素能够包含不同类型的数据(字符串、数值等)。

6.数组的分类

在VB中,根据数组元素的个数能否变化,可将数组分为静态数组和动态数组。

 静态数组:数组元素的个数固定不变。

 动态数组:数组元素的个数在运行时可以改变。


Visual basic

第4章 构造数据类型

4.2静态数组与动态数组

4.2.1静态数组

  • 静态数组在定义时已经确定了数组的大小和维数,在使用中不能改变。其语法格式如下:

  • Public|Private|Dim|Static 数组名([下界]TO 上界,[下界]TO 上界[,…]) [AS 类型说明]

    各参数的含义如下:

  • Public定义全局数组,用在标准模块中,Private或Dim定义模块级数组,Static定义静态局部数组。

  • 数组名后括号中的内容用来确定数组的维数及每一维的大小,其中,一组“下界 TO 上界”表达式就定义了数组的一个维,有几项“下界 TO 上界”表达式就表示该数组有几维。

  • “下界”和“上界”表示某维的最小下标和最大下标,定义时,下界可以省略。当省略下界时,默认下界值为0。

  • 数据类型和简单变量数据类型定义类似。


Visual basic

第4章 构造数据类型

4.2.2动态数组

动态数组在定义时未给出数组的大小(即定义时省略了括号中的下标),当在程序中使用时,随时用ReDim语句重新指出数组大小。动态数组因为是在程序执行时分配存储空间,所以可以根据用户需要而分配,从而有效地利用存储空间。

定义动态数组的方法是:

Dim|Private|Public 数组名() 

该定义语句放在过程外,在过程中使用ReDim语句指明数组的大小。语法格式为:

ReDim 数组名(下标1[,下标2…]) 

静态数组在定义时下标只能是常量,而动态数组ReDim语句中下标可以是常量,也可以是有了确定值的变量。

在过程中可以多次使用ReDim语句改变数组的大小,也可以改变数组的维数。


Visual basic

第4章 构造数据类型

4.2.3数组的基本操作

1.数组元素的输入

数组元素的输入操作可以使用文本控件,也可以通过InputBox函数来输入。

【例4-2】假设已经定义了一个一维数组Dim b(10) As Integer,请使用InputBox函数为数组b(10)中各个元素赋值。

程序如下:

For i=1 To 10

B(i)=InputBox("请输入第"&i&"个数")

Next i

在VB中,还可用Array函数为数组元素赋值,把一个数据集读入某一个数组中,其格式为:

数组变量名=Array(数组元素值)

例如,arr=Array(1,3,5,7)

该语句是将1、3、5、7这4个数赋给数组arr的各个元素,即arr(0)=1,arr(1)=3,arr(2)=5,arr(3)=7。也可使用Option Base语句使下标从1开始。


Visual basic

第4章 构造数据类型

4.2.3数组的基本操作

2.数组元素的输出

数组元素的输出与数组元素的输入一样,可以使用循环语句进行控制,在输出时还可以使用Tab函数和Space函数进行打印位置的定位。

3.数组元素的排序

在程序中,有时需要将一个数组中的元素按照由小到大或由大到小的顺序排列,即进行排序。排序的方法有很多种,如选择法、冒泡法、插入法等。引例中已经介绍了如何从一列数组中选择最大值,选择排序的过程其实就是多次寻找最大值或最小值,找到后进行数据元素互换的过程。


Visual basic

第4章 构造数据类型

4.3 控件数组

1. 控件数组的建立

控件数组与普通数组建立的方法不同,可以通过以下两种方法来建立

1)复制粘贴法

(1)在窗体上加入一个控件,选中后执行“复制”操作,将其放入剪贴板。

(2)执行“粘贴”操作,这时系统会弹出对话框,询问是否建立一个控件数组,如图所示。


Visual basic

第4章 构造数据类型

4.3 控件数组

(3)单击对话框中的“是”按钮,这时窗体左上角将出现一个控件,这就是控件数组的第二个元素。

(4)再次执行“粘贴”操作,将建立控件数组的其他元素。

2)修改Index属性

还可以通过修改Index属性来建立控件数组,具体操作步骤如下

(1)在窗体中加入一个控件,并修改其Index属性为0,此时该控件就成为控件数组中第一个数组元素。

(2)加入第二个控件,将其名称Name属性修改为和第一个控件Name的属性值相同,并修改其Index属性为1,使其成为控件数组的第二个数组元素。

(3)重复以上步骤,加入所有控件数组元素。


Visual basic

第4章 构造数据类型

4.3 控件数组

2.控件数组的使用

【例4-5】建立包含3个单选按钮的控件数组,当单击某个单选按钮时,分别执行不同的操作,如图所示。


Visual basic

第4章 构造数据类型

4.3 控件数组

操作步骤如下:

(1)按上面介绍的方法在窗体上建立一个控件数组,里面包含3个单选按钮。

(2)将3个单选按钮的Caption属性分别设置为“红色”“绿色”“黄色”。

(3)在窗体上添加一个标签控件,修改其Caption属性为“我的颜色会改变!”。


Visual basic

第4章 构造数据类型

4.3 控件数组

(4)在单选按钮的Click 事件中编程如下:

Private Sub Option1_Click(Index As Integer)

Select Case Index

Case 0

Label1.ForeColor=RGB(255,0,0)

Case 1

Label1.ForeColor=RGB(0,255,0)

Case 2

Label1.ForeColor=RGB(255,255,0)

End Select

End Sub


Visual basic

第4章 构造数据类型

4.4用户自定义类型

1.用户自定义类型的定义

在VB中,用户自定义类型的语句格式是:

[Public|Private]Type <自定义类型名>

<成员名1> As <类型名>

<成员名2> As <类型名>

…

<成员名n> As <类型名>

End Type


Visual basic

第4章 构造数据类型

4.4用户自定义类型

2.用户自定义类型变量

使用Type语句定义了一个用户自定义类型后,就可在该类型定义范围内的任何位置进一步声明该类型的变量了,然后才能使用这些变量。声明自定义类型变量语句格式为:

Dim <变量名> As <自定义类型名>

还可使用Private、Public、ReDim、Static来声明用户自定义类型的变量。其实,声明用户自定义类型变量的方式与其他类型变量的声明方式相同,所不同的只是As后面的类型名称。


Visual basic

第4章 构造数据类型

4.4用户自定义类型

3.用户自定义类型数组

在声明一个自定义类型后,可以继续定义该类型的单个变量,也可以定义该类型的数组变量,用户自定义类型数组的定义与使用和其他类型的数组基本一致,只是As后面的类型改为用户自定义类型而已。当然在引用数组元素的值时,要在元素名后带上成员名,其格式为:

<数组名>(<元素下标号>).<成员名>


Visual basic

第4章 构造数据类型

4.5 枚举类型

4.5.1枚举类型的定义

应该在模块级位置定义枚举类型,执行“工程”→“添加模块”命令,即会打开模块代码窗口,在其中定义枚举类型,定义的格式为:

Enum <枚举类型名>

<成员名1>[=<成员值1>]

<成员名2>[=<成员值2>]

…

<成员名n>[=<成员值n>]

End Enum


Visual basic

第4章 构造数据类型

4.5.2枚举类型的使用

定义了枚举类型后就可以使用枚举变量了,声明格式为:

Dim <变量名> As <枚举类型名>

以后枚举型变量就只能在枚举成员中取值,为枚举变量赋值的格式为:

<枚举变量名>=<枚举成员名>

形式上是把成员名赋值给枚举变量,实质是将对应的成员值即一个整型常数赋给它,以后输出和引用时,将以整数值参与操作,成员名可以看做是对常数含义的一种声明和提示。

例如,上面对枚举类型定义变量:

Dim day As Weekday

day=Wed

Print day


Visual basic

第5章 过程

5.1 过程概述

5.1.1过程简介

  • 代码模块的类型

  • (1)打开“工程”菜单,分别选择“添加窗体”、“添加模块”、“添加类模块”命令就可以分别打开这几类模块的代码窗口。

  • (2)在工程资源管理器中单击弹出快捷菜单,选择“添加”命令,在其二级菜单中选择打开窗口的类型,如图所示。


Visual basic

第5章 过程

5.1.1过程简介

1)窗体模块

要建立窗体模块,执行“工程”→“添加窗体”命令,在工程窗口中右击打开快捷菜单,选择其中的“添加窗体”命令,打开如图所示的对话框,单击“打开”按钮后,打开窗体设计器,双击窗体即可打开窗体模块的代码窗口。窗体模块保存在扩展名为.frm的文件中。在窗体模块中可以定义子程序、事件过程和函数过程。


Visual basic

第5章 过程

5.1.1过程简介

2)标准模块

要建立标准模块,执行“工程”→“添加窗体”命令,在工程窗口中右击打开快捷菜单,选择其中的“添加模块”命令,打开如图所示的对话框,单击“打开”按钮后,打开标准模块的代码窗口。标准模块保存在扩展名为.bas的文件中。在标准模块中只能定义子程序和函数过程,不能定义过程事件。


Visual basic

第5章 过程

5.1.1过程简介

3)类模块

用户可以在类模块中编写新建对象的自定义属性和方法,以便让过程调用。

要建立类模块,执行“工程”→“添加类模块”命令,或在工程窗口中右击打开快捷菜单,选择其中的“添加类模块”命令,则打开如图所示的对话框,单击“打开”按钮后,打开类模块的代码窗口。类模块保存在扩展名为.cls的文件中。


Visual basic

第5章 过程

5.1.1过程简介

2.过程的类型

1)子过程

子过程又称为通用过程,是用来完成特定功能的,必须由应用过程调用,一般采用Call语句进行子程序的调用。

2)事件过程

事件过程是指附加在窗体和控件上的过程,当VB中的对象对一个事件的发生作出认定时,自动用对应于该对象和事件的名称调用该事件过程。一般事件过程的名称和其对应对象和事件的名称有联系。一个控件过程的事件名称是该控件在“名称”属性中规定的名称、下划线和事件名的组合。


Visual basic

第5章 过程

5.1.1过程简介

3.函数过程

函数过程是被调用后要返回值的过程。函数和子过程一样,也是具有独立功能的过程,因主调过程的调用而被执行,也能传递参数,执行一系列过程中的语句,执行完后返回主调过程。函数无论从定义的格式上还是执行的方式上,都与子过程十分相似。

但二者本质的不同在于被调用后能否向主调函数返回一个结果值。函数过程将在过程体中以“<函数名>=<返回值表达式>”的形式向主调函数返回一个结果值,并参与调用点所在环境的操作,因此调用函数不再由Call语句完成,而是以“<函数名>(<实际参数表>)”的形式表达。

4.属性过程

属性过程用于返回和设置对象属性的值,还可以设置对属性的引用,创建和引用用户自定义的属性,通过创建对象及其属性来扩充VB的功能,属于较高层次的编程技术。


Visual basic

第5章 过程

5.1.2Sub过程

1.Sub事件过程

Sub事件过程是当发生某个事件时,对该事件作出响应的程序段,简称事件过程。前面章节中使用的过程大部分都是事件过程。事件过程是VB应用程序的主体。

(1)事件过程的定义。

定义事件过程的语法格式如下:

Private Sub 对象名_事件名([形参表])

[<语句段>]

End Sub

其中,事件过程的名字是由对象名和事件名这两部分组成,两者之间用一个下划线连接。


Visual basic

第5章 过程

5.1.2Sub过程

2)事件过程的创建。

事件过程是由具体事件激活,依附于具体对象,其创建的方法有两种。

①直接输入。

双击要编程的对象,或选中要编程的对象后按快捷键F7,就可弹出该对象的代码编辑窗口,如图所示。接下来就可在代码窗口中直接输入过程代码。这种方法要特别注意对事件过程名的检查。

②先选择对象及事件,然后再输入。


Visual basic

第5章 过程

5.1.2Sub过程

先在代码编辑窗口顶部的两个下拉列表框中选择对象及事件。左边的列表框用于选择要编程的对象,右边的列表框用于选择该对象所要响应的事件,单击列表框右边的下拉按钮,即可弹出相应的列表选项,如图所示。


Visual basic

第5章 过程

5.1.2Sub过程

2.Sub通用过程

(1)通用过程的定义。

定义通用过程的语法格式如下:

[Static][Private|Public] Sub<过程名>([形参表])

[<语句段1>]

[Exit Sub]

[<语句段2>]

End Sub


Visual basic

第5章 过程

5.1.2Sub过程

(2)通用过程的创建。

①直接在代码窗口中创建。

在窗体或标准模块的代码窗口中,按语法格式输入相应的代码。

②使用“添加过程”对话框创建。

首先打开要添加过程的代码编辑窗口,再单击“工具”菜单中的“添加过程”命令,弹出“添加过程”对话框,如图所示。在对话框中的“名称”文本框中输入过程名,并选择相应的类型和范围;单击“确定”按钮后,就可以在代码编辑窗口中输入过程的代码了。


Visual basic

第5章 过程

5.1.3Function过程

1.函数过程的定义

定义函数过程的语法格式如下:

[Private|Public][Static]Function<函数名>([<形参表>])[As<类型>]

[<语句段1>]

[<函数名>=<表达式>]

[Exit Function]

[<语句段2>]

[<函数名>=<表达式>]

End Function 

各参数的说明如下:

<函数名>是函数过程的名字,函数的命名规则与变量相同。As <类型>是函数值的类型,它可以是Visual Basic允许使用的各种数据类型;如果省略,函数值的数据类型是Variant。


Visual basic

第5章 过程

5.1.3Function过程

2.函数过程的创建

与Sub过程一样,可以使用“添加过程”对话框来创建Function过程,也可以直接在代码窗口中创建。使用“添加过程”对话框来创建时,要选择“函数”类型。


Visual basic

第5章 过程

5.2过程的调用

5.2.1Sub过程的调用

1.Sub事件过程的调用

VB采用了事件驱动的编程机制。在VB中,对象与程序代码通过事件及事件过程来联系,所以Sub事件过程的调用是通过具体对象上发生具体事件来实现的。

事件过程的调用与否以及调用的顺序由操作时用户所引发的事件来决定,若用户未触发任何事件,则系统处于等待状态。


Visual basic

第5章 过程

5.2.1Sub过程的调用

2.Sub通用过程的调用

当程序遇到End Sub时,将退出过程,并立即返回调用语句的后续语句,调用Sub过程有两种方法。

1)使用Call语句

使用Call语句调用Sub过程的语法格式如下:

Call <过程名>([<实参表>])

其中,关键字Call表示要调用一个过程,<过程名>指明被调用的过程,如果过程有参数,则需把<实参表>列在“()”中。

2)使用过程名

也可以直接使用过程名来调用Sub过程,其语法格式如下:

<过程名>[<实参表>]

在该调用方法中,省略关键字Call和圆括号。如果过程有参数,<过程名>和<实参表>要用空格隔开。


Visual basic

第5章 过程

5.2.2Function过程的调用

函数过程的调用过程比较简单,函数过程创建以后,就可以像使用Visual Basic的内部函数一样来调用Function过程。

函数过程的调用格式如下:

变量名=函数过程名([参数列表]) 

其中,等号表示赋值,是将右边的函数返回值赋值给左边的变量。

如果,想通过调用【例52】的求矩形面积的函数过程Rect,来得到一个长为4.0、宽为2.5的矩形面积,可以使用下述语句:

Dim ss As Double

ss=Rect(4.0,2.5)

第一行语句声明了一个变量ss。第二行语句先调用函数过程Rect,传递参数4.0和2.5,计算后的返回值10.0,再把该返回值赋给变量ss。


Visual basic

第5章 过程

5.3过程中的参数

5.3.1参数的基本概念

1. 参数的分类

在VB中,根据参数所在的过程,将参数分为形式参数和实际参数。

形式参数是在子过程和函数过程的定义中出现的变量名;实际参数则是在调用子过程和函数过程时,传递给子过程和函数过程的常数、变量、表达式或数组。

在VB中,通常将形式参数简称为“形参”,把实际参数简称为“实参”。

2. 形参表

形参表中各变量之间用逗号分隔,表中的变量可以是:

(1)后面跟有左、右圆括号的数组名。

(2)除定长字符串之外的合法变量名。

在形参表中,只能用a As String之类的变长字符串作为形参,不能用a As String*8之类的定长字符串作为形参,但定长字符串可以作为实际参数传递给过程。


Visual basic

实参

调用过程:Call ts(50, avrg(), “hello”, a, b)

定义过程:Sub ts(n As Integer,a()As Single,b As Rectype,c As String,d As Single)

形参

第5章 过程

5.3.1参数的基本概念

3. 实参表

实参表中的各项用逗号隔开,实参可以是:

(1)常量。

(2)表达式。

(3)合法的变量名。

(4)后面跟有左、右括号的数组。

4. 实参和形参的对应关系

形参和实参的对应关系如下:


Visual basic

第5章 过程

5.3.2参数传递

1.传址

(1)传址就是让过程根据变量的内存地址去访问实际变量的内容,即形参与实参使用相同的内存地址单元,这样通过子过程就可以改变变量本身的值。

(2)在传址调用时,实参必须是变量,常量或表达式无法传址。

(3)系统默认按地址传递参数。


Visual basic

第5章 过程

5.3.2参数传递

2.传值

当要求变量按值传送时,可以使用下面的方法:

把变量变成一个表达式。把变量转换成一个表达式的最简单的方法就是将它放在括号内。例如,把变量用括号括起来,将它变成一个表达式,如“(a)”。

定义过程时用ByVal关键字指出参数是按值来传递的。例如:

Sub PostAc(ByVal x As Integer)

x=x+2

End Sub

这里的形参x前有关键字ByVal,调用时以传值的方式传递参数。在传值方式下,VB为形参分配内存空间,并将相应的实参值复制给形参。


Visual basic

第5章 过程

5.3.3可选参数和可变参数

1.可选参数

在过程定义时,可以在形参前面使用Optional关键字,把它设为可选参数,以后调用过程时,该可选参数的位置上就可以传递实参,也可以省略实参。如果一个过程的某个形参为可选参数,则在调用此过程时可以不提供对应于这个形参的实参。如果一个过程有多个形参,当它的一个形参设置为可选参数时,这个参数之后的所有形参都应该用Optional关键字定义为可选参数。未提供实参的形参在调用时被赋予形参类型的默认值。如果被省略的不是最后一个参数,则它的位置就要用逗号保留。在使用可选参数时还要注意以下两点:

(1)可选参数必须放在参数表的最后。

(2)可以在声明过程时,给可选参数设置默认值。设置默认值时,赋值号要放在类型名称的后面。


Visual basic

第5章 过程

5.3.3可选参数和可变参数

2.可变参数

可变参数是指形参的个数与类型可变。在形参前面通过关键字ParamArray说明它是可变参数。可变参数必须是变体型Variant类型。

如果一个过程的最后一个参数是使用ParamArray关键字声明的数组,则这个过程在被调用时可以接受任意多个实参。调用这个过程时使用的多余实参值均按顺序存放于这个数组中。在使用可变参数时要注意以下几点:

(1)ParamArray关键字不能与ByVal、ByRef或Optional关键字针对同一个形参一起使用。

(2)一个过程只能有一个这样的形参。当有多个参数时,ParamArray修饰的形参必须放在最后。


Visual basic

第5章 过程

5.4变量的作用域和生存期

5.4.1变量的作用域

1.过程级变量

过程级变量就是在过程内部声明的变量。它的作用范围被限制在该过程的内部,只有该过程内部的代码才能访问或改变该变量的值。过程级变量常用于存储临时数据或运算的中间结果。

过程级变量是使用Dim或Static关键字声明的。例如:

Private Sub Command1_Click()

Dim a As Integer,b As Integer

Static s As Long

…

End Sub


Visual basic

第5章 过程

5.4.1变量的作用域

2.模块级变量

模块级变量对该模块的所有过程都有效,在模块中的任何过程都可以访问该变量,但其他模块的过程则不可以访问。

模块级变量必须在模块顶部的声明段用Dim或者Private关键字声明,例如:

Private s As String \`模块级变量

Dim a As Integer,b As Long \`模块级变量

Private Sub Command1_Click()

Dim c As Integer \`过程级变量

…

End Sub


Visual basic

第5章 过程

5.4.1变量的作用域

3.全局变量

全局变量又称为公用变量或应用程序级变量,其作用范围可以是应用程序的所有过程。一个应用程序有时需要引入多个模块。编写程序时,如果希望某个变量在整个应用程序范围内起作用,则可以将其定义为全局变量。

全局变量必须用关键字Public进行声明,声明语句放在模块顶部的声明段中。


Visual basic

第5章 过程

5.4.2变量的生存期

变量的生存期是指变量在程序运行期间的作用时间。根据变量的生存期,可以把变量分为动态变量(dynamic)和静态变量(static)。

使用Dim关键字在过程中声明的局部变量属于动态变量。动态变量是在程序运行进入变量所在的过程时,系统才分配该变量的内存单元,经过处理退出过程后,该变量所占据的内存单元自动释放,其值消失,该变量就不再占用内存单元。

使用Static关键字在过程中声明的局部变量属于静态变量。静态变量在程序第一次运行进入该变量所在的过程后,系统就为该变量分配固定的内存单元,修改变量的值后,退出该过程,变量的值仍被保留,即变量所占用的内存单元没有被释放。如果以后再次进入该过程时,原来变量的值可以继续使用。


Visual basic

第5章 过程

5.5过程的嵌套调用与递归调用

5.5.1过程的嵌套调用

VB的过程定义都是相互平行和孤立的,也就是说在定义过程时,一个过程内不能包含另一个过程。VB虽然不能嵌套定义过程,但可以嵌套调用过程,也就是主程序可以调用子过程,在子过程中还可以调用另外的子过程,这种程序结构就称为过程的嵌套,如图所示。


Visual basic

第5章 过程

5.5.2过程的递归调用

 递归调用就是一个过程调用过程本身。在递归调用中,一个过程执行的某一步要用到它自身的上一步(或上几步)的结果。


Visual basic

第6章 鼠标和键盘事件过程

6.1 鼠标事件

6.1.1MouseDown事件

MouseDown事件,指的是用户在某个对象上按下鼠标按键的动作。鼠标上的任意一个按键被按下时都会触发MouseDown事件。

MouseDown事件能够识别出的信息包括:

是在哪个对象上发生的动作。

被按键是左键、右键还是中间键。

按鼠标键时有没有同时按键盘上的Shift等控制键。

动作发生时鼠标指针的位置。

MouseDown事件过程的格式如下:

Private Sub Object_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)

…

End Sub


Visual basic

第6章 鼠标和键盘事件过程

6.1.2MouseUp事件

MouseUp事件指的是用户在某个对象上释放鼠标按键的动作。鼠标上的任意按键被释放时都会触发MouseUp事件。MouseUp事件是发生在MouseDown事件之后的,它也可以识别出发生对象、被按键、键盘控制键和鼠标指针位置的信息。

MouseUp事件过程的格式如下:

Private Sub Object_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)

…

End Sub

其中各参数的作用与MouseDown事件过程中的一样。


Visual basic

第6章 鼠标和键盘事件过程

6.1.3MouseMove事件

  • MouseMove事件能够识别出的信息包括:

  • 是在哪个对象边框内部移动鼠标指针。

  • 是否按了鼠标键(区分左键、右键和中间键)。

  • 是否同时按键盘上的Shift等控制键。

  • 动作发生时鼠标指针的位置。

  • MouseMove的事件过程格式如下:

  • Private Sub Object_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)

  • …

  • End Sub


Visual basic

第6章 鼠标和键盘事件过程

6.1.4鼠标光标形状

鼠标的指针又称鼠标光标,通常情况下,应用程序运行界面中的鼠标光标都是箭头的形状,VB应用程序中鼠标光标也是默认为该形状,但是VB还提供了很多其他形状的光标。通过设置窗体或控件对象的MousePointer属性,可以选中VB 6.0内置的15种常见的光标形状。可在属性窗口进行MousePointer的相关设置,如图所示。


Visual basic

第6章 鼠标和键盘事件过程

6.2 键盘事件

6.2.1KeyPress事件

KeyPress事件是用户在对象上使用键盘完成的一次完整按键操作(包括按下和释放键盘上的按键)所触发的事件。能够识别KeyPress的对象必须在按键操作时具有焦点。需要注意的是,只有数字、字母符号、Tab、Enter和Backspace等按键才能触发KeyPress事件。

KeyPress事件会返回被按键的ASCII代码信息。KeyPress事件不能识别按键的状态(按下或释放)。

KeyPress事件过程的语法格式如下:

Private Sub对象名_ KeyPress(KeyAscii As Integer)

…

End Sub


Visual basic

第6章 鼠标和键盘事件过程

6.2.1KeyPress事件

1.KeyDown事件

KeyDown事件是用户在具有焦点的对象上按下键盘键的操作。当用户按下键盘上的任意按键时都会触发KeyDown事件。

KeyDown事件能够识别出的信息包括:事件发生在哪个对象上,被按键在键盘上的物理位置,有没有同时按键盘上的Shift等控制键。

其事件过程的语法格式如下:

Private Sub对象名_KeyDown(KeyCode As Integer,Shift As Integer)

…

End Sub

其中,参数KeyCode返回被按键物理位置的代码。一个按键对应一个KeyCode代码,所以KeyCode不区分字母的大小写,它们都被识别成大写字母。Shift参数同前文所述,返回一个整数,该整数反映了Shift键、Ctrl键和Alt键的组合状态。


Visual basic

第6章 鼠标和键盘事件过程

6.2.1KeyPress事件

2.KeyUp事件

KeyUp事件是用户在具有焦点的对象上释放键盘按键的操作。键盘上的任意按键都可以触发KeyUp事件。

KeyUp事件能够识别出的信息包括:事件发生在哪个对象上;被释放键在键盘上的物理位置,有没有同时按住键盘上的Shift等控制键。

其事件过程的语法格式如下:

Private Sub 对象名_KeyUp(KeyCode As Integer,Shift As Integer)

…

End Sub

其中,各参数使用与KeyDown事件一样。


Visual basic

第6章 鼠标和键盘事件过程

6.3拖放

6.3.1与拖放相关的属性、事件和方法

1. 拖放的属性

1)DragMode属性

DragMode属性决定对象的拖动模式是自动还是手动。在设计时,可以在属性窗口选择属性值。如图所示,在属性窗口中,如果将DragMode属性设置为0Manual表示拖动模式是手动,设置为1Automatic表示拖动模式是自动。


Visual basic

第6章 鼠标和键盘事件过程

6.3.1与拖放相关的属性、事件和方法

2)DragIcon属性

DragIcon属性,指定在拖放操作中指针显示的图标。DragIcon的默认属性是箭头指针,否则为自定义的鼠标指针。


Visual basic

第6章 鼠标和键盘事件过程

6.3.1与拖放相关的属性、事件和方法

2.拖放的事件

1)DragDrop事件

DragDrop事件在一个完整的拖放过程(将一个源控件拖动到一个目标对象上,并释放鼠标按钮)完成后发生;或者使用对象的Drag方法时,并将其action参数设置为2时,该事件发生。

DragDrop事件过程的功能是用来控制在一个拖动操作完成时将会发生的情况,该事件的格式如下:

Private Sub对象_DragDrop(Source As Control,X As Single,Y As Single)

…

End Sub

其中,Source表示正在被拖动的源控件。当Source参数中可能会使用多种类型的控件时,应使用TypeOf关键字和If语句一起确定其具体类型。参数X、Y返回鼠标指针的当前位置。


Visual basic

第6章 鼠标和键盘事件过程

6.3.1与拖放相关的属性、事件和方法

2)DragOver事件

DragOver事件在拖动操作正在进行时发生。可使用该事件对鼠标指针在一个有效目标上的进入、离开或停顿等进行监控。鼠标指针的位置决定接受此事件的目标对象。

DragOver事件过程的功能是用来确定在拖动开始后和控件放在目标上之前发生了什么情况,该事件的格式如下:

Private Sub 对象_DragOver(Source As Control,X As Single,Y As Single,state As Integer)

…

End Sub

其中,参数state是一个整数,它表明一个控件在拖动过程中的转变状态。如果state为0,表示进入,即源控件正被向一个目标范围内拖动;如果state为1,表示离去,即源控件正被向一个目标范围外拖动;如果state为2,表示跨越,即源控件在目标范围内从一个位置移到了另一位置。其余参数的用法,参见DragDrop的事件过程。


Visual basic

小提示

第6章 鼠标和键盘事件过程

6.3.1与拖放相关的属性、事件和方法

3.与拖放相关的方法

1)Move方法

该方法把可以拖动的源控件移动到鼠标释放的位置,格式如下:

object.Move left[,top,[width,[height]]]

其中的参数都是单精度数值。left是必需的,指示对象左边的水平坐标(x轴);top是可选的,指示对象顶边的垂直坐标 (y轴);width 是可选的,指示对象新的宽度;height 是可选的,指示对象新的高度。


Visual basic

第6章 鼠标和键盘事件过程

6.3.1与拖放相关的属性、事件和方法

2)Drag方法

该方法用来手工启动、结束或取消一个拖放过程。不管DragMode属性如何设置,都可以使用Drag方法,其语法格式如下:

object.Drag action

其中的action为整数,取值为0表示取消拖放,取值为1表示拖放开始,取值为2表示结束拖放。

例如:

Private Sub Text1_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)

Text1.Drag 1

End Sub

上述事件过程Text1_MouseDown使得在控件Text1上按下鼠标左键时开始拖放操作。


Visual basic

第6章 鼠标和键盘事件过程

6.3.2OLE拖放

OLE拖放是将数据从一个控件或应用程序移动到另一个控件或应用程序。

在Visual Basic应用程序中最强大、最有用的功能之一就是在控件和控件之间、在控件和其他Windows应用程序之间拖动文本和图形。有了OLE,就可将这种功能引入应用程序中。


Visual basic

第7章 界面设计

引例打字练习程序

1.初步设计

(1)新建一个Visual Basic工程,窗体Form1用于登录界面,再添加一个窗体Form2作为打字区。工程中添加窗体的方法是:从“工程”下拉菜单中选择“添加窗体”选项,系统弹出“添加窗体”对话框。单击对话框中的“打开”按钮,系统就会在工程中添加一个窗体。这时,工程资源管理器窗口里就列出两个窗体文件。

(2)对两个窗体进行界面设计,如图所示。


Visual basic

第7章 界面设计

引例打字练习程序

2.界面改进

1)程序图标

程序图标指的是程序应用文件的图标。窗体图标指的是窗体标题栏里的图标,它会在程序运行时显示在任务栏里。在Visual Basic 6.0中编写的程序的图标默认为窗体Form1的窗体图标。可以选择一个简单美观的个性图标来做窗体和程序的图标。在Form1的“属性”窗口中,找到图标属性Icon,单击“设置”按钮后,弹出对话框如图所示,选中需要的图标文件,单击“打开”按钮,这样,程序和窗体都有了个性图标。


Visual basic

第7章 界面设计

引例打字练习程序

2)登录界面的改进

调整窗体Form1的背景及控件后的界面如图所示。这样的登录界面既突出了程序的主要功能是打字练习,又给用户美观的视觉感受。


Visual basic

第7章 界面设计

引例打字练习程序

3)打字界面的改进

在打字界面进行多行打字输入时,文本框会自动出现垂直滚动条来显示内容。为了让用户更好地观察打字效果,可以在设计时将文本框的尺寸适当调大些。


Visual basic

第7章 界面设计

7.1菜单

7.1.1下拉式菜单

1.下拉式菜单的定义

下拉式菜单是一种典型的窗口式菜单,一般通过单击窗口菜单栏中菜单标题的方式打开。例如,在VB窗口中,单击“文件”、“编辑”、“视图”等菜单时所显示的就是下拉式菜单,如图所示是“视图”的下拉式菜单。


Visual basic

第7章 界面设计

7.1.1下拉式菜单

2.下拉式菜单的组成

在下拉式菜单系统中,主要包括以下内容。

(1)菜单标题:菜单栏(位于窗口标题栏的下方)中包括一个或多个选择项,分别称为菜单标题或主菜单项。

(2)菜单命令:单击一个菜单标题时,一个包含若干菜单项的列表(菜单)被打开,这些菜单项称为菜单命令或子菜单项。

(3)分隔条:根据功能的不同,菜单命令多以分隔条隔开。


Visual basic

第7章 界面设计

7.1.1下拉式菜单

3.下拉式菜单的设计


Visual basic

第7章 界面设计

7.1.1下拉式菜单

1.弹出式菜单的定义

弹出式菜单是在右击时快速弹出的,所以它又称为快捷菜单。显示在弹出式菜单上的菜单项取决于鼠标右键按下时指针的位置,所以它还可以称为上下文菜单。与下拉式菜单相比,弹出式菜单是显示于窗体之上,独立于菜单栏的浮动式菜单。弹出式菜单可以在窗口的任意位置打开,使用方便,具有较大的灵活性。


Visual basic

第7章 界面设计

7.1.1下拉式菜单

2.弹出式菜单的使用

在设计弹出式菜单时,要注意使用以下两项内容。

1)修改Visible属性

在“菜单编辑器”窗口中,选择主菜单,并使“可见”复选框处于未选中状态(默认情况下该项是选中状态)。

2)使用PopupMenu方法

不论在窗口顶部菜单条上显示的菜单还是隐藏的菜单,都可以用PopupMenu方法将其作为快捷菜单在程序运行期间显示出来,其语法格式为:

对象.PopupMenu 菜单名,Flags,X,Y,BoldCommand


Visual basic

第7章 界面设计

7.2状态栏

单击“工程”菜单中的“部件”命令,或者右击工具箱,在弹出的快捷菜单中选择“部件”命令,弹出“部件”对话框,如下左图所示。在对话框的“控件”选项卡中,从列表框中选中Microsoft Windows Common Controls 6.0复选框,单击“确定”按钮,StatusBar控件就添加到了工具箱中,如下右图所示。


Visual basic

第7章 界面设计

7.2状态栏

使用StatusBar控件的步骤

(1)在窗体上创建StatusBar控件。状态栏的缺省名为StatusBar1,StatusBar2,…

(2)右击窗体上选中的StatusBar控件,在弹出的快捷菜单中选择“属性”命令,打开“属性页”对话框,如图所示。


Visual basic

第7章 界面设计

7.3工具栏

7.3.1使用手工方式创建工具栏

使用手工方式创建工具栏就是在一个窗体的图片框中放置一些工具按钮。

手工制作工具栏的步骤如下:

(1)在窗体上添加一个图片框(或框架),作为工具栏。

(2)在图片框(或框架)内部添加一些工具按钮。这些工具按钮可以是具有Picture属性的各类控件,如命令按钮、复选框、图片框和图像框。

(3)为按钮或图片编写相应的程序代码,来实现执行命令的功能。


Visual basic

第7章 界面设计

7.3.2使用控件制作工具栏

使用工具栏控件制作工具栏,需要同时使用工具栏(Toolbar)控件和图像列表(ImageList)控件。

创建工具栏的一般过程如下:

(1)在窗体上添加Toolbar控件和ImageList控件。

(2)用ImageList控件保存需要的图像。

(3)建立Toolbar控件和ImageList控件的关联,并创建按钮对象。

(4)编写工具栏的相关代码。


Visual basic

第7章 界面设计

7.3.2使用控件制作工具栏

1.添加控件到工具箱

Toolbar控件与StatusBar控件、ImageList控件一样都属于ActiveX控件,且它们都位于同一个控件文件C:\Windows\System32\MSCOMCTL.OCX中,所以将它们添加到工具箱的方法完全相同。单击“工程”菜单中的“部件”命令;在“部件”对话框中选中Microsoft Windows Common Controls 6.0复选框单击“确定”按钮后,Toolbar、ImageList等位于同一控件文件中的一系列控件都会添加到工具箱中,如图所示。


Visual basic

第7章 界面设计

7.3.2使用控件制作工具栏

2. ImageList控件的设置

进行界面设计时,在窗体添加一个ImageList控件后,就可以通过ImageList控件的属性页来对其进行相关的属性设置了。如图所示,在属性页的“图像”选项卡中单击“插入图片”按钮来添加图像仓库中的图像。


Visual basic

第7章 界面设计

7.3.2使用控件制作工具栏

3.Toolbar控件的设置

Toolbar控件是一个或多个按钮(Button)对象的集合,可以通过将按钮对象添加到Buttons集合中来创建工具栏。每个按钮对象都可以选择在按钮表面上显示文本或显示一个图像,图像的来源是由关联的ImageList控件提供的图像仓库。

使用Toolbar控件的步骤如下:

(1)在窗体添加一个Toolbar控件,它会自动位于窗体的顶部

(2)通过Toolbar控件的属性页来设置与其相互关联的图像列表控件。


Visual basic

第7章 界面设计

7.3.2使用控件制作工具栏

如图所示,在属性页的“通用”选项卡里,从“图像列表”的下拉列表中选择本窗体上已存在的图像列表控件,如ImageList1。这样,工具栏控件就与具体的图像列表控件建立了相互关联,即工具栏上的按钮有了图像来源。


Visual basic

第7章 界面设计

7.3.2使用控件制作工具栏

(3)为工具栏设计工具按钮。在“属性页”对话框的“按钮”选项卡中,单击“插入按钮”可添加一个工具按钮。这时,在“索引”文本框里会自动出现索引号“1”,如图所示,每插入一个按钮,索引也相应加1。在程序中,可以通过索引来指定工具栏中的相应按钮。可为每个按钮设置其相关属性。


Visual basic

第7章 界面设计

7.3.2使用控件制作工具栏

4.Toolbar控件的事件

工具栏中按钮的常用事件是ButtonClick事件,鼠标单击工具栏中的按钮时触发ButtonClick事件。该事件过程的格式如下:

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)

…

End Sub

其中,参数Button为ActiveX控件类型的按钮对象。这里只简单介绍Button参数的Index属性,Index属性是工具栏中按钮对象的索引。程序中,通过Button.Index来确认哪个按钮被单击。


Visual basic

第7章 界面设计

7.4对话框

7.4.1自定义对话框

1.使用窗体修改成对话框

(1)在普通窗体上,使用标签、文本框、命令按钮等控件创建用户界面,再编写相应的程序代码,来实现与用户的交互。

(2)在属性窗口中把窗体的BorderStyle属性设置成3Fixed Dialog(同时,最大化按钮属性MaxButton和最小化按钮属性MinButton都设置成False)。

这样,一个普通的窗体就被修改成了用户自定义的对话框。对于上述两个步骤,顺序不分先后。


Visual basic

第7章 界面设计

7.4.1自定义对话框

2.使用“对话框”模板创建对话框

具体方法为:

(1)单击“工程”菜单中的“添加窗体”命令,系统弹出“添加窗体”对话框。如图所示,系统提供了一些对话框模板。选择其中一个模板,单击对话框中的“打开”按钮,系统就会在工程中添加一个对话框类型的窗体。


Visual basic

第7章 界面设计

7.4.1自定义对话框

(2)在新建的对话框上,根据具体的使用需要来做一些适当修改。如图所示的对话框就是用对话框模板创建的,其界面上只有两个命令按钮。可以修改其标题、增加或删除一些控件,然后再编写相应的程序代码,来实现人机交互。


Visual basic

第7章 界面设计

7.4.2通用对话框

1.设置通用对话框的属性

每种对话框都有自己特殊的属性,设置通用对话框属性的方法有以下几个:

在“属性”窗口中设置。

在代码中设置。

在“属性页”对话框中设置。

在“属性页”对话框中设置对话框属性的方法如下:

(1)在“属性”窗口中选择“(自定义)”,然后单击右侧的按钮,打开“属性页”对话框。

(2)在“属性页”对话框中有5个选项卡,对不同类型的对话框进行设置,就要选择不同的选项卡。如需对文件对话框进行设置,就要选择“打开/另存为”选项卡。


Visual basic

请注意

Action属性不能在“属性”窗口内设置,只能在程序中赋值,用于调出相应的对话框。

第7章 界面设计

7.4.2通用对话框

2.Action功能属性

在通用对话框中,可以用Action属性直接决定打开何种类型的对话框。Action属性的取值及其含义如下。

0-None:无对话框显示。

1-Open:打开文件对话框。

2-Save As:另存为对话框。

3-Color:颜色对话框。

4-Font:字体对话框。

5-Printer:打印对话框。

6-Help:Windows帮助对话框。


Visual basic

第7章 界面设计

7.4.2通用对话框

3.打开通用对话框的方法

VB还提供了一组方法来打开通用对话框,共有6种方法指定相应的对话框,其名称及相应的功能如下。

ShowOpen:显示文件打开对话框。

ShowSave:显示文件存储对话框。

ShowColor:显示颜色对话框。

ShowFont:显示字体对话框。

ShowPrinter:显示打印对话框。

ShowHelp:显示Windows帮助对话框。


Visual basic

第7章 界面设计

7.5多文档界面设计

7.5.1多文档界面

多文档界面是指一个窗体中能够建立多个子窗体,即允许用户同时访问多个文档,每个文档显示在不同的窗口中。Microsoft Word与Microsoft Excel等应用程序就是多文档界面,如图所示。


Visual basic

第7章 界面设计

7.5.2多文档界面的建立

要建立多文档界面,事先要计划好父窗体拥有多少个子窗体,然后再分别设计父窗体和子窗体。建立多文档界面的操作步骤如下:

(1)创建一个工程。执行“文件”→“新建工程”命令,新建一个工程,这时新工程已经预先建立好一个窗体Form1。

(2)建立MDI窗体。单击“工程”菜单中的“添加MDI窗体”命令,弹出“添加MDI窗体”对话框,如图所示。


Visual basic

第7章 界面设计

7.5.2多文档界面的建立

(3)设定MDI窗体为启动对象。单击“工程”→“工程属性”命令,弹出“工程属性”对话框,如图所示。在“启动对象”下拉列表框中选择MDIForm1,将此窗体作为执行程序的主窗体。


Visual basic

第7章 界面设计

7.5.2多文档界面的建立

(4)设置Form1为子窗体属性。选中Form1,在属性窗口中将MDIchild属性值设为True。

(5)将Form1连入MDIForm1内。选中MDIForm1,在MDIForm1_load事件中加入如下代码:

Private Sub MDIForm1oad()

Load Forml

End Sub


Visual basic

第7章 界面设计

7.5.2多文档界面的建立

(6)运行程序,可以看到Form1放置在MDIForm1窗体内,如图所示。


Visual basic

第7章 界面设计

7.5.3创建MDI应用程序的菜单

MDI应用程序基本上都是通过父窗体的菜单来操作其中的子窗体。MDI父窗体和子窗体都可以拥有各自的菜单,但一般情况下,菜单是设置在MDI父窗体上的。


Visual basic

第7章 界面设计

7.6VB的工程结构

在VB中,一个应用程序成为一个工程,所以VB的工程结构就是应用程序的结构。Visual Basic应用程序的工程结构如图所示。


Visual basic

第7章 界面设计

7.6VB的工程结构

在Visual Basic中是利用工程资源管理器来组织和管理一个工程(应用程序)的。在工程资源管理器中,工程的所有模块按类别分层次进行显示,这样可以较好地组织工程,同时也便于程序代码的维护。从如图所示的工程资源管理器中可以看出,该工程包含了窗体模块Form1、Form2,标准模块Module1和类模块Class1。


Visual basic

第8章 图形与图像设计

8.1 绘制图形

8.1.1图形控件

1. Shape控件


Visual basic

第8章 图形与图像设计

8.1.1图形控件

  • 2.Line控件

  • Line控件用于在对象上画一条直线,通过设置各种属性和方法来改变它的外观。Line控件常用的属性有:

  • BorderWidth:该属性用于调节窗体中直线的粗细。

  • BorderStyle:该属性用于设置直线的线型,如实线、虚线或点划线等。该属性只有在BorderWidth值为1时有效。

  • BorderColor:该属性用于设置直线的颜色。

  • Visible:该属性用于根据程序的需要显示或隐藏直线。


Visual basic

第8章 图形与图像设计

8.1.1图形控件

线条控件的 BorderStyle属性取不同值时的效果如图所示。


Visual basic

第8章 图形与图像设计

8.1.2常用的绘图方法

1.画点方法

在Visual Basic中可以使用Pset方法在指定对象的指定位置,使用指定的颜色画一个点。其语法格式如下:

[对象.]Pset[Step](x,y)[,颜色]

其中,参数(x,y)为所画点的坐标,关键字 Step 表示采用当前作图位置的相对值,采用背景颜色可清除某个位置上的点。


Visual basic

第8章 图形与图像设计

8.1.2常用的绘图方法

2.画直线、矩形的方法

Line方法用于画直线或矩形,其语法格式如下:

[对象.]Line[[Step](x1,y1)]-(x2,y2)[,颜色][,B[F]

该语句是将两个点的坐标连成一条直线或矩形,用所提供的颜色设置成线的颜色或矩形的颜色。其中各参数的含义如下:

(1)“对象”指示Line在何处产生结果,可以是窗体或图片框,缺省时为当前窗体。

(2)(x1,y1)为线段的起点坐标或矩形的左上角坐标,(x2,y2)为线段的终点坐标或矩形的右下角坐标。

(3)关键字Step表示采用当前作图位置的相对值。

(4)关键字B表示画矩形,关键字F表示用画矩形的颜色来填充矩形。


Visual basic

第8章 图形与图像设计

8.1.2常用的绘图方法

3.画圆方法

Circle方法用于画圆、椭圆、圆弧或扇形,其语法格式如下:

[对象.]Circle[[Step](x,y),半径[,颜色][,起始角][,终止角][,长短轴比率]]

其中各参数的含义如下:

(1)(x,y)为圆心坐标,关键字Step表示采用当前作图位置的相对值。

(2)“起始角”和“终止角”用于控制画圆弧或扇形。当起始角和终止角的值在0~2π之间时画出的是圆弧,当起始角和终止角取值前加一个负号时画出扇形,负号表示画圆心到圆弧的径向线。

(3)“长短轴比率”用于控制画出的是圆还是椭圆,该值是椭圆在垂直方向上的轴与水平方向上的轴的比率。值为1时画的是正圆,值大于1时,画的是在垂直方向上较长的椭圆,值小于1时,画的是在水平方向上较长的椭圆。


Visual basic

第8章 图形与图像设计

8.2 显示图片

8.2.1直接加载图片到窗体

使用窗体的Picture属性可以很方便地加载图片到窗体上。具体的操作步骤是:

单击“属性”窗口中的Picture属性,这时该属性后面出现按钮,单击此按钮打开“加载图片”对话框,添加要加载的图片,单击“打开”按钮,加载后的效果如图所示。


Visual basic

第8章 图形与图像设计

8.2.2使用图像控件

Image控件具有Stretch属性。当Stretch属性为False(默认值)时,将根据图片调整Image控件的大小;当Stretch属性设置为True时,将根据Image控件的大小来调整图片的大小(这可能会使图片变形)。


Visual basic

第8章 图形与图像设计

8.3与绘图有关的常用属性和事件

8.3.1清除图形的方法

在任何时候如果要清空绘图区进行重画,可以使用Cls方法。对象中用Print和图形方法创建出的所有文本和图形都可以用Cls方法来删除。同时,Cls方法还把绘图坐标恢复到原点(0,0)。该方法语法格式如下:

[object.]Cls

该方法用于清除所给对象上用Print、Line、Circle、Pset等图形方法创建出的所有文本和图形。如果没有指定 object,则Cls方法默认清除当前窗体,例如: 

Picture1.Cls \`清除名为 Picture1 的图片框

Cls \`清除当前窗体


Visual basic

第8章 图形与图像设计

8.3.2线宽属性和线型属性

使用Line或Circle方法画图时,所画图形的边框可通过指定窗体(Form)或图片框(Picture)的DrawWidth属性和DrawStyle属性设置。

DrawWidth:该属性设置使用Line或Circle方法画图时的线宽。

DrawStyle:该属性设置使用Line或Circle方法画图时的线型,有0~6共7个可选值。


Visual basic

第8章 图形与图像设计

8.3.3填充颜色属性和填充样式属性

通过指定窗体(Form)或图片框(Picture)的FillColor属性及FillStyle属性可设置所画图形的填充颜色和效果。其中:

FillColor:填充颜色属性决定在FillStyle属性所设置的方式下填充图形的颜色。

FillStyle:填充样式属性决定填充图形的样式。有8种样式可供使用。


Visual basic

第8章 图形与图像设计

8.3.4自动重画属性

窗体的AutoRedraw属性用于自动重画属性,可以保持图形的持久输出。什么叫持久输出呢?在画图完成后,如果AutoRedraw设为False,则不会自动重绘,当其他窗体覆盖本窗体后或者当把该窗体最小化后,窗体上绘制的内容在窗体重新显示时将消失,如果把它设为True,它会自动重绘,从而保持图形的存在。


Visual basic

第8章 图形与图像设计

8.3.4自动重画属性

其语法如下:

object.AutoRedraw[=Boolean]

其中各参数的含义如下:

object:指明是窗体图片框,省略时指当前窗体。

AutoRedraw:该参数值为True时使Form对象或PictureBox控件的自动重绘有效;为False(缺省值)时使对象的自动重绘无效。

使用Circle、Cls、Line、Point、Print和Pset等方法绘图时,AutoRedraw参数极为重要。利用这些方法,在改变对象大小或隐藏在另一个对象后又重新显示的情况下,设置AutoRedraw为True,将在Form或PictureBox控件中自动重绘输出。


Visual basic

第8章 图形与图像设计

8.3.5Paint事件

编程中,有时需要在窗体加载时就创建在其上显示的图形,而在Form_Load事件中窗体是不可见的,Visual Basic对于不可见窗体上的图形方法不进行处理,除非AutoRedraw被设置为True,否则Form_Load事件中的图形方法将被忽略。因此,当AutoRedraw为False时,图形方法最好置于窗体或容器的Paint事件内。

Paint事件在窗体刚加载时就执行一次,当移动窗体、改变窗体大小、最大化窗体、最小化窗体或窗体被其他窗体遮住后再次执行

把图形方法局限在Paint事件内,能使这些方法按可预期的顺序来绘图。如果不把这些图形方法局限于Paint事件内,对输出结果的管理是非常困难的。


Visual basic

第9章 文件

引例 简单的资源管理器

1.新建一个工程

在“新建工程”对话框中选择“标准EXE”选项,新建一个EXE工程文件。

2.创建界面

1)在窗体中新建对象

将工具箱中的DriveListBox(驱动器列表框)控件、DirListBox(目录列表框)控件、FileListBox(文件列表框)控件和ComboBox(组合框)控件拖入窗体中,如图所示。

2)修改属性

选择组合框控件,修改其List属性值为*.exe、*.bmp、*.jpg、*.txt、*.vbp或*.*。


Visual basic

第9章 文件

引例 简单的资源管理器


Visual basic

第9章 文件

引例 简单的资源管理器

3.编写程序

Private Sub Combo1_Click()

File1.Pattern=Combo1.Text \`对文件类型进行过滤

End Sub

Private Sub Dir1_Change()

File1.Path=Dir1.Path \`目录列表框与文件列表框同步

End Sub

Private Sub Drive1_Change()

Dir1.Path=Drive1.Drive \`目录列表框与驱动器列表框同步

End Sub

Private Sub Form_Load()

File1.Pattern="*.exe" \`程序运行时,默认显示EXE文件

End Sub

4.运行程序

运行该程序,选择不同的驱动器、文件夹及不同的文件类型,查看右边文件列表框中显示的文件内容。


Visual basic

第9章 文件

9.1文件的基本概念

9.1.1文件的类型

1.按数据性质分类

按数据性质,文件可分为程序文件和数据文件。

1)程序文件

这种文件存放的是可以由计算机执行的程序,包括源文件和可执行文件。在Visual Basic中,扩展名为.exe、.frm、.vbp、.vbg、.bas、.cls的文件都是程序文件。

2)数据文件

数据文件用来存放普通的数据。例如,学生考试成绩、职工工资、商品库存等。这类数据必须通过程序来存取和管理。


Visual basic

第9章 文件

9.1.1文件的类型

2.按数据的存取方式分类

Visual Basic提供了3种文件存取方式,分别是顺序存取方式、随机存取方式和二进制存取方式。对应这3种存取方式可以把文件分为顺序文件、随机文件和二进制文件3种。

1)顺序文件

顺序文件是一种文件结构相对简单的文件,文件中的记录一个接一个地存放。在这种文件中,只知道第一个记录的存放位置,其他记录的位置无从知道。当要查找某个数据时,只能从文件头开始,一个记录一个记录地顺序读取,直至找到要查找的记录为止。例如,向顺序文件写入数据时,必须先写入前99个记录,才能写入第100个记录,读出数据也一样。


Visual basic

第9章 文件

9.1.1文件的类型

2)随机文件

随机文件又称直接存取文件,简称随机文件或直接文件。在随机文件中,每条记录的长度是固定的,记录中的每个字段的长度也是固定的。因此只要指定记录号,就可以把数据直接存入指定位置,而在读取数据时,只要给出记录号,就能直接读取该记录,不必对整个文件进行读写操作。例如,要访问随机文件中的第15条记录时,可以跳过前面的14条记录,而直接访问第15条,这样就减少了文件的存取时间。


Visual basic

第9章 文件

9.1.1文件的类型

3)二进制文件

二进制文件是最原始的文件类型,直接把二进制码存放在文件中,没有什么格式,以字节数来定位数据,允许程序按所需的任何方式组织和访问数据,也允许对文件中各字节数据进行存取和访问。

这类文件灵活性较大,但编程工作量也较大。图形文件及文字处理程序等计算机程序都属于二进制文件。

二进制文件不能使用文本编辑软件打开查看,只有用生成它的程序打开才能看到其中的内容。


Visual basic

第9章 文件

9.1.2文件操作语句及函数

1.文件访问的常用语句

(1)改变当前驱动器。

改变当前驱动器的语法格式如下:

ChDrive <驱动器名>

“驱动器名”是一对双引号括起来的字符串表达式,它指定一个存在的驱动器。如果使用零长度的字符串(""),则当前的驱动器不会改变。

例如,ChDrive "D"表示将当前驱动器改变为D。


Visual basic

第9章 文件

9.1.2文件操作语句及函数

(2)改变当前目录。

该语句的语法格式如下:

ChDir<路径名>

其中各参数的含义如下:

ChDir语句改变缺省目录位置,但不会改变缺省驱动器位置。

“路径名”是一对双引号括起来的字符串表达式,它指明哪个目录或文件夹成为新的缺省目录或文件夹,路径名包含驱动器。如果没有指定驱动器,则ChDir在当前驱动器上改变缺省目录或文件夹。例如,ChDir"D:\TMP"表示将当前目录改变为D:\TMP。


Visual basic

第9章 文件

9.1.2文件操作语句及函数

(3)删除文件。

该语句的语法格式如下:

Kill<文件名>

“文件名”是一对双引号括起来的字符串表达式,可以带路径。在Windows中,Kill支持使用多字符(*)和单字符(?)的通配符来指定多个文件。

例如,Kill"D:\Data\Test.txt"表示删除在D盘Data目录下的Test.txt文件;Kill"C:\TEMP\*.tmp"表示删除在C盘TEMP目录下所有以tmp为后缀的文件。


Visual basic

第9章 文件

9.1.2文件操作语句及函数

(4)复制文件。

该语句的语法格式如下:

FileCopy<源文件名>,<目标文件名>

其中各参数的含义如下:

“源文件名”是一对双引号括起来的字符串表达式,用来表示要被复制的文件名。源文件名可以包括文件的路径。

“目标文件名”是一对双引号括起来的字符串表达式,用来表示要复制的文件名。目标文件名可以包括文件的路径。

如果想要对一个已经打开的文件使用FileCopy语句,则会产生错误

例如,将C:\MYDIR\目录下的文件FILE1复制到D:\MYVB\目录下,可使用命令:

FileCopy "C:\MYDIR\FILE1","D:\MYVB\FILE1"


Visual basic

第9章 文件

9.1.2文件操作语句及函数

(5)对文件重命名。

该语句的语法格式如下:

Name<旧文件名>As<新文件名>

其中各参数的含义如下:

Name语句重新命名文件并将其移动到一个不同的目录或文件夹中。

“旧文件名”为必要参数,是用一对双引号括起来的字符串表达式,指定已存在的文件名和位置,可以包含文件的路径。

“新文件名”为必要参数,是用一对双引号括起来的字符串表达式,指定新的文件名和位置,可以包含文件的路径。

“新文件名”所指定的文件名不能与现有的文件名相同。

对一个已经打开的文件使用Name命令将会产生错误。

Name参数不能包含多字符(*)和单字符(?)通配符。


Visual basic

第9章 文件

9.1.2文件操作语句及函数

(6)创建新的目录(或文件夹)。

该语句的语法格式如下:

MkDir<目录名>或<文件夹名>

要创建的“目录名”或“文件夹名”是字符串表达式。“目录名”或“文件夹名”可以包含驱动器。如果没有指定驱动器,则在当前驱动器上创建新的目录或文件夹。

例如,创建一个“成绩单”目录,可使用命令:

MkDir"成绩单"


Visual basic

第9章 文件

9.1.2文件操作语句及函数

(7)删除目录(或文件夹)。

该语句的语法格式如下:

RmDir<目录名>或<文件夹名>

其中各参数的含义如下:

“目录名”或“文件夹名”可以包含驱动器。如果没有指定驱动器,则删除当前驱动器上的目录或文件夹。

如果用RmDir删除含有文件的目录或文件夹,则会产生错误。


Visual basic

第9章 文件

9.1.2文件操作语句及函数

(8)得到当前的路径。

该语句的语法格式如下:

CurDir[驱动器名]

“驱动器名”是一个字符串表达式,是可选参数。它指定一个存在的驱动器。如果没有指定驱动器,或驱动器名是一个零长度的字符串(""),则CurDir会返回当前驱动器的路径。该函数返回值为Variant(String)。


Visual basic

第9章 文件

9.1.2文件操作语句及函数

2.与文件有关的重要函数

(1)LOF()函数。

LOF函数返回由文件号指定的已打开文件的字节数。如LOF(1)返回#1文件的长度,如果返回值为0,则表示该文件是一个空文件。

(2)EOF()函数。

EOF函数返回一个表示文件指针是否到达文件末尾的标志。如果到了文件尾,EOF函数返回True,否则返回False。对于顺序文件可用EOF函数来测试是否到了文件尾,对于随机文件和二进制文件,当最近一个执行的GET语句无法读到一条完整记录时返回True,否则返回False。


Visual basic

第9章 文件

9.1.2文件操作语句及函数

(3)LOC()函数。

LOC函数返回一个在打开的文件中读写的位置,对于随机文件,它将返回最近读写的记录号;对于二进制文件,它将返回最近读写的一个字节的位置;对于顺序文件,它将返回在文件中当前字节位置除以128所得的值。


Visual basic

第9章 文件

9.2 顺序文件

9.2.1顺序文件的打开与关闭

1.顺序文件的打开

对文件进行读写操作前,必须先打开文件,其语法格式为:

Open<文件名>For<模式>[Access 操作类型][锁定]As[#]<文件号>[Len=记录长度]

其中各参数的含义如下:

(1)“文件名”是要打开的文件的名称,其中包括完整的路径名称。

(2)“模式”指定文件的打开方式。可以是以下3种之一:

Input:以读方式打开文件,将数据从磁盘读入内存中,对文件进行读操作。

Output:以写方式打开文件。该方式创建一个新的顺序文件,等待输出数据,如果存在同名文件,则覆盖原有文件内容。

Append:以追加方式打开文件。打开一个已经存在的文件,等待输出数据追加到原文件内容之后。如果不存在该文件,则创建一个新文件。


Visual basic

第9章 文件

9.2.1顺序文件的打开与关闭

(3)“操作类型”规定对打开的文件进行操作的类型,有Read只读、Write只写和Read Write(读写皆可)3种类型。

(4)“锁定”用于多进程环境中,以指定允许其他进程对本次打开的文件进行的操作类型,可以锁定以下4种类型:

Shared(缺省):共享,允许其他任何进程对该文件进行读写操作。

Lock Read:禁止其他进程对打开的文件进行读操作。

Lock Write:禁止其他进程对打开的文件进行写操作。

Lock Read Write:禁止其他进程对该打开的文件进行读写操作

(5)“文件号”是一个1~511的整数,同时被打开的文件的文件号不能相同。文件被打开后,文件号就代表该文件,通过它读写文件,直至文件被关闭。

(6)记录长度是一个小于或等于32 767的整数,它指定数据缓冲区的大小。


Visual basic

第9章 文件

9.2.1顺序文件的打开与关闭

2.顺序文件的关闭

对文件的各种操作执行完毕后,必须将文件关闭,否则会造成数据丢失等现象。关闭文件的命令为Close,其语法格式如下:

Close[[#]<文件号>][,[#]<文件号>]…

其中“文件号”是Open语句打开文件时指定的文件号。

Close语句可以同时关闭多个已经打开的文件。

例如:Close #1表示关闭文件号为1的文件;Close #1,#2表示关闭文件号为1和2的两个文件;Close表示关闭所有已打开的文件。


Visual basic

第9章 文件

9.2.2顺序文件的读写

1.写文件命令Print #语句

Print #语句用于将各输出项的值写入指定的文件中,其语法格式如下:

Print #<文件号>,[输出项列表]

其中各参数的含义如下:

(1)“输出项”可以是常量、变量或表达式,如果输出的是字符串常量,则两边要加引号。当输出项多于一个时,各输出项之间可以用逗号或分号分隔。和窗体的Print方法一样,逗号和分号分别代表的是标准格式和紧凑格式,其含义也同Print方法一样。

(2)在输出项之间可以使用Spc(n)函数输出n个空格,使用Tab(n)函数指定其后面的输出项从n列开始输出。

(3)Print #语句的末尾可以加分号、逗号或不加任何符号。加分号时,表示下一个Print #语句的输出项不换行,直接按紧凑格式输出;加逗号时,表示下一个Print #语句的输出项不换行,按分区格式输出;不使用任何符号时,下一个Print #语句的输出项换行输出。


Visual basic

第9章 文件

9.2.2顺序文件的读写

  • 2.写文件命令Write#语句

  • Write #语句用于将各输出项的值写入指定的文件中,其语法格式如下:

  • Write #<文件号>,[输出项列表]

  • Write # 语句的功能与Print # 语句基本相同,主要区别是:

  • Write #语句以紧凑格式存放,即在各输出项之间自动插入逗号。

  • Write #语句为字符串加双引号。

  • Write #语句在将最后一个字符插入文件后会插入回车换行符,即Chr(13)+Chr(10)。


Visual basic

第9章 文件

9.2.2顺序文件的读写

3.读文件命令Input#语句

与写顺序文件一样,在读顺序文件前需将文件用Open命令打开,打开时指定模式为Input。打开文件后,就可以对文件进行读操作。读文件命令Input有如下3种格式:

(1)Input #文件号,变量列表。

(2)Line Input #文件号,字符串变量。

(3)字符串变量=Input$(读取字符数,#文件号)。


Visual basic

第9章 文件

9.3 随机文件

9.3.1定义数据类型和变量声明

  • 自定义数据类型的语句格式为:

  • Type 自定义类型名

  • 元素名[(下标)] As 类型名

  • …

  • 元素名 [(下标)] As 类型名

  • End Type

  • 其中各参数的含义如下:

  • 元素名:表示自定义类型中的一个成员。

  • 下标:表示数组。

  • 类型名:为标准类型。


Visual basic

第9章 文件

9.3.2随机文件的打开与关闭

  • 1.随机文件的打开

  • 打开随机文件的语法格式如下:

  • Open"文件名"For Random As #文件号[Len=记录长度]

  • 其中各参数的含义如下:

  •  随机文件打开后,读写是相同模式,既可以从文件中读取数据,也可以向文件中写入数据。

  • “文件名”是所要打开的文件名称,包括完整的路径名称。

  • “记录长度”用来指定随机文件每条记录的长度,默认为128字节,取值范围为0~32 KB,也可以在程序中用Len函数获得记录长度。

  • 2.随机文件的关闭

  • 关闭随机文件与关闭顺序文件相同,使用命令“Close #文件号”。


Visual basic

第9章 文件

9.3.3随机文件的读写操作

1)随机文件的写操作

对随机文件的写操作使用Put命令,用于将记录变量中的数据写入指定文件中记录号指定的记录位置,其语法格式如下:

Put [#]文件号,[记录号],变量名

其中,记录号是大于1的整数,表示的是第几条记录。省略记录号时,新记录插入当前的记录之后。

2)随机文件的读操作

对随机文件的读操作使用Get命令,用于从指定的文件中读取记录号指定的记录,并赋值给记录变量,其语法格式如下:

Get[#]文件号,[记录号],变量名

其中,记录号是大于1的整数,表示的是第几条记录;如果省略,则表示读出当前记录后的一条记录。Get语句依次读取一条记录后,文件记录指针自动指向下一条记录,记录号加1。


Visual basic

第10章 数据库程序设计

10.1数据库与SQL语言基础

10.1.1数据库简介

1.数据库相关概念

大量的数据按一定的组织形式单独存储,就构成了数据库。简单地说,数据库就是一组排列成易于处理和读取的相关信息的集合。数据库技术是计算机应用技术中的一个重要组成部分,使用数据库存储大量数据比通过文件来存储具有更高的效率。


Visual basic

第10章 数据库程序设计

10.1.1数据库简介

2.数据库中的数据模型

数据库中数据的组织有多种数据模型,如层次模型、网状模型、关系模型和面向对象模型等。其中,关系模型因为有完整的理论基础,取代了其他数据模型,目前在实际应用中占主导地位。

在关系型数据库中,将一个关系视为一张二维表,关系型数据库就是由若干个二维数据文件组成的集合。它按照一定的规则对数据文件进行重新组织,以便使数据具有最大的独立性,并实现对数据的共享。常用的Access、FoxPro等都是关系型数据库系统。


Visual basic

第10章 数据库程序设计

10.1.1数据库简介

3.关系数据库中的主要术语

(1)关系(表):一张二维表,就是数据库中一个实际存放二维数据的文件,也称库文件,是具有相同性质记录的组合。

(2)记录(Record):表中一行称为一条记录。它是描述一个数据的集合,注意表中的记录必须是同格式、同长度的。

(3)字段(Field):表中的一列称为一个字段。记录和字段确定了表中一个具体数据项。


Visual basic

第10章 数据库程序设计

10.1.1数据库简介

(4)关键字(Key):关键字是用来区别两条记录的字段或字段组合。它分为主关键字和外部关键字,主关键字可对数据库表中的一条记录进行唯一标识,而外部关键字可将一条记录与另外数据库中的关键字联系起来。表102中的“员工编号”就是该表的主关键字。

(5)索引(Index):为提高访问数据库的效率,可以对数据库建立索引。索引是按照某个或几个字段建立的排序列表,用户可以通过不同的分类和索引条件把记录重新组合排列。

(6)记录集(RecordSet):是一个对象,表示打开的一个或多个表中的记录的集合。


Visual basic

第10章 数据库程序设计

10.1.2结构化查询语言

1.数据查询命令SELECT

SQL中最常使用的操作是对数据库进行查询并返回符合用户查询标准的结果记录集,该操作通过SELECT语句实现,SELECT语句的语法格式为:

SELECT 字段名列表 FROM 表名[WHERE条件][GROUP BY分组字段][HAVING 分组条件][ORDER BY 字段[ASC|DESC]]

SELECT语句中各子句的含义如下:

(1)字段名列表:包含查询结果要显示的字段清单,字段间以逗号分开,若要选择表中所有字段,可用星号代替具体字段名,如果所选定的字段要更名,可在该字段后用AS新名实现。

(2)FROM子句:用于指定一个或多个表,如果所选的字段来自不同的表,则字段名前应加表名前缀,格式为“表名.字段名”。


Visual basic

第10章 数据库程序设计

10.1.2结构化查询语言

(3)WHERE子句:指定查询的条件,如果要查询的内容出自两个表,则在Where子句中要使用条件“表1.字段名=表2.字段名”将它们连接起来。其中“字段名”为两表中共有的字段,如表10-5中学生信息表与表10-6中学生成绩表连接时,则使用“学生信息.学号=学生成绩.学号”。

(4)GROUP BY子句:GROUP BY后跟分组字段名,该子句是把查询的结果按给定的分组字段进行分组。

(5)HAVING子句:HAVING后跟条件,使用该子句可显示出满足给定条件的每个组。

(6)ORDER BY子句:ORDER BY后跟排序字段名,按给定的字段对查询结果排序,ASC选项代表升序,DESC代表降序,默认为ASC。


Visual basic

第10章 数据库程序设计

10.1.2结构化查询语言

2.使用DELETE语句删除记录

DELETE语句用来删除指定的表中满足条件的记录,语法格式为

DELETE FROM 表名 WHERE 删除条件

记录一旦被删除,就无法再撤销。因此在进行删除前务必要进行数据备份,这样如果误删了记录,还可以通过备份数据进行恢复,避免造成损失。

例如,删除学生信息表中名叫“李严峻”的学生记录的语句为:

DELETE FROM 学生信息 

WHERE 姓名="李严峻"


Visual basic

第10章 数据库程序设计

10.1.2结构化查询语言

3.使用UPDATE语句更新记录

要修改表中记录时,可使用UPDATE语句,语法格式为:

UPDATE 表名SET 字段名=值X 

WHERE 条件

该语句将符合条件的记录中指定字段的值更改为所给的值X。如果不加条件,则默认表中所有记录的该字段值全部更改。

例如,将学生成绩表中王冬梅的语文课成绩改为98的语句为:

UPDATE 学生成绩SET 语文=98 WHERE 姓名="王冬梅"


Visual basic

第10章 数据库程序设计

10.1.2结构化查询语言

4.使用INSERT语句向表中插入数据

向表中添加新记录时,可使用INSERT语句,语法格式为:

INSERT INTO 表名(字段名1,字段名2,…) VALUES (值1,值2,…) 

在插入语句中,字段名列表与值列表是一一对应的,如果没有列出要插入的字段名,则按表中的字段顺序依次插入。另外,插入记录的值的类型应和所插入字段的类型相匹配。

例如,向学生成绩表中插入一条新记录(“600012”,“88”,“79”)的语句为:

INSERT INTO 学生成绩VALUES ("600012",“88”,“79”)


Visual basic

第10章 数据库程序设计

10.2可视化数据管理器

10.2.1启动可视化数据管理器

执行“外接程序”→“可视化程序管理器”命令,即可启动可视化数据管理器。启动后的界面如图所示。


Visual basic

第10章 数据库程序设计

10.2.2新建数据库

下面以建立Access数据库为例,介绍如何利用VB 6.0的可视化数据管理器来建立一个新的数据库,具体操作步骤如下:

(1)执行“外接程序”→“可视化数据管理器”命令,打开可视化数据管理器。

(2)在可视化数据管理器窗口中,单击“文件”→“新建”命令,在弹出的对话框中选择Microsoft Access 7.0 MDB选项,弹出“保存”对话框。

(3)在“保存”对话框中选择要建立的数据库所存放的路径,并输入数据库文件名。


Visual basic

第10章 数据库程序设计

10.2.2新建数据库

(4)单击“保存”按钮,在可视化数据管理器中将出现“数据库窗口”和“SQL语句”两个子窗口。“数据库窗口”列出打开的数据库文件的所有表,并可查看表的字段、索引和属性等,“SQL语句”窗口用来输入和显示对数据库表执行的SQL命令,如图所示。


Visual basic

第10章 数据库程序设计

10.2.2新建数据库

(5)为数据库添加表和字段。将鼠标指针移至“数据库窗口”内右击,在弹出的快捷菜单中选择“新建表”命令,打开“表结构”对话框,如图所示。利用该对话框可建立一个新的数据库表结构。


Visual basic

第10章 数据库程序设计

10.2.2新建数据库

(6)在“表名称”文本框中输入数据表名称,如student。

(7)单击“添加字段”按钮,出现“添加字段”对话框,如图所示,用户可利用该对话框,依次向表中添加字段。每添加一个字段,单击“确定”按钮。完成所有字段的添加后,单击“关闭”按钮。


Visual basic

第10章 数据库程序设计

10.2.2新建数据库

(8)建立数据库表索引。单击“添加索引”按钮,出现“添加索引”对话框,在该对话框的“名称”文本框中输入索引名,每个索引都要有一个名称。在“可用字段”列表框中选择建立索引的字段。一个索引可以由一个字段建立,也可以由多个字段建立,如图所示。


Visual basic

小提示

第10章 数据库程序设计

10.2.2新建数据库

(9)添加完索引并单击“确定”按钮后,单击“关闭”按钮,返回“表结构”对话框。单击“生成表”按钮,则自动关闭“表结构”窗口,返回可视化数据管理器窗口。此时在“数据库窗口”中可以看到生成的“学生信息”表的字段名称、索引和数据表属性。

返回“数据库窗口”后,对应的字段可能没有立即更新,要立即更新数据表中的字段,只要右击该字段,选择快捷菜单中的“刷新列表”命令即可。


Visual basic

第10章 数据库程序设计

10.2.3查看和修改数据库表

1. 查看数据库表

(1)打开可视化数据管理器。

(2)在可视化数据管理器窗口中,执行“文件”→“打开数据库”命令,选择Microsoft Access选项,弹出“打开”对话框

(3)在“打开”对话框中选择要打开的数据库的路径和文件,单击“打开”按钮。

(4)选择工具栏中的第六个按钮“在新窗体上使用DBGrid控件”,然后在“数据库窗口”中,右击要查看的数据库表的名称,如“学生信息”,在弹出的快捷菜单中选择“打开”命令,此时将显示“学生信息”表中的所有记录,如图所示。


Visual basic

第10章 数据库程序设计

10.2.3查看和修改数据库表

2.修改数据库表结构

如果要修改数据库表结构,则在“数据库窗口”中,右击数据库表名称,如“学生信息”,在弹出的快捷菜单中选择“设计”命令,进入“表结构”对话框,此时可对表结构进行修改,如进行添加字段、删除字段、修改字段、添加索引、删除索引等操作。

3.删除数据库表

对于不需要的数据库表,可以将其删除。在“数据库窗口”中,右击数据库表名称,在弹出的快捷菜单中选择“删除”命令即可。

4.数据库表的更名

要重命名数据库表,则在“数据库窗口”中,右击数据库表名称,在弹出的快捷菜单中选择“更名”命令即可。


Visual basic

第10章 数据库程序设计

10.2.4数据的添加、删除与更新

数据库建立起来后,需要往数据库中添加记录,具体操作步骤如下:

(1)选择可视化数据管理器工具栏第一组按钮中的第一个按钮“表类型记录集”或第二个按钮“动态集类型记录集”,再选择第二组按钮中的第一个按钮“在新窗体上使用Data控件”。

(2)双击数据库表名称,如“学生信息”,则会弹出一个编辑“学生信息”数据表的对话框,如图所示。

(3)单击“添加”,就可添加记录,也可相应地单击其他按钮进行修改、删除记录的操作。


Visual basic

第10章 数据库程序设计

10.2.5数据窗体设计器

对数据库的各种操作是在可视化数据管理器中进行的,也可以利用可视化数据管理器提供的数据窗体设计器直接创建数据浏览窗体,操作步骤如下:

(1)打开数据库。在可视化数据管理器中执行“文件”→“打开数据库”命令,选择Access格式的数据库,打开一个数据库,如“学生.mdb”数据库。

(2)启动数据窗体设计器。在可视化数据管理器中执行“实用程序”→“数据窗体设计器”命令,打开数据窗体设计器,如图所示。


Visual basic

第10章 数据库程序设计

10.2.5数据窗体设计器

(3)在“数据窗体设计器”对话框中输入窗体名称,在“记录源”下拉列表框中选择数据表,如“学生信息”表。在“可用的字段”列表框中会自动列出数据表的各字段名,通过单击中间的4个按钮可实现对信息的相关操作,如单击“>”可将选择的一个字段加入“包括的字段”中,单击“>>”可将字段全部加入“包括的字段”中,“<”与“<<”按钮执行相反的操作。


Visual basic

第10章 数据库程序设计

10.2.5数据窗体设计器

(4)选择好要在窗体上显示的字段以及其他选项后单击“生成窗体”按钮便可以生成数据浏览窗体,单击“关闭”按钮关闭数据窗体设计器,此时在工程中生成的数据窗体如图所示。


Visual basic

第10章 数据库程序设计

10.2.5数据窗体设计器

(5)选择“工程”→“工程1属性”命令,弹出“工程属性”对话框,在“启动对象”中选择自动生成的窗体,然后运行工程,如图所示,此时可通过命令按钮对数据表中的记录进行添加、更改、删除等操作。


Visual basic

第10章 数据库程序设计

10.3数据控件和数据绑定控件

10.3.1Data数据控件

1.使用Data控件访问数据表

使用Data控件可以方便地访问数据库,对数据库进行操作。下面介绍使用Data控件访问数据库的一般步骤和方法。

(1)设计应用程序的用户界面。

(2)设置Data控件的属性来连接数据库。

(3)设置数据绑定控件的属性。

(4)完成以上设置后,无须编写任何代码就可在运行后,单击Data控件的4个箭头按钮对数据表记录进行访问。


Visual basic

第10章 数据库程序设计

10.3.1Data数据控件

2.Data控件的主要属性

Data控件具有如下一些属性:

Connect:指定打开数据库的类型,有Access、dBase、FoxPro等,默认为Access。

DatabaseName:设置要访问的数据库的位置和文件名。

RecordSource:设置Data数据控件要访问数据库中的表。

RecordsetType:设置记录集的类型是0-表(Table)、1-动态集 (Dynaset)还是2-快照(Snapshot)。


Visual basic

第10章 数据库程序设计

10.3.1Data数据控件

  • DefaultType:决定由数据控件使用的数据源类型,1为使用ODBC,2(缺省值)为使用Jet。

  • Exclusive:打开的数据库是独占还是共享,True为独占,False(缺省值)为共享。

  • ReadOnly:用于控制能否对记录集进行写操作。当该属性值为True时,不能对记录集进行写操作。

  • BOFAction和EOFAction:当记录集的EOF或BOF属性为True时,BOFAction和EOFAction属性的设置或返回值决定数据控件要采取的操作。


Visual basic

第10章 数据库程序设计

10.3.1Data数据控件

3.Data控件的主要方法

数据控件的内置功能很多,可以在代码中用数据控件的方法访问这些属性。

(1)UpdateRecord方法。

语法格式:Data1.UpdateRecord

(2)UpdateControls方法。

语法格式:Data1.UpdateControls

(3)Refresh方法。

语法格式:Data1.Refresh


Visual basic

第10章 数据库程序设计

10.3.1Data数据控件

4.Data控件的主要事件

Data控件的主要事件有Reposition、Validate、Error等,下面分别介绍。

(1)Reposition事件。

无论何时,只要用户单击Data控件上某个箭头按钮进行记录间的移动,或在代码中使用某个方法,使某一条记录成为当前记录时,都会触发该事件。使用该事件可以进行基于当前记录中的数据的计算,或者改变窗体来显示当前记录中的数据。


Visual basic

第10章 数据库程序设计

10.3.1Data数据控件

(2)Validate事件。

该事件发生在一条新的记录成为当前记录之前,并且发生在Update、Delete、Unload或Close操作之前。使用该事件对写入数据库的记录执行合法性检查。

当在记录间移动时,Validate事件发生在移动前的当前记录上,Reposition事件发生在移动后的当前记录上,因此,可用Validate 事件对移动前的当前记录加以验证,用Reposition事件对移动后的当前记录初始化。


Visual basic

第10章 数据库程序设计

10.3.1Data数据控件

(3)Error事件。

在开发应用程序时通常在代码中提供错误处理的功能,但有时在没有代码运行时也会发生数据存取的错误。如当用户单击Data控件按钮时,如果方式运行错误,就会产生Error事件。设计者可以编写Error事件的程序代码来处理这类错误。


Visual basic

第10章 数据库程序设计

10.3.2ADO数据控件

ADO数据控件与内部Data控件类似,都提供了对数据的访问操作,所不同的是ADO数据控件在使用前要先添加。方法是:单击“工程”菜单中的“部件”命令,在打开的“部件”对话框中选中Microsoft ADO Data Controls 6.0(OLE DB)复选框,单击“确定”按钮,将其添加到工具箱中。工具箱和窗体上的ADO数据控件如图所示。


Visual basic

第10章 数据库程序设计

10.3.3数据绑定控件

1.MSFlexGrid(网格)控件

要使用MSFlexGrid控件,必须在当前工程中引用它,方法是:执行“工程”→“部件”命令,在“部件”对话框中选中Microsoft FlexGrid Control 6.0复选框,如图所示。


Visual basic

第10章 数据库程序设计

10.3.3数据绑定控件

然后单击“确定”按钮,即可在工具箱中添加该控件的按钮,如图所示,此时就可以像Visual Basic内部控件一样来使用它了。


Visual basic

第10章 数据库程序设计

10.3.3数据绑定控件

2.DBList控件和DBCombo控件

DBList控件和DBCombo控件也是经常与Data控件配合使用的数据绑定控件。因为这两个控件不是Visual Basic的内部控件,使用前要进行添加,方法是:在Visual Basic 6.0中单击“工程”→“部件”命令,在弹出的“部件”对话框中选择Microsoft Data Bound List Controls 6.0复选框,此时在工具箱中就会增加DBList控件和DBCombo控件两个图标。


Visual basic

第10章 数据库程序设计

10.4使用ADO访问数据

10.4.1ADO对象模型

1.Connection对象

Connection对象用于建立与数据源的连接,通过连接可从应用程序访问数据源。它保存诸如指针类型、连接字符串、查询超时、连接超时和默认数据库这样的连接信息。

2.Command对象

在建立Connection对象后,可发出命令操作数据源。一般情况下,Command对象可以在数据库中添加、删除或更新数据,或者在表中进行数据查询。Command对象在定义查询参数或执行一个有输出参数的存储过程时非常有用。

3.Recordset对象

Recordset对象是基于某一连接的表或Command对象的执行结果。在ADO对象模型中,所有对数据源的操作几乎都是通过该对象来完成的。Recordset对象用于指定、移动、添加、更改、删除行。


Visual basic

第10章 数据库程序设计

10.4.2使用ADO存取数据

  • 1.连接数据源

  • 连接数据源可使用Connection对象的Open方法,其语法格式为:

  • Connection对象.Open ConnectionString,UserID,PassWord,OpenOptions

  • 其中各参数的含义如下:

  • Connection对象为定义的Connection对象的实例。

  • ConnectionString为可选项,包含了连接的数据库信息。

  • UserID为可选项,用于建立连接的用户名。

  • PassWord为可选项,是建立连接的用户密码。

  • OpenOptions为可选项,提供了连接选择,是一个ConnectionOptionEnum值,可以在对象浏览器中查看各个枚举值的含义。假如设置为adConnectAsync,则连接将异步打开。


Visual basic

第10章 数据库程序设计

10.4.2使用ADO存取数据

  • 2.打开记录集对象

  • ADO Recordset对象是一个表或某个查询返回的记录集,下面介绍打开记录集的方法。

  • 其语法格式为:

  • Recordset.Open Source,ActiveConnection,CursorType,LockType, Options

  • 其中各参数的含义如下:

  • Recordset为所定义的记录集对象的实例。

  • Source为可选项,指明了所打开的记录源信息,可以是一个有效的Command对象的变量名,或是一个查询、存储过程或表名等。

  • ActiveConnection为可选项,该参数指明该记录集是基于哪个Connection对象连接的,必须注意这个对象应是已建立的连接。


Visual basic

第10章 数据库程序设计

10.4.2使用ADO存取数据

3.使用记录

(1)添加新的记录。

在ADO中添加新记录可使用AddNew方法,其语法格式为:

Recordset.AddNew FieldList,Values

其中各参数的含义如下:

 Recordset为记录集对象实例。

 FieldList为一个字段名或一个字段数组。省略该参数时表示添加一条空白记录。

 Values是给字段赋的值,如果FieldList为一个字段名,那么Values为单个的数值,如果FieldList为一个字段数组,那么Values必须也是一个具有与FieldList相同数目、相同类型的数组。


Visual basic

第10章 数据库程序设计

10.4.2使用ADO存取数据

(2)修改记录集。

修改记录集中的数据和重新赋值没有太大的区别,只要用SQL语句将要修改的某个记录找出来,再给它的相应字段重新赋值就可以了。语法格式如下:

Rs.fields("字段名")=值

该命令用于给指定的字段赋值。

也可以使用命令 Rs.fields(i)=值

该命令用于给第i个字段赋值,i=0时表示给第一个字段赋值。

例如,将当前记录中的JBGZ字段值更改为1 200,使用的命令为:

Rs.fields("JBGZ")=1200


Visual basic

第10章 数据库程序设计

10.4.2使用ADO存取数据

(3)删除记录。

在ADO中删除记录集中的数据可使用Delete方法,这与ADO对象的方法相同,但是在ADO中它的能力增强了,可以删掉一组记录,其语法格式如下:

Recordset.Delete AffectRecords

其中,AffectRecords用于确定Delete方法的作用方式,它的取值如下:

adAffectCurrent:只删除当前的记录。

adAffectGroup:删除符合Filter属性设置的记录。为了能一次性删除一组数据,应设置Filter属性。

例如,删除已打开表中的当前记录,其命令为:

Rs.Delete

(4)查询记录。

在ADO中可以使用Connection对象的Execute方法执行SQL命令,返回查询记录集。


Visual basic

第10章 数据库程序设计

10.4.2使用ADO存取数据

4.释放内存资源

在应用程序结束之前,应该释放分配给ADO对象的资源,操作系统回收这些资源以便于再分配给其他应用程序。释放内存资源使用Close方法,其语法格式如下:

Object.Close

Object为ADO对象,可以是Recordset对象、Connection对象或命令对象,例如:

Rs.close \`关闭Recordset对象

Cn.close \`关闭Connection对象


Visual basic

Thank You !


  • Login