nxhujiee / ◆VB / VB基础教程-1

0 0

   

VB基础教程-1

2010-09-08  nxhujiee

夢清雲淡社區 - http://sxhouse.org/ » 编程专区 » VB基础教程

页: [1] 2 3

史翔 2005-02-25 10:18:09
VB基础教程

首先提供VB6.0下载地址:http://jsjx.hhit.edu.cn/vbweb/study/pvb6.rar
[b][/b]
第一章

 Visual Basic的基本概念
1.1     Visual Basic 概述
1.Visual Basic是什么

Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言。

“Visual” 指的是开发图形用户界面 (GUI) 的方法——不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象add到屏幕上的一点即可。

“Basic”指的是 BASIC (Beginners All-Purpose Symbolic Instruction Code) 语言,一种在计算技术发展历史上应用得最为广泛的语言。Visual Basic 在原有 BASIC 语言的基础上进一步发展,至今包含了数百条语句、函数及关键词,其中很多和 Windows GUI 有直接关系。专业人员可以用 Visual Basic 实现其它任何 Windows 编程语言的功能,而初学者只要掌握几个关键词就可以建立实用的应用程序。Visual Basic Scripting Edition (VBScript) 是广泛使用的脚本语言,它是 Visual Basic 语言的子集,可嵌入HTML语言中,用于网页设计,如ASP(Active Server Page)文件。

VB简单易学,通用性强,用途广泛。
2. VB的功能

VB可以用于可以开发多媒体、数据库、网络、图形等方面的应用程序。

¨      数据访问特性允许对包括 Microsoft SQL Server 和其它企业数据库在内的大部分数据库格式建立数据库和前端应用程序,以及可调整的服务器端部件。

¨      有了 ActiveX(TM) 技术就可使用其它应用程序提供的功能,例如 Microsoft Word 字处理器,Microsoft Excel 电子数据表及其它 Windows 应用程序。

¨      Internet 能力强大,很容易在应用程序内通过 Internet 或 intranet访问文档和应用程序,或者创建 Internet 服务器应用程序。

¨      已完成的应用程序是使用Visual Basic 虚拟机真正 .exe 文件,可以自由发布。
3.    VB的发展

VB是伴随Windows操作系统而发展的,在中国使用较广的版本有VB4.0、VB5.0、VB6.0。

VB4.0是为配合WIN95的问世于1995年推出的,既可用于编写WIN3.X平台的16位应用程序也可编写WIN95平台的32位应用程 序;VB5.0主要用于编写WIN95平台的32位应用程序,较之VB4.0主要扩展了数据库、ActiveX和Internet方面的功能;VB6.0 是与WIN98配合于1998年推出的,进一步加强了数据库、Internet和创建控件方面的功能。
4.    VB中几个常用术语

工程(Project)
: 是指用于创建一个应用程序的文件的集合。
   对象(Object): 可控制的某个东西,VB中主要有两类对象:窗体和控件。
   窗体(Form):  应用程序的用户界面,即windows。  
   控件(Control): 指的是各种按钮、标签、文本框等。
   属性(Property):是指对象的特征,如大小、标题或颜色。
  
   ActiveX :ActiveX 是基于 Component Object Model (COM) 的可视化控件结构的商标名称。它是一种封装技术,提供封装 COM 组件并将其置入应用程序(如Web 浏览器)的一种方法。

  Components Object Model (COM): 是软件组件互相通讯的一种方式。它是一种二进制和网络标准,允许任意两个组件互相通讯,而不管它们是在什么计算机上运行(只要计算机是相连的),不管各计算机运行的是什么操作系统(只要该操作系统支持 COM),也不管该组件是用什么语言编写的。
5. VB的系统特性

(1)工程限制

    
1)
代码限制

可被加载到窗体、类或标准模块的代码总数限于 65,534 行。一行代码限于 1023 个字节。在一行中的实际文本之前最多只能有 256 个空格的前导,在一个逻辑行中最多只能有 25 个续行符 ( _)。
    
2)过程、类型和变量

对每个模块的过程数没有限制。每个过程可包含至多 64K 的代码。如果过程或模块超过这一限制,Visual Basic 便产生编译时间错误。如果遇到这种错误,可将特别大的过程分割成若干个较小的过程,或将模块级声明移到另一模块,来避免此类错误发生。

Visual Basic 用表来保存代码中的标识符名(变量、过程、常量等)。每个表限于 64K。
   
    3)动态链接库声明表

每个窗体和代码模块使用一个描述动态链接库入口点的结构的表。每个结构约 40 个字节,表的大小限于 64K,形成每个模块大约有 1500 个声明。
   
4)工程名表

整个应用程序用一张包含所有名称的表。这些名称包括:

常量名 、 变量名 、 自定义的类型定义名、 模块名、 DLL 过程声明名。

对工程名表总大小没有限制,但是区分大小写的条目不得超过 32K。如果超过了 32K 的限制,可以在不同的模块中重新使用 private 标识符以限制区分大小写的条目数到达 32K。
   
5
输入表

在不同的模块中每引用一个标识符,便在输入表中创建一个条目。每一个这样的入口最小是 24 字节,但限于 64K,这样每个模块大约可以有 2000 个引用。

6
)模块条目表

该表中每个模块最多达 125 个字节,但有 64K 的总限制,这样每个工程大约可以产生 400 个模块。
VB 中的变量名不多于 255 个字符,而窗体、控件、模块和类名不多于 40 个字符。

(2)工程文件格式    

VB 在创建和编译工程时要产生许多文件,分为:设计时文件杂项开发文件运行时文件
设计时文件是工程的建造块,例如基本模块 (.bas) 和窗体模块 (.frm)。
杂项文件是由 Visual Basic 开发环境中的各种不同的进程和函数产生的,例如打包和展开向导从属文件 (.dep)。  
开发应用程序时会产生各种设计时文件和其它杂项文件,如下表所列:
扩展名
描述
扩展名
描述
.bas
基本模块
.frm
窗体文件
.cls
类模块
.frx
二进制窗体文件
.res
资源文件
.vbp
Visual Basic 工程文件
.ctx
用户控件的二进制文件
.pgx
二进制属性页文件
.dca
活动的设计器的高速缓存
.ctl
用户控件文件
.ddf
打包和展开向导 CAB 信息文件
.tlb
远程自动化类型库文件
.dep
打包和展开向导从属文件
.vbg
Visual Basic 组工程文件
.dob
ActiveX 文档窗体文件
.vbl
控件许可文件
.dox
ActiveX 文档二进制窗体文件
.dws
部署向导脚本文件
.dsr
活动的设计器文件
.vbr
远程自动化注册文件
.dsx
活动的设计器的二进制文件
.vbw
Visual Basic 工程工作空间文件
.log
加载错误的日志文件
.vbz
向导发射文件
.oca
控件类型库缓存文件
.wct
WebClass HTML 模板
.pag
属性页文件
 
 
编译应用程序时,所有必须的设计时文件都被包括在运行时可执行文件中。运行时文件如下表所列:
扩展名
描述
.dll
运行中的 ActiveX 部件
.exe
可执行文件或 ActiveX 部件
.ocx
ActiveX 控件
.vbd
ActiveX 文档状态文件
.wct
WebClass HTML 模板
1.2     VB 6.0 的集成开发环境简介
   VB 集成开发环境 (IDE——Integrated Developing Environment ) 由以下元素组成:
1. 标题栏
用于显示正在开发或调试的工程名和系统的工作状态(设计态、运行态、中止态)。
2. 菜单栏

 
   用于显示所使用的 Visual Basic 命令。VB6.0标准菜单包括:
3. 工具栏

 
   在编程环境下用于快速访问常用命令。缺省情况下,启动 VB后显示“标准”工具栏,附加的编辑、窗体设计和调试的工具 栏可以从“视图”菜单上的“工具栏”命令中移进或移出。
4. 窗体设计器
用来设计应用程序的界面。启动VB后,窗体设计器中自动出现一个名为Form1的空白窗体,可以在该窗体中添加控件、图形和图片等来创建所希望的外观,窗 体的外观设计好后,从菜单中选择“文件”→“保存窗体”→在保存对话框中给出合适的文件名(注意扩展名),并选择所需的保存位置→确定。需要再设计另一个 窗体时,单击工具栏上的“添加窗体”按钮即可。
5. 控件(工具)箱
由一组控件按钮组成,用于设计时在窗体中放置控件。除了缺省的工具箱布局之外,还可以通过从上下文菜单中选定“添加选项卡”并在结果选项卡中添加控件来创建自定义布局。
6. 弹出式(上下文)菜单
在要使用的对象上单击鼠标右键即可打开快捷菜单,其上会出现与当前对象相关的经常执行的操作,以加快操作速度。
7. 工程管理器窗口
用于浏览工程中所包含的窗体和模块,还可以从中查看代码、查看对象。
8. 属性窗口
是VB中一个比较复杂的窗口,其中列出了对选定窗体和控件的属性设置值。VB中正是通过改变属性来改变对象的特征,如大小、标题或颜色。
9. 对象浏览器
列出工程中有效的对象,并提供在编码中漫游的快速方法。可以使用“对象浏览器”浏览在 VB中的对象和其它应用程序,查看对那些对象有效的方法和属性,并将代码过程粘贴进自己的应用程序。
10. 对象浏览器
右击窗体中的对象、从工程管理器中点“查看代码”按钮。
11.窗体布局窗口
Form Layout window允许使用表示屏幕的小图象来布置应用程序中各窗体的位置。
12立即、本地和监视窗口这些附加窗口是为调试应用程序提供的,它们只在 IDE 之中运行应用程序时才有效。
1.3     面向对象程序设计的基本概念
1.基本术语
(1)   对象和对象类
    对象是代码和数据的组合,可以作为一个单位来处理。对象可以是应用程序的一部分,比如可以是控件或窗体。整个应用程序也是一个对象。在 VB中可能用到的几种类型的对象:
示例
描述
命令按钮
窗体上的控件,象命令按钮和框架,它们都是对象。
窗体
Visual Basic 工程中的每一个窗体都是独立的对象。
数据库
数据库是对象,并且还包含其他对象,如字段、索引等。
图表
Microsoft Excel 中的图表是对象。
    VB中的每个对象都是用类定义的。用饼干模子和饼干之间的关系作比,就会明白对象和它的类之间的关系。饼干模子是类。它确定了每块饼干的特征,比如大小和 形状。用类创建对象,对象就是饼干。类是面向对象程序设计的核心技术,可以理解成一种定义了对象行为和外观的模板;把对象看作是类的原原本本的复制品,
