收藏 分享(赏)

6.3滚动条和计时器.ppt

上传人:dreamzhangning 文档编号:2168197 上传时间:2018-09-03 格式:PPT 页数:48 大小:469.50KB
下载 相关 举报
6.3滚动条和计时器.ppt_第1页
第1页 / 共48页
6.3滚动条和计时器.ppt_第2页
第2页 / 共48页
6.3滚动条和计时器.ppt_第3页
第3页 / 共48页
6.3滚动条和计时器.ppt_第4页
第4页 / 共48页
6.3滚动条和计时器.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、6.3 滚动条和计时器控件,2008-4-7,6.3.1计时器控件(Timer),计时器控件也称定时器或时钟,他是一种独立于用户,按一定时间间隔自动触发事件的控件,使用计时器可定时重复执行时钟中断过程。在程序运行时,计时器是不可见的。 Timer控件必须依附在窗体上,在窗体上放置计时器控件后,尽管在程序运行时不可见,但它依然在工作。因此,设计窗体时,可随意地把计时器控件放在窗体的某个位置上,并且允许同时使用多个定时器控件。 计时器控件在设计时显示为一个小时钟图标 ;在运行时并不显示在屏幕上,通常用标签来显示时间。,计时器功能:主要有两个功能,用于在程序中监视和控制时间进程,即每隔一段固定的时间

2、就有规律地执行一次相同的任务。用于有规律地定时执行指定的工作,适合编写不需要与用户进行交互就可直接执行的代码,如定时检测系统或控件的状态、控制控件的移动、设置时钟、倒计时、秒表等;例如,移动一个条幅或一幅图片,构成动态效果,显示时钟等。 进行某种后台处理。,6.3.1.1 计时器属性,设定计时器触发Timer事件的时间间隔(ms) ,即两个计时器事件之间的时间间隔,其值以毫秒(0.001秒)为单位。该控件会自动检查系统时间是否又到Interval属性值,到了便产生Timer事件,执行时钟中断过程。 Interval 属性的有效值在0到65 535s之间,因此其最大时间间隔不能超过65秒, 其属

3、性值既可在设计时设置,也可在程序运行时设置。若希望每秒执行n个计时器事件,则将Interval属性的值设置为1000/n。 定时器Interval属性值越小,定时器事件触发越频繁,响应事件所使用的处理器事件就越多,这将降低系统综合性能。除非有必要,否则不要设置过小的时间间隔。当Interval属性值为0或负数时屏蔽计时器,使计时器不再产生Timer事件,定时器停止工作。,1. Interval属性,对象名. Interval=数值,2. 名称和其他属性,时钟控件有Name(名称)、Enabled、Left、Top、Interval等属性。系统的默认名称为Timer1、Timer2等。,3. E

4、nabled 属性,用于决定是否启动定时器。当它的值为True时,时钟控件有效,开始从Interval属性的设置值计时;当它的值为False时,时钟控件无效,关闭定时器停止计时。 定时器的Enabled属性不同于其他对象的Enabled属性。对于大多数对象,Enabled属性决定对象是否响应用户触发的事件;定时器控件的Enabled属性值为False时,将暂停定时器操作。,6.3.1.2 定时器的事件,计时器控件的事件只有一个Timer事件,是计时器在间隔了一个Interval时间后所触发的事件。 只要定时器控件的属性Enabled=True,而且Interval属性值大于0,则Timer事件

5、以Interval 属性指定的时间间隔发生。 在Timer事件过程中编写需要定时进行的处理,可以周期性地激活Timer事件,每隔一段时间自动地调用一次Timer事件过程。在实际运用中,经常用Timer事件来实现有规律的重复操作和简单的动画。 VB没有为时钟控件提供有关的方法。,6.3.1.3 定时器应用举例,例6.4倒计数。设计一个窗体,在窗体上添加两个标签和一个计时器。运行程序时,自动开始倒计数,从10到0每隔一秒倒计数一次,计数时在两个标签中分别显示系统当前时间和倒计数的值。P129-130参见LT6_7.vbp,程序举例,例1 电子倒计时器。先由用户给定倒计时的初始分秒数,然后开始倒计时

