§1 VB的特点
1.可视化的设计平台 2.面向对象的设计方法
对象具有自己的属性(对象的性质)、方法(对象的动作)和事件(对象的响应),它构成对象的三个要素。
3.事件驱动的编程机制 4.集成化的开发环境 5.结构化的设计语言 §4 VB程序设计
VB应用程序的开发有三个步骤: (1)设计应用程序界面。 (2)设置对象的属性 (3)编写事件驱动代码
保存工程 简便方法:
执行“文件/保存工程”命令 (第一次保存文件)系统先打开“文件另存为”对话框,保存窗体文件(或标准模块文件),然后再打开“工程另存为”对话框,保存工程文件。
保存修改后的工程文件
选择“文件/保存工程”命令保存所做的修改,(保存与工程有关的修改过的窗体文件或标准模块文件)。
VB基础知识 常量
(1)字符串常量
用双引号括起来的字符序列(除双引号和回车符)。 例如: \"China\"
“I am a student.” \"95.3%\"
\"计算机软件\" (2)数值常量
整型 1234(十进制)
长整型 12345678(十进制)
单精度数:有三种形式,12.34,123!,123.45E-5 双精度数:有两种形式,12.34#,123.45D-5 在常数后面加上类型说明符: % 整型 & 长整型 ! 单精度 # 双精度 $ 字符串型。 2. 符号常量
格式:Const常量名 = 表达式
功能:定义一个符号常量来表示表达式的值。 说明:“常量名”可加以类型说明符。符号常量的类型由类型说明符或表达式的类型决定。 Const PI = 3.141593
变量
1. 变量的命名
变量名以字母开头,后跟字母、数字和下划线组成 说明:
(1)变量名不能是保留字
(2)VB变量名不区分字母大小写。
2. 变量的类型
(1)用类型说明符
在变量的尾部加上类型说明符: % 整型 & 长整型 ! 单精度 # 双精度 $ 字符串型。
例如:Num%,Str1$均是合法的变量名 在引用时,可以省略类型说明符。 (2)定义变量时声明其类型 格式:Dim 变量名 As 类型
“类型”可为基本数据类型或用户自定义的类型。 Boolean(布尔型) Long(长整型)
Single(单精度型) Double(双精度型) String(字符串型) Variant(变体型) 用户自定义类型 例如:
Dim str1 As String , country As String*20 Dim i As Integer , sum As Single
定义变量后,数值型变量的初值为0 字符型变量的初值为空字符串 其中:
变长字符串的初值是长度为0
定长字符串的初值的长度等于定义值。
3. 变体类型变量 如未定义类型的变量 例如:Dim sum As Variant Dim sum
运算符与表达式
1. 算术运算符(8种) 优先级(从高到低): 指数(∧) 取负(-)
乘法、浮点除法(* , /)
整数除法(\\) 取模(Mod)
加法、减法(+ , -)。
整除:被除数和除数为整数,结果为整数。 31.7 \\ 5.88
32\\6 结果为:5
取模(求余)运算:结果为整数除法的余数。 31.77 Mod 5.88 (四舍五入) 32 Mod 6, 余数为2 3 Mod 6 余数为3 字符串表达式
字符串运算符: & 或 +
功能:把字符串连接成一个字符串。 说明:
(1) 符号“&”与字符串变量之间应间隔一个空格, 例如:
str1 & str2
(2)“&”能强制把其它类型的数据转换为字符串, 而“+”不能。 例如:
2008 & \"奥运会\" 2008奥运会 \"2008\" + \"奥运会\" 2008奥运会 注意:
Print \"123\" + 567 结果:690
Print \"abc\" + 567 出错:类型不匹配
常用内部函数 数学函数 函 数 Abs(x) Int(x) Cint(x) Exp(x) Log(x) Sqr(x) Rnd 字符串函数 Len(str) Left$(str,n) Right$(str,n) Mid$(str,p[,n]) 返回字符串长度 取字符串左边n个字符 取字符串右边n个字符 从位置p开始,取n个字符,如n省略,取到最后 功 能 返回x的绝对值 求不大于x的最大整数 Int(7.8)结果为7, Int(-7.8)结果为-8 把x小数四舍五入,转换为整数, 计算ex,e是自然数2.718281 求x的自然对数 求x的平方根 返回0~1之间的随机数: Str$(num) Val(str) Asc(str) Chr$(n) 数值转字符串 字符串转数值 返回字符串首字母ASCII码 ASCII码转字符 说明:
(l)三角函数Sin、Cos和Tan自变量的单位是弧度 反正切函数Atn(x)的返回值单位为弧度。 度转换为弧度:1° = 3.14159/180 *x
(2)用函数Rnd可以产生不同的随机数。 产生指定范围的随机数:
l 产生0~n之间的随机数(不含0和n) Rnd*n
l 产生0~n之间的随机整数(含0,不含n) Int(Rnd*n)
l 产生a~b之间的随机整数(含a,不含b) Int((b-a)*Rnd+a)
l 产生a~b之间的随机整数(含a和b) Int((b-a+1)*Rnd+a)
顺序结构
结构化程序三种基本结构:
顺序结构、选择结构和循环结构。 1 赋值语句 变量 = 表达式 属性名 = 属性值 注意:
当变量类型与表达式的类型不同时,VB自动将表达式的类型强制 转换为变量类型。 例如:
Dim Num As Integer
Num=8. (将9赋给Num,四舍五人) 3 数据输入
方法1:用文本框 例:Dim m As Integer m=Val (Text1.Text)
方法2:用Inputbox()函数 例:m =Val(InputBox(\"enter m:\")) 方法3:从文件输入 Input#2,m
4 输出数据
方法1:用文本框
例:Text1.Text=n 或 Text1=n 方法2:用标签
例:Label1.Caption = n 方法3:用Print方法 例:Print n
方法4:输出到列表框 例:List1.AddItem n 方法5:输出到文件
例:Open \"abc.dat\" For Output As #1 Write#1, n
【例】交换变量a、b的值。
用中间变量t作暂存单元,必须与交换的变量同类型。 t = a : a =b : b = t
3.2 窗 体
窗体常用的方法Print, 窗体事件 1. Click事件 2. Load事件
Load是把窗体装入工作区事件,
Form_Load()事件是执行程序时自动触发的,因此常用来在 启动程序时对属性和变量进行初始化。 3. UnLoad事件
关闭窗体触发该事件
选择结构
满足条件为“真”,用“True”表示; 不满足条件为“假”,用“False”表示。 关系表达式
1. 关系运算符(6种) = 、<>、<、>、<=、 >= 优先级相同,运算从左到右。 2. 关系表达式 例如:“apply” > “apple” 按ASCII码逐字符进行比较。
空格<“0”„“9”<“A”„“Z”<“a”„“z” “apply” > “apple” 结果为 True
逻辑表达式
逻辑运算符: Not、 And、 Or 优先级:
逻辑非(Not)、逻辑与(And)、逻辑或(Or)
注意:
表示:a≤x≤b a <= x And x <= b 选择结构
1.单行If语句
If 条件 Then 语句组1 [Else 语句组2] 语句组:各语句间需用“:”分隔。
2.块结构If语句 If 条件 Then 语句块1 Else 语句块2 End If
例:计算分段函数 1+x (x≥0) y=
1-2x (x<0) If x>=0 Then y=1+x Else y=1-2*x End If
用单行If语句:
If x>=0 Then y=1+x Else y=1-2*x 或:
If x>=0 Then y=1+x If x<0 Then y=1-2*x
3.多分支选择结构 If 条件1 Then 语句块1
ElseIf 条件2 Then 语句块2
ElseIf 条件3 Then 语句块3 „„ Else
语句块n+1 End If
从多个条件中,选择执行一个语句块 “纵然分支众多,仅选其一”
说明:
当有多个条件为真时,只能执行最前面的一个语句块。 注意:ElseIf之间不能有空格
【例】学生成绩判定。
Private Sub Command1_Click()
x =Val(InputBox(\"输入学生成绩:\")) If x >=90 Then Print “优” ElseIf x >=80 Then Print “良” ElseIf x >=70 Then Print “中” ElseIf x >60 Then Print “及格” Else
Print “不及格” End If End Sub
4.2.4 IIf函数
IIf是单行If语句的简单版本。
变量 = IIf(条件,True部分,False部分) 注意:IIf函数中的三个参数都不能省略。
例:计算分段函数 1+x (x≥0) y=
1-2x (x<0)
Private Sub Command1_Click() Dim x As Single,y As Single x= Val(Text1.Text)
y=IIf(x>=0,1+x,1-2*x) Text2.Text = y End Sub
【例】判闰年。 闰年的条件:
(1)被4整除,但不能被100整除; (2)能被400整除。 最好:
If x Mod 400 = 0 Then y$ = \"是闰年\"
ElseIf x Mod 4 = 0 And x Mod 100 <> 0 Then
y$ = \"是闰年\" Else
y$ = \"不是闰年\" End If
也可
x = Val(InputBox(\"输入年份\"))
If x Mod 4 = 0 and x Mod 100 <> 0 or x Mod 400 = 0 Then y$ = \"是闰年\" Else
y$ = \"不是闰年\" End If
4.Select Case语句
用于实现多分支结构。 Select Case 测试表达式 Case 条件1 语句块1 Case 条件2 语句块2 „„ Case Else 语句块n+1 End Select
功能:
从多个条件中选择执行第一个符合条件的语句,都不符合, 则执行Case Else后的语句块。 注意条件:
常量表: 1,3,5
测试范围:10 to 20,“a” to “z” 比较范围:Is < 10 (不能为逻辑表达式) 【例】学生成绩评定
Private Sub Command1_Click()
x = Val(InputBox(\"输入考试成绩\")) Select Case x Case 90 To 100 y$ = \"优\" Case 80 To y$ = \"良\" Case 70 To 79 y$ = \"中\" Case 60 To 69 y$ = \"及格\"
Case 0 To 59 y$ = \"不及格\" Case Else
y$ = \"输入错误\" End Select
Form1.Print \"成绩:\"; x, \"等级:\"; y$ End Sub
循环结构
“当型”循环:当条件为真,执行循环体。 “直到型”循环:做循环,直到条件为真为止。 1.For-Next循环
常用于循环次数已知。
For 循环变量 = 初值 To 终值 [Step步长] 循环体 [ Exit For ]
Next 循环变量
【例】计算n!。
Private Sub Command1_Click()
n = Val(InputBox(\"输入一个自然数\")) Term = 1
For i = 1 To n Term = Term * i Next i
Print n; \"!=\"; Term End Sub
【例】计算2 + 4 + 6 + „„ + 100的值。 Private Sub Command1_Click() Sum = 0
For x = 2 To 100 Step 2 Sum = Sum + x Next x
Form1.Print \"Sum=\"; Sum End Sub
【例】计算1 + 2! + 3! + „„ + 10! Private Sub Command1_Click() T = 1 S = 0
For k = 1 To 10 T = T * k
S = S + T Next k Print S End Sub
2.While-Wend循环
适合处理循环次数未知的循环。 While 条件 语句块 Wend
功能:当条件为真时执行循环。
【例】计算1+2+3+„„+100 Private Sub Command1_Click() Dim n As Integer, s As Integer s=0 n =1
While n<=100 s=s+n n=n+1 Wend
Lable1.Caption=“1+2++3+„„+100=”& s End Sub
3.Do-Loop循环 Do 语句块 [Exit Do]
Loop [While|Until 条件]
Do [While|Until 条件] 语句块 [ Exit Do ] Loop 功能:
While 条件——当“条件”为True执行循环体。 Until 条件——“条件”为False执行循环体。 如无条件,则为死循环。 说明: 格式1:“先循环,后判断”,至少执行一次循环。 格式2:“先判断,后循环”,如条件不满足,则一次循环也不执行。 【例】计算1+2+3+„„+100 s=0 n =1
Do while n<=100
s=s+n n=n+1 Loop 也可 s=0 n =1
Do Until n>100 s=s+n n=n+1 Loop
【例】将十进制数转换为二进制数 Private Sub Form_Click() Dim m As Integer
m = InputBox(\"enter m:\") a$ = \"\"
While m <> 0 r = m Mod 2 a$ = r & a$ m = m \\ 2 Wend Print a$ End Sub 注意: a$ = a$ & r 则为:4=001
列表框
列表框的方法
AddItem方法:用于在列表框中插入一个列表项。 格式:
列表框. AddItem 项目字符串[,索引值]
如省略索引值,则在列表框的最后插入新列表项。 【例】将文本框内容添加到列表框1 Private Sub Command1_Click() List1.AddItem Text1.Text End Sub
多重循环 说明:
(1)必须完整嵌套,不得交叉。
(2)Exit For语句和Exit Do语句只能退出当前层循环。 指定每行显示数据的个数
For n=1 to 30 Print n; ” ”;
If n Mod 10 = 0 Then Print Next n
' 每显示10个数据换行 常用算法(1)
1. 不定方程求解。 【例】百鸡问题 x+y+z=100 5x+3y+z/3=100
Private Sub Command1_Click() Dim x As Integer
Dim y As Integer, z As Integer
Print \"公鸡\母鸡\小鸡\" For x = 0 To 20 For y = 0 To 33 z = 100 - x - y
If 5 * x + 3 * y + z / 3 = 100 Then Print x, y, z End If Next y Next x
End Sub
2.求最大公约数和最小公倍数 辗转相除法:
【例】计算最大公约数和最小公倍数。 Private Sub Command1_Click() Dim m As Integer, n As Integer Dim u As Integer, v As Integer m = Val(Text1.Text) n = Val(Text2.Text) If m > n Then u = m: v = n Else
u = n : v = m End If Do
r = u Mod v u = v v = r
Loop Until r = 0
Print \"最大公约数:\"; u
Print \"最小公倍数:\"; m * n / u End Sub 或
r = u Mod v Do While r<>0 u = v v = r
r = u Mod v Loop
Print \"最大公约数:\"; v
3.判素数(质数)
【例】判n是否为素数。 Private Sub Command1_Click() Dim n As Integer, i As Integer n = Val(InputBox(\"输入正整数\")) For i = 2 To n - 1
If n Mod i = 0 Then Exit For Next i
If i > n - 1 Then Print n; \"是质数\" Else
Print n; \"不是质数\" End If End Sub
例 求100~200之间素数,并写入顺序文件。 Private Sub Command1_Click()
Open “shusu.dat” For Output As #1 For n= 101 To 200 step 2 S=1 ‘是 For i = 2 To Int(Sqr(n)) If n Mod i = 0 Then S=0 ‘不是 Exit For End If Next I
If s=1 Then Write#1, n Next n close #1 End Sub
添加到列表框:
List1.AddItem n
数 组
6.1 静态数组
编译时分配存储空间。 定义:Dim b(3,4)As Long
分配4×5个长整型变量的空间, 二维数组在内存按行的顺序存放 b(0,0) b(1,0) b(2,0) b(3,0) b(0,1) b(1,1) b(2,1) b(3,1) B(0,2) B(1,2) B(2,2) B(3,2) b(0,3) b(1,3) b(2,3) b(3,3) b(0,4) b(1,4) b(2,4) b(3,4)
例:Dim b(3,2 to 4,1 to 3) As Integer 共分配 4×3×3=36个元素,共72 Byte
Option 语句
格式:Option Base 1
注意:只能出现在窗体层或模块层 必须位于数组定义之前。 例:
Option Base 1
„„
Dim a(10) As Integer,x(5,5) As String 每一维下标的下界均从1开始。
动态数组
运行时分配内存区, 定义分两步进行:
(1)先在窗体层、标准模块或过程中Dim或Public声明一个 没有下标的数组。
(2)过程中用ReDim语句定义带下标的数组。
说明:
声明时不指定数组的维数
数组的维数由第一次出现的ReDim语句指定。
例如:
Dim Test() As Integer Dim n As Integer Sub Form_click() „„
n=InputBox(”Enter a value:”)
ReDim Test(n) „„ End Sub
数组元素的引用
形式: 数组名(下标)
数组元素赋初值
运行前对数组进行初始化。
格式:数组变量名=Array( 初值表 )
说明:数组下标下界缺省为0,只能对一维数组初始化 【例】
Dim a As As Variant
a=Array(1,2,3,4,5,6,7) 注意:下标从0~6
【例】一维数组元素赋初值。 Option Base 1
Private Sub Form_Click() Dim a As Variant
a = Array(1, 2, 3, 4, 5, 6, 7) For i = 1 To 7 Print a(i); Next i End Sub
运行结果:
1 2 3 4 5 6 7
数组输入/输出
一般通过For循环语句和InputBox函数实现, 一维数组用单重循环。 二维数组采用双重循环。
【例】一维数组的输入和输出。 For i = 1 To 10
a(i) = InputBox(\"Enter data:\") Next i
【例】二维数组的输入和输出。 1 2 3 4 5 6 7 8 9
For i = 1 To 3 For j = 1 To 3
a(i, j) = InputBox(\"enter data:\") Next j Next i
For i = 1 To 3 For j = 1 To 3 Print a(i, j); \" \"; Next j Print Next i
【例】用Rnd产生10个0~100之间随机数。 For i = 1 To 10
a(i) = Int(100 * Rnd) Next i
用户自定义类型 定义格式:
Type 自定义类型名 元素名1 As 类型名 元素名2 As 类型名 „„
元素名n As 类型名 End Type
其中:
类型名——可为任何基本类型,也可为用户自定义类型。
说明:
(1)一般在标准模块中定义,默认为Public。
如在窗体模块的“声明”段定义,则必须加上Private, 且只能在窗体模块中使用。
(2)自定义类型中的元素可以为数组名。 【例】
Private Type student num As String * 8 name As String * 8 total As Integer average As Integer End Type
1.自定义类型变量的声明 Dim 变量名 As 自定义类型名 例如:
Dim stud As Student
2.引用自定义类型变量中的元素 形式:变量名 .元素名
3.自定义类型数组的声明和使用 声明:Dim st(5) As Student 引用形式:
记录数组元素.成员名
【例】输入5个学生的学号、姓名、和3门课的成绩,利用自定义类型数组,计算每个学生的总分和平均分,并按平均成绩从高到低输出学生的成绩单。 Private Type student no As String * 6 name As String * 6 s1 As Single s2 As Single s3 As Single total As Single aver As Single End Type
Private Sub Form_Click()
Dim a(1 To 5) As student, t As student Open “stud.dat” For Output As #1
‘ Open “stud.dat” For Random As #2 Len= Len(t) 打开随机文件 „„ n = 5
For i = 1 To n
a(i).total=a(i).s1+a(i).s2 + a(i).s3 a(i).aver = a(i).total / 3 Next i
For i = 1 To n - 1 For j = i + 1 To n
If a(i).aver < a(j).aver Then t = a(i) a(i) = a(j) a(j) = t End If Next j Next i
Print \" 学号 姓名 语文 数学 英语 总分 平均分\" For i = 1 To n
Print Tab(2); a(i).no; Tab(10); a(i).name; Tab(18); a(i).s1; \" \";
Print a(i).s2; \" \"; a(i).s3; \" \"; a(i).total; \" \"; a(i).aver
Write#1,a(i).no,a(i).name,a(i).s1, a(i).s2,a(i).s3,a(i).total, (i).aver ‘ Put#2,i, a(i) 写入随机文件 Next i Close#1 End Sub
注意: 写入文件一行一个记录
运行结果
说明:
交换两个记录数组元素的值,则该记录数组元素的所有成员都将交换。
6.7 常用算法(2) 1. 求最大值和最小值
【例】找10个数中的最大值与最小值。 For i = 1 To 10
If a(i) > Max Then Max = a(i) If a(i) < Min Then Min = a(i) Next i
6.7.2 排序
升序:从小到大 降序:从大到小
1.比较交换法 For i = 1 To n - 1 For j = i + 1 To n If a(i) > a(j) Then t = a(i) a(i) = a(j) a(j) = t End If Next j Next i
2.选择法排序 For i = 1 To n - 1 p = i
For j = i + 1 To n
If a(p) > a(j) Then p = j Next j t = a(i)
a(i) = a(p) a(p) = t Next i
3.冒泡法排序
特点:相邻的两个元素进行比较 For i = 1 To n - 1 For j = 1 To n - i
If a(j) > a(j + 1) Then t = a(j)
a(j) = a(j + 1) a(j + 1) = t End If Next j Next i
查询
1. 顺序查询
从一组数据中,按顺序地查找指定的数据。 【例】用顺序查询法在下列数据中查找关键字值 „„
k = Val(InputBox(\"输入要查询的数\")) p = 1
While k <> a(p) And p < n p = p + 1 Wend
If k = a(p) Then
Print k; \"be found,on\"; p; \"th position.\" Else
Print k; \"has not be found.\" End If
2 折半查询
折半查找也称为二分法查询 只能对有序数列进行查询。
【例】用折半查询法查找关键字值66。 -123,-10,5,8,30,56,59,66,90,518 Option Base 1
Private Sub Form_Click() Dim a As Variant
a = Array(-123, -10, 5, 8, 30, 56, 59, 66, 90, 518) n = UBound(a)
Print \"数组a中的10个数为:\"
For Each ii In a Print ii; \" \"; Next ii Print
k = Val(InputBox(\"输入要查询的数\")) Print \"要查询的数是:\"; k low = 1 hig = n
find = -1
While low <= hig And find = -1 m = (low + hig) \\ 2 If k = a(m) Then find = 1
Print k; \"has be found,on\"; m; \"th position.\" Else
If k < a(m) Then hig = m - 1 Else
low = m + 1 End If End If Wend
If find = -1 Then
Print k; \"has not be found.\" End If End Sub
注意:若数据按降序排列 If k < a(m) Then low = m + 1 Else
hig = m - 1 End If
【例】输出前5名名次、运动员号和成绩, 并将结果写入顺序文件。 Private Sub Form_Click()
Open “stud.dat” For Output As #1 Dim no(1 To 16) As String Dim a(1 To 16) As Single For i = 1 To 16
no(i) = InputBox(\"输入运动员编号:\")
a(i) = Val(InputBox(\"输入运动员成绩:\")) Next i
For i = 1 To 15 k = i
For j = i + 1 To 16
If a(k) > a(j) Then k = j Next j t = no(i) no(i) = no(k) no(k) = t t = a(i) a(i) = a(k) a(k) = t End If Next i
Print \"名次 运动员编号 运动员成绩\" For i = 1 To 5
Print i, no(i), a(i) Write#1,i,no(i),a(i) Next i End Sub
过 程
函数过程的定义
Function函数过程名(形参表) [As 类型] „„
函数过程名=表达式 „„
End Function 说明:
函数过程名有值,有类型,在过程体必须被赋值 调用形式:
函数过程名(实参表)
子程序过程定义
Sub 子程序过程名(形参表) „„ End Sub
说明:子程序过程名无值,无类型
调用形式:
Call 子程序过程名(实参表)
【例】函数过程使用 编写函数过程计算n!
Private Sub Command1_Click() n = Val(Text1.Text) Text2.Text =fact(n) End Sub
Function fact(n) f = 1
For i = 1 To n f = f * i Next i fact = f
End Function
【例】子程序过程计算n!
Private Sub Command1_Click() n = Val(Text1.Text) Call fact(n, f) Text2.Text = f End Sub
Private Sub fact(n, f) f = 1
For i = 2 To n f = f * i Next i End Sub
说明:
由若干变元计算一个值用Function过程 计算若干值,只能用Sub过程。
7.3 参数传送 1传值方式
将实参的值传给形参,数据传送方向为单向,形参的改变 对实参无影响。
实参:常量、(变量)、或表达式 形参:变量 或 实参:变量
形参前加关键字ByVal
例:Sub fact(ByVal n)
2传址方式
将实参的地址传给形参,使实参和形参共用同一存储单元。 数据传送方向为双向,形参的改变对实参有影响。 实参:变量、数组名() 形参:变量、数组名() 或 形参 前加ByRef 例:Sub fact(ByRef n) VB默认方式为传址方式
说明:
从过程中,返回计算结果,必须采用传址方式。 Private Sub Form_Click() n = 100 m = 200
Call abc(n, m) Print n, m End Sub
Public Sub abc(ByVal x, y) t = x x = y y = t Print x, y End Sub
输出:200 100 100 100
变量的作用域
作用域指变量能被某一过程识别的范围。 1.全局变量
在标准模块的通用段用Public声明变量 可在工程的所有模块、所有过程中使用 作用范围为整个应用程序。 例如:
Public x As Integer,y As Single
2.模块级变量
在窗体或标准模块的通用段 用Private或Dim声明变量
作用域:在声明它的整个模块的所有过程有效。 例如:
Private x As Integer,y As Single 或
Dim x As Integer,y As Single
3.局部变量
在过程中定义的变量
作用域:为其所在的过程。
随过程的调用而分配存储单元,过程执行结束,所占用的存储 单元被释放。
静态变量:
用Static声明的局部变量,在过程调用结束后保留值。
【例】动态变量、静态变量和模块级变量的作用域。 Dim c As Integer
Private Sub Form_Click() a = 1: b = 2: c = 3 Print \" a\ For i = 1 To 3 Call test Next i
Print \" A\ Print a, b, c End Sub
Sub test() Static a a = a + 1 b = b + 1 c = c + 1
Print a, b, c End Sub
数据文件
1. 顺序文件的打开
格式:Open “文件名” For <方式> As [#]<文件号> 方式:
Output—顺序写入方式
Input—顺序读出方式,指定的文件必须存在。 Append—顺序添加方式
写顺序文件语句(建立文件)
格式:Write#文件号,输出项表
功能:将输出项表中的数据写入顺序文件。
说明:各项之间用逗号分隔。 【例】建立一个学生成绩文件P Private Sub Form_Click()
Dim no As Long, nam As String Dim score As Single
Open \"d:\\chengji1.dat\" For Output As #2 no = InputBox(\"输入学号:\") While no <> 99999
nam = InputBox$(\"输入学生姓名:\") score = InputBox(\"输入学生成绩:\") Write #2, no, nam, score no = InputBox(\"输入学号:\") Wend Close #2 End Sub
读顺序文件语句
(1) Input#语句 格式:Input#文件号,变量表
功能:从顺序文件中读数据,赋给变量表中的变量。 说明:
变量表中的变量类型必须与文件中数据项的类型一致
【例】将学生成绩文件“chengji1.dat”读入内存,在窗体上显示出来。P Private Sub Form_Click()
Dim no As Long, nam As String Dim score As Single
Open \"d:\\chengji1.dat\" For Input As #2 Print \" 学号\姓名\成绩\" While Not Eof(2)
Input #2, no, nam, score Print no, nam, score Wend Close #2 End Sub
Line Input#语句
格式:Line Input#,字符串变量
功能:从顺序文件中读取一整行赋给一个字符串变量。 说明:
将以回车符为结束标志的整行当作一个字符串赋给一个字符串变量。
常用控件 窗体
设计称窗体,运行后称窗口 Print方法:在窗体输出数据 Show方法:显示窗体。
Click事件:鼠标单击窗体,调用窗体事件过程Form_Click() Load事件:执行程序时自动触发 Unload事件:关闭窗体时执行
文本框:
Text属性——文本框中显示的内容,默认值为Text1、„„等。 Text1.Text = 字符串 或 Text1 = 字符串
Change事件:改变Text属性时触发 GotFocus事件:获得焦点时触发
SetFocus方法:设置焦点,将光标移到文本框
标签控件:
Caption属性——标签中显示文本,默认值为Label1、„„。 命令按钮:
Caption属性——命令按钮显示的字符
Enabled属性——设置命令按钮是否为活动状态(True)
Click事件:鼠标单击事件,调用命令按钮事件过程Command1_Click()
计时器控件:
Interval属性——设置计时器事件之间的时间间隔
Timer事件:当达到Interval属性规定的时间间隔时触发该事件。 单选按钮:
Caption属性——标题,默认值为Option1、„„等。 Value属性——是否为选中, 选中(True) 复选框:
Caption属性——标题,默认值为Check1、„„等。 Value属性——设置是否为选中,1(选中) 列表框:
List属性——用于列出列表框中的所有项目,是一个 字符数组,,下标从0开始。
ListCount属性——返回在列表框中列表项数 (序号从0开始,最后一项为ListCount-1)。
ListIndex属性——当前选中的列表项的索引,第一项为0 Text属性——得到当前列表项的内容 控件数组
由一组类型相同的控件组成
Index属性——控件数组的下标。
Private Sub Command1_Click(Index As Integer)
„
If Index = 3 then
„ ‘处理第四个命令按钮的操作 End If
„ End Sub
菜单编辑器 主要属性:
Caption、Name、Index 、Shortcut、 Checked、Enabled、Visible
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务