类具有继承性、封装性、多态性、抽象性。
(2)   属性
属性是对对象特性的描述,VB为每一类对象都规定了若干属性,设计中可以改变具体对象的属性值。比如窗体的背景颜色、高度与宽度。
(3)   事件(Event
     事件是发生在对象上的动作。事件的发生不是随意的,某些事件仅发生在某些对象上。
在VB中事件的调用形式是:
  Private Sub对象名_事件名
(事件内容)
  End Sub
(4) 方法(Method
    方法指的是控制对象动作行为的方式。它是对象本身内含的函数或过程,它也是一个动作,是一个简单的不必知道细节的无法改变的事件,但不称作事件;同样,方法也不是随意的,一些对象有一些特定的方法。在VB里方法的调用形式是:
   对象名.方法名
2. 属性、方法和事件之间的关系
    VB 对象具有属性、方法和事件。属性是描述对象的数据;方法告诉对象应做的事情;事件是对象所产生的事情,事件发生时可以编写代码进行处理。
    VB 的窗体和控件是具有自己的属性、方法和事件的对象。可以把属性看作一个对象的性质,把方法看作对象的动作,把事件看作对象的响应。
   日常生活中的对象,如小孩玩的气球同样具有属性、方法和事件。气球的属性包括可以看到的一些性质,如它的直径和颜色。其它一些属性描述气球的状态(充气的或未充气的)或不可见的性质,如它的寿命。通过定义,所有气球都具有这些属性;这些属性也会因气球的不同而不同。
    气球还具有本身所固有的方法和动作。如:充气方法(用氦气充满气球的动作),放气方法(排出气球中的气体)和上升方法(放手让气球飞走)。所有的气球都具备这些能力。
   气球还有预定义的对某些外部事件的响应。例如,气球对刺破它的事件响应是放气,对放手事件的响应是升空。
   在VB程序设计中,基本的设计机制就是:改变对象的属性、使用对象的方法、为对象事件编写事件过程。程序设计时要做的工作就是决定应更改哪些属性、调用哪些方法、对哪些事件作出响应,从而得到希望的外观和行为。
3.事件驱动模型
    在传统的或“过程化”的应用程序中,应用程序自身控制了执行哪一部分代码和按何种顺序执行代码。从第一行代码执行程序并按应用程序中预定的路径执行,必要时调用过程。
    在事件驱动的应用程序中,代码不是按照预定的路径执行,而是在响应不同的事件时执行不同的代码片段。事件可以由用户操作触发、也可以由来自操作系统或其它 应用程序的消息触发、甚至由应用程序本身的消息触发。这些事件的顺序决定了代码执行的顺序,因此应用程序每次运行时所经过的代码的路径都是不同的。
   因为事件的顺序是无法预测的,所以在代码中必须对执行时的“各种状态”作一定的假设。当作出某些假设时(例如,假设在运行来处理某一输入字段的过程之 前,该输入字段必须包含确定的值),应该组织好应用程序的结构,以确保该假设始终有效(例如,在输入字段中有值之前禁止使用启动该处理过程的命令按钮)。
   在执行中代码也可以触发事件。例如,在程序中改变文本框中的文本将引发文本框的 Change 事件。如果 Change 事件中包含有代码,则将导致该代码的执行。如果原来假设该事件仅能由用户的交互操作所触发,则可能会产生意料之外的结果。正因为这一原因,所以在设计应用 程序时理解事件驱动模型并牢记在心是非常重要的。
4.交互式开发
    传统的应用程序开发过程可以分为三个明显的步骤:编码、编译和测试代码。但是 Visual Basic 与传统的语言不同,它使用交互式方法开发应用程序,使三个步骤之间不再有明显的界限。
   VB在编程者输入代码时便进行解释,即时捕获并突出显示大多数语法或拼写错误。看起来就象一位专家在监视代码的输入。
    除即时捕获错误以外,VB 也在输入代码时部分地编译该代码。当准备运行和测试应用程序时,只需极短时间即可完成编译。如果编译器发现了错误,则将错误突出显示于代码中。这时可以更正错误并继续编译,而不需从头开始。
   由于 VB的交互特性,代码运行的效果可以在开发时进行测试,而不必等到编译完成以后。
1.4     利用VB开发应用程序的一般步骤
一个VB程序也称为一个工程,由窗体、标准模块、自定义控件及应用所需的环境设置组成。开发步骤一般如下:
1. 创建程序的用户界面
2. 设置界面上各个对象的属性
3. 编写对象响应事件的程序代码
4. 保存工程
5. 测试应用程序,排除错误
6. 创建可执行程序
1.5     创建VB程序示例
实例名称:VB欢迎你!

1.创建程序的用户界面
2.设置界面上各个对象的属性
控件
属性
设置值
Option1
Caption
上课
Option2
Caption
复习
 
BackColor
&H00C0E0FF&
 
Forecolor
&H00FF0000&
 
Font
宋体 小四
Label1
Caption
欢迎你学习VB!!
 
Forecolor
&H000000FF&
 
Font
隶书、二号
 
AutoSize
True (自动调整外框大小)
 
BackStyle
0-Transparent ( 透明)
Command1
Caption
学习之道
3. 编写对象响应事件的程序代码
双击各对象,在相应的代码窗口里输入需要的代码。
事件名称
过程代码
命令按钮的单击事件
Private Sub Command1_Click()  
Option1.Visible = True
Option2.Visible = True
Label1.ForeColor = #0000ff
Label1.Caption = "    ?  ?  ?"
End Sub
窗体的单击事件
Private Sub Form_Click()       
Form1.Picture = LoadPicture("d:\sj\abc.jpg")
Option1.Visible = False
Option2.Visible = False
Label1.ForeColor = #ff0000
Label1.Caption = "预祝大家成功,干杯!"
End Sub
窗体的双击事件
Private Sub Form_DblClick()    
Form1.Picture = LoadPicture("")
Label1.Caption = "  欢迎你学习VB!!"
End Sub
选项按钮1的单击事件
Private Sub Option1_Click()    
Label1.Caption = "看清楚 听明白 记下来"
End Sub
选项按钮2的单击事件
Private Sub Option2_Click()    
Label1.Caption = "多上机 勤思考 善提问"
End Sub

 4.保存工程
(1)从文件菜单中选择保存窗体,将窗体保存成vbwelcomeyou . frm
  (2)从文件菜单中选择保存工程,将工程保存成vbwelcomeyou . vbp
5.测试应用程序,排除错误
   根据设想的效果调试程序,直到满足要求为止。
6.创建可执行程序
   从文件菜单中选择 生成vbwelcomeyou . exe ,既可生成一个可执行文件。
注意:设计中遇到问题可以查阅MSDN的帮助文件。

史翔 2005-02-25 10:19:18
re:[b]第二章 [/b...


第二章         VB的界面设计
2.1  VB用户界面设计基础
1. 概述
   界面的设计有两步:先绘制控件,然后确定控件属性。

绘制控件:在工具箱里单击想画的控件,在窗体里按下鼠标并拖曳,然后松开鼠标即可。确定属性:先选中控件,然后按F4键或单击工具栏上的属性窗口进入属性(Properties)窗口,再在属性窗口中找到要设置的属性并进行设置。
2. 常用属性的设置
(1)Name属性
   对象都有名字,计算机把名字看成对象于对象之间的根本差异,因此在同一窗体里不许出现重名的情况(除非这是一个控件数组),且名字不得超过40个字。
   在简单的程序里,给控件命名不是很必要,完全可以使用控件Name属性的缺省值。例如Text1。但在有几十个控件的复杂窗体里,就很难区分它们。所 以,VB推荐由三个小写字母的前缀和一个第一个字母为大写的描述性单词组成的名字。例如cmdMyButton是一个命令按钮(前缀是cmd)
推荐的前缀
对象
前缀
例子
确认框(Check Box)
chk
chkCareerChioce  
组合框(Combo Box)
cbo
cboCrimesCommitted  
命令钮(Command Button)
cmd
cmdExit  
数据库控件(Data Control)
dat
datTopSecretInfo  
目录列表框(Directory List Box)
dir
dirTree  
驱动器列表框(Drive List Box)
drv
drvHardDisk  
文件列表框(File List Box)
fil
filDocuments  
窗体(Form)
frm
frm1040Tax  
框架(Frame)
fra
fraGroupButtons  
水平滚动条(Horizontal Scroll Bar)
hsb
hsbTemperature  
图形(Image)
img
imgPrettyDrawing  
标签(Label)
lbl
lblFakeName  
线(Line)
lin
linBorder  
列表框(List Box)
lst
lstCandidates  
菜单(Menu)
mnu
mnuHamAndEggs  
选项钮(Option Button)
opt
optStation101  
图形框(Picture Box)
pic
picPrettyPicture  
几何图形(Shape)
shp
shpUpOrShipOut  
文本框(Text Box)
txt
txtWarning  
垂直滚动条(Vertical Scroll Bar)
vsb
vsbMoneyRaised
(2)Caption属性
     Caption即标题,是可以在对象外观上直接看见的文本,可以长达255字符,包括空格和标点符号,比如一个叫cmdOk的命令钮,它的Caption属性就可以是“Ok”。 注意:并不是所有的对象都有此属性,比如文本框、图片框、线条等就没有。
   为按钮设置热键:在设置Caption属性时,在需要加下划线的字母前加上 “&” 符号,例如 “&File”,输出的就是“File”,这样就可以通过按ALT键和标题上那个带下划线的字母来选取它了, 不必为此编任何代码。
Name和 caption的比较
1) Name是系统用来识别对象的,编程时需要用它来指代各对象;Caption是给用户看的,提示用户该对象的作用;

2) Name可以采用系统默认的名称,但Caption应该根据实际情况改成意义明了的名词;
3)所有对象都有Name,但不一定都有Caption;
(3)Top,Left属性
    这两个属性决定对象的位置。只有两种情况需要在属性窗口里设置这两个属性:第一种是用户没有鼠标,第二种是程序员需要十分精确地设定这两个值。当选中对象,单击并拖曳它的时候,便在修改这两个值了。

(4)Height,Width属性
    这两个属性决定了对象的大小,当选中控件时,它周围出现八个小黑方块,把鼠标指向这些方块,鼠标指针将变成一个双向的箭头,这时按下鼠标并拖曳它,即可改变控件的大小,也就改变了Height,Width属性。
2.2  创建窗体
1.    窗体的属性
(1)          常用属性简介
属性
名称
说明
Name
窗体名称
系统识别窗体的标识名,一个窗体名必须以一个字母开头,可包含数字和下划线,但不能包含空格和标点符号。
Caption
窗体标题
出现在窗体标题栏中的文本内容
Icon
窗体图标
这个属性是用户经常要使用的一种属性。当用户的应用程序在工具条上最小化或在Windows桌面上变为一个独立应用程序时,该属性决定将采用何种图标,窗体控制框里的图标也由它决定。
BackColor
窗体背景色
可以从属性框里弹出调色板,选择所需要的颜色
ForeColor
窗体前景色
窗体上打印文字的颜色
BorderStyle
边框风格
这个属性决定了窗体边框的样式,共有6种属性值。改变窗体的BordrStyle属性后,窗体在屏幕上没有变化,它只在运行时才变为所要求的样子。
Apearance
外形
这个属性用来决定控件是否采用三维效果
ControlBox
控件按钮控件按钮
用来决定是否采用 控件框的属性,仅在程序运行时才有效。
Font
字体
用来改变该窗体上显示信息的字体、字型和字号,它控制着直接在窗体上打印的文本显示。
Visible
可见性
该属性决定窗体是否可见, 默认情况下是可见的。错误地改变其值是很危险的,窗体会从眼前消失,
WindowState
窗体状态
指定窗体在运行时的三种状态:正常、最小化、最大化。
Enabled
活动性
默认值为True,决定窗体能否被访问。
Left、Top、Height、Width
左边距、顶边距、高度、宽度
决定窗体在屏幕上的位置及窗体大小。
(2)设置属性的方法
 1)在设计态通过属性窗口设置

直接在属性窗口中选择或输入既可。
 
2)在程序代码中改变属性值

代码中的格式为:  对象名 . 属性 = 属性值

例:Form1.BackColor=RGB(255,0,0)
2.    窗体的常用方法
(1)Hide方法
    用以隐藏 MDIForm 或 Form 对象,但不能使其卸载。
 
语法object.Hide

object 所在处代表一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则带有焦点的窗体就认为是该 object。
  说明
¨         隐藏窗体时,它就从屏幕上被删除,并将其 Visible 属性设置为 False。 用户将无法访问隐藏窗体上的控件,但是对于运行中的 Visual Basic 应用程序,或对于通过 DDE 与该应用程序通讯的进程及对于 Timer 控件的事件,隐藏窗体的控件仍然是可用的。

¨         窗体被隐藏时,用户只有等到被隐藏窗体的事件过程的全部代码执行完后才能够与该应用程序交互。

¨         如果调用 Hide 方法时窗体还没有加载,那么 Hide 方法将加载该窗体但不显示它。
(2)Move方法
     用以移动 MDIForm、Form 或控件。
 
语法object . Move  left, top, width, height

    Move 方法的语法包含下列部分:
部分
描述
object
可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,带有焦点的窗体缺省为 object。
left
必需的。单精度值,指示 object 左边的水平坐标 (x-轴)。
top
可选的。单精度值,指示 object 顶边的垂直坐标 (y-轴)。  
Width
可选的。单精度值,指示 object 新的宽度。
height
可选的。单精度值,指示 object 新的高度。
  说明:只有 left 参数是必须的。但是,要指定任何其它的参数,必须先指定出现在语法中该参数前面的全部参数。例如,如果不先指定 left 和 top 参数,则无法指定 width 参数。任何没有指定的尾部的参数则保持不变。
(3)Print 方法
    在 Immediate 窗口中显示文本。
 
[b]语法:object . Print [outputlist]

[/b]Print 方法的语法具有下列对象限定符和部分:
部分
描述
object
必需的。对象表达式,其值为“应用于”列表中的对象。
outputlist
可选的。要打印的表达式或表达式的列表。如果省略,则打印一空白行。
outputlist 参数具有以下语法和部分:
    {Spc(n) | Tab(n)} expression charpos
部分
描述
Spc(n)
可选的。用来在输出中插入空白字符,这里,n 为要插入的空白字符数。
Tab(n)
可选的。用来将插入点定位在绝对列号上,这里,n 为列号。使用无参数的 Tab(n) 将插入点定位在下一个打印区的起始位置。
expression
可选。要打印的数值表达式或字符串表达式。
Charpos
可选。指定下个字符的插入点。使用分号 (;) 直接将插入点定位在上一个被显示的字符之后。使用 Tab(n) 将插入点定位在绝对列号上。使用无参数的 Tab 将插入点定位在下一个打印区的起始位置。如果省略 charpos,则在下一行打印下一字符。
  说明
¨  可以用空白或分号来分隔多个表达式。

¨  对系统指定的国别设置,用小数点分隔符将所有打印到 Immediate 视窗的数据正确格式化。关键字要用适用于主应用程序的语言输出。
¨对于 Boolean 数据,或者打印 True 或者打印 False。根据主机应用程序的地区设置来翻译 True 和 False 关键字。  
¨使用系统能识别的标准短日期格式书写 Date 数据。当日期或时间部件丢失或为零时,只书写已提供的部件。

¨ 如果 outputlist 数据是 Empty,则无内容可写。但是,如果 outputlist 数据是 Null,则输出 Null。在输出 Null 关键字时,要把关键字正确翻译出来。

¨ 要把错误数据作为 Error errorcode 输出。在输出 Error 关键字时,要把关键字正确翻译出来。

¨如果在具有缺省显示空间的模块外使用此方法,则需要 object。例如,如果没有指定对象就在标准模块上调用此方法,则将导致错误发生,但是,如果在窗体模块上进行调用,则会在窗体上显示“outputlist”。
  注意: 因为 Print 方法是按照字符比例进行打印,所以字符数与字符所占据的宽度固定的列的数目无关。例如,像 “W” 这样的宽字母占据的宽度超过一固定列宽,而像 "i" 这样的窄字母占据的宽度则较小。考虑到要使用比平均字符更宽的空间,表列一定要留有足够余地。另外,也可以使用固定间距的字体(像 Courier 字体)来确保每一字符均只占一列。
(4)PrintFrom方法
用以将 Form 对象的图象逐位发送给打印机。
 
语法:object.PrintForm

说明
:PrintForm 将打印 Form 对象的全部可见对象和位图。在绘制图形时,如果 AutoRedraw 属性为 True,则在运行时PrintForm 将打印 Form 对象或 PictureBox 控件上的图形。

¨PrintForm 所使用的打印机是由操作系统的控制面板中的设置来决定。
(5) Refresh方法
强制全部重绘一个窗体或控件。
 
语法:object.Refresh

说明:
在下列情况下使用 Refresh 方法:

¨在另一个窗体被加载时显示一个窗体的全部。

¨更新诸如 FileListBox 控件之类的文件系统列表框的内容。

¨ 更新 Data 控件的数据结构。