6、,当计到0分0秒时,通过消息对话框显示“倒计时结束” (1)在窗体上建立一个计时器(Timer1)、两个标签、两个文本框(Text1和Text2)和一个命令按钮(Command1)计时器的Enabled属性值为True, Interval属性值为0,(2)编写程序代码,Dim m As Integer, s As Integer 声明模块级变量Private Sub Form_Load()Timer1.Interval = 1000 设置每隔1秒触发1次Timer事件Timer1.Enabled = False 关闭计时器End SubPrivate Sub Command1_Click()

7、“倒计时”m = Val(Text1.Text)s = Val(Text2.Text)Timer1.Enabled = True 打开计时器End Sub,Private Sub Timer1_Timer()If s 0 Thens = s - 1ElseIf m 0 Thenm = m - 1s = 59End IfEnd IfText1.Text = Format(m, “00“)Text2.Text = Format(s, “00“)If s = 0 And m = 0 ThenBeep 响铃,即让喇叭发一声响MsgBox “计时结束“Unload MeEnd If End Sub,定时

8、器应用举例2,例 创建一个数字时钟,要求时钟的前景为绿色,背景为黑色,字体为宋体28点阵大小。 程序开发步骤: 1在窗体上绘制一个计时器控件和一个标签控件,设计好界面,然后按表所示的属性设置值来设置各控件的属性,2双击计时器控件,在其Timer事件过程中编写程序代码: Private Sub Timer1_Timer( ) Label1.Caption = Time 利用Time函数获取系统日期 End Sub,图4-73保存工程,运行程序。界面如图4-7所示。,例3 实现字体的放大,利用计时器可以按指定间隔时间对字体进行放大 (1)创建应用程序的用户界面和设置对象属性一个计时器控件和)和一个

9、标签 。计时器控件Timer1的计时器采用默认的属性值Enabled属性值为True(真),Interval属性值为0,(2)编写程序代码Private Sub Form_Load()Label1.Caption = “放大“Label1.Width = Form1.Width 把标签的高度和宽度 设置为窗体相同尺寸 Label1.Height = Form1.HeightTimer1.Interval = 800End SubPrivate Sub Timer1_Timer()If Label1.FontSize 140 Then Label1.FontSize = Label1.FontS

10、ize * 1.2ElseLabel1.FontSize = 8End IfEnd Sub,计时器应用举例4,例 设计一个窗体,运行窗体后,图片会不停地闪动。,界面设计 :,属性设计 :,Private Sub Timer1_Timer()End Sub,Picture1.Visible = Not (Picture1.Visible),计时器应用举例5,例 运行窗体后,文本框“谁知盘中餐,粒粒皆辛苦。”从右向左移动,每当文本框全部移出左边界时要求从右边界再次循环运行。,界面设计 :,属性设计 :,程序代码:,Private Sub Timer1_Timer()If Text1.Left +

11、Text1.Width = 0 Then Text1.Left = Form1.WidthText1.Left = Text1.Left - 100 End Sub,例6:利用随机函数在文本框Text1中输入小学生加减运算题,答案由用户在文本框Text2中输入,每题解答时间为10秒钟,总共答题时间为60分钟。每题的限制时间采用倒计时,答题时间到,统计并显示总成绩。 (1)界面设计 设计如图7-15所示界面。除文本框外,其余各控件的属性见表7-5。,表7-5 控件属性,图7-15 运行界面,Dim n As Integer , k! k为存放当前剩余时间的变量Private Sub Comman

12、d1_Click() “开始/下一题”按钮事件过程Dim a!, b! 存放操作数Static c! 存放正确答案Command1.Caption = “下一题“ 将“开始”变换为“下一题”If Val(Text2.Text) = c Then n = n + 10 答案正确,加10分Randomizea = CInt(100 * Rnd() + 1) : b = CInt(100 * Rnd() + 1) 随机产生操作数If a b ThenText1.Text = Str(a) & “-“ & Str(b): c = a b 减法运算ElseText1.Text = Str(a) & “+

