工具箱中定时器控件的图标为 。
定时器控件借用计算机内部的时钟,实现了由计算机控制、每隔一个时间段自动触发一个事件。它在运行时是不可见的,所以在界面设计时可以放置在窗体的任意位置。
1.定时器控件常用属性
定时器控件缺省的控件名称为Timer1、Timer2等。
(1)Interval属性:设置间隔时间,为整数类型
该属性表示定时器的时间间隔,以毫秒为单位(设置为1000,时间间隔为1秒)。
Interval属性值为0,则定时器不起作用;Interval属性的最大值为65535。
(2)Enabled属性:设置是否响应,为逻辑值
该属性返回或设置一个值,该值原来确定一个窗体或控件是否能够对用户产生的事件做出反应。它有两个值:True或False。当设为True时,表示定时器开始工作;当设为False时,表示关闭定时器。
2.定时器控件的Timer事件
Timer事件是定时器控件的唯一事件。在控件的Enabled属性值为True时,Interval属性值的设定决定了间隔多少时间调用一次Timer事件。
下面我们来看两个例子。
例8.11 程序运行效果如图8.18所示。
设计一个模拟电子秒表的程序,要求:单击“开始”按钮开始计时,单击“结束”按钮终止计时。窗体中设置有1个标签框(对象名为Label1,其BorderStyle属性为1,对齐方式为居中方式),两个命令按钮。
1)在窗体上放置两个命令按钮和一个文本框,将命令按钮的Caption属性分别设置为“开始”和“停止,将文本框的Text属性设置为空。
图8.18 模拟电子秒表
2)具体代码如下:
Dim s As Integer, m As Integer, h As Integer ' 三个整形变量分别表示秒、分、小时
Private Sub Command1_Click()
Timer1.Enabled = True ' 定时器开始工作
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False ' 定时器停止工作
End Sub
Private Sub Form_Load()
Timer1.Enabled = False
Timer1.Interval = 1000
Label1 = "00:00:00"
End Sub
Private Sub Timer1_Timer()
s = s + 1
If s >= 60 Then
m = m + 1 ' 秒值S累加到60时,分钟值M进1
s = 0
If m >= 60 Then
h = h + 1 ' 分钟值M累加到60时,小时值H进1
m = 0
End If
End If
Label1 = Format$(h, "00") + ":" + Format$(m, "00") + ":" _+ Format$(s, "00")
End Sub
读者可将本题改为倒计时程序。
例8.12 编制一个带有简单动画效果的程序:使一行字从左到右来回摆动,到达边界后再换一个方向不间断的移动,同时让字的颜色产生一些变化。
具体设计过程如下:
1)界面设计,拖动鼠标,在窗体上放置一个标签框和定时器。
图8.19 标签框移动示例
将Label1(标签框)的Caption属性设置为“欢迎使用VB应用程序!”,并且设置其字号为4号字。
2)过程设计:
Dim x As Single
Private Sub Form_Load()
'无论设计时设定为何状态,装入窗体时都激活定时器控件Timer1
Timer1.Interval = 100
Timer1.Enabled = True
x = 100
Label1.AutoSize = True
End Sub
Private Sub Timer1_Timer()
If Label1.Left >= Form1.Width - Label1.Width Or Label1.Left < 0 Then
x = -x '反方向
End If
Label1.Left = Label1.Left + x
Label1.ForeColor = QBColor(Int(Rnd * 16)) '颜色随机变化
End Sub
每次调用定时器事件Timer1_Timer都会使标签移动,当移动到边界的时候,表达式“Label1.Left >= Form1.Width - Label1.Width Or Label1.Left < 0”可判断是否越界,如果越界则重新设置标签移动的步长、使标签在窗体内反向移动。
“QBColor(Int(Rnd * 16)),QBColor”是一个颜色函数,值是在0~15之间的整数(用一个随机数来产生该函数的参数),并用该数改变控件Label1的ForeColor属性,使控件的前景色变化。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。