Refresh 方法不能用于 MDI 窗体,但能用于 MDI 子窗体。不能在 Menu 或 Timer 控件上使用 Refresh 方法。
     通常,如果没有事件发生,窗体或控件的绘制是自动处理的。但是,有些情况下希望窗体或控件立即更新。例如,如果使用文件列表框、目录列表框或者驱动器列表框显示当前的目录结构状态,当目录结构发生变化时可以使用 Refresh 更新列表。
     可以在 Data 控件上使用 Refresh 方法来打开或重新打开数据库(如果 DatabaseName, ReadOnly, Exclusive 或 Connect 属性的设置值发生改变),并能重建控件的 Recordset 属性内的 dynaset。
(6)Show方法
用以显示 MDIForm 或 Form 对象。
 
语法:object.Show style, ownerform

Show 方法的语法包含下列部分:
部分
描述
object
可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则与活动窗体模块关联的窗体缺省为 object。
Style
可选的。一个整数,它用以决定窗体是模式还是无模式 。如果 style 为 0,则窗体是无模式的;如果 style 为 1,则窗体是模式的。
Ownerform
可选的。字符串表达式,指出部件所属的窗体被显示。对于标准的Visual Basic 窗体,使用关键字 Me。
  说明

¨如果调用 Show 方法时指定的窗体没有装载,Visual Basic 将自动装载该窗体。

¨当 Show 在显示无模式窗体时,随后遇到的代码则要执行。当 Show 在显示模式窗体 (modal form) 时,则随后的代码直到该窗体被隐藏或卸载时才能执行。

¨当 Show 在显示模式窗体时,除了模式窗体中的对象之外不能进行输入(键盘或鼠标单击)。对其它窗体进行输入前程序必须隐藏或卸载模式窗体(通常是处于响应用户某些操作状态)。MDIForm 不能是形式的。

¨在模式窗体显示时,虽然应用程序中的其它窗体失效,但其它应用程序不会失效。

¨应用程序的启动窗体在其 Load 事件调用后会自动出现。
下面的例子说明如何使用ownerform 参数:

Private Sub cmdShowResults_Click()
' 显示模式窗体 frmResults.
frmResults.Show vbModal, Me
End Sub
(7)Cls方法
清除运行时 Form 或 PictureBox 所生成的图形和文本。
  
语法:object.Cls

说明

¨Cls 将清除图形和打印语句在运行时所产生的文本和图形,而设计时在 Form 中使用 Picture 属性设置的背景位图和放置的控件不受 Cls 影响。如果激活 Cls 之前 AutoRedraw 属性设置为 False, 调用时该属性设置为 True,则放置在 Form 或 PictureBox 中的图形和文本也不受影响。 这就是说,通过对正在处理的对象的 AutoRedraw 属性进行操作,可以保持 Form 或 PictureBox 中的图形和文本。

¨调用 Cls 之后,object 的 CurrentX 和 CurrentY 属性复位为 0。
3.窗体的常用事件
 
(1)  Load
事件

这个事件发生在窗体被装入内存时,且发生在窗体出现在屏幕之前。窗体出现之前,Visual Basic会看一看Load事件里有没有代码,如果有,那么它先执行这些代码,再让窗体出现在屏幕上。
  (2) Click事件,Dblclick事件

这两个事件在单击或双击窗体时发生。不过单击窗体里的控件时,窗体的Click事件并不会发生,Visual Basic会去看控件的Click事件里有没有代码。
  (3)Activate (活动事件)与Deactivate(非活动事件)

显示多个窗体时,可以从一个窗体切换到另一个窗体。每次激活一个窗体时,发生Activate 事件,而前一个窗体发生Deactivate事件。
  (4)Resize事件

在窗体被改变大小时会触发此事件。
4.窗体的控制
(1) 装入或卸出窗体

要装入或卸出窗体,用Load 或Unload语句。
  
装入窗体Load formName

卸出窗体UnLoad formName
FormName变量是要装入或卸出的窗体名。 Load语句只是把窗体装入内存,并不显示出来,要显示窗体可以使用窗体的Show方法。
(2) 显示或隐藏窗体

要显示或隐藏窗体,用Show或Hide方法。若尚未装入内存则先装入再显示。
  
显示窗体:  formName.show mode

隐藏窗体:  formName.hide

     FormName变量是窗体名,可选变元mode为0(缺省值)时窗体为非模态,为1时窗体为模态。模态窗体完全占有应用程序控制权,不允许切换到别的应用程序,除非关闭!而非模态窗体则反之。
(3)END语句
END语句的功能是终止应用程序的执行,并从内存卸在所有窗体。语法是: END
2.3 控件
1.       常用控件介绍
        (1)标准控件一
TextBox 文本框
Timer计时器
HscrollBar水平滚动条
ListBox列表框
Pointer 指针
VScrollBar 垂直滚动条
CheckBox 复选框
Label标签
DirListBox 文件夹列表框
PictureBox图片框
Line 线条
DriveListBox 驱动器列表框
ComboBox 组合框
Shape 图形
FileListBox文件列表框
OptionButton选项按钮
Image图象
Data 数据控件
CommandButton 命令按钮
Frame 框架
OLE控件

 
(2)      常用控件的属性、方法和事件
公共属性
Name、Caption、Enabled、Fantsize、Height、Width、Index、Left、Top、 TabStop
公共方法
Move、Refresh、Setfocus(设置焦点)
公共事件
Click、DblClick、LostFocus(失去焦点)
控件名称
属性、方法、事件
说明
TextBox  文本框
(用于接受用户在框内输入的内容)
Text属性
即用户从文本框输入的内容
PasswordChar属性
设置口令时用的掩码,如:用*代替实际输入的内容
MaxLength属性
最大长度,缺省值是0,即可以输入任意个字符
MultiLine属性
为True时可以多行文本,为False时只能输入一行文本
Alignment 属性
文本在框中的对齐方式:0=左对齐,1=右对齐,2=居中
Chang事件
当框中的文本内容发生变化时触发该事件
LostFocus事件
当光标离开文本框时触发该事件
Label 标签(用于在窗体上添加文字说明)
Alignment属性
Caption文本的对齐方式:0=左对齐,1=右对齐,2=居中
WordWrap属性
为True时可根据标签大小自动换行
AutoSize属性
自动调节大小,为True时可根据文本大小自动调整标签大小,为False时标签大小不能改变,过长的文本被截掉
ListBox 列表框
(用于列出可供用户选择的项目列表)
List属性
用于保存列表内容,访问: [对象名]. List(列表项序号)
列表项的序号由上到下依次为0、1、2、3……
ListCount属性
列表项数目
ListIndex属性
列表项索引,其值为最后选中的列表项序号,第一个为0,如果未选中任何表项,其值为-1。
Text属性
列表项正文,其值为最后选中的列表项的文本,它与
List(ListIndex)相同。
Columns属性
列表框显示形式取0时为一列显示所有行,其他值为多列。
Sort属性
排序属性,为True时,列表项按ASCII码排序,为False时,则不排序。
AddItem方法
添加列表项,使用格式:
[ 对象名.] AddItem[b]列表项文本>[[/b],插入位置序号]
若不指定位置,则插入到列表末尾。
 Clear方法
删除列表所有项目
RemoveItem方法
删除列表项,使用格式:
[ 对象名 .] RemoveItem  删除项序号
PictureBox 图片框
Image  图象(用来把图形放入程序里)
AutoSize/Stretch
属性
调整图片框以适应图象 / 调整图象以适应外框
Picture属性
决定控件中显示的图象
装入图形:
imgMyHand.Picture = LoadPicture ( “c:\graphics\hand.bmp” )
删除图形:  imgMyHand.Picture = LoadPicture ( “ ” )
ComboBox 组合框(将列表框和文本框结合在一起)
Style属性
外观属性:取0时,系统创建一个带下拉式列表框的组合框;为1时,系统创建一个由文本框和列表框直接组合在一起的简单组合框,可以从列表框中选择,也可以 直接在文本框中输入;为2时,系统创建一个没有文本框的下拉式列表框,单击列表框上的按钮才显示文本框,用户不能在文本框中输入,只能在列表框中选择。
Text 属性
其值为用户从列表框中选定的文本或直接输入的文本。
AddItem方法
添加列表项,使用格式:
[ 对象名.] AddItem[b]列表项文本>[[/b],插入位置序号]
若不指定位置,则插入到列表末尾。
Clear方法
删除列表所有项目
RemoveItem 方法
删除列表项,使用格式:
[ 对象名 .] RemoveItem  删除项序号
CommandButton
命令按钮
Cancel属性
取消属性,它为True时, 按〖ESC〗即等于单击此按钮。
Default属性
缺省属性,它为True时, 按回车键即等于单击此按钮。
Timer计时器
Interval属性
两次调用Timer事件的事件间隔,用于创建动态效果。
Frame 框架
CheckBox 复选框
OptionButton选项按钮
Alignment属性
决定它们的对齐方式,0=左对齐,1=右对齐。
Value属性
决定它们是否被选中的属性
2.       常用控件的使用辨析
(1)文本框和标签的区别:
    文本框通常用于向计算机输入信息,而标签通常用于输出信息。文本框是一个十分重要的控件,因为由复选框和选项按钮向程序输入的信息毕竟只有少数的几条信息 而已。标签和文本框的区别很小,标签可以看成是一个在运行时不能修改正文的文本框,因此标签主要用于输出信息。
(2)  Label的AutoSize属性和WordWrap属性
¨     为了使标签具有垂直伸展和字换行处理,必须设置它的AutoSize属性和WordWrap属性同时为True。

¨     AutoSize属性为False,WordWrap属性为False时,若标签不够高而Caption太长时,Caption将被切割掉。

¨     AutoSize属性为False,WordWrap属性为True时,情况也如此。

¨      AutoSize属性为True,WordWrap属性为False时,表示可以水平伸展,但只显示一行信息。
(3) PictureBox和Image的Stretch属性和AutoSize属性
¨  Image只有Stretch属性,而PictureBox只有AutoSize属性。

¨   AutoSize属性设为True,则PictureBox改变自己的大小来适应其中的图形。

¨   Stretch属性设为True,则Image中的图形将改变自己的大小来适应外面的边框。
(4)Frame 框架、CheckBox 复选框、OptionButton选项按钮的区别:
¨  复选框和选项按钮用于向程序输入信息, 框架用来对复选框和选项按钮进行分组。

¨   复选框选中时会在小方框里打一个钩,选项按钮选中时会在小圆圈里点一个点。
3.控件使用举例
  例3、4
2.4    定制菜单
1.   菜单概述
Windows中的菜单一般由菜单条、菜单、菜单项、子菜单、弹出式菜单组成。
2.   普通菜单的设计
(1给菜单命名
   菜单标题和菜单命令也有Caption和Name属性,设置了这两个属性就等于创建了菜单。Name是一个抽象名称,Caption是屏幕上可见的,可在Caption里加入 “&” 来设置热键。
(2)  增加和删除菜单
   在Menu Editor中部有三个命令钮分别是下一个、插入、删除插入可用来增加新的菜单。在这三个键下面的Caption列表框里选中菜单项(这时它的底色就变成深蓝色),单击插入键,Visual Basic将上一个增亮菜单下推并增亮一空行,就可以输入新菜单名和标题了。删除键可用来删掉菜单。选中要删掉的菜单,单击Delete键就可以删掉它了。
(3)  移动菜单标题
  有四种情况:向上移动,向下移动,向左缩排,向右缩排,选中某一菜单标题,安上下箭头,则这个菜单将上下移动到你喜欢的位置上,这也决定了它在界面中的位 置。如果按左右箭头,情况则有所不同。由于菜单是分级的,所以,如果它没有缩排,则它是一个菜单标题;如果它缩排一次,那么它将变成一个菜单命令;如果缩 排两次,那么它将成为一个子菜单命令。VB里可以总共设计四层子菜单。
(4)  设置分离条
     分离条是指在菜单中将命令分组的线,VB将分离条也看成一个菜单项,它也需要Caption和Name属性,而且也有其它属性,分离条与菜单项的区别是 分离条的Caption属性必须是连字号即减号。也就是,当设置了一个Caption属性为 “-” 的菜单项时,实际上就设置了一个分离条,分离条的名字可以是barFile1之类,以表明分离条的位置。
(5菜单的各种简单属性
  在菜单编辑器里有许多确认框和一些文本框及一个下拉式的列表框,这些决定了菜单的各种属性。
1) Checked 复选属性
    这个属性值设置为真,将在菜单命令左边产生一个打勾的确认标志。
2) Enabled有效属性
    各种各样的用户会产生千奇百怪的操作,在许多Edit菜单里都会有不同形式的让菜单命令模糊的情况。Enabled属性为真,则菜单命令是清晰的,Enabled属性为假,则菜单命令是模糊的,这时用户就不能选中这个菜单项了。
3) Visible 可见属性
   对暂时不用的菜单, 如果把Visible属性设为假,则菜单根本不会出现在屏幕上。这样做比把Enabled属性设为假显得更加干脆!
4) Index属性
    可以生成菜单命令数组,用索引号区分开。例如向File菜单中添加一系列最近打开的文件名。添加菜单可用Load方法。以上属性可以在运行时设置,形成动态的菜单的情况。
例如:
   mnuUndo.Enabled = False
   mnuProperty.Visible = False
    还可以改变Caption等属性。
    mnuUndo.Caption = “Redo”
(6)为每个菜单项编写事件过程代码
3. 生成弹出式菜单(或浮动菜单)
  几乎每个Windows应用程序都提供弹出式菜单,用户可以右键单击窗体或控件取得这个菜单。弹出式菜单也属于普通菜单,只是不固定在窗体上,而是可以在任何地方显示。
   弹出式菜单用PopupMenu方法调用。假设已经用菜单编辑器生成了名为mnuedit的菜单,则可以在MouseUp事件加入如下代码就可以生成弹出式菜单:
 If Button = 2 Then PopupMenu mnuedit
4.菜单设计示例
 例 5
2.5     设计状态条、工具栏、进程条等
1.  创建状态条
     选中状态条,按F4键进入属性窗口,双击(Custom)可以进入主要的设置窗口SBarCtrl属性窗口。
