二级VB培训笔记10:知识点串讲
一、对象概述
1、三大特性:封装性、继承性、多态性
参看《VB讲课笔记1202. 二级公共基础 - 程序设计基础》
2、对象的属性
了解VB对象的常用属性
3、对象的方法
了解VB对象的常用方法
4、对象的事件
了解VB对象的常用事件
二、VB语言基础
1、数据类型
2、常量
(1)数值型常量:567、-54、456.7878(3.14e-5会自动转换成0.0000314)
任务:将456.7878保留到小数后3位
方法一、利用Format函数
方法二、利用取整函数Int
方法三、利用Round()函数
(2)字符串常量:"I love VB.","我爱VB。"
(3)逻辑型常量:True和False
(4)日期型常量:#2018/03/18#、#2018/3/25 9:00:00 AM#
如果显示中国日期格式,那么就要使用Format函数:
3、变量
在VB里,变量可以不声明就使用,但是在通用段必须没有Option Explicit语句。
(1)声明变量
Dim | Static | Private | Public 变量1 As 类型1, 变量2 As 类型2,... 变量n As 类型n
说明:dim可以在过程、窗体、模块里使用,static只能在过程里使用,private和public只能在窗体或模块通用段使用。
窗体级别的public变量,访问时必须窗体名作为前缀,但是模块级别的public变量访问时无须加上模块名作为前缀。
(2)变量赋值
变体型变量可以接收任何类型的数据。
一般情况,最好按照变量类型来赋相同类型的数据。
如果将包含字母的字符串数据或日期数据赋给数值型变量,都会报错:
给对象变量赋值,需要使用Set关键字。
(3)输出变量
使用print语句输出一个或多个变量值,使用半价逗号或分号来隔开。
通过space()来指定两个数据之间的空格,假如要求x与y'之前有20个空格:
4、运算符
算术运算——关系运算——逻辑运算——赋值运算
要注意一点,赋值运算是所有运算中级别最低的。
(1)算术运算符:^ —— - —— *、/ —— \ —— Mod —— +、-
(2)关系运算:=、<>、>、>=、<、<=
任务:写出a、b、c能构成三角形的条件。
采用反向思维:
不能构成三角形的条件是:a + b < c Or b + c < a Or c + a < b
反过来,能构成三角形的条件:Not (a + b < c Or b + c < a Or c + a < b)
(3)逻辑运算:Not —— And —— Or (补集——交集——并集)
(4)字符串运算:+、& (建议使用后者,因为可以自动类型转换)
(5)日期运算:日期-日期、日期+天数、日期-天数
5、表达式
(1)单行:没有上下标、没有分式
(2)不省:运算符“*”不能省略
(3)只能使用圆括号改变优先次序
示例:(-b + Sqr(delta)) / (2 * a)
6、常用内置函数
(1)数学函数:Abs()、Sqr()、Int()、CInt()、Fix()、Round()、Sgn()、Rnd()、Sin()、Cos()、Tan()、Atn()、Exp()、Log()
(2)字符串函数:Len()、Left()、Right()、Mid()、Chr()、Asc()、Val()、Str()、UCase()、LCase()、InStr()
(3)日期函数:Date、Time、Now()、Year()、Month()、Day()、Hour()、Minute()、Second()、WeekDay()
(4)其它函数:Format()、IIf()、Shell()、Space()、Spc()、Tab()
三、数据输入输出
1、输出语句Print:输出多项数据,可用半角逗号或分号分隔
2、输入框函数InputBox
参数1:提示
参数2:标题
参数3:默认值
参数4:横坐标
参数5:纵坐标
注意:输入框函数返回的是字符串,如果希望通过输入框得到一个整数,那么要使用Val()函数来转换。
3、消息框函数MsgBox
按钮类型:vbOKOnly、vbYesNo、vbOKCancel
图标类型:vbInformation、vbExclamation、vbQuestion、vbCritical
(1)有返回值,当函数用
(2)没有返回值,当语句用
四、窗体与常用控件
任何控件都有名称(Name)属性,只能在设计模式时进行设置,在代码里不能修改控件的名称属性。
1、窗体(Form)
(1)属性:Caption、BorderStyle、ControlBox、MaxButton、MinButton、StartUpPosition、Visible、Enabled....
(2)方法:Show、Hide、Move、Print、Circle....
(3)事件:Initialize、Load、Activate、Click、DblClick、Resize、Unload
2、标签(Label)
(1)属性:Caption、AutoSize、BackStyle、WordWrap
(2)事件:Click
3、文本框(TextBox)
(1)属性:Text、MultiLine、ScrollBars(0 - None、1 - Horizontal、2 - Vertical、3 - Both)、MaxLength
(2)事件:KeyPress、Change、SelChange
任务:在文本框输入小写字母,自动变成大写字母,但是输入大写字母,自动变成小写字母,其它字符不改变。
4、按钮(CommandButton)
(1)属性:Caption(怎么设置热键字母,例如:退出(&X))、Default、Cancel、Style(0 - Standard,1 - Graphical)、Enabled、Picture、DownPicture、DisabledPicture
要在运行时设置或清空图片,使用Loadpicture()函数。要访问当前工程目录下的图片文件,比如“pic.jpg”。
Command1.Picture = LoadPicture(App.Path & "\pic.jpg")
(2)事件:Click
5、单选按钮(OptionButton)
(1)属性:Caption、Value(True、False)
(2)事件:Click
6、复选框(CheckBox)
(1)属性:Caption、Value(0 - 未选中、1 - 选中、2 - 禁选)
(2)事件:Click
7、列表框(ListBox)
(1)属性:List(i)、MultiSelect(True - 多选、False - 单选)、Selected(i)、ListCount、ListIndex
(2)方法:AddItem、RemoveItem、Clear
(3)事件:Click
真题演练:
注意:列表框的AddItem方法的参数是要添加的列表项,但是RemoveItem方法的参数不是要删除的列表项,而是待删除项的下标。如果传给RemoveItem方法的参数不在[0, List1.ListCount - 1]范围内,那么会报错:“无效的过程调用或参数”
第一个循环:
循环变量从1递增到6,每个值作为列表项添加到列表框,因此列表框包含六个元素:1、2、3、4、5、6。
第二个循环:(列表项下标是从0开始的,因此,下标为1的列表项是列表框第2个元素)
当 i = 1 时,List1.RemoveItem 1,删除列表框[1、2、3、4、5、6]第2个元素,于是列表框剩下五个元素:1、3、4、5、6
当 i = 2 时,List1.RemoveItem 2,删除列表框[1、3、4、5、6]第3个元素,于是列表框剩下4个元素:1、3、5、6
当 i = 3 时,List1.RemoveItem 3,删除列表框[1、3、5、6]第4个元素,于是列表框剩下3个元素:1、3、5
8、组合框(ComboBox)
(1)属性:List、Style(0 - 下拉组合框、1 - 简单组合框、2 - Dropdown List),Text
(2)方法:AddItem、RemoveItem、Clear
(3)事件:Click
9、滚动条(HScrollBar、VScrollBar)
(1)属性:Value、Min、Max、SmallChange、LargeChange
(2)事件:Scroll、Change
10、图片框(PictureBox)—— 容器控件
(1)属性:Picture、AutoSize(True - 改变图片框将就图片)
(2)方法:Print、Cls、Circle……
(3)事件:Click
11、图像(Image)
(1)属性:Picture、Stretch(True - 缩放图片将就图像控件)
(2)事件:Click
我们在程序运行时给图片框或图像控件设置图片属性,要使用LoadPicture函数。
12、计时器(Timer)
(1)属性:Enabled、Interval(毫秒)
(2)事件:Timer
13、形状(Shape)
(1)属性:Shape(0 - Rectangle、1 - Square、2 - Oval、3 - Circle、4 - Rounded Rectangle、5 - Rounded Square)
(2)事件:Click
14、框架(Frame)—— 容器控件
(1)属性:Caption
五、控制结构
(一)顺序结构
常用语句:Stop、End、Rem
(二)选择结构
1、If
(1)行If
(2)块If
(3)If嵌套
(4)If延拓
2、Select Case
case后的表达式:单个值、多个值(用半角逗号隔开)、范围、条件(Is > 10、Is <= 100)
(三)循环结构
1、当型循环
条件成立,执行循环,条件不成立,终止循环。
(1)前测试:While...Wend
(2)前测试:Do While...Loop
(3)后测试:Do...Loop While
2、直到型循环
条件不成立,执行循环,条件成立,终止循环。
(1)前测试:Do Until...Loop
(2)后测试:Do...Loop Until
3、循环嵌套
循环嵌套是包含,不能交叉。
任务:显示60以内的不重复的勾股数。
由于a与b的对称性,枚举得到的全部勾股数有重复,要除以2,才得到不重复的勾股数的数量。
六、数组
(一)一维数组
1、普通数组
(1)声明
Option Base 0
Dim a(10) As Integer 个数 = UBound(a) - LBound(a) + 1 = 10 - 0 + 1 = 11
Dim b(5 To 10) As Single 个数 = UBound(b) - LBound(b) + 1 = 10 - 5 + 1 = 6
Option Base 1
Dim a(10) As Integer 个数 = UBound(a) - LBound(a) + 1 = 10 - 1 + 1 = 10
Dim b(5 To 10) As Single 个数 = UBound(b) - LBound(b) + 1 = 10 - 5 + 1 = 6
(2)赋值
a(4) = 100
b(7) = 200
2、控件数组
通过下标Index访问控件对象
(二)二维数组
1、声明
Dim a(3, 4) As Integer
Dim b(2 To 5, 3 To 6) As Integer
2、赋值
a(1, 2) = 100
b(3, 5) = 200
(三)遍历数组
1、传统For循环
2、For Each循环
七、过程
(一)键盘事件
1、KeyPress(KeyAscii As Integer)
2、KeyDown(KeyCode As Integer, Shift As Integer)
3、KeyUp(KeyCode As Integer, Shift As Integer)
Shift参数涉及几个常量:1- vbShiftMask、2 - vbCtrlMask、4 - vbAltMask
(二)鼠标事件
1、MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
2、MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
3、MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Button参数涉及几个常量:1 - vbLeftButton、2 - vbRightButton、4 - vbMiddleButton
(三)通用过程
1、子过程Sub:没有返回值
2、函数过程Function:通过函数名返回函数值
3、值传参与地址传参
(1)值传参:ByVal,单向传递,实参传给形参,形参变化不会影响实参。
(2)地址传递:ByRef(默认),双向传递,实参传给形参,形参变化之后,实参随之变化。
4、过程递归调用
过程自己调用自己,递归调用一定要有结束条件。函数调用是采用堆栈结构,先进后出。
八、菜单与对话框
(一)菜单
1、下拉菜单
(1)属性:名称、标题、快捷键、复选框菜单项、可用、可见
(2)事件:Click
2、快捷菜单
PopupMenu 菜单名
(二)对话框
1、公用对话框(cdlg)
Action属性值:1、2、3、4、5、6
(1)打开对话框:cdlg.ShowOpen —— FileName、Filter、FilterIndex
(2)保存对话框:cdlg.ShowSave —— FileName、Filter、FilterIndex
(3)字体对话框:cdlg.ShowFont —— FontName、FontSize、FontBold、FontItalic
(4)颜色对话框:cdlg.ShowColor —— Color
(5)打印对话框:cdlg.ShowPrinter
(6)帮助对话框:cdlg.ShowHelp
2、自定义对话框
其实就是一个自己设计的窗体,但是要将BorderStyle属性设置为3 - Fixed Dialog
九、文件管理
(一)顺序文件
1、打开文件
Open 文件名 For <模式> As [#]<文件号>
模式:Input、Output
2、关闭文件
Close [#文件号1],[#文件号2]…
3、向顺序文件写数据
(1)Write #文件号,[输出项列表]
(2)Print #文件名,[{Spc(n) | Tab[(n)]}] [输出项列表] [{,| ;}]
4、从顺序文件读数据
(1)Input #文件号,变量列表
(2)Line Input #文件号,字符串变量
(3)变量=Input(读取的字符数,#文件号)
(二)随机文件
1、打开随机文件
Open 文件名 For Random As [#]文件号 Len =<记录长度>
2、关闭随机文件
Close [#文件号1],[#文件号2]…
3、读随机文件
Get [#]文件号, [记录号], 变量名
4、写随机文件
Put [#]文件号, [记录号], 变量名
十、公共基础
1、数据结构和算法
(1)数据结构:线性结构(列表、队列、栈)和非线性结构(树和图)
(2)算法:时间复杂度和空间复杂度、查找算法和排序算法
2、程序设计基础
3、软件工程基础
4、数据库设计基础