窗体
- 窗体(属性)
常用属性名 | 功能 | 说明 |
Name | 设置对象的名称 | 所有控件都有 |
Caption | 设置对象的标题 | |
Top | 窗体上边离屏幕上边的距离 | |
Left | 窗体左边离屏幕左边的距离 | |
Width | 对象的宽度 | |
Height | 对象的高度 | |
Enabled | 决定对象是否可用 | 不可用时显示为灰色 |
Visible | 决定对象是否可见 | |
BackColor | 设置对象的背景色 | |
ForeColor | 设置对象的前景色 | 如字体颜色 |
Font | 设置对象的字体 | Name、Size、Bold、Italic、Underline、Strikethru |
Picture | 设置窗体背景图片 | 对象名.Picture=LoadPicture(“图片路径”) |
MaxButton | 决定窗体上的最大化按钮是否可用 | 如果两者都不可用,则只会出现关闭按钮 |
MinButton | 决定窗体上的最小化按钮是否可用 | |
CotrolBox | 设置窗体的标题栏是否显示控制框 | |
BorderStyle | 窗体边界样式 | 6种边框样式(0-5) |
- 窗体(事件)
- 窗体(方法)
练习:窗体、窗体事件、四季练习
一般控件的使用
- label(标签)
常用属性名 | 功能 | 说明 |
Caption | 设置标签上显示的文字 | |
Alignment | 设置标签上文字对齐方式 | 值为0-2 |
AutoSize | 决定标签大小是否自动适应文字 | 设为True为自动适应 |
配色方案练习
- TextBox(文本框)
常用属性名 | 功能 | 说明 |
Alignment | 设置文本的对齐方式 | 值为0到2 |
Text | 文本框里显示的内容 | |
MultiLine | 是否允许多行显示 | |
ScrollBars | 设置是否显示滚动条 | MultiLine为true,值为0到3 |
PasswordChar | 设置密码 | |
Locked | 是否允许输入 | |
只读属性 | ||
SelStart | 选定的正文开始位置,起始为0 | |
SelLength | 选定的正文长度 | |
SelText | 选定的正文内容 |
常用事件:Change
常用方法名:SetFocus(设置焦点到文本框上)
设置访问键:确定(&Y)(Alt+Y触发单击事件)
练习:替换、简易文本编辑器、登录
- CommandButton(命令按钮)
常用属性名 | 功能 | 说明 |
Caption | 设置按钮上显示的文字 | |
Style | 设置按钮的样式 | |
Picture | 设置按钮的背景图案 | 只有Style为1时才起作用 |
Default | 设置是否为默认确定按钮 | 按Enter键触发Click事件 |
Cancel | 设置是否为默认取消按钮 | 按ESC键触发Click事件 |
常用事件:Click(鼠标单击,不支持双击DbClick事件)
设置访问键:确定(&Y)(Alt+Y触发单击事件)
练习:你好、控件的显示与隐藏
- Timer(时钟)
常用属性名 | 功能 | 说明 |
Interval | 时钟触发的频率 | 单位为毫秒 |
Enabled | 是否可用 | 通常用作时钟的开关 |
常用事件名 | 触发条件 | |
Timer | 按拟定的时间间隔由系统自动触发Timer事件,时钟唯一事件 |
注意:时钟不工作有两种可能
- 将时钟的Enabled属性设置为False,这种方法最常用。
- 将时钟的Interval属性设置为0(默认)。
练习:数字时钟、计时器(若加一个复位按钮)、会动的文字、加油
选择类控件
- OptionButton(单选按钮)
常用属性名 | 功能 | 说明 |
Value | 设置是否被选中 | True为选中,默认为False |
Style | 设置样式 | 同命令按钮 |
事件:Click
单选类控件数组创建方法、有什么特点?
单选类控件添加到Frame框架的几种方法
练习:评论、评论(用控件数组完成)、时钟程序、求奇偶数的和
- CheckBox(检查框,也称复选框)
常用属性名 | 功能 | 说明 |
Value | 设置是否被选中 | 未选中为0,选中为1,选中灰为2 |
Style | 设置样式 | 同单选按钮 |
事件:Click
练习:俱乐部、俱乐部(用控件数组完成)7、1、3
- ListBox(列表框)
常用属性名 | 功能 | 说明 |
List | 列表项 | 对象名.List(i) |
ListIndex | 当前被选中的列表项索引值 | 当前选中列表项的索引值,0开始,-1未选中任何列表项 |
ListCount | 列表框中列表项的总项数 | |
Text | 当前被选中的列表项内容 | List1.Text |
Style | 设置样式 | 0-2 |
当前选中项:List1.ListIndex
事件:Click
常用方法名 | 功能 | |
AddItem | 添加列表项 | List2.AddItem List1.List(List1.ListIndex) |
RemoveItem | 删除列表项 | List2.RemoveItem List2.ListIndex |
Clear | 清除所有列表项 | List1.Clear |
练习:删除、名单统计、课程选择、计算机比赛选拔、名单统计(0)、产生右移(多选)
- ComboBox(组合框)
(Style属性)
Style | 0 | 1 | 2 |
样式 | 下拉式组合框 | 简单组合框 | 下拉式列表框 |
说明 | 可输入、可下拉列表选择 | 无下拉箭头,可输入、可选择 | 不可输入、可下拉列表选择 |
常用事件 | Click、DropDown(单击箭头) | DbClick | Click、DropDown |
练习:组合列表、加油站计费器
- HScrollBar(水平滚动条)与VScrollBar(垂直滚动条)
常用属性名 | 功能 | 说明 |
Value | 设置或返回滑块位置所对应的值 | Min≦Value≦Max |
Min | 滚动条左端(水平)或上端(垂直)的值 | 默认为0 |
Max | 滚动条右端(水平)或下端(垂直)的值 | 默认为32767 |
LargeChange | 设置点击滑块与两端按钮之间的空白区域时滑块移动的距离(值) | 默认为1 |
SmallChange | 设置点击两端按钮时滑块移动的距离 | 默认为1 |
怎么控制滚动条中滑块的位置?
常用事件名 | 触发条件 |
Scroll | 当拖动滑块时触发该事件 |
Change | 当Value值发生变化时触发该事件 |
练习:字体大小、图片大小、四季图片、运动
- Picture与Image
属性窗口
Picture(图片框):
AutoSize True:图片框调整大小以适应图片
False:则图片将被剪切(只有一部分图片可见)
Image(图像框):
Stretch True:图片调整大小以适应图像框
False:图像框调整大小以适应图片
代码
加载图片 相对路径:对象名称.Picture = LoadPicture(App.Path & "\图片名.jpg")
(图片路径和程序在同一个文件夹下)
绝对路径:对象名称.Picture = LoadPicture()
练习:四季
语言基础
一、数据类型(教室上)
VB提供了11种基本数据类型:
| 存储空间 | 范围 | |||
数值数据型 | 字节型 | Byte | 无 | 1个字节 | 0-255 |
整型 | Integer | % | 2个字节 | -32768-32767 | |
长整型 | Long | & | 4个字节 | -2147483648-2147483647 | |
单精度型 | Single | ! | 4个字节 | -3.402823E38-3.402823E38 | |
双精度型 | Double | # | 8个字节 | -1.79769313D308-1.79769313D308 | |
货币型 | Currency | @ | 8个字节 | —— | |
逻辑型 | Boolean | 无 | 2个字节 | True与False | |
日期型 | Date(time) | 无 | 8个字节 | 01/01/100—12/31/9999 | |
字符型 | String | $ | 与字符长度有关 | 0-65535个字符 | |
对象型 | Object | 无 | 4个字节 | 任何对象引用 | |
变体型 | Variant | 无 | 根据需要分配 | —— |
注意
- 逻辑型数据只有True和False两个值。在特殊情况下,逻辑型数据要转换成整型时,True转为-1,False转为0;若将其他类型转换成逻辑型时,非0数转换为True,0转换为False。
- 变体(Variant)是一种特殊的数据类型,是所有未定义变量的默认数据类型,它对数据的处理完全取决于程序上下文的需要,为VB的数据处理增加了智能性。它包括数值型、日期型、对象型、字符型等数据类型。
练习:零或非零
二、常量和变量(教室上)
常量:
在运行过程中其值始终保持不变的数据称为常量。常量可以分为直接常量和符号常量两种。
直接常量:在程序中直接给出值的数据称为直接常量,它包括数值常量、字符常量、逻辑常量、日期常量。
符号常量:
系统符号常量:如vbRed
用户自定义符号常量:用Const来声明
变量:
运行期间其值可以改变的数据称为变量。
命名规则:
以字母开头,由字母、数字或下划线组成,长度不超过255个字符,大小写不区分。
‚不能与VB中的保留字重名。
ƒ最后一个字符可以是VB的类型符. .
量的定义:
用语句进行显示声明,如Dim a As Integer
‚类型说明符定义,如Dim a%
ƒ隐式声明:编写程序时,不声明变量直接使用,系统临时为新变量分配存储空间并使用。所有隐式声明的变量都是Variant数据类型。
练习:圆、
、运算符和表达式
在VB中,表达式由运算符和操作数组合而成。运算符是表示实现某种运算的符号。运算符可以分为算术运算符、字符串运算符、关系运算符和逻辑运算符四类。
运算符:
算术运算符
运算符 | 含义 | 优先级 | 示例(a=3) | 结果 |
^ | 乘方 | 1 | a^2 | 9 |
- | 负号 | 2 | -a | -3 |
* | 乘 | 3 | a*a*a | 27 |
/ | 除 | 3 | 10/a | 3.333333333333 |
\ | 整除 | 4 | 10\a | 3 |
Mod | 取余 | 5 | 10 Mod a | 1 |
+ | 加 | 6 | 10+a | 13 |
- | 减 | 6 | a-10 | -7 |
说明:算术运算符两边的操作数应该是数值型,若是数字字符或逻辑型,则强制转换为数值类型后再运算。
练习:四则运算器、挑选偶数
字符串运算符
运算符 | 作用 | 区别 | 示例 | 结果 |
& | 将两个字符串拼接起来 | 先将操作数转换成字符,然后再连接 | 12 & 34 | 1234 |
12 & "ab" | 12ab | |||
+ | 两者都为字符串,直接连接 | "12" + "34" | 1234 | |
一个为数字字符串,一个为数字型,将字符串转换为数字型,然后算术加法运算 | 123 + 45 | 168 | ||
一个为非数字字符型,一个为数值型,则出错 | "ab" + 34 | 出错 |
说明:使用运算符“&”时,变量与运算符“&”之间应加一个空格。这是因为符号“&”还是长整型的类型定义符,如果变量与符号“&”接在一起,VB系统先把它作为类型定义符处理,因而就会出现语法错误。
关系运算符
运算符 | 含义 | 示例 | 结果 |
= | 等于 | "ABCDE"="ABR" | False |
> | 大于 | "ABCDE">"ABR" | False |
>= | 大于等于 | "bc">="大小" | False |
< | 小于 | 23<3 | False |
<= | 小于等于 | "23"<="3" | True |
<> | 不等于 | "abc"<>"ABC" | True |
说明:如果两个操作数都是数值型,则按其大小比较。
如果两个操作数都是字符型,则按字符的ASCII码值从左到右一一比较。
汉字字符大于西文字符。
关系运算符的优先级相同。
练习:流量套餐
逻辑运算符
运算符 | 含义 | 优先级 | 说明 | 示例 | 结果 |
Not | 取反 | 1 | 当操作数为假时,结果为真 | Not F | T |
Not T | F | ||||
And | 与 | 2 | 两边都真才 为真 | T And T | T |
F And F | F | ||||
T And F | F | ||||
F And T | F | ||||
Or | 或 | 3 | 两边都假才为假 | T Or T | T |
F Or F | F | ||||
T Or F | T | ||||
F Or T | T |
练习:海伦、
优先级:算术运算符>字符运算符>关系运算符>逻辑运算符
- 常用内部函数
- 格式和说明
注意参数的个数及类型
注意函数的定义域和值域。如Sqr(x)函数中的x必须大于等于0,Rnd()函数返回(0,1](包括0和不包括1)之间的双精度随机数。
常用函数
函数名 | 功能 | 示例 | 结果 |
Abs(x) | 求x的绝对值 | Abs(-2.5) | 2.5 |
Rnd(x) | 产生一个在[0,1)区间均匀分布的随机数,每次的值都不同 | Rnd(x) | 0-1之间的数 |
Int(x) | 求小于或等于x的最大整数 | Int(-3.5) | -4 |
Fix(x) | 求x的整数部分 | Fix(-3.5) | -3 |
Sqr(x) | 求平方根 | Sqr(9) | 3 |
转换函数
函数名 | 功能 | 实例 | 结果 |
Asc(S) | 字符串C中第一个字符的ASCII码 | Asc("A") | 65 |
Chr(N) | 返回ASCII码值所代表的字符 | Chr(65) | |
Val(S) | 数字字符转换为数值 | Val("123AB") | 123 |
Str(N) | 数值转换为字符串(正数转换后有前导空格) | Str(14) | " 14" |
Log(N) | 求N的自然对数,N>0 | Log(2) | 0.6931471 |
注意:(1)Asc("Abcd")值为:65(只取首字母的ASCII值)
(2)Val("abc123")值为:0,Val("1.2sa10")值为1.2,Val()函数只将最前面的数字字符转换为数值。
字符串函数
函数名 | 实例 | 结果 |
Left(S,N) | Left("ABCDEFG",3) | "ABC" |
Mid(S,N1,N2) | Mid("ABCDG",2,3) | "BCD" |
Right(S,N) | Right("ABEFG",3) | "EFG" |
Len(S) | Len("AB高等") | 4 |
日期函数
函数名 | 说明 | 实例 | 结果 |
Date[()] | 返回系统日期 | Date() | 2017-9-12 |
Day(C|N) | 返回日期代号(1-31) | Day("2011,05,01") | 1 |
Month(C|N) | 返回月份代号(1-31) | Month("2011,05,01") | 5 |
Time[()] | 返回系统时间 | Time | 11:26:53 |
Year(C|D) | 返回年份号(1753-2078) | Year(36) | 1900 |
- 数据的输入和输出
数据的输入:InputBox函数输入数据
x=InputBox("请输入半径","计算圆的面积","20")
注意:InputBox函数返回值为字符串,所以,此函数常跟Val联合使用。x,y为InputBox框左上角距离屏幕左侧与上侧的距离。
数据的输出:MsgBox函数
x=MsgBox("圆的面积为60","按钮","计算圆的面积")
第二个参数
按钮数目值 图标类型值 默认按钮值 模式值
(一)、图标数目相应值
按钮数目 | 值 |
0 | |
1 | |
2 | |
3 | |
4 | |
5 |
- 、图标类型相应的值
图标 | ||||
值 | 16 | 32 | 48 | 64 |
(三)、按钮返回值与按钮的对应关系
返回值 | 内部常量 | 含义 | 返回值 | 内部常量 | 含义 |
1 | vbOK | 确定 | 5 | vbIgnore | 忽略 |
2 | vbCancel | 取消 | 6 | vbYes | 是 |
3 | vbAbort | 终止 | 7 | vbNo | 否 |
4 | vbRetry | 重试 |
注意:函数返回值为用户选择的按钮的值。
数据的输出:MsgBox命令(无返回值)
MsgBox"圆的面积为60","按钮","计算圆的面积"
练习:选套餐,vb安装
练习:随机偶数、倒序
- VB程序基本结构
If 语句
格式一:If <条件> Then <语句> 行If语句不用结束语句
格式二:If <条件> Then 块IF语句
语句一
Else
语句二
End If
格式三:If <条件1> Then
<语句1>
ElseIf <条件2> Then
<语句2>
ElseIf <条件3> Then
<语句3>
┋
[Else
<语句n>]
End If
练习:
大巴车、网店、QQ、成绩转换
Select Case 语句
格式:Select Case 表达式
[Case 表达式列表1
<语句块1> ]
[Case 表达式列表2
<语句块2> ]
...
[Case Else
<语句块n> ]
End Select
注意:
- 表达式可以是数值表达式或字符串表达式,通常为变量。
- Case 1,2,3,"a","b","c"
Case 1 To 10,"A" To "E"
Case Is>0
练习:
所得税、月份天数、年月份天数、年月日、十二生肖
For....Next 循环(计数循环)
格式: For <循环变量>= <循环变量初值> To <循环变量终值> [Step<步长>]
[<循环体语句序列>]
[Exit For]
Next [<循环变量>]
功能:
说明:步长缺省时,则默认步长为1,循环步长不能为0,否则会“死循环”
练习:随机求和1,2
While…Wend循环(条件循环)
注意:主要用于循环次数预先不能确定的循环结构。
格式:While <条件>
[<语句序列>]
Wend
功能:按照条件是否成立执行循环。
练习:求1-100的和、猜数 、年龄
Do…Loop循环(条件循环)
格式1:Do [While|Until 条件]
[语句组]
[Exit Do]
Loop
注意:
(1)Do循环不但可以用于循环次数预先不能确定的循环,还可以根据循环条件决定是否结束循环。
(2)当While条件成立,或当Until条件不成立时,执行语句。(关键字While表示条件为真时循环执行,而Until表示条件为假时执行)
格式1:Do
[语句组]
[Exit Do]
Loop [While|Until 条件]
注意区别:格式2一定会执行1次循环体内的语句序列,而格式1在测试条件后,根据条件情况执行循环体。
练习:s10,存钱
一维数组的定义和使用
声明: Dim a%(1 To 5) 或 Dim a(1 To 5) As Integer
‚ Dim a%(5) 或 Dim a(5) As Integer
ƒ Dim A
A=Array(1,2,3,4,5)
动态数组(书P73)
注意
- 以上三种声明方式的异同
练习:sz列表、最值问题、sz最值问题
- 常见算法
解析法:利用数学计算实现问题的求解。
练习:鸡兔同笼、一元二次方程求解
穷举法(枚举法):将所有的方案都一一测试,找出符合要求的方案。
练习:挑选偶数、完备数
特殊数及素数:
- 完备数:指其各因子之和等于其本身的正整数。1、2、3是6的因子,6=1+2+3,所以6就是完备数。
- 回文数:回文数就是对称数,例如:121
- 素数:又称质数,是指除了1和该数本身之外,不能被其他任何整数整除的数,例如7,它不能被2,3,4,5,6整除。
- 水仙花数:指一个三位数其各位立方之和等于它本身。
- 同构数:是指一个数出现在它的平方数的右端。例如:5是25的右端,5就是同构数,25是625的右端,25也是同构数。
练习:数字分离、水仙花数、回文数、素数和同构数。
打印图形:
一般算法
For i=1 To n ‘打印的行数
Print Tab(); ‘每行打印的位置如Print Tab(9);在第九列输出
For j=1 To m ‘每行中打印的个数
打印内容;
Next j
Print ‘换行
Next i
排序:
冒泡排序:
概念:首先从数组的第一项(j)与下一项(j+1)进行比较,若下一项值比较小,则交换这两个位置的数据,使大的数在后方,这种操作反复进行直至数据组末尾,这样最后一个数据就是最大值了,然后再回到数组开头重复处理。
算法:
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
以69、 56、 18和10为例
69 | 第一趟 | 56 | 第二趟 | 18 | 第三趟 | 10 |
56 | 18 | 10 | 18 | |||
18 | 10 | 56 | 56 | |||
10 | 69 | 69 | 69 |
排序过程:
第一轮:第一次:69 56 18 10 a(1)>a(2) 怎么把a(1)和a(2)的值进
a(1) a(2) a(3) a(4) 行交换?
第二次:56 69 18 10 a(2)>a(3) 怎么把a(2)和a(3)的值进
a(1) a(2) a(3) a(4) 行交换?
第三次:56 18 69 10 a(3)>a(4) 怎么把a(2)和a(3)的值进
a(1) a(2) a(3) a(4) 行交换?
结 果:56 18 10 69
a(1) a(2) a(3) a(4)
问:第一轮比较了几次?第一轮的比较有什么作用?
第二轮:第一次:56 18 10 69
a(1) a(2) a(3) a(4)
第二次:18 56 10 69
a(1) a(2) a(3) a(4)
结 果:18 10 56 69
a(1) a(2) a(3) a(4)
第三轮:第一次:18 10 56 69
a(1) a(2) a(3) a(4)
结 果:10 18 56 69
a(1) a(2) a(3) a(4)
提问: 请回忆一下最大三位数那一题.....
选择排序:
选择排序是用了求数组中最小值及其位置的算法来实现排序的。
步骤:n个元素中找出最小的那个元素,记录下标,让这个元素与第一个元素比较,最小者是否为第一个元素,若不是则交换;第二轮从n-1个数据元素中找出最小的那个元素,记录它的下标,让这个元素与第二个元素比较,最小者是否为第二个元素,若不是则交换...以此类推。经过n-1轮的选择排序后,原来无序的序列就变成一个有序的序列。
一般算法:
For i=1 to n-1
p=i
For j=i+1 to n
If a(p)>a(j) Then p=j
Next j
If p<>i Then
T=a(p):a(p)=a(i):a(i)=t
End If
Next i
以69、 56、 18、 10为例
69 | 第一趟 | 10 | 第二趟 | 10 | 第三趟 | 10 |
56 | 56 | 18 | 18 | |||
18 | 18 | 56 | 56 | |||
10 | 69 | 69 | 69 |
排序过程:
假设第一个位置的69为最小值,记录下标p
第一轮:第一次:69 56 18 10 69与56 二者比较56为最小值,记录下标
a(1) a(2) a(3) a(4)
第二次:69 56 18 10 56与18 二者比较18为最小值,记录下标
a(1) a(2) a(3) a(4)
第三次:69 56 18 10 18与10 二者比较10为最小值,记录下标
a(1) a(2) a(3) a(4)
结 果:10 56 18 69 当前最小值与之前假设的最小值相等吗?不相等则
a(1) a(2) a(3) a(4) 进行交换。
假设最小值为?记录下标
第二轮:第一次:10 56 18 69 56与18 二者比较18为最小值,记录下标
a(1) a(2) a(3) a(4)
第二次:10 56 18 69 18与69 二者比较18为最小值,记录下标
a(1) a(2) a(3) a(4)
结 果:10 18 56 69 把最小值与之前假设的最小值进行交换
a(1) a(2) a(3) a(4)
假设最小值为?记录下标
第三轮:第一次:10 18 56 69 56与69 二者比较56为最小值,记录下标
a(1) a(2) a(3) a(4)
结 果:10 18 56 69 把最小值与之前假设的最小值进行交换
a(1) a(2) a(3) a(4)