本帖最后由 Cizel 于 2016-7-30 23:09 编辑
声明:本帖非原创,本帖原作者为:人生需要奔放66.原帖发布于Malachite论坛(由于论坛关闭,本帖从百度贴吧转载而来)
再次声明:本文档权利归:人生需要奔放66 所以。如需转载请注明原作者
格式有点乱,我已经附上电子文档
第一章 vasual basic 程序开发环境
第一节visual basic 的启动与退出
一.启动 vb 的四种方法:
1. 使用“开始”菜单中的“程序”命令 2. 使用“我的电脑” 3. 使用“开始”菜单中的“运行”命令 4. 建立启动 visual basic6.0 的快捷方式 二.vb 启动后的简单设置 ·
1. 新建工程··标准 exe 2. (1)SDI 但文档界面 (2)MDI 多文档界面 “工具”—>“选项”—>“高级”—>“SDI 开发环境” 3. 退出 vb:ALT+Q 第二节 主窗体的组成
1.标题栏:设计模式 运行模式中断模式 2.菜单栏:(12 个) (1)菜单的分类: 直接执行 弹出对话框 下一级菜单 ( 2)进入菜单栏的方法: <1>ALT 或 F10 激活菜单后光标健选择 <2>ALT+激活键注:如果打开了不适当或不需要的菜单,或者执行菜单命令时打开不需要的对 话框,可以用 esc 健关闭 <3>快捷键:新建工程 ctrl+n 打开工程 ctrl+o 保存工程 ctrl+s 3.工具栏 (1)工具栏的分类:编辑、标准、窗体编辑器和调试 (2)工具栏的形式:固定、浮动 (3)标准工具栏图标及作用 第三节 其他窗体
一.窗体设计器和工程资源管理器
(一)窗体设计器窗口 1. 窗体设计器窗口简称窗体()from,是应用程序最终面向用户的窗口,它对 应于应用程序的运行结果。 2. 如果想清楚这些小点或者改变点与点间的距离,则可通过执行“工具”菜单中的“选项”命令(“通用”选项卡)来调整。 (二)工程资源管理器窗口 1.在工程支援管理器窗口中,含有建立一个应用程序所需要的文件的清单。工程支援管理器窗口中的文件可以分为 6 类, <1>窗体文件(.frm) <2>程序模块文件(.bas) <3>类模块文件(.cls) <4>工程文件(.vbp) <5>工程组文件(.vbg) <6>资源文件(.res) 2.工程资源管理器窗口中文件的分类: (1) 工程文件和工程组文件 工程文件的扩展名为.vbp,每个工程对应一个工程文件。当一个程序包括两个以上的工程时,这些工程构成一个工程组,工程组文件的扩展名为.vbg 用“文件”菜单中的“新建工程”命令可以建立一个新的工程,用“打开工程”命令可以打开一个已有的工程,而用“添加工程”命令可以添加一个工程。 (2) 窗体文件 窗体文件的扩展名为.frm,每个窗体对应一个窗体文件,窗体及其控件的属性和其他信息(包括代码)都存放在窗体文件中。一个应用程序可以有多个窗体 (最多可达 255 个) ,因此就可以有多个以.frm 为扩展名的窗体文件。 执行“工程”菜单中的“添加窗体”命令或单击工具栏中的“添加窗体”按 钮可以增加一个窗体,而执行“工程”菜单中的“移除窗体”命令可删除当前的窗体。每建立一个窗体,工程资源管理器窗口中就增加一个窗体文件,每个窗体 都有一个不同的名字,可以通过属性窗口设置(name 属性),其默认名字 formx (x 为 1,2,3…..) ,相应的默认文件名为 formx。 (3) 标准模块文件 标准模块文件也称程序文件, 其扩展名为.bas, 它是为合理组织程序而设计的。标准模块是一个纯代码性质的文件,它不属于任何一个窗体,主要在大型应 用程序中使用。 标准模块由程序代码组成, 主要用来声明全局变量和定义一些通用的过程, 可以被不同窗体的程序调用。标准模块通过“工程”菜单中的“添加模块”命令来建立。 (4) 类模块 Visual basic 提供了大量预定义的类,同时也允许用户根据需要定义自己的类,用户通过类模块来定义自己的类,每个类都用一个文件来保存,其 扩展名为.cls (5) 资源文件 资源文件中存放的是各种“资源” ,是一种可以同时存放文本,图片,声 音等多种资源的文件。资源文件由一系列独立的字符串,位图及声音文件(.wav .mid)组成,其扩展名为.res,资源文件是一个纯文本文件,可以用简单的文字编辑器编辑。 3. 选项卡的切换
在工程资源管理器窗口的顶部还有 3 个按钮,分别为“查看代码”“查看对象”“切换文件夹” , 。 二.属性窗口和工具箱窗口
(一)属性窗口
1. 属性的显示方式有两种,既按字母顺序和按分类顺序,分别通过单击相对应的按钮来实现。 2. 每个 visual basic 对象都有其特定的属性,可以通过属性窗口来设置,对象 的外观和对应的操作由所设置的值来确定。有些属性的取值是有一定限制的,例如对象的可见性只能设置为 true 或 flase(既可见或不可见);而有些 属性(如标题)可以为任何文本。在实际的应用程序设计中,不可能也那没 有必要设置每个对象的所有属性,很多属性可以使用默认值。 (二)工具箱窗口
1. 工具箱窗口由工具图标组成,这些图标是 visual basic 应用程序的构件,称为 图形对象或控件,每个控件由工具的一个工具图标来表示。 2. 在一般情况下,工具像位于窗体的左侧。工具箱中的工具分为两类,一类称为内部控件或标准控件,另一类称为 ActiveX 控件。启动 visualbasic 后,工 具箱中只有内部控件。 3. 工具箱主要用于应用程序的界面设计。在设计阶段,首先用工具箱中的工具(既控件)在窗体上建立用户界面,然后编写程序代码。界面的设计完全通 过控件来实现,可以任意改变其大小,移动到窗体的任何位置。 三. 除上述几种窗口外,在集成环境中还有其他一些窗口,包括窗体布局、代码 编辑器窗口、立即窗口、本地窗口和监视窗口等。 第二章. 对象及其操作
第一节 对象
一. vb 的属性
1 什么是对象
1. 窗体和控件就是 visual basic 中预定义的对象 2. 对象是具有特殊属性(数据)和行为方式(方法)的实体,建立一个对象后,其操作通过与该对象有关的属性,事件和方法来描述。 2 对象属性
1. 属性是一个对象的特性,不同的对象有不同的属性 2. 除了用属性窗口设置对象属性外,也可以在程序中用程序语句设置,一般格式如下: 对象名.属性名称=新设置的属性值 3 对象事件
1. 所谓事件,是由 vb 预先设置好的,能够被对象识别的动作,不同的对象能够 识别的事件也不一样。当时间有用户触发或由系统触发时,对象就会对该事件做出响应。 2. 响应某个时间后所执行的操作通过一段程序代码来实现,这样的一段程序代码叫做时间过程。 3. 事件过程的一般格式如下: Private sub 对象名称_事件名称() …….. 事件响应程序代码 ………. End sub “对象名称”指的是该对象的 name 属性, “事件名称”是由 vb 预先定义好的赋 予该对象的事件,而这个时间必须是对象所能识别的。 4对象方法
1. 在传统的程序设计中,过程和函数是编程语言的主要部件,而在面向对象程序设计中,引入了称为方法的特殊过程和函数。 2. 方法的操作与过程,函数的操作相同,但方法是特定对象的一部分,正如属性和事件是对象的一部分一样。其调用格式为: 对象名称.方法名称 3. 在调用方法时,可以省略对象名。在这种情况下,vb 所调用的方法作为当前 对象的方法,一般把当前窗体作为当前对象。 二. 对象属性设置
(一)激活属性窗口的几种方法: 1. 用鼠标单击属性窗口的任何部位 2. 执行“视图”菜单中的“属性窗口”命令。 3. 按 F4 键。 4. 点击工具栏上的“属性窗口”按钮 5. 按组合键 CTRL+PAGE UP 或者CTRL+PAGE DOWN (二)属性不同,设置新属性的方式也不一样,通常有一下 3 种: 1. 直接键入属性值 有些属性,如 caption,text 等都必须由用户键入,在建立对象(控件或窗体)时,vb 为其提供了默认值。为了提高程序的可读性,最好能赋予它一个有 确定意义的名称。这可以通过在属性窗口中键入新属性值来实现。 2. 选择输入,既通过下拉列表选择所需要的属性值 有些属性(例如:borderstylecontrolbox drawstyle drawmode 等)取 值的可能情况是有限的,可能只有两种,几种或几十种,对于这样的属性, 可以在下拉列表中选择所需要的属性值。 3. 利用对话框设置属性值 对于与图形、图标或字体有关的属性,设置框的右端会显示省略号,既 3 个 小点(…,单击这 3 个小点,屏幕上将显示一个对话框,可以利用这个对 …) 话框设置所需要的属性(装入图形、图标或设置字体) 。 第 二 节 窗体
一.窗体的结构与属性
窗体 (属性) Autoredraw (制动重画 也可以理解为刷新 ) Backcolor (背景颜色) Borderstyle (边框类型 ) Caption (标题) Controlbox (控制框 ) Enabled (设置控件可用或不可用) Font (字体设置 ) Forecolor (字体颜色设置) Maxbutton (窗口最大化可用设置) Minbutton (窗口最小化按钮可用设置) Top (控件离上边框的距离) Left (控件里左边框的距离) Picture( 添加图片 ) Visible (可见性 ) Windowstate (初始窗口正常或最小化或最大化设置) 二. 窗体事件
Click(单击事件) Dblclick(双击事件) Load (装入事件.程序运行自动运行的事件) Unload(卸载事件.关闭窗口运行的事件) Activate (活动事件) Deactivate ( 非活动事件 ) Paint(绘画)事件(当窗体移动或放大时覆盖了一个窗体所出发的) 第三节.控件
1.控件的分类
VB6。0控件可分为三类 一).标准控件,(也称内部控件),例如:文本框,命令按钮,图片框等,这些控件由VB6。0提供启支VB后,内部控件就出现在工具箱中,即不能添加也不能删除 二)。ActiveX控件,以前的版本中称为OLE控件,是扩展名为.ocx的独立文件,其中包括第三方提供的ActiveX控件 三)。可插入对像:因为这些对像能添加到工具箱中,所以可以把它们当控件使用 2. 启动VB后,工具箱列出的内部控件
1.pointer 指针(这不是一个控件,只有在选择pointer 后,猜能改变窗体中控件 的位置和大小) 2.picturebox 图片框 (用于显示图片,包括图片或文本, vb 把他们看成是图形,可以装入 位图(bitmap) ,图标(icon)以及vmf,jpg,gif 等各种图形格式的文件,或作为其他控件的容器(父控件) 3.label标签 (可以显示(输出)文本信息,但不 能输入文本 ) 4.extbox 文本框(可输入文本的显示区域,既可输入 也可输出文本,并可对文本进行 编辑) 5.frame 框架(组合相关的对象,将性质相同的控件集中在一起) 6.commandbutton命令按钮 (用于像 vb 应用程序发出指令,当 单击此按钮时, 可执行指定的操作) 7.checkbox复选框(又称检查框,用于多重选择) 8.optionbutton单选按钮(又称录音机按钮,用于表示单项 的开关状态 ) 9.combobox组合框 (为用户提供对列表的选择, 或者允 许用户在附加框内输入选择项, 它把 textbox(文本框)和 listbox (列表框)组合在一起,既可选择内容,又可进行编辑) 10.listbox 列表框(用于显示可供用户选择的固定列表) 11.hscrollbar 水平滚动条用于表示在一定范围内的数值选 择,常放在列表框或文本框中用来 浏览信息, 或用来设置数值输入) 12.vscrollbar 垂直滚动条(用于表示在一定范围内的数值选择,可以定位列表,作为输入设备或数度、数量的指示器) 13.timer 计时器(在给定的时刻触发某一事件) 14.drivelistbox驱动器列表框(显示当前系统中的驱动器列表) 15.dirlistbox目录列表框(显示当前驱动器磁盘上的目录 ) 16.filelistbox 文件列表框(显示当前目录中文件的列表) 17. shape 形状 (在面体中绘制矩形、园等几何图像) 18.line直线 (在窗体中画直线) 19.image图像框( 显示一个位图式图像,可作为背景或装饰的图像元素) 20.data数据( 用来访问数据库) 21.OLEcontainer OLE 容器(用于对象的连接与嵌入) 3. 控件值
在一般情况下,通过“控件.属性”的格式设置一个控件的属性值。 例如:text1.text=“visualbasic6.0 程序设计” 这里的“text1”是文本框控件名,而text 是文本框的属性,上面的程序把文 。 本框的 text 的属性值设置为“visual basic6.0 程序设计” 为了方便使用,vb 为每个控件控件规定了一个默认属性,在设置这样的 属性时,不必给出属性名,通常把该属性称为控件的值。控件值是一个控件 的最重要或最常用的属性,上面的例子可改写成: Text=“visual basic6.0 程序设计” Vb 部分控件的控件值 Checkbox(复选框-Value) Combobox(组合框-Text) Commonbutton(命令按钮- Value) Commondialog(通用对话框-Action) Dbcombo(数据约束组合框- Text) Data(数据-Caption) Dbgrid(数据约束网格-Text) Dblist(数据约束列表框-Text) Dirlisbox(目录列表框-Path) Drivelistbox(驱动器列表框-Drive) Filelistbox(文件列表框-Filename) Frame(框架- Caption) Rscrollbar(水平滚动条-Value) Image(图像框-Picture) Labal(标签-Caption) Line(直线-Visible) Listbox(列表框-Text) Optiongbutton(单选按钮-Value) Picturebox(图片框-Picture) Shape(形状-Shape) Textbox(文本框-Text) Timer(计时器-Enabled) Vscrollbar(垂直滚动条-value) 第三章. 简单程序设计
第一节 VB中的语句
一.Vb 语句的几点说明
1. 输入语句时,命令词、函数等可以不必分大小写. 2. 一行多个一句中用冒号(:)隔开 (:号作为分隔符) 3. 同一语句用多行时最后加一个下划线(注:下划线前面一定要加一个空格) 二.常用语句 1.赋值语句
(1) 用赋值语句可以把指定的值赋给某个变量或某个带有属性的对象, 其一般 格式为: [let]目标操作符=源操作符 (也称LET语句) (2) 说明 <1> 赋值语句兼有计算与赋值双重功能,它首先计算赋值号“源操作符”的值,然后把结果赋给赋值号左边的“目标操作符” <2> 在赋值语句中“=”是赋值号与数学上的等号的意义是不一样的 <3> “目标操作符”和“源操作符”的数据类型必须一致 <4> 赋值语句以关键字 let 开头,因此也称 let 语句,其中的关键字 let 可 以省略。 2.注释语句
(1) 为了提高程序的可读性,通常应在程序的适应位置加上必要的注释,vb 中注释是“rem”或一个瞥号“ ‘” 格式:rem 注释内容 或者 ‘注释内容 (2)说明: <1> 注释语句是非执行语句。 <2> 任何字符(包括中文字符)都可以放在注释中作为注释内容。 <3> 注释语句不能放在续行符的后面。 3.结束语句
(1)格式:end End 语句通常用来结束一个程序的执行,可以把它放在时间过程中。例如: Sub command1_click() End End sub (2)常用的地方 (End sub- 结束一个 sub 过程 ) (End function -结束一个function过程) (End if-结束一个if语句块) (End type -结束记录类型的定义 ) (Endselect- 结束情况语句 ) 第二节编写简单的 vb 应用程序
1. vb 开发应用程序的一般步骤
1. 建立可视用户界面 2. 设置可视界面特性 3. 编写事件驱动代码 2.编写 vb 应用程序
程序要求: 在屏幕上开辟一个窗口,窗口的下部有 3 个命令按钮,其 中左边按钮中标有“请单击此按钮”;中间按钮中标有“清屏”;右边 按钮中标有“程序结束” 、当用鼠标单击右边按钮时,屏幕上部的文本 ;如果单击中间按钮,则 框中显示“欢迎使用visualbasic6.0中文版”清除文本框中显示的内容;而如果单击右边的按钮则程序结束。 3.代码编辑器
1. 打开方法:“工具”菜单—>”选项”对话框—>”编辑器”选项卡 2. “编辑器”功能 第三节程序的保存、装入和运行
1.保存程序
1. vb 应用程序文件的保存类型 vb 应用程序可以用4中类型的文件保存,一类是单独的窗体文件,扩展名 为.frm,一类是公用的标准模块文件,扩展名为.bas,第三类是类模块文件扩展名名.cls,第四类是工程文件,这种文件由若干个窗体和模块组成,扩展名为.vbp 2. 文件的保存过程 在保存工程文件之前,应分别保存窗体文件和标准模块文件。 2. 程序的装入
一个应用程序包括 4 类文件,既窗体文件.标准模块文件.类模块文件和工程文 件,这 4 类文件都有自己的文件名,但只要装入工程文件,就可以自动把与工程有关的其他3 类文件装入内存 3.程序的运行
运行程序有两个目的,一是输入结果,二是发现错误,在 vb 中,程序可以用 解释方式执行,也可以生成可执行文件(.exe) 1. 解释运行 2. 生成可执行文件 第四节.常量和变量
第一节 数据类型
一.基本数据类型
1. 字符串(string) 1)在 vb 中,字符串是放在双引号内的若干个字符,其中长度为 0(既不含任何 字符)的字符串称为空串。 2)Vb 中字符串分为变长字符串和定长字符串, 其中变长字符串的长度是不确定 的,而定长字符串含有确定的字符,最大长度不超过65535. 2. 数值 Vb 的数值型数据分为整型和浮点型两类,其中整形数又分为长整数和整数,浮点数分为单精度浮点数和双精度浮点。 1)整形数 (1) 整数(integer) :两个字节取值范围:-32768——32767 (2) 长整数(long) :四个字节取值范围:-2147483648——2147483647 2)浮点数 (1) 单精度(single) :四个字节.用“E”表示。 例: 123.45E3=123.45*103 (2) 双精度(double) :八个字节,用(D)表示。 例: 123.45678D3=123.45678*103 3. 货币(Currency) 1)货币数据类型是为了表示钱款而设置的,该数据类型以 8 个字节存储, 精确到小数点后 4 位,在小数点后 4 位以后的数字将被舍去。 2)浮点数中的小数点是“浮动”的,既小数点可以出现在数的任何位置,而货币类型数据的小数点是固定的,因此称为定点数据类型。 4. 变体(Variant) 变体数据类型是一种可变数据类型,可以表示任何值,包括数值、字符串、日期和时间等。 5. 其他数据类型 1)字节(Byte) 字节实际上是一种数值类型,以 1 字节的无符号二进制数存储,其取值范围是 0——255 2)布尔(Boolean) 布尔型数据是一个逻辑值,用两个字节存储,它取两种值,既 True(真)或 False(假) 3)日期(Date) 日期存储为八个字节浮点值形式,日期文字须以符号“#”括起来。 二.用户定义的数据类型
1. 用户可以利用 type 语句定义自己的数据类型,其格式如下: type 数据类型名 数据类型元素名 as 类型名 数据类型元素名 as 类型名 ………… Endtype 2. 在使用 type 语句时,应注意一下几点: 1)记录类型中的元素可以是变长字符串,也可以是定长字符串。 2)记录类型的定义必须放在模块(包括标准模块和窗体模块)的声明部分,在使用记录类型之前,必须用 type 语句加以定义。在一般情况下,记录 类型在标准模块中定义,其变量可出现在工程的任何地方、当在标准模块中定义时,关键字 type 前可以有 public(默认)或 private ;而如果在 窗体模块中定义,则必须在前面加上关键字 private。 3)在记录类型中不能使用动态数据。 4)在随即文件操作当中,记录类型数据具有着重要作用。 三. 枚举类型 1. 所谓“枚举”是指将变量个值一一列举出来,变量的值只限于列举出来的范围内。 2. 枚举类型放在窗体模块、标准模块或公用模块的声明部分,通过 Enum 语句 来定义,格式如下: [public|private]Enum 类型名称 成员名[=常数表达式] 成员名[=常数表达式] …….. End enum 3. 说明 1)public:表示所定义的enum 类型在整个工程中都是可见的,在默认情况下, enum 类型被定义为 public。 Private:表示所定义的 enum 类型只在所声明的模块中是可见的。 2)在 enum 语句的格式中,“常数表达式”可以省略,在默认情况下,枚举中的 第一个常熟被初始化为 0,其后的常熟则初始化为比其前面的常数大 1 的值。 3)vb 将枚举航总的常数数值看作长整数。如果讲一个浮点数值赋给一个枚举中 的常数,vb 会将该数值取整为最接近的长整数。 4)当对一个枚举中的常数赋值时,可以使用另一个数值枚举中的常数数值。 第二节常量和变量
1.文字常量
1. 常量 Vb 中的常量分为两种,一种是文字常量,一种是符号常量。 1. 文字常量:vb 的文字常量分为两种,既字符串和数值。 1).字符串常量:字符串常量由字符组成,可以是除双引号和回车符之外的任何 ASCⅡ字符。 2).数值常量:数值常量共有 4 种表示方式,既整数、长整型数、货币型数和浮点数。 ① . 整型数:有 3 中形式,既十进制、十六进制和八进制。 十进制整数:0——9 组成,取值-32768——32767 十六进制数: 0——9 及 A——F 组成, 前面&H开头, 取值范围&H0——&HFFFF。 八进制整数:0——7 组成,前面&或&0开头,取值范围&00——&0177777。 ② .长整型数:也有三种形式。 十进制整数:0——9 组成,取值-32768——32767 十六进制数:0——9 及 A——F 组成,前面&H 开头,以&结尾,取值范围&H0 ——&HFFFF。 八进制整数:0——7 组成,前面&或&0开头,一&结尾,取值范围&00——&0177777 ③ . 货币型:也称定点数。 ④ . 浮点数:也称实数,分为单精度浮点数和双精度浮点数。浮点数由尾数、 指数符号和指数 3 部分组成。 3)。逻辑常量 逻辑常量只有二个,即:True 和 False 4).日期常量 日期常量可以写成下面的形式: #mm-dd-yy# 例如:#05-10-01# 注:类型说明符: % 整型 & 长整型 ! 单精度浮点型 # 双精度浮点型 $ 字符串型 2. 符号常量
1)在 vb 中,可以定义符号常量,用来代替数值或字符串,一般格式为: Const 常量名=表达式[,常量名=表达式]······ 2)在使用符号常量时,应注意一下几点: (1) 可以在常量名后面加上类型说明符,例如: ConstONE&=1 Const TWO&=1 (2) 当在程序中应用符号常量时,通常省略类型说明符。 (3) 类型说明符不是符号常量的一部分,定义符号常量后,在定义变量时要谨慎。 如:one&只是说当前是长整型,并不说常量是这四个字符 注意:在使用类型说明符声明常量时,常量名与类型说明符之间不能有空格 3.变量
1.命名规则 变量是一个名字,给变量命名时应遵循一下规则: 1)名字只能由字母、数字、汉字和下划线组成。 2)名字的第一个字符必须是英文字母,最后一个字符可以是类型说明符。 3)名字的有效字符是 255 个,有效字符为40个。 4)不能用 vb 的保留字(关键字)做变量名,但可以把保留字嵌入变量名中;同时变量名也不能是末尾带有类型说明符的保留字。 (保留字是关键字) 5)Vb 不区分变量名和其他名字中字母的大小写,习惯上,符号常量一般用大写字母定义。 6)变量名不能包含以下字符:+ - * / $ & % ! ? @ 以及小数点和逗号 7)变量名在变量有效范围内必须是唯一的,否则会出现“不前范围内的声明重复” 2.变量的类型和定义 1)用类型说明符来标识把类型说明符放在变量名的尾部,可以标识不同的变量类型。 注:类型说明符: % 整型 & 长整型 ! 单精度浮点型 # 双精度浮点型 @ 货币型 $ 字符串型 2)在定义变量时指定其类型可以用下面的格式定义变量 Declare 变量名 as 类型 这里的 declare 可以是 dim、public 或 static。As 是关键字。 “类型”可以是基本数据类型或用户定义类型。 dim:用于在标准模块、窗体模块中定义变量或数组。 (1)用 as string 可以定义变长字符串变量,也可以定义定长字符串变量,变长字符串变量本身的长度取决于赋给它的字符串常量的长度, 定长字符串变量的长度通过加上“+数值”来确定。 注意:当一个dim 语句中定义多个变量时,每个变量都用用 as 字句声明其类型,否则该变量被看做是变体类型。 在定长字符串中“*数值”表示的是字符串长度 (2) static : 用于在过程中定义静态变量及数组变量。 dim 不同, 与 如果用 static 定义了一个变量,则每次引用该变量时,其值会继续保留,而当引用 dim 定义的变量时,变量值会被重新设置(数值变量重新设置为 0,字符串变量被设置为空) 。通常把由 dim 定义的变量称为自动变量,而把由static 定义的变量称为静态变量。 (3) public:用来在标准模块中定义全局变量或数组。 3)用 deftype 语句定义 (1) 用 defype 语句可以在标准模块、窗体模块的声明部分定义变量,一般格式为: deftype 字母范围 (2) Type 是类型标志,可以是int(整型) 、lng(长整型) 、sng(单精度型) 、 dbl(双精度型) 、cur(货币型) 、str(字符串型) 、byte(字节型) 、bool (布尔型)、date(日期型) 、obj(对象型) 、var(变体型) 、 注意:def 和类型标志之间不要有空格。 “字母范围”用“字母-字母”形式表示。 4.记录类型变量
在一般情况下,记录类型应在标准模块中定义;如果在窗体模块中定义,则 必须在“type”关键字前面加上“private(私有)“ 第三节变量的作用域
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif局部变量与全局变量 Vb 应用程序由 3 种模块组成,既窗体模块、标准模块和内模块。窗体 模块包括事件过程、通用过程、声明部分;而标准模块由通用过程和声明部 分组成。
| | | | | | | | | | | | | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif | | |
| | | | | | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif | | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image005.gif | |
变量可分为 3 类:局部变量、模块变量和全局变量。模块变量包括窗 体模块和标准模块。 1.局部变量
在过程(时间过程或通用过程)内定义的变量叫做局部变量,其作用域是它所在的过程。 2.模块变量(窗体变量和标准模块变量)
1) 窗体变量可用于窗体内的所有过程,一个窗体可以含有若干个过程(时间过程或通用过程) 。 2) 在使用窗体层变量前, 必须先声明, 也就是说, 窗体变量是不能默认声明。其方法是,在程序代码窗口的“对象”框中选择“通用” ,并在“过程” 框中选择“声明” ,然后就可以在程序代码窗口中声明窗体层变量。 3) 标准模块中的模块变量和窗体变量定义方式相似。 4) 模块变量的声明部分用private 或 dim 声明。 3.全局变量
全局变量也称全程变量,其作用域最大,可以在工程的每个模块、每个过 程中使用、全局变量必须用 public 语句声明,只能在标准模块中声明,不 能在过程或窗体模块中声明。 4.变量的作用域
5.默认声明
1.如果没有类型说明符,vb把该变量指定为变体数据类型。 2.在事件过程中,变量没有定义默认定义为局部变量。 3.要求变量声明设置 “工具”—》 “选项”—》 “编辑器”—》“要求变量声明”—》 “确定” 这样设置以后,每次建立新文件时,vb 将把语句 option explocit(选择显示)自 动加到全局变量或模块及变量的声明部分,这种情况下,如果运行含有默认声明 的程序,vb 将显示一个信息框,提示“变量未定义” 。 也就是说,变量要先声明后使用 第四节.常用内部函数
类别 - 函数 - 功能 转换 Int(x) 求不大于自变量 x 的最大数 函数 Fix(x) 去掉一个浮点数的小数部分,保留其整数部分 Hex(x) 把一个十进制数转换成一个十六进制数 Oct(x) 把一个十进制数转换成一个八进制数 Asc(x) 返回字符串当中第一个字符的 ASCII 码 Chr(x) 把 x 的值转换成相对应的ASCII码对应的字符 Str(x) 把 x 的值转换为一个字符串 Cint(X) 把X的小数部分四舍五入,转换为一个整数 Ccor(x) 把 x 的值转换为货币类型,小数部分最多保 留4 位且 制动四舍五入 Cdbl(x) 把 x 的值转换为双精度 Clng(x) 把 x 的值的小数部分四舍五入转换为长整型数 Csng(x) 把 x 的值转换为单精度 Val(x) 把 x 的字符转换为数值 数学 Sin(x) 返回自变量 x 的正弦值 函数 Cos(x) 返回自变量 x 的余弦值 Tan(x) 返回自变量 x 的正切值 Atn(x) 返回自变量 x 的反正切值 Abs(x) 返回自变量 x 的绝对值 Sgn(x) 返回自变量 x 的符号,测试X的值是否为正数, 还是负数,或零 (1)当 x 为负数时,返回-1; (2)当 x 为 0 时,返回 0; (3)当 x 为正数时,返回 1 Sqr(x) 返回自变量 x 的平方根,(X 必须大于或等于 0) Exp(x) 返回以 e 为底,以 x 为指数的值,即求 e的 x 次方 日期 Day(now) 返回当前的日期 WeekDay(Now) 返回当前的星期 Month(Now) 返回当前的月份 Year(Now) 返回当前的年份 Hour(Now) 返回小时(0~23) Minute(Now) 返回分(0~59) Second(Now) 返回秒 (0~59) 随机函数 Rnd(x) 产生一个 0~1 之间的单精度随机数 第五节 字符串处理与字符串函数
1.vb 的字符处理机制 1. 一个西文字符用一个字节进行编码,中文字符则采用两个字节进行编码,一个西文字符的存储要占用一个字节的控件,而一个中文字符则要占用两个字 节。这种处理机制通常称为 ASCI 方式。其方式代码通常称为 ASCII 码,一 个中文字符相当于由两个 ASCII 字符构成。 2. 把西文字符和中文字符作为一个整体进行统一编码,每个字符均用两个字符进行编码,通常把这种处理方案称为“Unicode 方式” (统一编码方式) 。在 这种机制下,一个英文字符或一个汉子都看作一个字符,所占用的存储空间均为两个字节。 3. vb 提供了一个名为 strconv 的转换函数,格式如下: 新字符串=strconv(待转换字符串,转换格式) 合适字符串可以取多种值, ANSI 和 unicode 转换有关的值有两个,与 分别是: Vbunicode(值为 64)将 ANSI 编码格式的字符串转换为 unicode 格式 vbfromunicode(值为 128)将unicode 编码格式的字符串转换为 ANSI 格式。 4. 字符串由 unicode方式转换到 ansi 方式后,必须用加了“b”的字符串函数来处理。 2.字符串函数 1.删除空白字符函数 : 1)Ltrim$(字符串):去掉字符串左边的空白字符 2)Rtrim$(字符串) :去掉字符串右边的空白字符 3)Trim$(字符串):去掉字符串左右边的空白字符 2.字符串截取函数 1)left$(字符串,n) :返回“字符串”的前 n 个字符 2)mid$(字符串,m,n)返回“字符串”从第 m 个字符起后面 n 个字符 3)right$(字符串,n)返回“字符串”后面 n 个字符 3.字符串长度测试函数 格式:len(字符串) Len(变量名) 作用:len 函数可以测试字符串的长度,也可以测试变量的存储空间 4.tring 函数 格式:string(n,ASCII 码) String(n,字符串) 作用:返回由 n 个指定字符组成的字符串,第二个变量可以是 ASCII 码,也可 以是字符串,当为 ASCII 码时,返回由该 ASCII 码对应的 n 个字符;当为字符 串时,返回由该字符串第一个字符组成的 n 个字符的字符串。 5. space 函数 格式:space(n) 作用:返回 n 个空格 6. 字符串匹配函数 格式:instr(字符位置,字符串 1,字符串 2,n) 作用:该函数在“字符串 1”中查找“字符串 2” ,如果找到了,则返回“字符串 2”的第一个字符在“字符串 1”中的位置。 “字符串 1”的第一个字符位置为 1。 当 n 为 0 时区分大小写,n 为 1 时不区分大小写。 7. 字母大小写转换 格式: ucase(字符串) Lcase(字符串) 作用:ucase 函数把“字符串”中的小写字母转换为大写字母 Lcase 函数把“字符串”中的大写字母转换为小写字母 8. 插入字符串语句 格式: mid(字符串,位置,L)=子字符串 作用:该语句从“字符串”的“位置”开始的字符用“子字符串 代替。如果含有 L 自变量,则替换的内容是“子字符串”左部的 L 个字符。 “位 置”和 L 均为长整型数。 第五章.运算符与表达式
算术运算符
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif运算 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
在取余运算时,结果与被除数的正负相同, 关系运算符与逻辑运算符
1.关系运算符,
(关系运算符的返回值只能是Boolean值,即True或False) 2.逻辑运算符
(1).Not(非): 由真变假或由假变真,进行取反运算 (2).And(与): 对二个关系式的值进行比较,如果二个表达式的值均为True,结果才为True,否则为False 注:”1”可以代替所有的非零数,代表True “0”代表False (3).Or(或) 对二个表达式进行比较,其中一个为True,结果就为True,只有二个表达式的结果均为False时,才为False (4).Xor(异或) 如果二个表达式同时为True或同时为False,则结果为False,否则,结果为True (5).Eqr(等价) 如果二个表达式同时为True或同时为False,是结果为True (6).Imp(蕴含) 当第一个表达式为True,且第二个表达式为False时,结果为False,也就是其它情况下,都为True 3.表达式的执行顺序
1. 一个表达式可能含有多种运算,计算机按一定的顺序对表达式进行求值,一般顺序如下 : ①.首先进行函数运算 ②.接着进行算术运算,其次序为: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.gif 幂 取负 乘/浮点除 整除 取模 加/减 连接 ③.然后进行关系运算 ④.最后进行逻辑运算,顺序为 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.gifnot and or xor eqr imp 上述操作有一个例外,就是当幂和负号相连时,负民优先 2. 在书写表达式时,应注意以下几点 (1).乘号不能省略,也不能用”.”代替 (2).在一般情况下,不允许有二个运算符相连,应当用括号隔开 (3).括号可以改变运算顺序,在表达式中只能使用圆括号,不能使用方括号或花括号 (4).幂运算表示自乘 第六章.数据的输入输出
第一节,数据的输出-----Print方法
一.Print方法,
(在书写代码时,Print可以用?代替) 1. Print方法可以在窗体上显示文本字符串,和表达式的值,并可在其它图形对象或打印机上输出信息,一般格式为: [对象名称.]print[表达式][,|;] 2. 说明 (1.) 当输出多个表达式或字符串时,各表达式用分号隔开,(逗号,分号或空格)隔开,如果输出的各表达式用逗号隔开,则按标准输出格式,(分区输出格式)显示数据项,在这种情况下,以14个字符的位置,为单位,把一个输出行分为若干个区段,逗号后面的表达式在下一个区段输出,如果输项之间用分号或空格作为分隔符,则按紧凑输出格式输出数据 数值弄数据在输出时前后都有一个空格,也就是在第十五个字符开始输出 (2.) 当输出数值数据时,数值的字面有一个符号位,后面有一个空格,而字符串前后都没有空格 (3.) Print方法具有计算和输出功能,但没有赋值功能 (4.) Print方法具有自支换行功能,当使用Print语句未尾加上分号时,一个Print输出的内容将紧跟在当前Print所输出的信息的后面,如果使用逗号,则在同一行上跳到下一个显示区段显示一下个Print所输出的信息 二.与Print方法有关的函数
1. Tab函数 (1.)格式:Tab(n) (2.)说明,Tab函数把光标移动到由参数N指定的位置,从这个位置开始输出信息,国输出的内容放在Tab函数后面,用分号隔开 格式:PrintTab(n);”字符串” 3. spc函数 (1.) 格式:Spc(n) (2.) 说明:在Print的输出中,用spc函数可以跳过几个空格,也就是在输出的二个字符串,相隔多少个空格 格式:Print“字符串”;Spc(n);”字符串” (N是0-32767之间的整数) 4. 空格函数 Space Space函数与Spc函数的区别,就是Space函数可以用”+”连接,而Spc函数不可以 三.格式输出
1.用格式输出函数,Format$可以使数值或日期按指定的格式输出,一般格式为: Format$(数值表达式,”格式字符串”) 2. 该函数的功能是:按”格式字符串”指定的格式输出”数值表达式”的值,如果省略”格式字符串”则Format$函数的功能与Str$函数基本相同,唯一的差别是,当把正数转成字第符串时,Str函数在字符串前面留有一个空格,而Format函数不留空格 “#.0”意思在数字的位数不足于设置的位数时,在输出时”#”不补零,而”0”的后面或前面补”0”,而在数字的位数多于设置时,则会省略多余的 例: Print.Format(123.456,”###,####”) 输出为:123.456,当#为0时,输出:123.4560 四.其它方法和属性
Cls方法
(1.) 格式: [对象.]Cls (2.) 作用: Cls清除由Print方法显示的文本或图片框中显示的图形,并把光标移动对象的左上角(0.0),这里的对象可以是窗体或图片框,如果省略对象,则清除当前窗体内显示的内容 Move 方法
(1.) 格式: [对象.]Move[左边距离,上边距离,高度,宽度] (2.) 作用; Move方法用来移动窗体或控件,并可以改变其大小,其中”对象”可是是窗体及除计时器,菜单外的所有控件,如果省略”对象”表示要移动的是窗体
第二节 数据输入----Inputbox函数
一.格式:
为了输入数据,VB提供了Inputbox函数,Inputbox函数可以产生一个对话框,这个对话框作为输入数据的界面,等待用户输入数据,并返回所输出的内容.其格式为:
| | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif |
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image011.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image013.gif file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gifInputbox(“Pronpt”[,title][,default][,xpos][,ypos][,helpFile][,comtext])
| | | | | | | | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image015.gif | | | | | | | |
二.注意事项
1.在默认情况下,Inputbox函数的返回值是一个字符串,也就是说,如果没有事先声明返回变量的类型,则当把该函数的返回值赋给这个变量时,VB总是把它作为字符串来处理 2.如果在Inputbox函数时,弹出对话框后点”取消”按钮,则使当前的输入作废,在这种情况下,将返回一个空字符串 3.每执一次Inputbox函数,只能输入一个值,如果输入多个值,则必须多次调用Inputbox函数 第三节 Msgbox函数
一.Msgbox函数
1. 格式: Msgbox(Msg[,type][,title][,helpfile][,context] Type:需要把四部分取值的和放在Type位置上 Type参数的取值
常数 | | | | | | | | 显示“确定(ok)”及“取消(cancel)”按钮。 | | | 显示“终止(abort)”、“重试(retry)”及“忽略(ignore)”按钮。 | | | 显示“是(yes)”、“否(no)”及“取消(cancel)”按钮。 | | | | | | 显示“重试(retry)”及“取消(cancel)”按钮。 | | | | | | | | | | | | 显示Information Message图标。(I) | | | | | | | | | | | | | | | 应用程强序强制返回,应用程序一直被挂起,直到用户对消息框作出反应才继续工作 | | | 系统强制返回,全部应用程序被挂起,直到用户到消息框作出响应 |
Type返回值
二.Msgbox语句,
(Msgbox语句没有返回值) 1.格式:(与Msgbox函数的格式一致) Msgbox msg$[,type%][,title$][,helpfile,context] 第四节 字形
1.字体的类型和大小
1.字体的类型通过Fontname属性设置,一般形式为: [窗体.][控件.]Fontname[=”字体类型”] 2. 字体的大小通过Fontsize属性设置,一般形式为: [窗体.][控件.]Fontsize[=点数] 默认点数为:9 2.其它属性
1.粗体字由Fontbold,其格式为: [窗体.][控件.]Fontbold[=Boolean] 2.斜体字通过FontItalic属性设置,其格式为: [窗体.][控件.]FontItalic[=Boolean] 3.加删除线,格式为: [窗体.][控件.]Fontstrikethru[=Boolean] 4.加下划线,格式为: [窗体.][控件.]FontUnderline[=Boolean] 第七章.常用标准控件
第一节.文本控件
与文本有关的控件有二个,即标签和文本框,在标签中只能显示文本,不能进行编辑,而在文本框中,即可显示文本,也可输入文本 1.标签
1.标签主要用来显示文本信息,它所显示的内容只能用Caption属性来设置或修改,不能直接编辑,有时候,标签常用于来标注本身不具备有Caption属性的控件,例如:可以用标签为文本框,列表框,组合框等控件附加描述信息 2.标签的属性,事件和方法 1)标签的部分性性与窗体及其它控件相同,包括:Fotnbold,FontItalic,Fontname,FontSize,FontUnderline,Height,Left,Name,Top,Visible,width 2)其它属性 (1) Alitnment 该属性用来确定标签中的标题放置方式,可以设置为:0,1或2。其作用如下: 0——从标题的左边开始显示标题(默认) 1——标题靠右显示 2——标题居中显示 (2)Autosize:如果把该属性设置为True,则可根据Caption属性指定的标题自动调整大小,如果把该属性设置为False,则标签保持设计时的大小 (3)Boderstyle: 用来设置标签的边框,可以取二个值,即便0和1,在默认情况下,该属性值为0,标签无边框,如果需要为标签加上边框,则应改变该属性的设置为1 (4)Caption:用来在标签中显示文本,标签的文本只能用Caption属性来显示 (5)Backstyle: 该属性可取二个值,即0和1,当值为1时,标签将覆盖背景,如果为0,则标签为“透明”的,默认值为1 (6)Wordwrap: 该属性用来决定标签的标题的属性的显示方式,该属性取二种值,即True和False,默认为False,如果设置为True,则标签将在垂直方向变化大小以与标题文本相适应,水平方向的大小与原来的所画的标签相同,如果设置为False,则标签将在水平方向上扩展到标题中最长的一行,在垂直方向上显示标题的所有行,为了使Wordwrap起作用,应把Autosize属性设置为True 输入技巧:当有空格的情况下,在一定长度时自动换行 2.文本框
文本框是一个文本编辑区域,在设计阶段或运行期间,可以在这个区域中输入、编辑和显示文本,类似于一个简单的文本编辑器 文本框属性:
前面介绍的一些属性,也可以用于文本框,这些属性包括:Bordbled,Fontbold,FontItalic,Fontname,Fontsize,FontUnderline,Height,Left,Top,Visible,width,此外还具有如下属必 1)Maxlength:用来设置允许在文本框中输入的最大字符数,一般不需要更改默认设置0(不能超过32K) 2)Multiline:如果把该属性设置为False,则在文本框中只能输入单行文本,当属性设置为True时,可以使用多行文本,按Ctrl+Enter可以插入一个空行 3)Passwordchar:该属性用于中令输入,(通常用于密码的输入) 4)ScrollBars:该属性用来确定文本框中有没有滚动条,可以取四种值,0,1,2,3四个值,其含义为:0——文本框中没有滚动条;1——只有水平滚动条;2——只有垂直滚动条;3——同时具有水平和垂直滚动条。 注意:只有当Multiline属性设置为True时,才能用ScrollBars属性在文本框中设置滚动条,加入水平滚动条后,文本框自动换行功能将不起作用,只能通过回车换行 5)Sellength:当在文本框中选择文本时,该属性值会随着选择字符的多少而改变,也可以在程序代码中把该属性设置为一个整数值,由程序来改变选择。如果Sellength属性值为0,则表示示选项中任何字符, 6)Selstart:定义当前选择文本的起始位置,0表示先择的开始位置,在第一个字符之间;1表示从第二个字符之间开始选择,依次类推 7)Seltext:该属性含有当前所选择的文本字符串,如果没有先择文本,则该属性含有一个空字符串,如果在程序中设置Seltext属性,则用该值代替文本框中选中的文本 8)Text(控件值):该属性用来设置文本框中显示的内容 9)Locked(锁定):该属性用来指定文本框是否可被编辑,当设置为False(默认)时,可以编辑文本框中的内容(文本),当设置为False时,可滚动和选择控件的文本,但不能编辑。 文本框的事件和方法:
文本框支持Click(单击),DblClick(双击),同时支持Change(更改),GotFocus(得到焦点),LostFous(失去焦点)等事件。 1)Change:当用户向文本框中输入新信息时,或当程序把Text属性设置为新值时,从而改变文本框的Text属性时,将触发Change事件 2)Gotfous:当文本框具有输入焦点(即处于活动状态)时,键盘上输入的每个字符,都将在该文本框中显示出来 3)LostFous:当按下TAB键,使光标离开当前文本框或者用鼠标选择窗体中的其它控件时,将触发该事件 4)SetFocus:该方法是文本框中较常用的方法,格式如下: [对象.]SetFocus 该方法可以把输入光标移动到指定文本框中 第二节.图形控件
1.图片框和图象框
图片框比图象框更灵活,且适用于动态环境,而图象框比较适用于静态情况,即不需要再修改位图、图标、Windows元文件及其它格式的图形文件 1.与窗体相同的属性:Endbled,Name,Visible,Fontbold,FontItalic,Fontname,Fontsize,FontUnderline,Autoredraw(自动刷新),Heiht,Left,Top,Width 2.Currentx和Currenty属性:用来设置下一个输的水平或垂直的坐标,而二个属性只能在运行期间使用。格式如下: [对象.]Currentx[=x] [对象.]Currenty[=y] 3.Picture属性:该属性用于窗体、图片框和图象框,它可以通过属性窗口设置,用来把图形放入这些对象中,在窗体、图片框、图象框中,显示的图形以文件形式存放在磁盘上。VB支持以下格式的图形文件: ①.Bitmap(位图) ②.Icon(图标) ③.Metafile(图元) ④.JPGE(压缩格式) ⑤.JIF 4.Stretch属性:该属性用于图象框,用来自动调整图象框中图形内容的大小,它即可通过属性窗口设置,也可通过程序代码设置,该属性的取值为True或False,当其值为True时,将自动放大或缩小图象框中的图形,以与图象框的大小相适应。它与图片框的Autosize属性的区别: Autosize:是调整图片框的大小来适应图象。 Stretch:是调整图象的大小来适应图象框 2.图形文件的装入
1.图片框与图象框的区别: 图片框和图象框的用法基本相同,但有以下区别: 1)图片框是容器控件,在图片框中可以包含其它控件,而其它控件不能“属于”一个图象框 2)图片框可以通过Print方法接收文件,而图象框不能接收用Print方法输入的信息,每个图片框都有一个内部光标(不显示)用来指示一下个将被绘制点的位置,这个位置就是当前光标的坐标,通过CurrentX和CurrentY属性来记录 3)图象框比图片框占用的内存少,显示速度快 4)图象框是图片的大小来适应图象框,而图片框是图片框来适应图片 2.在设计阶段装入图形文件(允许把一个图片赋给另一个控件) 1)用属性窗口的Picture属性装入 2)在运行期间装入图形文件,格式为: [对象.]Picture=LoadPicture(“文件名”) “文件名”指:“图片路径(完整路径)”以及“图片名.扩展名”。“空串”清空图片 3.直线和形状
直线和形状的属性 直线和形状具有Name和Visible属性,形状还具有Height,Left,Top,Width等标准属性,直线具有X1,Y1和X2,Y2。分别表示直线两个端点的坐标。即(X1。Y1)和(X2。Y2)此外,直线和形状还具有以下属性 1)BorderColor:该属性用来设置形状和直线的颜色 2)Borderstyle(默认值为:1):该属性用来确定直线或形状的边界线的线型,可以取以下七种值:0——透明;1——实线;2——虚线;3——点线;4——点划线;5——双点划线;6——内实线。 当该属性值为0时,控件实际上是不可见的 3)BorderWidth:该属性用来指定直线的宽度或形状,边界线的宽度,该属性不能设置为0,默认以像素为单位 4)Backstyle:该属性用于形状控件,其设置为0或1,用来决定形状是否补指定的颜色填充(设置图形是否透明) 0——边界透明 1——边界用指定颜色填充 5)FillColor:该属性用来定义形状的内部颜色,使用时必须保证FillStyle属性值不为1 6)FillStyle:该属性的设置决定的形状控件内部的填充图案,可以取以能下8种值: 0——实心 1——透明 2——水平线 3——垂直线 4——向上对角线 5——向下对角线 6——交叉线 7——对角线 7)Shape:该属性用来确定所画形状的几何特性,它可以被设置为6种值: 0——矩形(默认) 1——正方形 2——椭圆形 3——圆形 4——四角圆化的矩形 5——四角圆化的正方形
第三节.按钮控件
属性和事件
1.Cancel属性:当一个命令按钮的Cancel属性被设置为True时,按Esc键与单击该按钮的作用相同,在一个窗体中,只允许一个命令按钮的Cancel属性被设置为True 2.Default:当一个命令按钮的Default属性被设置为True时,按回车键和单击该命令按钮的功能相同,在一个窗体中,只能有一个命令按钮的Default属性被设置为True 3.Style属性: 0——标准样式 1——图形格式,控件有图形样式显示,面命令按钮中不仅显示文本,而且可以显示图形 4.Picture属性:用该属性可以给命令按钮指定一个图形,为了使用这个属性,必须把Style属性设置为1(图形格式),否则Picture属性无效 5.DownPicture:该属性用来设置当按件被单击并处于活动状态时在控件中显示的图形,必须把Style属性设为1 6.DisabledPicture属性:该属性用来设置当命令按钮为禁用时按钮上的图形,必须把Style属性设为1 注:在设计阶段,可以从属性窗品中设置命令按钮的Picture、DownPicture、DisabledPicture属性,也可以通过LoadPicture函数装入图形 命令按钮不支持双击事件 第四节.复选框和单选框
复选框和单选框的属性和事件
以前介绍的大多数属性都可用于复选框和单选框按钮,抱括:Caption、Endbled、Fontbold、FontItalic、Fontname、Fontsize、Fontunderline、Height、Left、Top、Visible、Width和命令按钮一样,对复选框和单选按钮,可以使用Picture、DownPicture和DisabledPicture属性,此外还可以使用下列属性: 1.Value属性:(单选按钮有一个是必须要选项中的) Value属性用来表示复选框和单选框的状态,对于单选按钮来说,Value属性可以设置为Ture或False,当设置为Ture时,该单选按钮是“打开”的,按钮中心有一个圆点,如果设置为False时,赐教该单先按钮是“关闭”的,按钮中心是一个圆圈. 对于复选框来说,Value属性可以设置为0,1,2 0——表示没有选择该复选框 1——表示选中该复选框 2——表示复选框被禁止(程灰色状态) 2.Alignment属性:该属性用业设置复选框或单选框控件标题的对齐方式,它可以在设计时设置,也可以在运行期间设置 格式为:对象.Alignment[=值] 0——(默认)标题在控件的右侧显示 1——控件居右,标题在控件的左侧显示 3.Style属性 1)该属性用来指定复选框或单选按钮的显示方式以更改视觉效果: 0——(默认)标准方式 1——图形方式,控件用图形的样式显示,即复选框或单选扫钮的按钮与命令按钮类似 2)在使用Style属性时要注意以下几点 ① .Style是只读属性,只能在设计时使用 ② 当Style属必为1时,可以用Picture,DownPicture和DisabledPicture属性,分别设置不同的图标和位图,以表示示选定、选定和禁用 ③ Style属性被设置为不同值时,其外观也不一样,当该属性值为1时,控件的外观类似于命令按钮,但其作用与命令按钮不一样的 4.复选框和单选按钮可以接受Click事个,但通常不对复选框和单选按钮的Click事件进行处理,当单击复选框或单选按钮时,将自动改换其状态,一般不需要编写Click事件过程 第五节.列表框和组合框
列表框
1.属性
①Colunms:该属性用来确定列表框的列数,当该属性值设为0(默认)时,所有的项目成单列显示,如果该属性为大于0,则列表框呈多列显示的列数,列表框水平滚动 ②List: 该属性用来列出表项的内容,List属性保存了列表框中所有值的数组,可以通过下标访问数组中的值(下标值从0开始)其格式为: S$=[列表框.]List(下标) ③Listcount:该属性列出列表框中的有项数量,列表框中表项的排列从0开始,最后一项是的序号为Listcount-1。(用于测试有多少项) ④ListIndex:该属性的设置值是已选中的表项的位置,表项位置由索引值指定,第一项的索引值为0,第二项为1,依次类推,如果没有选中任何项,ListIndex的值将会设置为-1 ⑤MultiSelect:该属性用来设置一次可用的表项数,对于一个标准列表框,该属性的设置决定了用户是否可以在列表框中选择多个项目。MultiSelect可以设置成以下三个值: 0——每次只能选择一项 1——可以同时选择多个项,后续的选择不会取消前面所选择的项,可用鼠标或空格选择 2——可以选择指定范围的表项 其方法是:单击所要选择的第一项,然后按下Shift键不要松开,单击所要选择范围的最后一项,如果按住Ctrl键,并单击列表框中的项目,则可不连续的选择多个项目 如果选择多个表项,ListIndex和Text属性只表示最后一次的选择值,为了确定所选择的选项,必须检查Selected属性的每个元素 ⑥Selected:该属性实际上是一个数组,各个元素的值为True和False,每个元素与列表框的一项对应,当元素的值为True时,表明选择了该项,如果为False,则表示未选择,用下面的语句可以检查指定的表项是否被选择: 列表框.Selected(索引值)[=Boolen] 注:索引值即下标 ⑦Selcount:如果Multiselect属性设为1或2,则该属性用于读取所选项的数目。(选中多少项) ⑧Sorted :如果Sorted属性设为True,则表项按字母,数字升序排列,如果把它设为False(默认),则按添加列表框的先后次序排列 ⑨Style:这个属性用于确定控件的外观,只能在设计时确定,其值可以设置为0(标准样式)和1(复选框样式) ⑩Text:该属性的值为最后一次选中的表项文本,不能直接修改Text属性 2.列表框事件
列表框接受Click和DblClick事件,但有时不用编写Click事件过程代码,而是当单击一个命令按钮或发生DblClick事件时,读取Text属性 3.列表框的方法
1. AddItem:该方法用来在列表框中插入一行文本,其格式为: 列表框.AddItem项目字符串[,索引值] 注:当不写索引值时,默认为最后一项 2. Clear:该方法用来清除列表中全部内容 3. RemoveItem:该方法用来删除列表框中指定的项目,格式为: 列表框.RemoveItem.索引值 注:RemoveItem方法从列表框中删除以“索引值”为地址的项目,该方法每次只能删除一个项目 4. 实例讲解 组合框
组合框是组合列表框和文本框而成的控件,它兼有列表框和文本框的功能 1.组合框属性
列表框的属性基本可以用于组合框,此外它还有自己的属性 1)Style 这是组合框的一个重要属性,其取值为0,1,2。它决定了组合框的三种不同类型 0——下拉式组合框,可以输入文本或从下拉列表中选择表项 1——简单组合框,如果项目的总高度比组合框的高度大,则自动加上垂直滚动条 2——下拉式列表框 2)Text 该属性是用户所选择的项目的文本或直接从编辑区输入的文本 2.组合框事件
组合框事件所响应的事件依赖于Style属性,只有简单组合框才能接受DblClick事件,其它二个组合框可以接受Click事件和DropDown事件,对于下拉式组合框(Style=0)和简单组合框,可以在编辑区输入文本,当输入文本时,可以接受Change事件,一般情况下,用户先择项目后,只需要读取组合框的Text属性 当用户单击组合框中向下箭头时,将触发DropDown事件,该事件实际上对应于向下箭头的单击Click事件 3.组合框方法
前面介绍的Additem、Clear和RemoveItem方法也适用于组合框,其方法与在列框中相同 第六节.滚动条
1.滚动条属性
1)Max 滚动条所能表示的最大值<一般设为100> 2)Min 滚动条所能表示的最小值 3)Largechange 单击滚动条中滚动框前面或后面的部位时,Value增加或减小的增量值 4)smallChange 单击滚动条两端的箭头时,Value增加或减少的增量值 5)Value 该属性值表示滚动框在滚条上的当前位置 2.滚动条事件
与滚动条有关的事件主要是Scroll和Change事件,当在滚动条内拖动滚动框时会触发Scroll事件,而改变滚动框位置时触发Change事件,Scroll事件用于跟踪滚动条中的动态变化,Change事件,则用来得到滚动条的最后的值。 第七节.计时器
1.所谓的时间间隔,指的是计时器之间的时间间隔,它以毫秒为单位 2.计时器可以使用Name属性和Enabled属性,其重要的属性是Interval,最大时间间隔不超过65秒 3.计时器支持Timer事件,对于一个含有计时器控件的窗体,每经过一段由属性Interval指定的时间间隔,就产生一个Timer事件 第八节.框架
1.框架是一个容器控件,用于将屏幕上的对象分组,不同的对象可以放在一个框架中,框架提供了视觉上的区分和总体的激活和屏蔽特性 2.框架常用的事件是Click和DblClick,它不接受用户输入,不能显示文本和图形,也不能与图形相连 第九节.焦点与TAB顺序
焦点 1. 用下面的方法,可以设置一个对象的焦点 ① 在运行时单击该对象 ② 在运行时用快捷键选择该对象 ③ 在程序代码中使用SetFocus方法 2. 焦点只能移动到可视的或控件上,因此只有当一个对象的Enabled和Visible属性均为True时,它才能收到焦点 3. 并不是所有的控件都可以收到焦点,某些控件例如:框架、标签、菜单、直线、形状、图象框和计时器都不能接收焦点 4. 可以通过SetFocus方法设置焦点,但应注意的是,由于在窗体上的Load事件完成前,窗体或窗体上的控件是不可见的,因此不能直接在Form_Load事件过程中用Setfocus方法把焦点移到正在被装入窗体或窗体上的控件 1.Tab顺序 1.可以获得焦点的空间,都有一种“TabStop”属性,有它可以控制焦点和移动,该属性的默认值为True,如果把它设置为False时,用Tab移动焦点时,会跳过该控件 2.在设计阶段,可以通过属性窗口中的TabIndex属性来改变Tab顺序 3.在建立控件时,对于标签的Caption属性,键入时可以在其前面加一个“&”,“&”符号只在属性窗口出现,不会在窗体的标签控件上显示出来,但它使得该标签的标题的第一个字母下面有一条下划线。 4.在一组单选按钮中只有一个Tab站,即被选中的单选项按钮的TabStop属性自动设为True,而其它的单选项按钮的Tabstop被设置为False 注:“&”的作用就是设置快捷键,该控件的快捷键是“Alt+有下划线的字母” 第八章.VB控制结构
第一节.选择控制结构
条件语句也称IF语句,一种是单行结构,一种是块结构 一.单行结构条件语句 单行条件语句比较较简单,其格式如下: IF 条件 Then Then部分[Else Else部分] 如果“条件”为True,则执行“Then部分”否则执行“Else部分” 二.块结构的条件语句 1.块结构条件语句与C.Ada等语言中条件语句类似 一般格式如下: IF 条件1 Then 语句块1 ElseIf 条件2 Then 语句块2 ElseIf 条件3 Then 语句块3 …… Else 语句块N End If 2.说明 ① 当条件是数值表达式时,非零值表示True,0值表示False,而当条件是关系表达式或逻辑表达式时,-1表示True,0表示False ② 块结构与单行结构语句的主要区别,就是看Then后面的语句,(注释语句除外)是否和Then在同一行上,如果在同一行上,则为单行结构,否则为块结构,对块结构,必须以End If 结束,单行结构没有End If ③ 在块结构的条件语句中,ElseIf子句的数量没有限制,可以根据需要加入任意多个ElseIf子句 ④ 块结构条件语句中的ElseI子句和Else子句都是可选的,如果省略这些子句,则块形式的条件语句简化为: If 条件 Then 语句块 EndIf ⑤ 在某些情况下,可能有多个条件为True,但也只能执行一个语句块 ⑥ 块形式的条件语句可以嵌套 三.IIF函数 IIf函数的格式如下: Result=IIf(条件,True部分,False部分) 说明: ①“Result”是函数的返回值 ②“条件”是一个逻辑表达式,当“条件”为True时,IIF函数返回True部分,而当“条件”为False时,则返回“False部分” ③“True部分”和“False部分”可以是表达式,变量或其它函数 注意:IIF函数中的三个参数都不能省略,而且要求“True部分”“False部分”及结果变量的类型一致 注:如果“False部分”存在被0除的问题,则程序会出错(即使条件为True) 第二节.多分支控制结构
一.格式: 在VB中多分支控制结构程序通过情况语句来实现,情况语句也称为Select Case语句或Case语句,在一组相互独立的语句序列中挑选要执行的语句序列。一般格式为: Select case 测试表达式 Case表达式列表1 语句块1 Case表达式列表2 语句块2 …… Caseelse 语句块N EndSelect 二.说明 1. 情况语句的执行过程是:=先对“测试表达式”求值,然后测试该值与哪一个Case语句中的“表达式列表”相匹配,如果找到了,则执行与该Case子句有关的语句块,并把控制结构移到到End Select后面的语句 2. “表达式列表”注意事项: ① 关键字TO用来指定一个范围,在这种情况下,必须把比较小的值写在前面,字符串常量范围必须按字母顺序写出 ② 如果使用关键字IS,则只能用关系运算符。 注意:当用关键字IS定义条件时,只能是简单的条件,能使用罗辑运算符将两个或多个简单的条件组合在一起 ③ 在一个Select Case 语句中,3种形式可以混用 3. SelectCase 语句与IF……Then……Else语句块功能类似,一般来说,可以使用块形式条件的地方,也可以使用情况语句 4. 如果同一个取值的范围在多个Case子句中出现,则只执行符合要求的第一个Case子句的语句块 5. 在情况语句中,Case子句的顺序对执行结果没有影响,但应注意的是,Case Else子句必须放在所有的Case子句之后,如果在Select Case结构中的任何一个Case子句都没有与测试表达式相匹配的值,而且也没有Case Else子句,则不执行任何操作 6. 在不同的Case语句中,指定的条件和相应的操作不能相互矛盾 第三节.For循环控制结构 VB提供了3种不同风格的循环结构,包括计数循环,当循环和DO循环 一.计数循环For格式: For循环变量=初值 TO 终值 [Step 步长] [循环体] [ExitFor] Next[循环变量][,循环变量]…… 二.说明: 1.格式中有多个变量,这些参数的含义如下: ① .循环变量:也称“循环控制变量”、“控制变量”或“循环计数器”它是一个数值变量,但不能是下标变量或记录变量 ② .步长不可为0。如果步长为1,则可省略不写 ③ .格式中的初值,终值,步长均为数值表达式。但其值不一定是整数,可是以实数,VB自动调整 2.For循环语句的执行过程是:首先把“初值”赋给“循环变量”,接着检查循环变的值是否超过终值,如果超过就停止执行“循环体”跳出循环,执行Next后面的语句,否则执行一次“循环体”然后把“循环变量+步长”的值赋给“循环变量”重复上述过程 这里所说的“超过”有两种含义,即大于或小于,当步长为正值时,检查“循环变量”是否大于终值,当步长为负值时,判断“循环变量”的值是否小于终值 3.在VB中For……Next循环遵循“先检查,后执行”的原则,即先检查循环变量是否超过终值,然后决定是否执行循环体,因此,在下列情况下,循环体将不会被执行: 当初值等于终值时,不管步长是正数还是负数,均执行一次循环体 4.For语句和Next语句必须成对出现,不能单独使用,且For语句必须在Next语句之前 5.循环次数由初值、终值和步长3个因素确定,计算公式为: 循环次数=Int(终值-初值)/步长+1 6.For……next 语句可以嵌套使用 7.在VB中,循环控制值不但可以是整数还可以是双精度数和单精度数 8.循环变量用来控制循环的过程,在循环体内可以被引用和赋值,当循环变量在循环体内被引用时,称为“操作变量”而不被引用的循环变量叫作“形式变量”,如果用循环变量作为“操作变量”当循环体内循环变量出现的次数较多的时候,会影响程序的清晰性 9.一般情况下,For……Next正常结束,即循环变量达到终值,但有些情况下,可能需要在循环变量到达终值前退出循环,这可以通过Exit For 语句,并且可以出现在循环体内的任何位置,此外,用Exit For只能退出当前循环,即退出它所在的内层循环 10. For……Next中的“循环体”是可选项项,当该项缺省时For ……next执行“空循环”利用这一特性,可以暂停程序的执行,当程序暂停时间很短,或者对时间没有严格要求时,用For……Next循环来实现暂停是一个好方法,不过对不同的计算机,暂停的时间也不一样,用后面介绍的While—Wend循环和DO—Loop循环也可以实现暂停 第四节.当循环控制结构
一. 当循环控制结构 VB中,当循环的控制结构如下: Wile 条件 [语句块] Wend “条件“为一布尔表达式,当循环的功能是:当给定“条件”为True时,执行循环体中的“语句块” 二. 当循环与For循环的区别 For循环(计数循环)对循环执行指定的次数,当循环则是在给定条件为True时,重复一语句序列(循环体)的执行 注意:当循环要有语句来结束循环的条件 三. 当循环的注意事项 1. While循环语句先将对条件进行测试,然后决定是否执行循环体,只有在“条件”为True时,才执行循环,如果条件开始就不成立,则一次循环也不执行 2. 如果条件总是成成立,则不停的执行循环体 3. 开始时,对条件进行测试,如果成立,则执行循环体执行完一次循环体后,再测试条件,如果成立,则继续执行,直到条件不成立为止,也就是说,当条件最初出现False时,或以上面某种方式执行循环体,使得条件的求值最终出现False时,当循环才被终止,在正常使用的“当循环”中,循环体的执行应当能使条件改变,否则会出现死循环,这是程序设计中容易出现的严得错误,应当尽力避免 4. 当循环可以嵌套,层数没限制,每个Wend和最近的While相匹配 第五节.DO循环控制结构 一. DO循环的格式 1. Do [语句块] [EixtDo] Loop[While|Until循环体] While循环与DO……Loop while|Until循环的区别: While循环是先判断后执行,而DO……Loop While|Until循环是先执行,后判断,也就是说,当条件不成立时,最少会执行一次循环体
| | | | | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image017.gif | | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image018.gif | |
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image019.gif
| | | | | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image020.gif | | | | |
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image021.gif file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image022.gif file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image023.gif Yes No
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image024.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image025.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image026.gif No Yes
2. Do[While|Until 循环体] [语句块] [ExitDo] Loop 这种格式的DoWhile……与While循环功能一样 二. 说明 1. Do 、Loop及While、Until都是关键字。“语句块”是需要重复执行的一个或多个语句,即循环体。“循环条件”是一个逻辑条件 2. While是条件为True时执行循环,而Until则是在条件变为True之前重复 3. 在格式(1)中,While和Until放在循环体的未尾,分别叫做Do…..Loop While和Do…..Loop Until循环 4. 在格式(2)中,While和Until放在循环的开头,即紧跟在关键字DO之后,组成二循环,分别叫做Do While….Loop和DO until…..Loop循环 5. Do while|Until…..Loop循环先判断条件,然后在条件满足的时才执行循环体,否则不执行、 6. 和While循环一样,如果条件总是成立,Do循环也可能陷入死循环,在这种情况下,可以用Exit Do语句跳出循环,一个DO循环可以有一个或多个Exit Do语句,并且,Exit Do可以出现在循环体的任意地方,不循环到语句时,结束循环,并把控制转移到Do循环后面的语句,用Exit Do语句只能从它所在循环中退出 7. Do循环可以嵌套,其规则与For…..Next循环相同 第六节.多重循环
通常把循环体内不含有循环语句的循环叫单层循环,而把循环体内含有循环语句的循环叫多重循环
第九章.数组
第一节.数组的定义
在VB中,把一组具有相同名字,不同下标的变量称为数组,其一般格式如下: S(N) 说明:S为数组名,N为下标(一般情况下,下标从零开始) 一. 数组的定义 在VB中可以用四个语句来定义数组,这四个语句格式相同,但适用范围不同 ① .Dim 用来在窗体模块中或标准模块中,定义窗体或标准模块数组,也可用于过程 ② 。ReDim 用在过程中(主要用于定义动态数组) ③ 。Static 用在过程中(主要用于定义静态数组) ④ 。Public 用在标准模块中,定义全局数组 二. 定义数组的格式 在定义数组时,VB提供了两种格式: 第一种格式 1. 第一种格式与传统的数组定义相同,对于数组的每一维,只要给出下标的上界,即可以使用下标的最大值。 对于一维数组格式如下: Dim 数组名(下标上界)AS类型名称 对于二维数组格式如下: Dim数组名(第一维下标上界,第二维下标上界)AS 类型名称 2. 说明 ① .如果省略“AS类型名称”则定义的数组为了Variant类型 ② 。数组必须先定义后使用 ③ 。当用Dim语句定义数组时,该语句把数值数组中的全部元素都初使化为“0”,而把字符串数组的全部元素都初使化为“空字符串” ④ 一般情况下,下标的下界默认为0,如果希望从1开始,可以通过Option Base语句来设置,其格式为: Option Base N OptionBase 语句用来指定数组下标的下界。只能是0或1,Option Base 语句只能出现在窗体层或模块层,不能出现在过程中,并且必须放在数组定义之前,此外,如果定义的是多维数组,则下标的默认下界对每一维都有效 第二种格式
1. 用第一种格式定义的数组,其下标的下界只能是0或1,而如晨使用第二种格式,则可要据需要指定数组的下界。其格式如下: Dim 数组名([下界]TO[上界],[下界]TO[上界]……)AS 类型说明 2. 下标的范围可以是-32767-32768 三. 定义数组时应注意的事项 1. 数组名的命名规则与变量名相同,在命名时应尽可能有一定的含义,做到“见名知意”(名称的唯一性) 2. 在同一过程中,数组名不能与变量名相同,否则会出错 3. 在定义数组时,每一维的元素个数必须是常数,不能是常量或表达式 4. 数组类型通常在AS语句中给出,如果省略了AS语句,则定义的是默认数组。此外也可以通过类型说明符来指定数组的类型 5. 测试数组上界值和下界值的两个函数: L Bound(数组名[,维]) (测下界) UBound(数组名[,维]) (测上界) 这两个函数分别返回一个数组中指定维的下界与上界,其中“数组”是一个数组名,“维”是要测试的维,LBound函数返回“数组”某一“维”的下界值,而UBound函数返回“数组”某一维的上界值 四. 默认数组 在VB中允许定义默认数组,所谓的默认数组,就是据类型为Variant 的数组 默认数组可以说是一个混合数组 第二节.静态数组与动态数组 根据内存区开辟时机的不同,可以把数组分为静态数组和动态数组,通常把需要在编译时开辟内存区的数组叫静态数组,而把需要在运行时开辟内存区的数组叫动态数组 一. 动态数组的定义 1. 动态数组以变量作为下标值,在程序运行中完成定义,通常分为二步:首先在窗体层、标准模块或过程中用Dim和Public声明一个没有下标的数组(括号不能省略),然后在过程中用ReDim语句定义带下标的数组 2. ReDim语句的格式为: Redim[Preserve]变量(下标)AS 类型 该语句用来重新定义动态数组,按定义的上下界重新分配存储单元,并可为定义的变量改变存储类型,当重新分配动态数组时,数组中的内容将被清除,但如果在ReDim语句中使用了Preserve选择项,则不清除数组内容 3. ReDim只能出现在事件过程中,用它定义的数组是一个临时数组,即在执行数组所在的过程时为数组开辟一定的内存空间,当过程结束时,这部分内存即被释放 4. 说明: ① .在窗体层或模块层定义的动态数组只有类型,没有指定维数,其维数在ReDim语句中给出,最多不能超过8维 ② 。用ReDim语句定义的数组最多可达到60维(直接定义才可以达到60维) ③ 。可以多次用ReDim语句定义同一个数组,随时修改数组中元素的个数,而在事件过程中,开始时用ReDim定义的数组,只能改变元素的个数,不能改变数级的维数,也不能用ReDim改变数组的类型 二. 数组的清除和重定义 1. 数组一经定义,便在内存中分配了相应的存储空间,其大小是能改变的,在一个过程中,同一个数组只能定义一次,有时候可能需要清除数组的内容,或对数组重新定义,这可以用Erase语句来实现,其格式为: Erase. 数组名[,数组名]…… Erase语句用来重新初使化静态数组成部分元素,或者释放动态组的存储空间。(释放动态数组时整体都不存在) 2. 说明 ① 。当把Erase语句用于静态数组时,如果这个数组是数值数组,则把数组中所有的元素置为0,如果是字符串数组,则把所有元素置为空字符串 ② 金文教程第184节暂时空缺 第三节.数组的基本操作
一. 数组元素的输入,输出和复制 1. 数组的引用 数组的引用通常是指对数组元素的引用,在引用数组时,应注意以下几点: ① 。在引用数组元素时,数组名、类型、和维数必须与定义数组时一致 ② 。如果建立的是二维数组或多维数组,必须给出二个或个下标 ③ 。引用数组元素时,其下标值应在建立数组时所指定的范围内 2. 数组元素的输入 数组元素一般通过For循环语句及Inputbox函数输入 3. 数组元素的输出 数组元素的输出可以用Print方法来实现 4. 数组元素的复制 单个数组元素可以像简单变量一样从一个数组复制到另一个数组 5. 冒泡排序 二二对比的原理,把比较大的一个赋值给变量,利用变量跟未对比过的数字进行对比。对于N个数进行排序,只要比较N-1次 二. For Each….Next语句 1. For Each…..Next 语句类似于For….Next语句,两者都用来执行指定重复次数的一组操作,但For Each…..Next语句专门用于“数组”或对象“集合”,其一般格式为: For Each element In group
[statements]
[Exit For]
[statements] Next [element] | 必要参数。用来遍历集合或数组中所有元素的[url=]变量[/url]。对于集合来说,element 可能是一个 [url=]Variant[/url] 变量、一个通用对象变量或任何特殊对象变量。对于数组而言,element只能是一个 Variant 变量。 | | 必要参数。对象集合或数组的名称([url=]用户定义类型[/url]的数组除外)。数组名后面没有括号 | | 可选参数,针对 group 中的每一项执行的一条或多条语句。 |
2. 说明 1.如果集合中至少有一个元素,就会进入 For...Each 块执行。一旦进入循环,便先针对 group 中第一个元素执行循环中的所有语句。如果 group中还有其它的元素,则会针对它们执行循环中的语句,当group 中的所有元素都执行完了,便会退出循环,然后从 Next 语句之后的语句继续执行。 2.在循环中可以在任何位置放置任意个 Exit For 语句,随时退出循环。Exit For经常在条件判断之后使用,例如If….Then,并将控制权转移到紧接在 Next 之后的语句。 3.可以将一个 For...Each...Next 循环放在另一个之中来组成嵌套式 For...Each...Next 循环。但是每个循环的 element必须是唯一的。 注意: 如果省略 Next 语句中的element,就像 element存在时一样执行。如果 Next 语句在它相对应的 For 语句之前出现,则会产生错误。 4.不能在 For...Each...Next 语句中使用用户自定义类型数组,因为 Variant 不能包含用户自定义类型。
第四节.数组的初使化
1. 所谓的数组的初使化,就是给数组的各元素赋初值 2. VB提供了Array函数,利用该函数,可以使数组在程序运行之前初使化,得到初值 3. Array函数用来给数组元至少赋初值,即把一个数据集导入某个数组,其格式为: 数组变量名=Array(数组元素值) 4. 数组变量不能是具体的数据类型,只能是变体类型 5. 数组变量可以能过以下三种方式定义: ① .显示定义为Variant变量 ② .在定义时不指明类型 ③ .不定义而直接接使用 6. Array函数只适用于一维数组,即只对一维数组进行初使化,不能对二维或多维数组进行初使化。 第五节.控件数组
一. 基本概念 1. 控件数组是由一组相同类型的控件组成,这些控件共用一个相同的控件名字,具有同样的属性设置。 2. 控件数组的每一个元素都有一个与之相关的联的下标,或称索引,下标值由Index属性决定 3. 在设计阶段,可以改变控件数组元素的Index属性,但不能在程序运行时改变 二. 建立控件数组 1. 建立控件数组的两种方法 ① 。复制粘贴 ② 。修改Name属性 2. 控件数组建立后,只要改变一个控件的Name属性,并把Index属性设为空(不是0),就能把该控件从控件数组中删除 第十章.过程
第一节.建立Sub过程
由Sub….end Sub定义的子程序叫做子程序过程或Sub过程,而把Function…..End Function定义的函数叫函数过程或Function过程 一. 建立Sub过程 1. 定义Sub过程 通用的Sub过程结构与事件过程类似,一般格式如下: [Static][Private][Public] Sub 过程名 [(参数列表)] 语句块 Exit Sub [语句块] End Sub 2. 说明 1) Sub过程以Sub开头,以End Sub结束,在Sub和End Sub之间是描述过程操作的语句块,称“过程体”或“子程序体”格式中各参数的含义如下: ① .Static:如果使用了Static,则过程中的局部变量就是Static类型的,即在每次调用时,局部变量的值保持不变 ② 。Private表示Sub过程是私有过程 ③ 。Public表示Sub过程是公有过程,可用在程序的任何地方调用 ④ 。过程名是一个长度不超过255个字符的变量名,在同一个模块中,同一个变量名不能即用作Sub过程名又用作Function过程名 ⑤ 参数列表:含有在调用时传送给该过程的简单变量名或数组名,各名字之间用逗号隔开,“参数列表”指明了调用时传递给过程的参数的类型和个数,每个参数的格式为: [Byval] 变量名 [()] [As 数据类型] 这里的“变量名”是一个合法的VB变量名或数组名。如果是数组,则要在数组名后面加一对括号 如果省略了“AS数据类型”则默认为“Variant” 如果加上“Byval”则表明该参数是传值。没有加“Byval”或者加Byref的参数称为“引用” 不能用定长字符串变量或定长字符串数组作为形式参数,不过可在调用语句中用简单定长字符串变量作为“实际参数” 2) End Sub标志着Sub过程结束,为了能正确运行,每个Sub过程都必须有一个End Sub子句,当程序执行到End Sub时,将退出该过程,并立即返回到调用语句下面的语句,此外在过程体内可以用一个或多个Exit Sub语句从过程中退出 3) Sub过程不能嵌套 4) 建立Sub过程可以在标准模块中建立,也可以在窗体模块中建立。建立的方法有二种: ① .手动输入 ② 。通过工具菜单里的添加过程添加 二. 调用Sub过程 调用引起过程的执行,也就是说,要执行一个代码,必须要调用该过程。Sub过程的调用有二种方式,一种是把过程的名字放到一个Call语句中,一种是过程名作为语句来使用 1. 用Call语句调用Sub过程 格式:Call 过程名 (实际参数) 用Call语句调用一个过程时,如果过程本身没有参数则“实际参数”和括号可以省略,否则应给出相应的参数,并把参数放在括号中。 2. 把过程名作为一个语句来使用 在调用Sub过程时,如果省略关键字Call,就成为调用Sub的第二种方式,与第一种相比,它有二点不同: ① 。去掉关键字Call ② 。去掉“实际参数”的括号 三. 通用过程和事件过程 1. 事件过程也是Sub过程,但它是一种特殊的Sub过程,它附加窗体和控件上,一个控件的事件过程由控件的实际名字、下划线和事件名组成,而窗体事件过程由“Form”、下划线和事件名组成,也就是说,窗体的事年过程不能由用户任意定义,而系统指定 控件事件过程一般格式为: [Private|Public] Sub 控件名_事件名(参数表) 语句组 End Sub 窗体事件过程的一般格式为: [Private|Public] Sub Form_事件名(参数表) 语句组 End Sub 可以看出,除了名字外,控件事件过程和窗体事件过程格式基本上是一样的,在在大多数情况下,通常是事件过程中调用通用过程,实际上由于事件过程也是过程(Sub过程),因此也可以被其它过程调用(包括事件过程和通用过程) 2. 通用过程也可以放在标准模块中,也可以和在窗体模块中,而事件过程只能放在窗体模块中,不同模块中的过程(包括事件过程和通用过程)可以相互调用,当过程名唯一时,可以直接通过过程名调用,如果二个或二个以上的标准模块中含有相同的过程名,则在调用时必须用模块名限定,其一般格式为: 模块名.过程名(参数表) 第二节.Function过程
Sub过程它不直接返回值,可以作独立的基本语句使用,而Function过程要一个返回值,通常出常在表达式中。 一. 建立Function过程 1. Function过程又称函数过程,Function过程定义的格式如下: [Static][Private][Public] Function过程名[(参数列表)]AS类型 [语句块] [过程名=表达式] [Exit Function] [语句块] EndFunction 2. 说明 1)。Function过程以Function开头,以End Function结束,其它参数含义与Sub过程相同 2)。调用Sub过程相当于执行一个语句,而调用一个Function过程要返回一个值,因此可以像内部函数一样在表达式中使用。 如果在Function过程中省略“过程名=表达式”则该过程返回一个默认值——数值函数返回0值,字符串函数返回空字符串 3)。Function过程不能嵌套 二. 调用Function过程 Function过程的调用可以像VB内部函数一样来调用 第三节.参数传递
在VB当中,通常把形式参数叫做“形参”,而把实际参数叫做“自变量”但是为了和其它含义混淆,所以把形式参数叫“形参”,实际参数叫“实参” 一. 形参和实参 形参是在Sub 、Function过程的定义中出现的变量名,实参则是在调用Sub或Function过程时传递给Sub、Function过程的常数、变量、表达式或数组,在VB中可能通过两种方式传送参数,即按位置传送和指明传送。 1. 按位置传送 ① 。实际参数的次序必须和形式参数的次序相匹配,它们的位置、次序必须一致。 ② 。形参表与实参表中对应变量的名字不必相同,但它所包含的参数的个数必须相同,实参与相应形参的类型必须相同。 ③ 。形式参数表中各个变量之间用逗号隔开,表中的变量可是除定长字符串之外的合法变量名,也可以是数组名。 2. 指明传送 所谓指明传送,就是显示的指出与形参结合的实参,把形参用“:=”与实参连接起来,各位置传递方式不同,指导名传送不受位置次序的限制。 二. 引用 参数通过两种方式传送,即传地址和传值,其中传地址习惯上称为引用,引用方式通过关键字“Byref”来实现 三. 传值 传值就是通过值传送实际参数,在VB中,传值方式通过并键字“Byval”来实现(没有Byval默认为Byref) 四. 数组参数的传递 1. 在VB中允许把数组做为实参传送到过程中 2. 用数组作为过程参数时,应在数组名后面加一对括号,以免与普通变量相混淆 3. 当用数组作为过程参数时,使用的是“传地址”方式 4. 除了遵守参数传递的一般规则外,还应注意以下几点 ① .为了把一个数组的全部元素传递人一个过程,应将数组名分别放入实参表和形参表中,并略去数组的上,下界,但括号不能省略 ② 如果不需要把整个数组传送给通用过程,可以只传送指定的单个元素,这需要在数组名后面的括号中写上指定元素的下标 ③ LBound函数可以求出数组的最小标值,而用UBound函数可以求出数组的最大下标值。 第四节.可选参数与可变参数 一. 可选参数 1. 为了定义带可选参数的过程,必须在参数表中使用关键字Optional,并在过程体中通过Ismissing函数测试,调用时是否传送可选参数 2. 可选参数过程通过Optional指定可选的参数,其类型必须是Variant,通过Ismissing函数测试是否向可先参数传送实参值,Ismissing函数有一个参数,它就是由Optional指定的形参的名字,其返回值是Boolean类型,在调用过程时,如果没有向可选参数传送实参,则ISmissing函数返回True,否则返回False(可以利用逻辑运算符 Not来求值,例如:IF Not 数组名 Then ….next 注意:这里的数组名没括号) 二. 可变参数 1. 可变参数过程通过Paramarray命令来定义,一般格式为: Sub 过程名 (Paramarray 数组名) 这里的“数组名”是一个形式参数,只有名字和括号,没有上下界,由于省略了变量类型,“数组名”默认为Variant 2. 由于可变参数过程中的参数是Variant类型,因此可以把任何类型的实参传送给该过程 第五节.对象参数
在VB中,还可以向过程传递对象,包括窗体和控件 一. 窗体参数 就是用窗体作为参数 例子: Option Explicit Sub formset(formnum As Form) formnum.Left = 2000 formnum.Top = 3000 formnum.Width = 5000 formnum.Height = 3000 End Sub Private Sub Form_Load() formset Form1 formset Form2 formset Form3 formset Form4 End Sub 例子的结果是:四个窗体重叠显示 记住二个属性:Hide(隐藏),Show(显示),这二个单词用来控制是否显示窗体(暂时只知道这么多) 例如: Private Sub Form_Click() Form1.Hide ‘窗体1隐藏 Form2.Show ‘窗体2显示 End Sub 二. 控件参数 在调用控件做为参数时,对应的类型为:Control,应该注意当前控件的属性 例子: Option Explicit Sub Fontout(comd1 As Control, comd2 As Control) comd1.FontSize = 20 comd2.FontSize = 18 End Sub Private Sub Form_Click() Fontout Command1, Command2 End Sub 结果是:调整二个按钮的字体大小
|