13、“ & Str(b) : c = a + b 加法运算End IfText2.Enabled = TrueText2.Text = “ : Text2.SetFocus 清空Text2并将焦点定位在Text2上,以便输入答案k = 0Label2.Visible = True End SubPrivate Sub Command2_Click() “结束”按钮事件过程If Text1 “ And Text2.Text “ ThenCommand1_Click 防止漏判Command1.Visible = False : Command2.Visible = False : Command3.V

14、isible = FalseTimer1.Enabled = False 停止计时 Label3.Visible = FalseLabel2.Caption = “你的得分是“ & n - 10 & “分“ 显示成绩 End Sub,Private Sub Command3_Click() “暂停/继续”事件过程If Command3.Caption = “暂停“ ThenTimer1.Enabled = False 暂停Command3.Caption = “继续“ElseTimer1.Enabled = True 继续Command3.Caption = “暂停“End If End Su

15、bPrivate Sub Timer1_Timer()Static m! 存放总用时m = m + 1 : k = k + 1Label3.Caption = “总共用时“ & Str(m)Label2.Caption = “当前剩余时间“ & Str(10 - k) 显示倒计时If k = 10 ThenLabel2.Caption = “时间到“ : Label2.Visible = FalseText2.Enabled = False 当前时间到,禁止解答k = 0 重新计时End IfIf m = 100 Then Command2_Click 总用时完,调用“结束”事件 End Su

16、b,例7:利用计时器实现气球升空。 在窗体上添加两个图片框控件Picture1Picture2,两个计时器Timer1、Timer2,令Interval1=10,Interval1=20,在Windows附件的“画图”程序中绘制几个气球,分别复制到两个图片框中。程序代码为: Private Sub Timer1_Timer()Picture1.Top = Picture1.Top 10 气球上升If Picture1.Top 0 ThenPicture1.Top = Form1.Height - Picture1.Height 气球1回到窗体下部End If End SubPrivate Su

17、b Timer2_Timer()Picture2.Top = Picture2.Top 10 气球上升If Picture2.Top 0 ThenPicture2.Top = Form1.Height - Picture2.Height 气球2回到窗体下部End If End Sub,6.3.2 滚动条控件,滚动条是Windows用户界面中最常见的对象,能作为独立的输入设备,连续地调整数据,例如控制声音的音量,作为速度、数量的指示器。 利用滚动条,可以在应用程序或控件中水平或垂直滚动数据,十分方便地巡视大量信息,通过滚动条的配合,可使没有内建滚动条的控件获得新的用法。 滚动条分为水平滚动条(H

18、scrollBar)和垂直滚动条(VscrollBar)。除方向不一样外,水平滚动条和垂直滚动条的结构与操作是完全相同的。,滚动条的结构,两端各有一个滚动箭头,在滚动条上有一个能够移动的小方块,叫做滚动滑块;滚动块从一端移至另一端时,其值在不断变化。 水平滚动条的最小值在最左边,最大值在最右边,从左向右移动时,值依次递增; 垂直滚动条的最小值在最上边,最大值在最下边,从上向下移动时,值依次递增。 最小值和最大值分别在两个端点,其坐标系和滚动条的长度(高度)无关。,6.3.2.1 滚动条的属性 (1) Value滑块所处位置所代表的值。 (2) Max:最大值-32,76832,767 (3)

19、Min:最小值-32,76832,767 (4) SmallChange最小变动值, 单击箭头时移动的增量值。 (5) LargeChange最大变动值, 单击空白处时移动的增量值。,滚动条和Slider控件,水平滚动条,垂直滚动条,SmallChange Min Value Max SmallChange,LargeChange LargeChange,Slider控件,1. Value属性,Value属性标志滚动条的当前值(滚动滑块的位置),当滚动滑块的位置移动时,Value属性值也随之改变(缺省为0) 。在程序中也可以用代码设置,设置时滚动滑块的位置随之移动。其值为整型,范围应在Min和