(1选择面板形状
   在SBarCtrl属性窗口里选择General标签,在Style列表框里选择多面板(缺省形式)或单面板简单文本形式。
(2添加或删除状态条面板
    在SBarCtrl属性窗口里选择Panels标签,单击Insert按钮添加一个面板,或单击Remove按钮删除一个面板。
(3在单面板里显示文本
     在SBarCtrl属性窗口里选择General标签,在SimpleText框里输入想显示在状态条面板里的文本。用代码显示的方式是:
  StatusBar1.SimpleText = "New string to appear"
(4在多面板里显示文本或图形
1). 在SBarCtrl属性窗口里选择Panels标签,用Index旁的按钮选择面板序号。
2). 在Text框里输入想显示在状态条面板里的文本。
3). 如果想加入图形,单击Browse按钮打开一个图形选择对话框,选择想加入的图形,然后单击打开按钮。
4). 最后按确定按钮。
5). 用代码显示的方式是:StatusBar1.Panels(x).Text = "New string to appear"
6). 编写代码 
如果是一个单面板状态条,当用户单击状态条时,只需用下面的事件过程来响应:
Private Sub StatusBar1_Click()
End Sub
    如果是一个多面板状态条,就需要鉴别用户单击的是哪一个面板,可用下面的事件过程来识别用户所单击的面板:
Private Sub StatusBar1_PanelClick(ByVal Panel As Panel)
Select Case Panel.Index
Case 1
'Code to follow if user clicks the first panel
Case 2
'Code to follow if user clicks the second panel
Case 3
'Code to follow if user clicks the third panel
End Select
End Sub
2.  创建工具栏
1. 建立工具条
1).在工具箱里单击工具条图标,拖到窗体的任何位置,Visual Basic自动将ToolBar移到顶部。
2).按F4键打开属性窗口。
3).双击(Custom),打开ToolBar属性窗口。
4). 选择Buttons标签。
5). 单击Insert按钮,Visual Basic就会在你的工具条上显示一个空按钮,现在为你的每一个按钮重复这一步。
6). 单击确定按钮。
      如果想把按钮分组,首先生成一个分隔的按钮,再在刚才提到的对话框里将这个按钮的Style属性改为3-Separator。
(2为工具条增加图画
1). 在Visual Basic工具箱里单击ImageList图标,并将它拖到窗体的任何位置(位置不重要,因为它总是不可见的)。
2). 按F4打开属性窗口。
3). 双击(Custom),打开ImageListCtrl属性窗口。
4). 选择Image标签。
5). 单击Insert Picture,在现在图形的对话框里选择想使用的位图或图标,然后单击打开按钮。为每个想添加图形的工具条按钮重复此步。
6). 单击确定按钮。
7). 单击工具条,按F4,双击(Custom),显示ToolBar属性对话框。
8). 选择General标签,在ImageList框里选择刚才添加的ImageList控件。
9). 选择Buttons标签,单击紧挨Index框的向左或向右箭头以选择一个按钮序号。出现在工具条最左边的按钮序号为1。
10). 在Image框里输入一个数,输入为1,则显示刚才ImageList控件里的第一个图形,输入为2,则显示刚才ImageList控件里的第二个图形。
11). 为每个按钮重复第10步。
12). 单击确定按钮,现在Visual Basic就会在工具条上显示精美的图形了。
(3为工具条添加文本信息
     在ToolBar属性对话框中选择Buttons标签,在Caption框里输入想显示在按钮上的文本。
(4添加ToolTips
      ToolTips是一种当点到工具按钮时弹出的小标签。ToolTips很方便,可以告诉那些新手每个按钮是干什么用的。在刚才提到的ToolBar属性对话框中选择Buttons标签,在ToolTipText框里输入想作为ToolTip的文本。
(5编写代码
双击工具条,以下面的格式输入代码就可以了:
Private Sub Toolbar1_ButtonClick(ByVal Button As Button)
Select Case Button.Index
Case 1
'Code to follow if user clicks the first button
Case 2
'Code to follow if user clicks the second button
Case 3
'Code to follow if user clicks the third button
End Select
End Sub
3.  创建进程条
   进程条的三个属性:
(1). Min属性代表进程条全空时的值,缺省时为0。
(2). Max属性代表进程条全空时的值,缺省时为100。
(3) Value属性代表进程条当前的值(不用在属性窗口里找这个属性,它不出现在属性窗口中,但它的确存在),它大于Min属性,小于Max属性。改变Value属性的值将改变进程条的进度显示。
    为了了解进程条的功能,在窗体里添加一个进程条和一个命令钮,双击命令钮进入代码窗口,键入如下代码:
Private Sub Command1_Click()
If ProgressBar1.Value
ProgressBar1.Value = ProgressBar1.Value + 5
Else
ProgressBar1.Visible = False ‘当进程条满了的时候让进程条消失
End If
End Sub
4.  创建滑块
(1). 选择滑块的外观
1). Orientation属性决定滑块的方位,可以是垂直的或水平的滑块。
2). TickStyle属性决定滑块标记的样子。
3). TickFrequency属性规定了沿着滑块的标记的间隔大小,缺省的状态是1,表明每个可能值都出现标记,如果把值设置为3,则每三个可能值出现一个标记。
(2滑块的Min,Max,Value属性
      这三个属性和进程条的这三个属性差不多,Min,Max表示滑块的最小和最大值,Value表示进程条的当前值。
(3滑块的LargeChange,SmallChange属性
      LargeChange规定了当用户用鼠标单击滑块时,滑块可移动的距离。SmallChange规定了用户按左箭头或右箭头时滑块的移动距离。
5. 创建TabStrip页框控件
(1设置样式
    在TabStrip属性窗口里选择General标签,在Style列表框里选择Tabs或Buttons样式。
(2规定TabStrip的标题和ToolTips
1). 在TabStrip属性窗口里选择Tabs标签,在Caption框里输入标题。
2). 在TabStrip属性窗口里选择Tabs标签,在ToolTipText框里输入ToolTip。
(3增减标签总数
     在TabStrip属性窗口里选择Tabs标签,单击Insert Tab按钮增加标签,单击Remove Tab按钮删除标签。
(4在TabStrip上显示图形
1) 在窗体里拖入一个ImageList控件,
2) 按F4打开属性窗口。
3) 双击(Custom),打开ImageListCtrl属性窗口并选择Image标签。
4) 单击Insert Picture,在现在图形的对话框里选择想使用的位图或图标,然后单击打开按钮。为每个想添加图形的Tab按钮重复此步。
5) 单击确定按钮。现在ImageList里存储了需要的图形。
6) 选择TabStrip,进入TabStrip属性窗口并选择General标签,在ImageList列表框里选择ImageList1。
7) 现在选择Tabs标签,单击紧挨Index框的向左或向右箭头以选择一个Tab序号。在Image框里输入一个数,输入为1,则显示刚才ImageList控件里的第一个图形,输入为2,则显示刚才ImageList控件里的第二个图形。
8) 单击确定按钮。
(5用户响应
     可用类似下面的代码来识别用户在哪一个项目上单击。
Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.Index
Case 1
'Code to follow if user clicks the first tab
Case 2
'Code to follow if user clicks the second tab
Case 3
'Code to follow if user clicks the third tab
End Select
      End Sub
(6在TabStrip上放置其它控件
     在用户选择了标签后,TabStrip要求编写代码来显示或隐藏控件。下面的代码上是一个TabStrip上有一个命令钮和一个选项钮的例子,当用户选择了第一个Tab时,选项钮出现,当用户选择了第二个Tab时,命令钮出现。
Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.Index
Case 1
Command1.Visible = False
Option1.Visible = True
Case 2
Command1.Visible = True
Option1.Visible = False
End Select
End Sub
2.6  Visual Basic的输入机制
     程序的基本操作就是数据的输入,数据处理和数据的输出。Visual Basic可中用于输入的控件主要有:文本框Text Box、复选框Check Box、选项按钮Option Button、列表框List Box、组合框Combo Box、滚动条Scroll Bar、通用对话框控件。还有一个函数叫InputBox函数,也可用于数据的输入。
1. 通过文本框输入数据
只要取得文本框的Text属性就可以对其进行操作了。下面的代码可将Text1文本框的正文变成大写输出至Text2文本框。
Private Sub Form_Click ()
Text2.Text = UCase(Text1.Text)
End Sub
2. 通过复选框和选项按钮输入数据
   只要检测到Check Box和Radio Button的Value属性值就可以知道它们是否被选上了。
3. 通过列表框和组合框输入数据
(1) 列表框List Box和组合框Combo Box的不同
    它们在Windows的Open,Save As对话框里最为常见。组合框又包括三种类型,这三种类型要在它的Style属性里设置。列表框仅仅把可以选择的项目列出来,而组合框里有的类型可以允许用户输入数据。它们的异同是:
名称
是否有下拉选项
是否允许用户输入
 列表框


 组合框类型0


 组合框类型1


 组合框类型2


(2) 列表项目的增减
   使用AddItem,RemoveItem语句可以增减列表项目。通常将项目增减的语句放入Form_Load事件里。
   ListBoxName. AddItem item
   ComboBoxName. AddItem item
    item是新项目名称,必须是字符串类型,非字符串类型可通过Str函数或Format函数来转换。
列表框,组合框的每一项目都有一个Index值,第一个项目的Index值是0,第二个是1,依此类推。删除项目可通过删除其Index值来实现。
  ListBoxName. RemoveItem item
    ComboBoxName. RemoveItem item
如:ListBoxName. RemoveItem 0则删除了第一项,这时原来的第二项就变成了第一项。
    可以在设计阶段设定列表项目, 方法是:
     在属性窗口选择List属性,将出现一个下拉列表,在列表中输入第一项,按Ctrl+Enter,输入第二项……,最后用Enter结束。
(3)  取得列表框/组合框的数据
    可以通过取得Text属性或通过取得ListIndex属性来判断哪一项被选择了。ListIndex属性的值也同样是第一个为0,第二个为1……如:
  If List1.Text = “Visual Basic” Then Instructions
  If List1.ListIndex = 1 Then Instructions
组合框有时允许用户自己输入数据,这时所输入数据的ListIndex值为-1。
4. 通过滚动条Scroll Bar取得数据
在Visual Basic的工具箱里有两种滚动条:一种是垂直的,一种是水平的,它们的差异无非是摆放的方向不一样。
 (1) 滚动条的主要属性及事件
  1)Min,Max属性
Min属性决定滚动条最左端或最顶端所代表的值。Max属性决定滚动条最右端或最下端所代表的值。
  2)LargeChange,SmallChange属性
SmallChange决定在滚动条两端的箭头钮上单击时改变的值。LargeChange决定在滑块上方或下方区域单击时改变的值。
  3)Value属性
Value属性代表当前滑块所处位置的值,这个值由滑块的相对位置决定。
  4)Change事件
当滑块位置发生变化时就引发了Change事件。
 (2) 取得滚动条的数据
滚动条并不是一个数据输入的好控件,因为无法从滚动条上直接看出输入的数据,但它的优点是可以表示一定范围里的相对位置。为了得到数据,只要取得滚动条的Value属性就可以了。
5.  InputBox函数
InputBox函数提供一个简单的对话框供用户输入信息。在把其它版本的BASIC程序移植到Visual Basic时,InputBox函数通常用来代替INPUT语句。这个对话框的样子基本上是上面的样子。
它的完整语法是x = InputBox (prompt, title, default, xpos, ypos, helpfile, context)
    其中,prompt是提示的字符串,这个参数是必须的。title是对话框的标题,是可选的。default是文本框里的缺省值,也是可选的。 xpos,ypos决定输入框的位置。helpfile,context用于显示与该框相关的帮助屏幕。返回值 x 将是用户在文本框里输入的数据,x是一个字符串类型的值。如果用户按了Cancel钮,则 x 将为空字符串。
6. 使用通用对话框控件
Windows应用程序里的Open对话框,Save As对话框在各个应用程序里看起来都是一样的,通用对话框控件就可以提供这些对话框的标准功能。
 (1) Open对话框及Save As对话框
打开Open对话框使用ShowOpen方法,打开Save As对话框使用ShowSave方法。
Private Sub mnuOpen_Click ()
On Error GoTo ErrorHandler
CommonDialog1.CancelError = True
CommonDialog1.Filter = "Text Files (*.txt)|*.txt|Batch Files (*.bat)|*.bat|All Files (*.*)|*.*"
CommonDialog1.ShowOpen ' display Open common dialog box.
Call OpenFile(CommonDialog1.FileName)
ErrorHandler:
Exit Sub
End Sub
其中第三行决定了在文件格式类型栏里出现的文件类型。第五行需要一个自己的打开文件的过程,这个过程需要的参数就是通用对话框返回的文件名。通用对 话框的CancelError属性设为True的话,用户单击Cancel按钮将产生一个错误信息程序,凭借这个信息程序可以检测到用户的放弃操作。
(2) Color对话框
下面的过程可用用户选择的颜色作为窗体的底色。
Private Sub mnuColor_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError = True
CommonDialog1.ShowColor
Form1.BackColor = CommonDialog1.Color
CancelButton:
Exit Sub
End Sub
(3) Fonts对话框
下面的过程可用字体对话框改变文本框的字体:
Private Sub mnuFonts_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError = True
CommonDialog1.Flags = cdlCFBoth ' Flags property must be set to cdlCFBoth
CommonDialog1.ShowFont ' Display Font common dialog box.
Text1.FontName = CommonDialog1.FontName
Text1.FontSize = CommonDialog1.FontSize
Text1.FontBold = CommonDialog1.FontBold
Text1.FontItalic = CommonDialog1.FontItalic
Text1.FontUnderline = CommonDialog1.FontUnderline
Text1.FontStrikethru = CommonDialog1.FontStrikethru
Text1.ForeColor = CommonDialog1.Color
CancelButton:
Exit Sub
End Sub
代码的第三行出现了通用对话框的Flags属性决定了通用对话框的一些可选项,不过即使不赋值给Flags,代码也一样会按缺省的情况去执行的。
2.7  Visual Basic的输出机制
    作为输出的对象,Visual Basic提供了标签,文本框,窗体,图片框(Picture Box)等用于输出,而且Visual Basic里也有一堆命令、属性涉及信息的输出,较常用的有:MsgBox函数,Print方法,Cls方法,Tab函数,Format函 数,FontName,FontSize,FontBold,FontItalic,FontStrikethru,FontUnderline属 性,CurrentX,CurrentY属性等。
