更新时间2019-02-19 05:27:15
'窗体添加 Timer1、Timer2、Label1、Text1控件,并将Form1 属性 BorderStyle 设为 3
Dim Seconds As Long '计时器总秒数
Dim AlarmTime As Long '设定闹钟时间的秒数
Dim B_BackColor As Boolean '判断计时器总秒数是否超过闹钟设置的秒数
Private Sub Form_Load()
With Label1
.Caption = ""
.Alignment = 2
.BackStyle = 1
.BorderStyle = 1
.BackColor = &H80000005
.Font.Name = "宋体"
.Font.Size = 22
.Font.Bold = True
End With
With Label2
.Alignment = 1
.Caption = "闹钟时间:"
End With
Text1.Text = ""
Timer2.Enabled = False
Timer2.Interval = 500
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim tmp, i, j, k
If KeyAscii = 8 Or (KeyAscii >= &H30 And KeyAscii <= &H3A) Then
Exit Sub '过滤保留“0~9”、“:”和反向擦除键(Backspace)的Ascii值
ElseIf KeyAscii = 13 Then '如果按回车键,则启动定时器
If Text1.Text <> "" Then
tmp = Split(Text1.Text, ":")
j = IIf(UBound(tmp) > 2, 2, UBound(tmp)) '不规范的时间,只取数组前三个单元数据
AlarmTime = 0: k = 0
For i = j To 0 Step -1 '将时、分、秒转为秒
AlarmTime = AlarmTime + (60 ^ k) * tmp(i)
k = k + 1
Next
If Seconds > AlarmTime Then
AlarmTime = AlarmTime + 43200 '如果设置的时间值小于定时器的值,则加上12小时的秒数(或24小时秒数 86400),此里选择按12小时计算
B_BackColor = True 'Label1 背景颜色红白交替为真
Else
B_BackColor = False 'Label1 背景颜色红白交替为假
End If
End If
Else
KeyAscii = 0
End If
End Sub
Private Sub Timer1_Timer()
Seconds = Seconds + 1
If AlarmTime > 0 Then
If Seconds >= AlarmTime Then
Timer2.Enabled = True
End If
End If
If B_BackColor = True Then 'Label1 背景颜色红白交替
If Seconds Mod 2 = 0 Then
Label1.BackColor = &HFF& '红色
Else
Label1.BackColor = &H80000005 '白色
End If
End If
Label1.Caption = DateAdd("s", Seconds, "00:00:00")
End Sub
Private Sub Timer2_Timer()
Beep
'可以将Beep换成如下的语音朗读(精减版系统上可能无法朗读)。
'Dim objVoice
'Set objVoice = CreateObject("SAPI.SpVoice")
'objVoice.Rate = 10 '速度:1 - 10
'objVoice.Speak "快快"
'Set objVoice = Nothing
'另外,也可以通过WinAPI: sndPlaySound - 播放 wav 文件来实现自定义音频文件播放。具体略。
End Sub
窗体布局
闹钟设置
计时器秒数超过闹钟设置的总秒数时