20、Max之间。 在设计时,设置Value属性的值主要用来设定程序运行后滚动块的初始位置。在程序运行时,可通过拖曳滚动块或单击滚动条箭头等方法来改变Value的属性值,以及获取Value的值。,控制滚动条变化范围的属性,(2)Min属性 滚动滑块在最小位置的值,其值为整型,范围应在-32768和32767之间,缺省时其值为0。水平滚动条滚动滑块在最左边,垂直滚动条滚动滑块在最上边,是滚动滑块在最小位置的值。 (3)Max属性 滚动滑块在最大位置的值,其值为整型,范围应在-32768和32767之间,缺省时其值为32767 。水平滚动条滚动滑块在最右边,垂直滚动条滚动滑块在最下边,是滚动滑块在最大位

21、置的值。,滚动条定位钮移动量的属性,(4)SmallChange属性 当单击滚动条两端箭头时,Value的改变量,其值为整型,默认值为1 。 (5)LargeChange属性 当单击滚动条的空白位置,即滚动块和滚动箭头之间的区域时,Value的改变量,其值为整型。默认值为1。(6)名称和其他属性 水平滚动条系统的默认名称为HScroll1、 HScroll2等,垂直滚动条系统的隐含名称为VScroll1、VScroll2等。和滚动条位置有关的属性有Height、Left、Top和Width;和滚动条行为有关的属性有Enabled、Visible、TabIndex等。,6.3.2.2 滚动条的事

22、件,滚动条的事件有很多,例如:Click、DblClick、Scroll和Change等。常用事件有Scroll事件和Change事件。 注意:在这两个事件中应避免使用 MsgBox 语句和函数。 Scroll(滑动)事件 单击滚动箭头或单击滚动条均不能触发该事件,仅在移动滚动滑块时被触发。一般可用该事件来跟踪滚动条的动态变化。,Change(变化)事件,用鼠标拖曳滚动块后松开鼠标左键、单击滚动条或滚动箭头,使滚动块重定位时,或通过代码改变滚动条的Value属性值时,该事件产生。 所以在用鼠标拖曳滚动条的滚动块时,滚动条的Value属性值不变化,只有当松开鼠标左键后,滚动条的Value属性值才

23、变化。 Scroll事件与Change事件的区别在于:当滚动条控件滚动时Scroll事件一直发生,而Change事件只是在滚动结束之后才发生一次。 Change 事件过程可协调在各控件间显示的数据或使它们同步。一般可用该事件来获得移动后滚动条的最后值。 例如:可用一个滚动条的 Change 事件过程更新一个滚动条的 Value属性值和在一个工作区里显示数据。,例 用一个文本框(txtSpeed)显示滚动条(hsbSpeed)滑块当前位置所代表的值。,Sub hsbSpeed_Change()Text1.Text= hsbSpeed.Value End Sub,程序代码如下:Private Su

24、b HScroll1_Change()Label1.Caption = HScroll1.ValueText1.FontSize = HScroll1.ValueEnd Sub,【例】利用滚动条改变文本框中所显示文本的字号大小。要求程序运行效果如图所示。,滚动条的工作原理,滚动条通过其上的方块图案(称为定位钮)来显示当前取值情况。当定位钮位于顶端或左端时表示最小值,当定位钮位于底端或右端时表示最大值,其它情况表示中间值。运行状态下,用户单击滚动条上的箭头时,滚动一个小增量,单击滚动条上的空白位置时,滚动一个大增量。滚动条通过Scroll事件和Change事件监视定位钮沿滚动条的移动情况,这两个

25、事件的发生时机为:Change事件在定位钮被移动后发生;Scroll事件在移动定位钮的过程中发生,在单击滚动箭头或滚动条时并不发生Scroll事件。滚动条用两个属性来指明和限定滚动条的变化范围:Min属性和Max属性。滚动条的LargeChange属性和SmallChange属性决定用户操作滚动条时定位钮的移动量。,例6.5 比较Scroll和Change事件。,设计一个窗体,在窗体上添加两个文本框和两个水平滚动条。运行程序时,单击左边滚动条两端箭头时或单击滚动条的空白位置时,改变文本框1的宽度和文本框1中字的大小,拖动右边滚动条滑块时,改变文本框2的宽度和文本框2中字的大小。 参见P131-