1. 通过MsgBox函数输出
了解Windows应用程序的人都知道当用户操作错误时,应用程序往往打出一个消息框来提示用户的错误,象这样:
Dim Action As Integer
Action = MsgBox("单击确定键将引爆此计算机!", vbYesNo + vbCritical + vbDefaultButton2, "警告!")
If Action = 6 Then Explode
这个功能在Visual Basic里是通过MsgBox函数来实现的,这样程序员就不必自己去画一个消息框了。语法是:
  Action = MsgBox (msg, type, title)
其中,msg是消息的内容,是一个字符串型的变量,type及title参数是可以省略的,type参数指定显示的按钮是什么及使用什么样的图标(这个参数往往让新程序员思考几分钟),title参数指定消息框的标题。type参数的含义是:
数值
符号常量
意义   
0
vbOKOnly
只显示 Ok 按钮
1
 vbOKCancel
显示 Ok  Cancel 按钮
2
vbAbortRetryIgnore
显示 Abor  Retry  Ignore 按钮
3
vbYesNoCancel  
显示 Yes  No  Cancel 按钮
4
vbYesNo  
显示 Yes  No 按钮   
5
vbRetryCancel
显示 Retry Cancel 按钮
16
vbCritical  
Stop Sign对极其重要的问题提醒用户
32
 vbQuestion
Question Mark增亮没有危险的问题
48
vbExclamation
 Exclamation Mark强调警告用户必须知道的事情
64
vbInformation
Information Mark可以使乏味的信息变得有趣
0
vbDefaultButton1
第一个按钮缺省
256
vbDefaultButton2
 第二个按钮缺省
512
vbDefaultButton3
 第三个按钮缺省   
例如:Action = MsgBox (“Are you girl?”, vbYesNo + vbQuestion, “Question”)。使用这个函数时Visual Basic将产生一个标题为Question,具有问号和Yes,No按钮的消息框。作为一个函数,本质上还是要返回值的,MsgBox的返回值确定了用 户的选择,程序可根据返回值做出相应的动作。
返回值
含义
返回值
含义
1
选择 Ok 按钮
5
选择 Ignore 按钮
 2
选择 Cancel 按钮
6  
选择 Yes 按钮
 3
选择 Abort 按钮
7
选择 No 按钮
 4
选择 Retry 按钮  
 
 
2. Print方法,Cls方法,Tab函数
 (1) Print方法
Print 方法的语法是:object. Print expressionlist
      object表示Print作用的对象,比如是Form或者是Picture Box,object是可以省略的,省略时的Print往往在窗体上输出。expressionlist是输出的内容,允许许多项数据的输出,在数据间可 以加入“,”或”;”。加入分号将使下一数据项紧挨着上一数据项输出。而加入逗号,则Visual Basic将下一数据项在下一打印区输出,其实就是空了几个空格后再输出。两个打印区之间有14个字符的宽度,其实这也很难衡量,比如14个“W”所占的 宽度大概是14个“i”所占宽度的三倍多。幸好中国日本之类的方块字所占的宽度基本上是一样的,所以较好处理一些。
(2) Tab函数
     Tab函数只用在Print方法中,它用来移动下一个字符到打印位置,这将省去数空格的功夫。语法是:Tab (column)
     Tab函数将Visual Basic自定义的14字符宽的打印区扔到一边,用自己的方式定义了新的灵活的打印区宽度。
(3) Cls方法
    Cls也是一个古老的BASIC语句,原来它的作用总是把屏幕变成黑色,然后在左上角或左下角闪烁一个光标,Visual Basic里它的作用是清除绘图语句和Print语句产生的文字和图形。
语法是:object. Cls
object指清除的对象,可以是Form或Picture Box。如果object省略,通常Visual Basic都把当前的窗口作为Cls操作的对象。
3. Format函数
Format函数用于制定字符串或数字的输出格式。语法是:x = Format (expression,fmt)
expression是所输出的内容。fmt是指输出的格式,这是一个字符串型的变量,这一项若省略的话,那么Format函数将和Str函数的功能差不多。如:
语句
输出
Format (2, “0.00”)
2.00
 Format (.7, “0%”)
 70%  
Format (1140, “$#,##0”)
$1,140
   简单地,fmt里的字符是这样的:
字符
意义
字符
意义
 0
 显示一数字,若此位置没有数字则补0
 .  
小数点
 #
 显示一数字,若此位置没有数字则不显示
 ,
 千位的分隔符
 %
 数字乘以100并在右边加上”%”号
- + $ ( )
 这些字出现在fmt里将原样打出
Format函数也可用来对时间进行输出。
fmt
输出
fmt
输出
m/d/yy
 8/16/96
  h:mm:ss a/p
 10:41:29 p  
d-mmmm-yy
 16-August-96
  h:mm
 22:41  
d-mmmm
 16-August
  h:mm:ss
 22:41:29  
mmmm-yy
 august-96
 m/d/yy h:mm
 8/16/96 22:41  
hh:mm AM/PM
 10:41 PM
 
 
4. FontName,FontSize,FontBold,FontItalic,FontStrikethru,FontUnderline属性
很明显,这些属性都与字体有关,许多控件都有这些属性。通常它们在设计阶段可以双击font属性来设置,运行期间可以直接设置。它们的意义是:
FontName  
字体的名称
  FontItalic
 字体是否用斜体显示  
FontSize
 字体的大小
  FontStrikethru  
字体是否有删除线  
FontBold
字体是否用粗体显示
  FontUnderline
 字体是否有下划线
     如:Text1.FontBold = True,将把Text1文本框的FontBold属性设为True。
5. 窗体,图片框的CurrentX,CurrentY属性
    这两个不可见的属性确定了下一次打印或绘图的水平及垂直坐标。如上面讲的Print方法,当expression后使用 “,” 时,Visual Basic将改变CurrentX,CurrentY值为下一打印区域开始的值,于是,输出便指向了下一个打印区域。而Cls方法将把操作对象的 CurrentX,CurrentY的值设为(0,0)。
6. 通过标签控件输出
     标签控件的特点是运行时不能直接修改它,通常一个文本框旁边都有一个标签用来标识文本框。标签的Autosize和WordWrap属性是一对有用且令人困惑的属性。

史翔 2005-02-25 10:20:38
re:[b]第三章[/b][b] VB[...


第三章  VB的程序设计基础
2.1  VB编码规则
1.  语言元素
   VB的语言基础是BASIC语言,VB程序的语言元素主要由:
  关键字(如: Dim、Print、Cls)
  函数(如:Sin()、Cos()Sqr())
  表达式(如:Abs(-23.5)+45*20/3 )
  语句(如:X=X+5 、 IF……ELSE……END IF)等组成。
2.  VB代码书写规则
(1) 程序中不区分字母的大小写,Ab 与AB等效;
(2) 系统对用户程序代码进行自动转换:
1)  对于VB中的关键字,首字母被转换成大写,其余转换成小写
2)  若关键字由多个英文单词组成,则将每个单词的首字母转换成大写
3)  对于用户定义的变量、过程名,以第一次定义的为准,以后输入的自动转换成首次定义的形式
3.  语句书写规则
(1)在同一行上可以书写多行语句,语句间用冒号()分隔
(2)单行语句可以分多行书写,在本行后加续行符:空格和下划线  _
(3) 一行允许多达255个字符
4.  程序的注释方式
(1)整行注释一般以 Rem开头,也可以用撇号 '
(2)用撇号 ' 引导的注释,既可以是整行的,也可以直接放在语句的后面,最方便;
(3)可以利用“编辑”工具栏的“设置注释块”、“解除注释块”来将设置多行注释。
5. 保留行号和标号
VB源程序接受行号与标号,但不是必须的(早期的BASIC语言中必须用行号)。
标号是以字母开始以冒号结束的字符串,一般用在GOTO语句(现在很少用)中。
2.2  VB的语言基础
1.数据类型
 VB的标准数据类型
数据类型
关键字
类型符
前缀
存储空间
范围
数值数据类型
字节型
Byte
 
Byt
1 个字节
0 到 255
整型
Integer
%
Int
2 个字节
-32,768 到 32,767
长整型
Long
&
Lng
4 个字节
-2,147,483,648 到 2,147,483,647
单精度型
Single

Sng
4 个字节
负数:-3.402823E38 到 -1.401298E-45;正数:1.401298E-45 到 3.402823E38
双精度型
Double
#
Dbl
8 个字节
负数: -1.79769313486232E308
       - 4.94065645841247E-324;
正数:4.94065645841247E-324
      1.79769313486232E308
货币型
Currency
@
Cur
8 个字节
从 -922,337,203,685,477.5808
到 922,337,203,685,477.5807
逻辑型
Boolean
 
Bln
2 个字节
True 或 False
日期型
Date
 
Dtm
8 个字节
100 年1月 1日 到 9999 年 12 月 31 日
对象型
Object
 
Obj
4 个字节
 任何 Object 引用
变长字符型
String
$
Str
10 字节加字符串长度
0 到大约 20 亿
定长字符型
String
$
Str
字符串长度
1 到大约 65,400
变体数字型
Variant
 
Vnt
16 个字节
任何数字值,最大可达 Double 的范围
变体字符型
Variant
 
Vnt
22 个字节加字符串长度
与变长 String 有相同的范围
注意
1)VB中对没有声明的变量其缺省的数据类型是变体型,可以用来存储各种数据,但所占用的内存比其它类型都多。为提高运行效率(整型效率较高),或达到一定的运算精确度(浮点型精度较高,但运行较慢),应合理的定义数据类型。
2) 逻辑型数据只有True 和False两个值,转换成整型时,True=-1 ,False=0,将其它类型转换成逻辑型时,非0数转换为True ,0转换为False。
3) 字符型可以包括所有的西文字符和汉字,字符必须用双引号括" "起来, 如:"abc123"
4)日期型数据按8字节的浮点数来存储,日期型数表示方式有两种:可以用号码符#括起来,也可以用数字序列表示(小数点左边的数字代表日期,右边代表时间,0为午夜,0。5为中午12点,负数表示是1899年12月31日前的日期和时间)。
如:#3/22/2002#    #2002-3-22 14:30:20#
Dim T As Date
T=-2.5
Print T    ' 打印出来的结果是1899-12-28 12:00:00
5)任何数据类型的数组都需要 20 个字节的内存空间,加上每一数组维数占 4 个字节,再加上数据本身所占用的空间。数据所占用的内存空间可以用数据元数目乘上每个元素的大小加以计算。例如,以 4 个 2 字节之 Integer 数据元所组成的一维数组中的数据,占 8 个字节。这 8 个字节加上额外的 24 个字节,使得这个数组所需总内存空间为 32 个字节。
2. 变量与常量
 (1)变量或常量的命名规则
1) 必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度≤255个字符;
2) 不能使用VB中的关键字,并尽量不与VB中标准函数名同名;如:Dim 、Sin
3)VB中不区分变量的大小写,一般变量首字母用大写,其余用小写;常量全部用大写字母表示
4)为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。
 (2)变量声明
   1)用Dim语句进行显式声明
      语句形式 Dim  变量名 [As 类型]      如: Dim  intX  As integer
          说明:·如果没有As 类型,则默认为变体类型。
·可在变量名后加类型符来代替As 类型  如: Dim  intX%
·一条语句可以同时定义多个变量,但每个变量必须有自己的类型声明,类型声明不能共用;
·字符串变量根据其存放的长度是否固定,定义方法不同:
       定长字符串:  Dim  strA  As  String*10  
              表示最多存放10个字符,如果赋值不足10个,则右补空;若多于10个,则多余部分截去。
      不定长字符串Dim  strA  As  String     ’最多可存放2MB个字符
2隐式声明
VB中允许变量不经过声明就直接使用,这种称为隐式声明,所有隐式声明的变量都是变体型的。
隐式声明容易造成错误,为了调试程序方便,一般对使用的变量都进行声明,可以在通用声明段使用Option  Explicit 语句来强制显式声明所有变量。
(3)常量
  1)直接常量
指在程序中直接给出值的数据,如:123、123&、123.45、1.234E2 、123D3分别表示整型、长整型、单精度浮点型(小数形式)、单精度浮点型(指数形式)、双精度浮点型。
八进制常数:  在数值前加&O ,如  &O123
十六进制常数:在数值前加&H ,如&H123
  2)用户声明的符号常量
      用Const来声明:  Const  符号常量名 [As 类型] = 表达式
如:Const  PI=3.14159              '声明了常量PI,代表3.14159,单精度型
    Const  MAX As Integer=&O144  ''声明了常量MAX,代表八进制数144,整型
    Const  COUNT#=45.67          '声明了常量COUNT,代表45.67,双精度型
  3)系统提供的常量
系统定义的常量位于对象库中,在对象浏览器中的Visual Basic(VB)和Visual Basic for Aplication(VBA)等对象库中列出了VB的常量。这些常量可以与应用程序的对象、方法、属性一起使用。
如:Form1.WindowsState=vbMaximized 表示将窗口极大化。
3.    运算符
(1)     算术运算符
运算符
含义
优先级
示例
结果
^
乘方
1
Ia^2
9
-
负号
2
-iA
-3
*

3
IA* iA* iA
27
/

3
10/iA
3.33333333333333
\
整除
4
10\iA
3
Mod
取模
5
10 Mod iA
1
+

6
10+iA
13
-

