当前位置: 首页 » 中职教育 » 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)