VB窗体和常用控件

窗体
窗体(属性)
常用属性名
功能
说明
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
aaa
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)