7
IA-10
-7
     说明:设表中的变量iA=3, 为整型。
   算术运算符两边的操作数应该是数值型,若是数字字符或逻辑型,则自动转换为数值类型后再运算。

史翔 2005-02-25 10:20:45
re:[b](2) [/b][b]字符...

(2)     字符串运算符
运算符
作用
区别
示例
结果
&
将两个字符串拼接起来
 连接符两旁的操作数不管是字符型还是数值型,系统先将操作数转换成字符,然后再连接。
"123"&55
"abc"+12
"12355"
"abc12"
+
连接符两旁的操作数均为字符型;若均为数值型则进行算术加法运算;若一个为数字字符型,一个数值型,则自动将数字字符转换为数值,然后进行算术加;若一个为非数字字符型,一个数值型,则出错。
"123"+55
"abc"+12
178
出错
(3)     关系运算符
运算符
含义
示例
结果
=
等于
"ABCDE"="ABR"
False
>
大于
"ABCDE">"ABR"
False
>=
大于等于
"bc">="大小"
False
[b][/b]
小于
23
False
[b][/b]
小于等于
"23"
True
[b][/b]
不等于
"abc""ABC"
True
Like
字符串匹配
"ABCDEFG" Like "*DE*"
True
Is
对象引用比较
 
 
 注意:
1)   如果两个操作数都是数值型,则按其大小比较
2)    如果两个操作数都是字符型,则按字符的ASCII码值从左到右一一比较
3)    汉字字符大于西文字符
4)   关系运算符的优先级相同
5)   VB6.0中Like运算符与通配符的使用:
?——表示任何单一字符
*——表示0个或多个字符
#——表示任何一个数字(0 - 9)
[字符列表]——表示字符列表中的任何单一字符
[!字符列表]—— 表示不在字符列表中的任何单一字符
(4) 逻辑运算符
运算符
含义
优先级
说明
示例
结果
Not
取反
1
当操作数为假时,结果为真
Not  F
Not  T
T
F
And

2
两个操作数均为真时,结果才为真
T  And  T
F  And  F
T  And  F
F  And  T
T
F
F
F
Or

3
两个操作数中有一个为真时,结果为真
T  Or  T
F  Or  F
T  Or  F
F  Or  T
T
F
T
T
Xor
异或
3
两个操作数不相同,结果才为真,否则为假
T  Xor  F
T  Xor  T
T
F
Eqv
等价
4
两个操作数相同时,结果才为真
T  Eqv  F
T  Eqv  T
F
T
Imp
蕴含
5
第一个操作数为真,第二个操作数为假时,结果才为假,其余都为真
T  Imp  F
T  Imp  T
F
T
 说明:
1)若有多个条件时,And必须全部条件为真才为真;Or只要有一个条件为真就为真。
2)如果逻辑运算符对数值进行运算,则以数字的二进制值逐位进行逻辑运算。And运算常用于屏蔽某些位;Or运算常用于把某些位置1。
如:12 And 7  表示对1100与0111进行And运算,得到二进制值100,结果为十进制4。
3)对一个数连续进行两次Xor操作,可恢复原值。在动画设计中,用Xor可恢复原来的背景。
4.表达式
(1)表达式的组成
     表达式由常量、变量、运算符、函数和圆括号按一定的规则组成,通过运算后有一个结果,运算结果的类型由数据和运算符共同决定。
 (2表达式的书写规则
1)乘号不能省略
2)括号必须成对出现,均使用圆括号,可以嵌套,但必须配对。
3)表达式从左到右在同一基准上书写,无高低、大小之分。
例:sqr((3*x+y)-z)/(x*y)^4
 (3)不同数据类型的转换
操作数的数据类型应该符合要求,不同的数据应该转换成同一类型。在算术运算中,如果操作数的数据精度不同,VB规定运算结果采用精度较高的数据类型。
 (4)优先级
     同一表达式中,不同运算符的优先级是:算术运算符 > 字符运算符 > 关系运算符 > 逻辑运算符
注意:对于存在多种运算符的表达式,可增加圆括号改变优先级或使表达式更清晰。
2.3  VB的公共函数
1.  数学函数
  VB中常用的数学函数
函数名
功能
示例
结果
Sqr(x)
求平方根
Sqr(9)
3
Log(x)
求自然对数,x>0
Log(10)
2.3
Exp(x)
求以e为底的幂值,即求ex
Exp(3)
20.086
Abs(x)
求x的绝对值
Abs(-2.5)
2.5
Hex[$](x)
求x的十六进制数,返回的是字符型值
Hex[$](28)
"1C"
Oct[$](x)
求x的八进制数,返回的是字符型值
Oct[$](10)
"12"
Sgn(x)
求x的符号, 当x>0, 返回1 ;x=0, 返回0; x返回-1
Sgn(15)
1
Rnd(x)
产生一个在(0,1)区间均匀分布的随机数,每次的值都不同;若x=0,则给出的是上一次本函数产生的随机数
Rnd(x)
0-1之间的数
Sin(x)
求x的正弦值,x的单位是弧度
Sin(0)
0
Cos(x)
求x的余弦值,x的单位是弧度
Cos(1)
0.54
Tan(x)
求x的正切值,x的单位是弧度
Tan(1)
1.56
Atn(x)
求x的反正切值,x的单位是弧度,函数返回的是弧度值
Atn(1)
0.79
2.  字符函数
 (1)字符串编码
      在Windows采用的DBCS(Double Byte Character Set)编码方案中,一个汉字在计算机内存中占2个字节,一个西文字符(ASCII码)占1个字节,但在VB中采用的是Unicode(ISO字符标准) 来存储字符的,所有字符都占2个字节。为方便使用,可以用StrConv函数来对Unicode 与DBCS进行转换,可以用函数Len()函数求字符串的字符数,用 LenB()函数求字符串的字节数。
 (2)常用的字符串函数
函数名
功能
示例
结果
Len(x)
求x字符串的字符长度(个数)
Len("ab技术")
4
LenB(x)
求x字符串的字节个数
LenB("ab技术")
8
Left(x,n)
从x字符串左边取n个字符
Left("ABsYt",2)
"AB"
Right(x,n)
从x字符串右边取n个字符
Right("ABsYt",2)
"Yt"
Mid(x,n1,n2)
从x字符串左边第n1个位置开始向右取n2个字符
Mid("ABsYt",2,3)
"BsY"
Ucase(x)
将x字符串中所有小写字母改为大写
Ucase("ABsYug")
ABSYUG
Lcase(x)
将x字符串中所有大写字母改为小写
Ucase("ABsYug")
absyug
Ltrim(x)
去掉x左边的空格
Lrim("  ABC  ")
"ABC  "
Rtrim(x)
去掉x右边的空格
Trim("  ABC  ")
"  ABC"
Trim(x)
去掉x两边的空格
Trim("  ABC  ")
 "ABC"
Instr(x,"字符", M)
在x中查找给定的字符,返回该字符在x中的位置,M=1不区分大小写,省略则区分
Instr("WBAC","B")
2
String(n,"字符")
得到由n个首字符组成的一个字符串
String(3,"abcd")
"aaa"
Space (n)
得到n个空格
Space (3)
"□□□"
Replace(C,C1,C2,N1,N2)
在C字符串中从N1开始将C2替代N2次C1,如果没有N1表示从1开始
Replace("ABCASAA","A","12",2,2)
"ABC12S12A"
StrReverse (C)
将字符串反序
StrReverse ("abcd")
"dcba"
3.  日期与时间函数
  常用的日期与时间函数
函数名
含义
示例
结果
Date ()
返回系统日期
Date ()
02-3-19
Time()
返回系统时间
Time()
3:30 :00 PM
Now
返回系统时间和日期
Now
02-3-19 3:30 :00
Month(C)
返回月份代号(1-12)
Month("02,03,19")
3
Year(C)
返回年代号(1752-2078)
Year("02-03-19")
2002
Day(C)
返回日期代号(1-31)
Day("02,03,19")
19
MonthName(N)
返回月份名
MonthName(1)
一月
WeekDay()
返回星期代号(1-7),星期日为1
WeekDay("02,03,17")
1
WeekDayName(N)
根据N返回星期名称, 1为星期日
WeekDayName(4)
星期三
  增减日期函数: DateAdd(要增减日期形式,增减量,要增减的日期变量)
    例:计算期末考试日期:DateAdd("ww",15,#2002/3/19#)
  求日期之差函数: DateDiff(要间隔日期形式,日期一,日期二)
    例:计算距毕业天数: DateDiff("d", Now, #2005/6/30#)
  日期形式
日期形式
yyyy
q
m
y
d
w
ww
h
n
s
意义



一年的天数

一周的天数
星期



4. 转换函数
函数名
功能
示例
结果
Str (x)
将数值数据x转换成字符串
Str (45.2)
  "45.2"
Val(x)
将字符串x中的数字转换成数值
Val("23ab")
   23
Chr(x)
返回以x为ASCII码的字符
Chr(65)
   "A"
Asc(x)
给出字符x的ASCII码值,十进制数
Asc("a")
    97
Cint(x)
将数值型数据x的小数部分四舍五入取整
Cint(3.6)
    4
Int(x)
取小于等于x的最大整数
Int(-3.5)
Int(3.5)
-4
3
Fix(x)
将数值型数据x的小数部分舍去
Fix(-3.5)
   - 3
CBool(x)
将任何有效的数字字符串或数值转换成逻辑型
CBool(2) CBool("0")
True
False
CByte(x)
将0-255之间的数值转换成字节型
CByte(6)
6
CDate(x)
将有效的日期字符串转换成日期
CDate(#1990,2,23#)
1990-2-23
CCur(x)
将数值数据x转换成货币型
CCur(25.6)
25.6
Round(x,N)
在保留N位小数的情况下四舍五入取整
Round(2.86,1)
2.9
CStr(x)
将x转换成字符串型
CStr(12)
   "12"
CVar(x)
将数值型数据x转换成变体型
CVar("23")+"A"
   "23A"
CSng(x)
将数值数据x转换成单精度型
CSng(23.5125468)
23.51255
CDbl(x)
将数值数据x转换成双精度型
CDbl(23.5125468)
23.5125468
5.  格式输出Format函数
    Format函数用于制定字符串或数字的输出格式。
    语法x = Format (expression, fmt )
expression是所输出的内容。fmt是指输出的格式,这是一个字符串型的变量,这一项若省略的话,那么Format函数将和Str函数的功能差不多。如:
语句
输出
Format (2, “0.00”)
2.00
Format (.7, “0%”)
 70%  
Format (1140, “$#,##0”)
$1,140
                                    fmt字符的意义
字符
意义
字符
意义
 0
 显示一数字,若此位置没有数字则补0
 .  
小数点
 #
 显示一数字,若此位置没有数字则不显示
 ,
 千位的分隔符
 %
 数字乘以100并在右边加上”%”号
- + $ ( )
 这些字出现在fmt里将原样打出
Format函数对时间进行输出时的意义
fmt
输出
fmt
输出
m/d/yy
 8/16/96
  h:mm:ss a/p
 10:41:29 p  
d-mmmm-yy
 16-August-96
  h:mm
 22:41  
d-mmmm
 16-August
  h:mm:ss
 22:41:29  
mmmm-yy
 august-96
 m/d/yy h:mm
 8/16/96 22:41  
hh:mm AM/PM
 10:41 PM
 
 
6.InputBox函数与MsgBox函数
(1)InputBox函数
  语法:x = InputBox (prompt, title, default, xpos, ypos, helpfile, context)
    其中,prompt是提示的字符串,这个参数是必须的。title是对话框的标题,是可选的。default是文本框里的缺省值,也是可选的。 xpos,ypos决定输入框的位置。helpfile,context用于显示与该框相关的帮助屏幕。返回值 x 将是用户在文本框里输入的数据,x是一个字符串类型的值。如果用户按了Cancel钮,则 x 将为空字符串。
(2)MsgBox函数
   语法:Action = MsgBox (msg, type, title)
数值
符号常量
意义
0
vbOKOnly
只显示 Ok 按钮
1
 vbOKCancel
显示 Ok  Cancel 按钮
2
vbAbortRetryIgnore
显示 Abor  Retry  Ignore 按钮
3
vbYesNoCancel  
显示 Yes  No  Cancel 按钮
4
vbYesNo  
显示 Yes  No 按钮   
5
vbRetryCancel
显示 Retry Cancel 按钮
16
vbCritical  
Stop Sign对极其重要的问题提醒用户
32
 vbQuestion
Question Mark增亮没有危险的问题
48
vbExclamation
 Exclamation Mark强调警告用户必须知道的事情
64
vbInformation
Information Mark可以使乏味的信息变得有趣
0
vbDefaultButton1
第一个按钮缺省
256
vbDefaultButton2
 第二个按钮缺省
512
vbDefaultButton3
 第三个按钮缺省   
  Action的值
返回值
含义
返回值
含义
1
选择 Ok 按钮
5
选择 Ignore 按钮
 2
选择 Cancel 按钮
6  
选择 Yes 按钮
 3
选择 Abort 按钮
7
选择 No 按钮
 4
选择 Retry 按钮  

史翔 2005-02-25 10:21:31
re:[b]第四章[/b][b] VB[/b]...

第四章 VB程序的控制结构
4.1  算法概论
1.算法的概念
  算法:指用计算机解决某一问题的方法和步骤。
算法分类
数值算法:用于解决一般数学解析方法难以解决的问题,如:求超越方程的根、求定积分、解微分方程等。
非数值算法:用于对非数值信息进行查找、排序等。
  数值算法:用于解决一般数学解析方法难以解决的问题,如:求超越方程的根、求定积分、解微分方程等。
     非数值算法:用于对非数值信息进行查找、排序等。
2.算法的特征
(1)确定性:指算法的每个步骤都应确切无误,没有歧义。
(2)可行性:指算法的每个步骤必须是计算机能够有效执行、可以实现的,并可得到确定的结果。
(3)有穷性:指一个算法应该在有限的时间和步骤内可以执行完毕的。
(4)输入性:指一个算法可以有0或多个输入数据。
(5)输出性:指一个算法必须有一个或多个输出结果。
3.算法的评价
主要评价指标是:算法是否正确、运行的效率、占用系统资源的多少
4.算法的描述
一般常用流程框图来描述算法。
图形符号
名称
代表操作

输入/输出
数据的输入与输出

处理
各种形式的数据处理

判断
判断选择,根据条件满足与否选择不同路径

起止
流程的起点与终点

特定过程
一个定义过的过程

流程线
连接各个框图,表示执行顺序

连接点
表示与流程图其他部分相连接
5.基本算法结构
“结构化程序设计方法”规定算法有三种基本结构: 顺序结构、选择结构循环结构


 
6.算法示例
(1)     

 
欧几里德算法——求两个自然数的最大公约数


   
(2)顺序查找算法—— 在N个字符串集合中,查找有无特定的字符串存在

 

   

4.2  

顺序结构
 
 1.  赋值语句
     赋值语句是任何程序设计中最基本的语句,赋值语句都时顺序执行的。赋值语句的形式为:
      变量名 = 表达式
    它的作用是计算右边表达式的值,然后赋给左边的变量,表达式的类型应该与变量名的类型一致。
 2. 使用说明
(1)当表达式为数值型而与变量精度不同时,强制转换成左边变量的精度;
(2)当表达式是数字字符串,左边变量是数值类型,自动转换成数值类型再赋值,但当表达式中有非数字字符或空串,则出错。
(3)任何非字符类型赋值给字符类型,自动转换为字符类型;
(4)当逻辑型赋值给数值型时,True转换为 -1,False转换为0;反之,非0转换为True,0转换为False;
(5)赋值号左边的变量只能是变量,不能是常量、常数符号、表达式,否则报错;
(6)不能在一句赋值语句中,同时给各变量赋值;
(7)在条件表达式中出现的 = 是等号,系统会根据 = 号的位置,自动判断是否为赋值号;
(8)注意N=N+1 是累加中常见的赋值语句,表示将N变量中的值加1后再赋值给N。
N
执行了N=N+1后
N
5

6
4.3   选择结构(或称分支结构)
1.1. IF条件语句
(1)If……Then语句(单分支结构 F)
语句形式:

1)
If
 
Then
        语句块
      End If


   2)If  表达式>  Then  语句>
     说明:表达式一般为关系表达式、逻辑表达式,也可以为算术表达式,非0为True,0为False;
语句块可以是一句或多句,若用2)表示,则只能是一句语句,若多句,语句间需用冒号分隔,而且必须在一行上书写。
例:已知两个数x和y,比较它们的大小,使得 x大于y:
     方法一:  if  x
             t=x
x=y
y=t
end if

    方法二:  if  x
      注意:将两个变量中的数进行交换时,必须借助于第三个变量才能实现。 [b][/b]
(2)
If
……Then……Else语句(双分支结构)

  语句形式:                                    
  1)If  表达式>  Then
