版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3.1 滚动条,1. 用 途 滚动条控件(ScrollBar)分为水平滚动条(HScrollbar)和垂直滚动条(VscrollBar)二种,通常附在窗体上协助观察数据或确定位置,也可用作数据输入工具,用来提供某一范围内的数值供用户选择。,第三章 循环控制结构,3.1 滚动条,2. 属性 (1) Value 滑块所处位置所代表的值。 (2) Max:最大值 -32,76832,767 (3) Min:最小值 -32,76832,767 (4) SmallChange 最小变动值, 单击箭头时移动的增量值。 (5) LargeChange 最大变动值,单击空白处时移动的增量值。,3.1 滚动条,
2、3.事件 (1)Change事件 滚动条的Change事件,在移动滚动框或通过代码改变其Value属性值时发生。单击滚动条两端的箭头或空白处将引发Change事件。 (2)Scroll事件 当滚动框被重新定位,或按水平方向或垂直方向滚动时,Scroll事件发生。拖动滑块时会触发Scroll事件。 Scroll事件与Change事件的区别在于:当滚动条控件滚动时Scroll事件一直发生,而Change事件只是在滚动结束之后才发生一次。即Scroll事件用来跟踪滚动条中的动态变化,Change事件用来得到滚动条的最后的值。,实例,例3-1 新建一个工程,完成“改变图形”程序的设计。 具体要求: 1
3、)窗体的标题为“改变图形”,固定边框。 2)在窗体上有一个图像框(image 1),加载一副图片(Scretch=True);一个水平滚动条(Hscroll1)和一个垂直滚动条(Vscroll1)。 3)程序运行时,改变滚动条可以使图片横向或纵向压缩或拉伸。,Private Sub Form_Load() HScroll1.Max = Image1.Width VScroll1.Max = Image1.Height HScroll1.Value = HScroll1.Max VScroll1.Value = VScroll1.Max End Sub Private Sub hscroll1_
4、scroll() Image1.Width = HScroll1.Value End Sub Private Sub vscroll1_scroll() Image1.Height = VScroll1.Value End Sub,Private Sub hscroll1_change() Image1.Width = HScroll1.Value End Sub Private Sub vscroll1_change() Image1.Height =VScroll1.Value End Sub,例3-2 新建一个工程,设计一个“调色板”程序。,窗体的标题为“调色板”。固定边框。 将形状控件
5、Shape1设置为长方形,黑色边框。 通过滚动条来选择红、绿、蓝三原色的配色取值,配色效果通过形状控件动态显示。 单击“确定”按钮或回车键,将调配好的颜色运用于标签(Label1)文字“坚持就是胜利” 对命令按钮Command 1进行适当的设置,使得按回车键等效于单击命令按钮。,Private Sub Command1_Click() Label1.ForeColor = Shape1.FillColor End Sub Private Sub HScroll1_Scroll() Shape1.FillColor = RGB(HScroll1.Value, HScroll2.Value, HS
6、croll3.Value) End Sub Private Sub HScroll2_Scroll() Shape1.FillColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value) End Sub Private Sub HScroll3_Scroll() Shape1.FillColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value) End Sub,3.2 计时器,1.用途 计时器控件(Timer)又称时钟、定时器控件,用于有规律地定时执行指定的工作,常常用于编写不需
7、要与用户进行交互就可直接执行的代码,如计时、倒计时、动画等。 在程序运行阶段,时钟控件不可见。,3.2 计时器,2. 属 性,(1)Interval属性,取值范围在0 64767 ,单位:为毫秒(0.001秒),表 示计时间隔。最大时间间隔不超过65秒。若将Interval属性设置为0或负数,则计时器停止工作。,缺省设置为 0,(2)Enabled属性,设置为True,而且Interval属性值大于0,则计时器开始 工作(以Interval属性值为间隔,触发Timer事件)。,设置为False可使时钟控件无效,即计时器停止工作。,缺省设置为True,(2)Enabled属性,3.2 计时器,3
8、.2 计时器,3. 方 法 Timer控件没有方法。 4. 事 件 时钟控件只有Timer事件 当Enabled属性值为True且Interval属性值大于0时, 该事件以Interval属性指定的时间间隔发生。 常常将需要定时执行的操作放在Timer事件过程中。,实例,例 3-3新建一个工程,完成“电子钟”程序的设计。 1)窗体的标题为“电子钟”,固定边框。 2)设计一个定时器Timer1用于显示系统时间,时间间隔为一秒。 3)窗体上有一个标签Label1,用于显示时间,设置Label1的Font为:宋体、粗体、二号、背景白色,文字居中对齐,固定边框。,Private Sub Timer1_
9、Timer() Label1.Caption = Time$ End Sub,例 3-4新建一个工程,利用计时器制作一个自下而上的滚动字幕。 1)窗体背景加载一幅图片 2)窗体上有一个标签Label1,设置Label1的背景透明;前景色为红色;Font为隶书,四号字。,Dim step As Integer Private Sub Form_Load() Label1.Top = Me.ScaleHeight step = Me.ScaleHeight 200 End Sub Private Sub Timer1_Timer() Label1.Top = Label1.Top - step I
10、f Label1.Top -Label1.Height Then Label1.Top = Me.ScaleHeight End If End Sub,3.3 过 程,本节要求:,1.掌握子过程(Sub过程的定义、调用); 2.掌握函数过程(Function过程)的定义、调用; 3.掌握值传递、地址传递的传递规则。,本节重点:,1.Sub过程及Function过程的定义与调用 2.过程调用中数据的传递。,本节难点:,过程调用中数据的传递。,内容回顾 1.3.2 过程Sub过程,在VB中,Sub子过程分为:事件过程和通用过程 1 事件过程 (1)窗体事件的语法 Private Sub Form_
11、事件名(参数列表) 语句组 End Sub (2)控件事件的语法 Private Sub 控件名_事件名(参数列表) 语句组 End Sub,Sub过程,2 通用过程(Sub过程)的定义,子过程的定义形式如下: Public|PrivateStatic Sub 子过程名(形参表) 语句组 Exit Sub 语句组 End Sub,说明:(1)子过程名:命名规则与变量名规则相同。,1)必须以字母或汉字开头,由字母、数字和下划线组成,长度不得超过255个字符。 2)不得使用VB中的关键字。 3)不区分大小写。(建议:变量首字母一般大写,其余用小写。常量全部用大写字母。),Sub过程,(2)形式参数
12、列表:形式参数通常简称“形参”,仅表示形参的类型、个数、位置,定义时是无值的,只有在过程被调用时,虚实参结合后才获得相应的值。 (3)过程可以无形式参数,但括号不能省。 (4)参数的定义形式: ByValByRef变量名( )As 类型,, ByVal表示当该过程被调用时,参数是按值传递的;缺省或ByRef表示当该过程被调用时,参数是按地址传递的。,Sub过程,3 通用过程的建立,通过 “工具”菜单中的“添加过程”命令,出现“添加过程”对话框(见下图),选择过程类型(子过程、函数、属性、事件)及作用范围(公有的Public、私有的Private),单击确定后得到一个过程或函数定义的结构框架(模
13、板),如: Public Sub Sort( ) End Sub 或者利用代码窗口直接定义,Sub过程,4 过程的调用 子过程名 参数列表 或 Call 子过程名(参数列表) 说明: (1)参数列表称为实参或实元,它必须与形参保持个数相同,位置与类型一一对应。 (2)调用时把实参值传递给对应的形参。其中值传递(形参前有ByVal说明)时实参的值不随形参的值变化而改变。而地址传递时实参的值随形参值的改变而改变。,Sub过程,(3)调用子过程的形式有两种,用Call关键字时,实参必须加圆括号括起,反之则实参之间用“,”分隔。 例:调用上面定义的Swap子过程的形式: Swap a,b Call S
14、wap(a,b),Sub过程,过程调用的执行过程:,Private Sub CmdOK() Call Swap(a,b) Swap a,b End Sub,Private Sub Swap(x%,y%) Dim temp% Temp=X X=Y Y=Temp End Sub,Sub过程,例3-5 编一个交换两个整型变量值的子过程。 Private Sub Swap( X As Integer, Y As Integer) Dim temp As Integer Temp=X : X=Y : Y=Temp End Sub,Private Sub command1_click() Dim a%,b
15、% a=val(inputbox(“a=“) b=val(inputbox(“b=“) print “a=“;a,”b=“,b call swap(a,b) print “a=“;a,”b=“,b End Sub,Function过程,与子过程不同的是函数过程将返回一个值 。,1 函数过程(Function过程)的定义,Public|PrivateStaticFunction 函数名()As 函数名=返回值 Exit Function 函数名=返回值 End Function,Function过程,说明: (1)函数名:命名规则与变量名规则相同。 (2)AS类型:是指函数返回值的类型,若省略,
16、则函数返回变体类型值(Variant)。 (3)形参数列表:形参的定义与子过程完全相同。,Function过程,2 函数的调用,调用形式如下: 函数名(实参列表) 变量名=函数名(实参列表) 说明: 在调用时实参和形参的数据类型、顺序、个数必须匹配。,形参 Sub过程和Function函数过程中的中的参数称为形式参数. 实参 在程序中调用Sub过程和Function函数过程时中称为实际参数。过程调用,就是实参与形参结合的过程。,3.3 过程传址与传值,3.3 过程传址与传值,1. 按值传递参数(Byval) 在VB中,默认情况下实参与形参是传址传递数据的。,2. 按地址传递参数(ByRef)
17、传值就是通过传送实参的值而不是传送地址的方法给被调用过程中的形参。被调用过程并没有访问实参的地址,因而也就不会改变实参的值。 在VB中,区分传址与传值的标志为: 传值时:在形参前加上ByVal 传址时:在形参前加上Byref或者是默认。,过程之间参数的传递,传址与传值 传址: 形参得到的是实参的地址,当形参值的改变同时也改变实参的值。 传值: 形参得到的是实参的值,形参值的改变不会影响实参的值。,例3-6 按地址传递参数,按地址传递参数时,系统将实际参数(简单变量、数组或数组元素以及记录)的地址(即变量在内存中的位置)作为形式参数的地址,以此访问实际参数的内容,也就是说,形式参数和实际参数占用
18、相同的内存单元。这种方式下,当程序修改了形式参数的值时,实际上也就修改了实际参数的值。,Sub Form_Click() Dim a As Integer,b As Integer a=10:b=20 tryout a,b Print a=;a,b=;b End Sub,Sub tryout (x As Integer,y As Integer) x=x + 100 y=y 6 Print x=;x,y=;y End Sub,2. 按值传递参数,按值传递参数就是通过值传送实际参数,传送的是实参的值而不是它的地址。在这种情况下,系统把需要传送的变量复制到一个临时单元中,然后把该临时单元的地址传送
19、给被调用的通用过程。由于通用过程没有访问变量(实参)的原始地址,因而不会改变原来变量的值,所有的变化都是在变量的副本上进行的。,在Visual Basic中,按值传递参数是通过关键字ByVal来实现的。也就是说,在定义过程时,如果形参前面有关键字ByVal,则按值传递该参数,否则按地址传递该参数。 在【例3-6】中,如果用传值方式编写通用过程,则运行结果是不一样的。改为传值方式的,通用过程如下:,Sub tryout (ByVal x As Integer,ByVal y As Integer) x=x + 100 y=y 6 Print x=;x,y=;y End Sub 事件过程Form_
20、Click不用作任何修改。程序运行后,输出结果如下: x=110 y=120 a=10 b=20,3.4 Do whileLoop循环控制,只要 为 True 就执行 。其语法格式为: Do While Exit Do 循环体 Loop 语句功能:当条件为真时,执行循环体;当条件为假时,终止循环。,对于循环次数有限但是不知道具体次数的操作,选用Do WhileLoop循环。,例3-7 计算S=1+2+3+.+100,Private Sub Form_Click() Dim n As Integer, s As Long n = 1: s = 0 Do While n = 100 s = s +
21、 n n = n + 1 Loop Print 1+2+3+.+100=; s End Sub,For 循环使用一个叫做计数器的变量,每重复一次循环之后,计数器变量的值就会增加或者减少。 For 循环的语法如下: For = To Step Next ,3.6 For.Next循环控制,循环变量必须为数值型,用来计算循环体的次数。 步长,每次循环体执行时变量的改变值。如果省略,默认为1。 循环体,即语句块,可以是一句或多句。 循环次数=int(终值-初值)/步长+1) Exit For:写在循环体中,表示退出循环。,对于循环次数确定的操作, 选用ForNext循环,例3-12 求T=8!=12
22、38。,Private Sub Form_Click() t = 1 For c = 1 To 8 t = t * c Next c Print T=; t End Sub,例3-5 计算5!+10!(P71),Private Sub Command1_Click() Dim y As Long, s As Long Call Aaa(5, y) s = y Call Aaa(10, y) s = s + y Label2.Caption = s End Sub,Private Sub Aaa(n As Integer, t As Long) Dim i As Integer t = 1 Fo
23、r i = 1 To n t = t * i Next i End Sub,循环嵌套 在一个循环体内又出现另外的循环语句称为循环嵌套。,例:指出下面程序的运行结果: Dim a As Integer, i As Integer, j As Integer a = 0 For i = 1 To 5 For j = -2 To 2 a = a + i + j Next j Print a; Next i Print Print i, j, a,运行结果,对于循环嵌套,需要注意以下两点: 1. 内循环变量与外循环变量不同名 2. 外循环必须完全包含内循环,不能交叉。,3.5 数 组,本节要求:,1.
24、掌握数组的概念 2.掌握数组(一、二维)的定义及其引用,,本节重点:,数组定义及引用方法,与数组有关的一些常用算法,本节难点:,与数组有关的一些常用算法,输入10个数,输出它们的平均值及大于平均值的那些数?,Dim N%, S!, A!, Ave! For N=1 to 10 A=Val(InputBox(“Enter A Number”) S=S+A Next N Ave=S/10 Print Ave,引例,如果使用:A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,Dim N%, S!, Ave!, A1!, A2!.,A10! 实际程序是不能这样写 A1=Val(InputB
25、ox(“Enter A1 Number”) A2=Val(InputBox(“Enter A2 Number”) A3=Val(InputBox(“Enter A3 Number”) A4=Val(InputBox(“Enter A4 Number”) A5=Val(InputBox(“Enter A5 Number”) A6=Val(InputBox(“Enter A6 Number”),A7=Val(InputBox(“Enter A7 Number”) A8=Val(InputBox(“Enter A8 Number”) A9=Val(InputBox(“Enter A9 Number”
26、) A10=Val(InputBox(“Enter A10 Number”) S=A1+A2+A3+A4+A5+A6+A7+A8+A9+A10 Ave=S/10 IF A1Ave Then Print A1 IF A2Ave Then Print A2 IF A3Ave Then Print A3 IF A4Ave Then Print A4 . 实际程序是不能这样写,思考: 如果能使用Ai ( i=1,2,.10 ) 的形式? 使用循环来写程序 VB中表示下标变量就是通过定义数组来实现的。,一、 一维数组 1.数组的概念:数组并不是一种数据类型,而是一组相同类型数据的集合。用一个统一的名字(
27、数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分;下标变量代表元素在数组中的位置。,VB中数组的表示形式: A(1), A(10) 一维数组 X(1,1), X(2,10) 二维数组 Y(0,0,0), Y(1,2,5) 三维数组,3.5. 数组,Dim 数组名(to)As 或: Dim 数组名(to) 例:Dim a(1 to 10) As Integer 声明了a数组有10个元素,与上面声明等价形式: Dim a%(1 to 10),1是下标的下界,10是下标的上界,数组元数的数据类型,2.数组的声明,3.5. 数组,说明: 1数组名的命名规则与变量的命名相同。 2数组的元素个数
28、:上界-下界+1。 3缺省为0,若希望下标从1开始,可在模块的通用部分使用Option Base语句将设为1。其使用格式是: Option Base 0|1 后面的参数只能取 0 或 1 例如: Option Base 1 将数组声明中缺省下标设为 1,4.数组中所有元素都有相同的数据类型。如果类型不同, 则声明时必须将其数据类型定义为Variant。,3.5. 数组,5 参数index的个数决定数组的维数。各参数间用逗号分隔。参数可以是简单的数值表达式,例如,aa(4) 也可以是由关键字To组成的表达式 例如,sd(1 To 10),3.5. 数组,数组名(下标),3. 数组元素的引用,例如
29、,定义一个数组,并分别给每一元素赋值。 Dim s1 (9) As String,I As Integer For I=0 To 9 s1 (I)=InputBox(请输入任何一个字符:) Next I,3.5. 数组,例3-8输入某小组5个同学的成绩,计算总分和平均分 (取小数后一位)。 Private Sub Form_Load() Dim d(5) As Integer Dim i As Integer, total As Single, average As Single Show For i = 1 To 5 d(i) = Val(InputBox(请输入第 Format(avera
30、ge, #.0) End Sub,例3-9 输入10名学生的成绩,求出最高分和最低分。 Option Base 1 Dim score(3) As Integer Private Sub Command1_Click() For i = 1 To 3 score(i) = InputBox(输入学生成绩, 学生成绩) Next i Label1.Caption = 单击“查找”按钮开始查找最高分和最低分 End Sub Private Sub Command2_Click() Dim max As Integer, min As Integer max = score(1) min = sco
31、re(1) For i = 2 To 3 If max score(i) Then min = score(i) End If Next i Label1.Caption = 最高分: + Str(max) + Chr(13) + 最低分: + Str(min) End Sub,Private Sub Form_Load() Label1.Caption = 单击“输入成绩”按钮输入学生成绩 End Sub,二、 多维数组的声明,1.定义多维数组的格式如下: Dim 数组名( to , to ,) As 例如: Dim a(5,5,5) As Integer 声明a是三维数组 Dim b(2,
32、6,10,5) As Integer 声明b是四维数组,3.5. 数组,2. 多维数组元素的引用,多维数组元素的引用: 数组名(下标1,下标2,下标3)As ,例如 声明一个字符数组,并给数组中 每一个元素赋值。,Dim array(3,3) As String Dim row,col As Integer For row=0 To 3 For col=0 To 3 Array(row,col)=InputBox(请输入一个字符) Next col Next row,3.5. 数组,三、动态数组:在声明时未给出数组的大小。在程序执行时分配存储空间。 动态数组的建立及使用 建立动态数组包括声明和
33、大小说明两步: 1在使用Dim、Private或Public语句声明括号内为空的数组。 格式:Dim | Private|Public 数组名()As 数据类型 例:Dim a() As Integer 2在过程中用ReDim语句指明该数组的大小。 格式:ReDim Preserve 数组名(下标1,下标2),Preserve参数:保留数组中原来的数据,3.5. 数组,例:Redim A(10) Redim Preserve A(20),3.5. 数组,例: Dim num() As Integer Private Sub Form_Click() . ReDim num(5) . End Sub,说明: (1)ReDim语句是一个可执行语句,只能出现在过程中, 并且可以多次使用,改变数组的维数和大小。 (2)定长数组声时中的下标只能是常量,而动态数组 ReDim 语句中的下标是常量,也可以是有了确定值的变量。,(3) Preserve为可选的关键字,当改变原有数组最末维 的大小时,使用此关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026华东交通大学海外优青项目全球引才备考题库含答案详解
- 2022~2023烟花爆竹安全作业考试题库及答案第915期
- 未来五年农林牧渔业互联网数据服务企业ESG实践与创新战略分析研究报告
- 未来五年高新技术创业服务企业县域市场拓展与下沉战略分析研究报告
- 未来五年蛋黄油企业数字化转型与智慧升级战略分析研究报告
- 未来五年野生灌木企业ESG实践与创新战略分析研究报告
- 移动网基础知识课件
- 融合·探究·表达-小学三年级跨学科主题课“生活中的数学”英语教学设计
- 明辨天气与气候初探世界气候类型判读-基于地理实践力与综合思维培养的探究式教学设计
- 小学三年级上册体育与美术融合教学设计
- 江苏省连云港市2024-2025学年第一学期期末调研考试高二历史试题
- 文化馆安全生产制度
- (2025年)保安员(初级)证考试题库及答案
- 2026年浙江省军士转业岗位履职能力考点练习题及答案
- 安全设备设施安装、使用、检验、维修、改造、验收、报废管理制度
- 2026届四川省成都市2023级高三一诊英语试题(附答案和音频)
- 《煤矿安全规程(2025)》防治水部分解读课件
- 2025至2030中国新癸酸缩水甘油酯行业项目调研及市场前景预测评估报告
- JJF 2333-2025恒温金属浴校准规范
- 员工自互检培训
- (2025年)司法考试法理学历年真题及答案
评论
0/150
提交评论