26、132 LT6-8.frm,滚动条程序举例2,例2:利用水平滚动条和垂直滚动条的滚动,分别改变标签中文字的字体和颜色。,界面设计 :,程序代码,Private Sub HScroll1_Change()Label1.ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) End Sub Private Sub VScroll1_Change()Select Case VScroll1.ValueCase 1Label1.Font = “黑体“Case 2Label1.Font = “宋体“Case 3Label1.Font = “隶书“End Sele

27、ct End Sub,例3 设计一个调色板应用程序,建立三个水平滚动条作为红、绿、蓝三种基本颜色的输入工具,合成的颜色显示在右边的标签中,用其背景颜色属性BackColor值的改变实现合成颜色的调色,说明:根据调色原理,基本颜色有红、绿、蓝三种,选择这三种颜色的不同比例,可以合成所需要的任意颜色(1)创建应用程序的用户界面和设置对象属性三个水平滚动条名称从上至下分别为HScroll1、HScroll2、HScroll3其Max属性均设置为255,Min属性均设置为0,SmallChange属性设置为1,LargeChange属性设置为10,Value设置为0。显示合成颜色的标签名为Label1

28、,1界面设计 在窗体上绘制三个水平滚动条,分别对应红、绿、蓝三种颜色值。由于红、绿、蓝三基色可以合成各种各样的颜色,每一种颜色其变化又有256种,故滚动条取值范围为0255。 2各控件对象的属性设置参见表4-6。,表4-6 控件对象属性设置值,(2)编写程序代码功能要求:通过操作(单击或拖动)滚动条,直接修改RGB设置,从而得到标签背景所需的颜色Private Sub HScroll1_Change()Label1.BackColor = RGB(HScroll1.Value, _HScroll2.Value, HScroll3.Value)End SubPrivate Sub HScroll

29、2_Change()Label1.BackColor = RGB(HScroll1.Value, _HScroll2.Value, HScroll3.Value)End SubPrivate Sub HScroll3_Change()Label1.BackColor = RGB(HScroll1.Value, _HScroll2.Value, HScroll3.Value)End Sub,6.4 综合运用,例6.8庆祝中国载人航天的成功。设计一个窗体,在窗体上添加两个标签、一个文本框和一个水平滚动条。运行程序时,文本框中的汉字随时间而改变颜色,改变水平滚动条滑块位置会改变颜色变化的频率,颜色取

30、红、绿和蓝三色。 参见P135-136LT6-10.frm,作业,P136 选择题(1)(4) P139 判断题(3)(5) P141 简答题(3)(4),P142操作题,(9) 设计一个窗体,使用Timer控件编程,单击【开始】命令按钮,控制红色信号灯的交替闪亮,闪亮间隔为0.5秒。单击【结束】命令按钮,结束程序。(红色信号灯可用标签框模拟) 提示:在timer事件中改变标签框的visible属性,参见PPT17,P142操作题,(10)移动字幕。设计一个窗体,使用Timer控件编程,单击【开始】命令按钮,在窗体上的字幕开始移动,字幕内容为“Visual Basic欢迎您!”,字幕为红色黑体3号字,字幕移动的时间间隔为1/10秒。单击【结束】命令按钮,结束程序。 提示:在Timer事件中设置标签的边距属性的改变。参见PPT18-19,P142操作题,(11)设计一个窗体,标题为“F10”,在窗体上画一个水平滚动条和一个文本框。使用水平滚动条控制文本框中显示的数值,由右向左拖动滑动块时,数值在0.05至0.75内同步变化。(保留小数点后两位) 提示:在滚动条的change事件中把滚动条的value值赋值给文本框的Text,注意滚动条的数值变化范围。参见PPT34-35,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报