[b]

[color=#ff0000][b]语句块1>
   [/b]

[b]Else

     
[/b]
[b][b]
[color=#ff0000]语句块2>

[/b]
    End If

2) If  表达式>  Then  语句1>  Else  语句2>
例:

x2 -5     x≠0
3x +2    x=0
 


 
(3)If……Then……ElseIf语句(多分支结构)
语句形式:                               
If  表达式1>  Then


[b][b]
[color=#ff0000]语句块1>

[/b]
ElseIf  表达式2>  Then


[b][b]
[color=#ff0000]语句块2>

[/b]
      [b]……
[ Else [/b]语句块 n+1 ]
  End If

注意
1)不管有几个分支,程序执行了一个分支后,其余分支不再执行;
2)ElseIf  不能写成Else  If
3)当多分支中有多个表达式同时满足,则只执行第一个与之匹配的语句块
  例:已知变量strC中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。


(4)     If语句的嵌套
    If语句的嵌套是指if 或else后面的语句块中又包含If语句。语句形式:
      If  表达式1>  Then
If  表达式11>  Then
        ……
     End If
        ……
    End If
 注意:
1)对于嵌套结构,为了增强程序的可读性,应该采用缩进形式书写;
2)If语句形式若不在一行上书写,必须与End If配对,多个if嵌套,End If与它最接近的Emd If配对。 例: 已知x、y、z三个数,比较它们的大小并排序,使得x>y>z.


2. Select Case语句(情况语句)   是多分支语句的又一种形式,语句形式:
  Select Case  变量或表达式
Case  表达式列表1

           语句块1
       Case  表达式列表2
语句块2

         [b]  ……
[Case Else [/b]
            语句块n+1]
End Select

 说明:1)变量或表达式可以是数值型或字符串表达式
        2)表达式列表I 可以是表达式、一组用逗号分隔的枚举值、表达式1 to 表达式2、Is关系运算符表达式;如:case  1 to 10  、   case  "a","w","e","t"  、 case  2,4,6,8,is>10
        3)并不是所有的多分支结构都可以用情况语句代替的。
  例:已知输入某课程的百分制成绩mark,要求显示对应五级制的评定,评定条件如下:



及格
不及格
80≤mark<90
70≤mark<80
60≤mark<70
60≤mark<70
60<mark


 
3. 条件函数
 (1)if函数
    函数形式: Iif(表达式,当条件为True时的值,当条件为False时的值
例:求X、Y中大的数,并放入变量Tmax中:   Tmax=Iif(X>Y, X, Y)
 (2)Choose函数
    函数形式:Choose(整数表达式,选项列表)
如果整数表达式的值是1,则选择列表中的第1项,依次类推;如果小于1或大于列表项数时,则返回NULL。
例: 根据nub为1 -4的值,换算成不同的运算符: OP= Choose(nub,“+”,“-”,“×”,“÷”)
4.3  循环结构
循环是在指定的条件下多次重复执行一组语句。VB中提供了两种类型的循环语句:
计数循环语句条件型循环语句
1. For循环语句(知道循环次数的计数型循环)
语句形式: For  [b]循环变量 = 初值To 终值  [ Step  步长][/b]
           [b]语句块
[Exit For]

语句块

[/b]Next  循环变量

 说明:1) 循环变量必须为数值型
2)步长一般为正,初值小于终值;若为负,初值大于终值;缺省步长为1;
3)语句块可以是一句或多句语句,称为循环体;
4)Exit For 表示当遇到该语句时,退出循环体;
执行Next的下一句;
               [b][/b]循环次数=int((终值 - 初值)/步长+1
5)退出循环后,循环变量的值保持退出时的值;
6)在循环体内对循环变量可多次引用,但不要对其赋值,否则影响结果。
例1计算1 ~ N的奇、偶数之和。(N为自然数)     例2:打印ASCII码表




2. Do……Loop循环(不知道循环次数的条件型循环)
是用于控制循环次数未知的循环结构,语法形式有两种:
  形式1Do While …… Loop
[b]Do [ While | Until [/b]条件 ]
            语句块
     [ Exit  Do ]
            语句块
Loop

形式2Do …… Loop While
     Do
       语句块
    [ Exit  Do ]
       语句块
[b]Loop  [ While | Until [/b]条件 ]

[b][/b]
 说明:
1)形式1为先判断后执行,有可能一次也不执行;
2)形式2为先执行后判断,至少执行一次;
3)关键字While 用于指明条件为真时就执行循环体中的语句,Until刚好相反;
4)当省略了While|Until 条件字句,即循环结构仅由 Do……Loop关键字构成时,表示无条件循环,这时循环体内应该有Exit Do语句,否则为死循环;
5)Exit Do 语句表示当遇到该语句时,退出循环,执行Loop的下一语句。
 例:我国现有人口13亿,按人口年增长率0.8%计算,多少年后我国人口超过26亿。
计算公式 26=13(1+0.008)n
图中的例子是按可变增长率和预计总人口数设计的。


3. 循环的嵌套
指在循环体内又包含了一个完整的循环结构。循环嵌套对For 循环和Do……Loop循环均适用。


:打印九九乘法表
 


4.4   其它辅助控制语句
1.Go To 语句
  语句形式Go To 标号 | 行号

 说明:(1)Go To语句只能转移到同一过程的标号或行号处;标号是一个字符系列,首字符必须为字母,与大小写无关,任何转移到的标号后面必须有冒号 ;行号是一个数字序列;
(2)以前BASIC中常用此语句,可读性差;现在要求尽量少用或不用,改用选择结构或循环结构来代替。
2.Exit语句
     用于退出某控制结构的执行,VB的Exit语句有多种形式,如:
   Exit For (退出For循环)
   Exit Do  (退出Do)循环)
   Exit Sub (退出子过程)
   Exit Function(退出函数)
3.End 语句
   独立的End语句用于结束一个程序的执行,可以放在任何事件过程中,形式为:End
VB 的End语句还有多种形式,用于结束一个过程或块,如:
   End If    End With   End Type   End Select     End Sub    End Function
4.With语句
它的作用是可以对某个对象执行一系列的语句,而不用重复指出对象的名称。但不能用一个With语句设置多个不同的对象。属性前面需要带点号“· ”。
  语句形式如下:  With  对象名
语句块

          End With
With  form1
. Height=3000

. Width=4000

. BackColor=#ff0000
End With
4.5   程序调试
1. VB的调试工具
(1)设置自动语法检查
打开工具菜单 → 单击选项命令 → 选择 编辑器 页面 →将 自动语法检测 勾上。
(2)利用VB调试工具栏

   利用该工具栏可以运行程序、中断运行、在程序中设置间断点、监视变量、单步调试、过程跟踪等操作。
2. VB的三种模式
(1)设计模式
在设计模式下可以进行程序的界面设计、属性设置、代码编写等,标题栏上显示“设计”,在此模式下不能运行程序,也不能使用调试工具。
(2)运行模式
执行“运行”菜单中的“启动”命令或单击工具栏上的启动按钮或按F5键,即由设计模式进入运行模式,标题栏显示“运行”,在此阶段可以查看程序代码,但不能修改。若要修改,必须单击工具栏上的“结束”按钮,回到设计模式,也可以选择“中断”按钮,进入中断模式。
(3)中断模式
当程序运行时单击了“中断”按钮,或当程序出现运行错误时,都可以进入中断模式,在此模式下,运行的程序被挂起,可以查看代码、修改代码、检查数据。修改结束,单击“继续”按钮可以继续程序的运行,也可以单击“结束”按钮停止程序的执行。
3. 常见错误
(1) 编辑时错误
当用户在代码窗口编辑代码时,VB会对程序进行语法检查,当发现语句没有输完、关键字输错等情况时,系统会弹出对话框,提示出错,并在错误处加亮显示,以便用户修改。
(2)编译时错误
是指用户单击了“启动”按钮,VB开始运行程序前,先编译执行的程序段时产生的错误,此错误是由于用户未定义变量、遗漏关键字等原因而产生的。发现错误时系统会停止编译,提示用户修改。
(3)运行时错误
指VB在编译通过后,运行代码时发生的错误,一般是由于指令代码执行了非法操作引起的,如:数据类型不匹配、试图打开一个不存在的文件等。系统会报错并加亮显示、等候处理。
(4)逻辑错误
如果程序运行后得不到所希望的结果,则说明存在逻辑错误。如:运算符使用不正确,语句的次序不对、循环语句的起始、终值不正确。这种错误系统不会报错,需要用户自己分析判断。
4.程序调试方法
(1)进入/退出中断状态
进入中断状态有四种方法:
1) 程序运行时发生错误自动进入中断
2) 程序运行中用户按中断键强制进入中断
3) 用户在程序中预先设置了断点,程序执行到断点处即进入中断状态
4) 在采用单步调试方式,每运行一个可执行代码后,即进入中断状态。
(2) 利用调试窗口
  1) 立即窗口

这是调式窗口中使用最方便、最常用的窗口。可以在程序中用Debug.Print方法,把输出送到立即窗口,也可以在该窗口中直接使用Print语句或?显示变量的值。
  2)  本地窗口
     该窗口显示当前过程中所有变量的值,当程序的执行从一个过程切换到另一个过程时,该窗口的内容发生改变,它只反映当前过程中可用的变量。
  3)  监视窗口
该窗口可显示当前的监视表达式,在此之前必须在设计阶段,利用调试菜单的“添加监视命令”或“快速监视”命令添加监视表达式以及设置的监视类型在运行时显示在监视窗口,根据设置的监视类型进行相应的显示。
(3)插入断点和逐句跟踪
    在调试程序时,通常回设置断点来中断程序的运行,然后逐句跟踪检查相关变量、属性和表达式的值是否在预期的范围内。
  可在中断模式下或设计模式时设置或删除断点,在代码窗口选择怀疑存在问题的地方作为断点,按下F9键,则程序运行到断点处即停下,进入中断模式,在此之前所关心的变量、属性、表达式的值都可以看到。

史翔 2005-02-25 10:22:16
re:[b]第五章 [/b][b]VB...

第五章     VB中的数组
5.1    数组的概念
1.引例
求100个学生的平均成绩及超过平均成绩的人数。
如果用一般变量来表示成绩,需要用100个变量,如:mark1、mary2、……mark100。若用数组,可以只用一个来表示mark(1
To 100)。
2.基本概念
  数组:是同类型变量的一个有序的集合。
         如:A(1 To 100),表示一个包含100个数组元素的名为A的数组。
  数组元素: 即数组中的变量。用下标表示数组中的各个元素。
           表示方法:数组名(P1,P2,……)
                其中P1、P2表示元素在数组中的排列位置,称为“下标”。
           如:A(3,2)代表二维数组A中第3行第2列上的那个元素。
  数组维数: 由数组元素中下标的个数决定,一个下标表示一维数组,二个下标表示二维数组。
            VB中有一维数组、二维数组、……最多60维数组。
  下标: 下标表示顺序号,每个数组有一个唯一的顺序号,下标不能超过数组声明时的上、下界范围。下标可以是整型的常数、变量、表达式,甚至又是一个数组元素。
下标的取值范围是:下界 To 上界 ,缺省下界时,系统默认取0。
3.数组声明
    数组必须先声明后使用。声明数组就是让系统在内存中分配一个连续的区域,用来存储数组元素。
    声明内容数组名、类型、维数、数组大小
         一般情况下,数组中各元素类型必须相同,但若数组为Variant时,可包含不同类型的数据。
    静态数组:声明时确定了大小的数组。
   动态数组: 声明时没有给定数组大小(省略了括号中的下标),使用时需要用ReDim语句重新指出其大小。
    使用动态数组的优点是根据用户需要,有效地利用存储空间,它是在程序执行到ReDim语句时才分配存储单元,而静态数组是在程序编译时分配存储单元。
5.2    静态数组及声明
1.   一维数组
   静态一维数组的声明形式:
       Dim  数组名下标 [As  类型]
说明:(1)下标必须为常数,不可以为表达式或变量;
(2)下标下界最小为-32768,最大上界为32767;省略下界,其默认值为为0,一维数组的大小为:上界-下界+1
(3) 如果省略类型,则为变体型
: (1) Dim  A(10) As Integer
声明了A是数组名、整型、一维数组、有11个元素,下标的范围是0~10。
(2) Dim  B(-3 To 5) As String*3
声明了B是数组名、字符串型、一维数组、有9个元素,下标的范围是-3~5,每个元素最多存放3个字符。
2.多维数组
   静态多维数组的声明形式:
   Dim  [b]数组名(下标1[,下标2…])[/b] [As  类型]
  说明: (1)下标个数决定数组的维数,最多60维。
(2)每一维的大小=上界-下界+1;数组的大小=每一维大小的乘积。
  例:Dim  C(-1 To 5, 4) As  Long
声明了C是数组名、长整型、二维数组、第一维下标范围为-1~5,第二维下标的范围是0~4,占据7x 5个长整型变量的空间。
3.注意事项
(1)在有些语言中,下界一般从1开始,为了便于使用,在VB的窗体层或标准模块层用Option Base n 语句可重新设定数组的下界,如Option Base 1。
(2) 在数组声明中的下标关系到每一维的大小,是数组说明符,而在程序其他地方出现的下标为数组元素,两者写法相同,但意义不同。
(3) 在数组声明时的下标只能是常数,而在其他地方出现的数组元素的下标可以是变量。
5.3    动态数组及声明
1.  动态数组的建立与声明
建立动态数组的方法是:利用Dim、Private、Public语句声明括号内为空的数组,然后在过程中用ReDim语句指明该数组的大小。语法是:
  ReDim  数组名[b]下标1[[/b]下标2…] [As  类型]
其中下标可以是常量,也可以是有了确定值的变量,类型可以省略,若不省略,必须与Dim中的声明语句保持一致。
例: Dim D() As Single
Sub Form_Load()
……
ReDim D(4,6)
……
End Sub
2.注意事项
(1)在动态数组ReDim语句中的下标可以是常量,也可以是有了确定值的变量;
(2)在过程中可以多次使用ReDim来改变数组的大小,也可改变数组的维数。
(3)每次使用ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据,但使用Preserve只能改变最后一维的大小,前面几维大小不能改变。
3.动态数组使用示例
5.4    数组的基本操作
1.   给数组元素赋初值
  (1) 利用循环结构
例:Dim  iA(1 To 10) As Integer
For i=1 To 10
A(i)=0
Next i
  (2) 利用Array函数
例:Dim  a As Variant, b As Variant, i%
        a = Array (1,2,3,4,5)
b = Array ("abc","def","67")
For i=0 To Ubound (a)
Picture1.print a(i);"";
Next i
For i=0 To Ubound (b)
Picture1.print b(i);"";
Next i
2.数组的输入
 (1) 通过InputBox函数输入适合输入少量数据。
例:Dim  sB(3,4) As singer
For i=0 To 3
For j=0 To 4
SB(i,j) =InputBox("输入" & i & j & "的值")
Next j
Next i

史翔 2005-02-25 10:22:36
re:[b] (2) [/b][b]通过文本框...

 (2) 通过文本框控件输入
    对大批量的数据输入,采用文本框和函数split()\join()进行处理,效率更高。
3.数组的赋值
    在VB6.0中可以直接将一个数组的值赋值给另一个数组:
Dim a(3) as integer, b() as integer
A(0)=2: A(1)=5: A(2)=-2: A(3)=2
    b=a
在早期的VB中,这需要用循环语句才可以实现:
ReDim b(UBound(a))
For I=0 to UBound(a)
b(I)=a(I)
Next i
   注意:(1)赋值号两边的数据类型必须一致;
(2)如果赋值号左边的是一个动态数组,则赋值时系统自动将动态数组ReDim成右边相同大小的数组;
(3)如果赋值号左边的是一个大小固定的数组,则数组赋值出错。
4.数组的输出
用For……Next循环语句输出。
5.求数组中最大元素和所在下标及各元素之和
求数组中最大元素及下标,一般假设第一个元素及下标为最大,然后将该数与数组中的其他元素逐一比较,若有比其大的就替换,同时替换下标。
6.交换数组中各元素
交换的要求是将数组第一个元素与最后一个交换,第二个与倒数第二个交换,依次类推。
5.5    控件数组
1.控件数组的概念
控件数组是由一组相同类型的控件组成的,它们共用一个控件名,具有相同的数组。控件数组适用于若干个控件执行的操作相似的场合,控件组共享同样的事件过程。控件数组通过索引号(属性中的Index)来标识各控件,第一个下标是0 。如:Text1(0)、Text1(1)、Text1(2)、Text1(3)……
2.控件数组的建立
(1)在设计时建立
步骤:1)在窗体上画出某控件,并进行属性设置。
2)选中该控件进行“复制”和“粘贴”操作,系统提示“是否建立控件数组”,选择是即可。多次粘贴就可以创建多个控件元素。
3)进行事件过程的编程。
(2)运行时添加控件数组
  方法:1)在窗体上画出某控件,设置该控件的Index值为0,表示该控件为数组。
2)在编程时通过Load方法添加其余若干个元素,也可以通过Unload删除某个添加的元素。
3)每个添加的控件数组通过Left 和Top属性,确定其在窗体上的位置,并将Visible设置为True。
  使用示例:建立一个类似国际象棋的棋盘,要求黑白交替,运行时单击某个棋格,会改变颜色并显示其序号。
5.6    自定义数据类型
1. 自定义数据类型的定义
是指由若干标准数据类型组成的一种复合类型,也称为记录类型。
(1)定义方式:
  Type 自定义类型名
元素名[(下标)]  As 类型名
……
元素名[(下标)]  As 类型名
  End Type
元素名:表示自定义类型中的一个成员
下标(可选):表示是数组,
类型名:为标准类型
例:定义一个学生信息的自定义类型:
    Type studtype
No   As  Integer       
' 定义学号
      Name  As  String*10    ' 定义姓名
      Sex  As  String*2       ' 定义性别
      Mark(1 TO 4) As Single   ' 定义4门课程的成绩
      Total As Single           ' 定义总分
    End Type
(2)注意事项
1)自定义类型一般在标准模块(.bas)中定义,默认是Public
2)自定义类型中的元素可以是字符串,但应是定长字符串
3)  不可把自定义类型名与该类型的变量名混淆
4) 注意自定义类型变量与数组的差别:它们都由若干元素组成,前者的元素代表不同性质、不同类型的数据,以元素名表示不同的元素;后者存放的是同种性质、同种类型的数据,以下标表示不同元素。
2. 自定义型变量的声明和使用
使用形式: Dim 变量名  As  自定义类型名
例如: Dim  student As studtype,  mystud  As studtype
 自定义类型中元素的表示方法是:变量名 . 元素名  如:student.name  student.mark(4)
为了简单起见,可以用With …… End With 语句进行简化。 例:
With  student
.no=99001
.name=""
.sex=""
.total=0
for I=1 to 4
.mark(I)=int(rnd*101)     '随机产生0 - 100之间的分数
.total=.total+.may(I)
next I
End With
Mystud=student      ' 同种自定义类型变量可以直接赋值
3.自定义类型数组的使用
自定义类型数组就是数组中的每个元素都是自定义类型。
例如:自定义一个由学生姓名、成绩组成的学生记录类型,用来存放100个学生的记录。

史翔 2005-02-25 10:23:12
re:[b]第六章[/b][b] VB[/b]...

第六章 VB的过程设计
1.什么是过程
    在程序设计中,为各个相对独立的功能模块所编写的一段程序称之为过程。
2.VB中的自定义过程分类
(1)以“Sub”保留字开始的子程序过程 (包括事件过程和通用过程),不返回值;
(2)以“Function” 保留字开始的函数过程,返回一个值;
(3)以“Property” 保留字开始的属性过程,可以返回和设置窗体、标准模块以及类模块的属性值,也可以设置对象的值。
6.1 子过程(Sub)的定义与调用
1. 事件过程
(1)窗体事件过程
   语法Private  Sub Form_事件名([参数列表])
[局部变量和常数声明]
语句块

End Sub
注意
1)窗体事件过程名由Form_事件名组成,多文档窗体用MDIForm_事件名;
2)每个窗体事件过程名前都有一个Private的前缀,表示该事件过程不能在它自己的窗体模块之外被调用;
3)事件过程有无参数,完全由VB提供的具体事件本身决定,用户不可以随意添加。
(2)控件事件过程
   语法Private  Sub 控件名_事件名([参数列表])
[局部变量和常数声明]
语句块

End Sub 
注意
:其中的控件名必须与窗体中某控件相匹配,否则VB将认为它是一个通用过程。
(3)建立事件过程的方法
1)打开代码编辑器窗口(两种方法:双击对象或从工程管理器中单击“查看代码”按钮)
2)在代码编辑器窗口中,选择所需要的“对象”和“事件过程”
3)在Private Sub …… End Sub之间键入代码
4)保存工程和窗体
(4)事件过程的调用
事件过程由一个发生在VB中的事件来自动调用或者由同一模块中的其他过程显示调用。
2.通用过程
通用过程是一个必须从另一个过程显示调用的程序段,通用过程有助于将复杂的应用程序分解成多个易于管理的逻辑单元,使应用程序更简洁、更易于维护。
通用过程分为公有(Public)过程私有( Private)过程两种,公有过程可以被应用程序中的任一过程调用,而私有过程只能被同一模块中的过程调用。
 (1定义方法:
     [ [b]Private | Public ]  [ Static]  Sub[/b] 过程名([参数列表])
[局部变量和常数声明]     ‘用Dim 或Static声明
语句块
[Exit Sub]
语句块

End Sub
    注意:
1)缺省[ Private | Public ]时,系统默认为 Public ;
2)Static 表示过程中的局部变量为“静态”变量;
3)过程名的命名规则与变量命名规则相同,在同一个模块中,同一符号名不得既用作Sub过程名,又用作Function过程名。
4)参数列表中的参数称为形式参数,它可以是变量名或数组名,只能是简单变量,不能是常量、数组元素、表达式;若有多个参数时,各参数之间用逗号分隔,形参没有具体的值。VB的过程可以没有参数,但一对圆括号不可以省略。不含参数的过程称为无参过程。
     形参格式为:
[ ByVal ] 变量名[()] [As  数据类型]
式中:
变量名[()]:变量名为合法的VB变量名或数组名,无括号表示变量,有括号表示数组。

ByVal :表明其后的形参是按值传递参数(传值参数 Passed By Value),若缺省或用ByRef,则表明参数是按地址传递的(传址参数)或称“引用”(Passed By Reference)。
As:
 数据类型:缺省表明该形参是变体型变量,若形参变量的类型声明为String,则只能是不定长的。而在调用该过程时,对应的实在参数可以是定长的字符串或字符串数组,若形参是数组则无限制。
5)Sub 过程不能嵌套定义,但可以嵌套调用。
6)  End Sub 标志该过程的结束,系统返回并调用该过程语句的下一条语句。
7) 过程中可以用Exit Sub提前结束过程,并返回到下调用该过程语句的下一条语句。
 (2)建立Sub过程的方法
  方法一:
1)打开代码编辑器窗口
2)选择“工具”菜单中的“添加过程”
3)从对话框中输入过程名,并选择类型和范围
4)在新创建的过程中输入内容
  方法二:
1)在代码编辑器窗口的对象中选择“通用”,在文本编辑区输入 Private Sub 过程名
2)按回车键,即可创建一个Sub过程样板
3)在新创建的过程中输入内容
3.Sub子过程的调用
 (1) 用Call语句调用Sub过程
      语法:Call 过程名实在参数表
实在参数的个数、类型和顺序,应该与被调用过程的形式参数相匹配,有多个参数时,用逗号分隔。
例:利用过程编写求三角形面积的程序

 

 (2)把过程名作为一个语句来用
语法:过程名 [实参1[,实参2……]]
它与(1)的不同点是:去掉了关键字和实参列表的括号
如上例中可以改成:area a,b,c,w
6.2 函数过程(Function)的定义与调用
1.函数过程的定义
  有两种方法:
(1) 在代码窗口中,利用“工具”菜单下的“添加过程”命令,插入一个函数过程模板来定义
(2)在代码窗口中,把插入点放在所有现有过程之外,直接输入函数来定义
[ [b]Private | Public ]  [ Static]  Function[/b] 函数名([参数列表])[As 数据类型]
[局部变量和常数声明]     ‘用Dim 或Static声明
[ 语句块 ]
[ 函数名=表达式 ]
[ Exit Function]
语句块
[ 函数名=表达式 ]

End Function

查看完整版本: » VB基础教程


Powered by 夢清雲淡社區  © 2005-2008 http://sxhouse.org/

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    猜你喜欢

    0条评论

    发表

    请遵守用户 评论公约

    类似文章
    喜欢该文的人也喜欢 更多