Option ExplicitEnum eztmStyle eztmStop = 0 eztmTimerRunning = 1 eztmPause = 2 End Enum'Default Property Values: Const m_def_IntervalHour = 0 Const m_def_IntervalMinute = 0 Const m_def_IntervalSecond = 0 Const m_def_TimerState = 0'Property Variables: Dim m_IntervalHour As Long Dim m_IntervalMinute As Long Dim m_IntervalSecond As Long Dim m_TimerState As eztmStyleDim MMTimer As Long Dim TimerSec As Long Dim bPause As Boolean'Event Declarations: Event CountDown(ByVal Hours As Long, ByVal Minutes As Long, ByVal Seconds As Long) Event Timer() Event OnStart() Event OnStop() Event OnPause(ByVal State As eztmStyle)Private Sub SetTimerValue() bPause = True TimerSec = (m_IntervalHour * 60 ^ 2 + m_IntervalMinute * 60 + m_IntervalSecond) * 2 If Not Ambient.UserMode Then Exit Sub Call ReStart End Sub'牡! ちづ簿埃┪э爹秆︽! 'MappingInfo=UserControl,UserControl,-1,Enabled Public Property Get Enabled() As Boolean Enabled = UserControl.Enabled End PropertyPublic Property Let Enabled(ByVal New_Enabled As Boolean) UserControl.Enabled() = New_Enabled PropertyChanged "Enabled" tmrMain.Enabled = New_Enabled End Property'牡! ちづ簿埃┪э爹秆︽! 'MemberInfo=8,0,0,0 Public Property Get IntervalHour() As Long IntervalHour = m_IntervalHour End PropertyPublic Property Let IntervalHour(ByVal New_IntervalHour As Long) m_IntervalHour = New_IntervalHour PropertyChanged "IntervalHour" Call SetTimerValue End Property'牡! ちづ簿埃┪э爹秆︽! 'MemberInfo=8,0,0,0 Public Property Get IntervalMinute() As Long IntervalMinute = m_IntervalMinute End PropertyPublic Property Let IntervalMinute(ByVal New_IntervalMinute As Long) m_IntervalMinute = New_IntervalMinute PropertyChanged "IntervalMinute" Call SetTimerValue End Property'牡! ちづ簿埃┪э爹秆︽! 'MemberInfo=8,0,0,0 Public Property Get IntervalSecond() As Long IntervalSecond = m_IntervalSecond End PropertyPublic Property Let IntervalSecond(ByVal New_IntervalSecond As Long) m_IntervalSecond = New_IntervalSecond PropertyChanged "IntervalSecond" Call SetTimerValue End PropertyPublic Sub TimerPause() If m_TimerState = eztmStop Then Exit Sub bPause = Not bPause tmrMain.Enabled = Not bPause If bPause Then m_TimerState = eztmPause Else m_TimerState = eztmTimerRunning End If RaiseEvent OnPause(m_TimerState) End SubPublic Sub ReStart() bPause = False tmrMain.Enabled = True RaiseEvent OnStart End SubPublic Sub TimerStart() If m_TimerState <> eztmStop Or TimerSec = 0 Then Exit Sub m_TimerState = eztmTimerRunning bPause = False tmrMain.Enabled = True RaiseEvent OnStart End SubPublic Sub TimerStop() m_TimerState = eztmStop tmrMain.Enabled = False RaiseEvent OnStop End SubPublic Function GetTimer() As Long GetTimer = (TimerSec - MMTimer) \ 2 End FunctionFriend Function eztTimerState() As eztmStyle eztTimerState = m_TimerState End Function'牡! ちづ簿埃┪э爹秆︽! 'MemberInfo=7,0,0,0 Public Property Get TimerState() As eztmStyle TimerState = m_TimerState End PropertyPublic Property Let TimerState(ByVal New_TimerState As eztmStyle) m_TimerState = New_TimerState PropertyChanged "TimerState" End PropertyPrivate Sub tmrMain_Timer() Dim LastSec As Long If TimerSec <= 0 Then Exit Sub MMTimer = (MMTimer + 1) Mod TimerSec LastSec = (TimerSec - MMTimer) \ 2 If MMTimer Mod 2 = 0 Then RaiseEvent CountDown(LastSec \ 60 ^ 2, LastSec \ 60 Mod 60, LastSec Mod 60) If MMTimer = 0 Then RaiseEvent Timer End Sub'﹍てㄏノ北兜妮┦ Private Sub UserControl_InitProperties() m_IntervalHour = m_def_IntervalHour m_IntervalMinute = m_def_IntervalMinute m_IntervalSecond = m_def_IntervalSecond m_TimerState = m_def_TimerState End Sub'パ纗跋更妮┦ Private Sub UserControl_ReadProperties(PropBag As PropertyBag) UserControl.Enabled = PropBag.ReadProperty("Enabled", True) m_IntervalHour = PropBag.ReadProperty("IntervalHour", m_def_IntervalHour) m_IntervalMinute = PropBag.ReadProperty("IntervalMinute", m_def_IntervalMinute) m_IntervalSecond = PropBag.ReadProperty("IntervalSecond", m_def_IntervalSecond) m_TimerState = PropBag.ReadProperty("TimerState", m_def_TimerState) TimerSec = (m_IntervalHour * 60 ^ 2 + m_IntervalMinute * 60 + m_IntervalSecond) * 2 tmrMain.Enabled = Ambient.UserMode End SubPrivate Sub UserControl_Resize() UserControl.Width = Screen.TwipsPerPixelX * 32 UserControl.Height = Screen.TwipsPerPixelY * 32 End SubPrivate Sub UserControl_Terminate() m_TimerState = eztmStop End Sub'盢妮┦糶纗跋 Private Sub UserControl_WriteProperties(PropBag As PropertyBag) Call PropBag.WriteProperty("Enabled", UserControl.Enabled, True) Call PropBag.WriteProperty("IntervalHour", m_IntervalHour, m_def_IntervalHour) Call PropBag.WriteProperty("IntervalMinute", m_IntervalMinute, m_def_IntervalMinute) Call PropBag.WriteProperty("IntervalSecond", m_IntervalSecond, m_def_IntervalSecond) Call PropBag.WriteProperty("TimerState", m_TimerState, m_def_TimerState) End Sub
eztmStop = 0
eztmTimerRunning = 1
eztmPause = 2
End Enum'Default Property Values:
Const m_def_IntervalHour = 0
Const m_def_IntervalMinute = 0
Const m_def_IntervalSecond = 0
Const m_def_TimerState = 0'Property Variables:
Dim m_IntervalHour As Long
Dim m_IntervalMinute As Long
Dim m_IntervalSecond As Long
Dim m_TimerState As eztmStyleDim MMTimer As Long
Dim TimerSec As Long
Dim bPause As Boolean'Event Declarations:
Event CountDown(ByVal Hours As Long, ByVal Minutes As Long, ByVal Seconds As Long)
Event Timer()
Event OnStart()
Event OnStop()
Event OnPause(ByVal State As eztmStyle)Private Sub SetTimerValue()
bPause = True
TimerSec = (m_IntervalHour * 60 ^ 2 + m_IntervalMinute * 60 + m_IntervalSecond) * 2
If Not Ambient.UserMode Then Exit Sub
Call ReStart
End Sub'牡! ちづ簿埃┪э爹秆︽!
'MappingInfo=UserControl,UserControl,-1,Enabled
Public Property Get Enabled() As Boolean
Enabled = UserControl.Enabled
End PropertyPublic Property Let Enabled(ByVal New_Enabled As Boolean)
UserControl.Enabled() = New_Enabled
PropertyChanged "Enabled"
tmrMain.Enabled = New_Enabled
End Property'牡! ちづ簿埃┪э爹秆︽!
'MemberInfo=8,0,0,0
Public Property Get IntervalHour() As Long
IntervalHour = m_IntervalHour
End PropertyPublic Property Let IntervalHour(ByVal New_IntervalHour As Long)
m_IntervalHour = New_IntervalHour
PropertyChanged "IntervalHour"
Call SetTimerValue
End Property'牡! ちづ簿埃┪э爹秆︽!
'MemberInfo=8,0,0,0
Public Property Get IntervalMinute() As Long
IntervalMinute = m_IntervalMinute
End PropertyPublic Property Let IntervalMinute(ByVal New_IntervalMinute As Long)
m_IntervalMinute = New_IntervalMinute
PropertyChanged "IntervalMinute"
Call SetTimerValue
End Property'牡! ちづ簿埃┪э爹秆︽!
'MemberInfo=8,0,0,0
Public Property Get IntervalSecond() As Long
IntervalSecond = m_IntervalSecond
End PropertyPublic Property Let IntervalSecond(ByVal New_IntervalSecond As Long)
m_IntervalSecond = New_IntervalSecond
PropertyChanged "IntervalSecond"
Call SetTimerValue
End PropertyPublic Sub TimerPause()
If m_TimerState = eztmStop Then Exit Sub
bPause = Not bPause
tmrMain.Enabled = Not bPause
If bPause Then
m_TimerState = eztmPause
Else
m_TimerState = eztmTimerRunning
End If
RaiseEvent OnPause(m_TimerState)
End SubPublic Sub ReStart()
bPause = False
tmrMain.Enabled = True
RaiseEvent OnStart
End SubPublic Sub TimerStart()
If m_TimerState <> eztmStop Or TimerSec = 0 Then Exit Sub
m_TimerState = eztmTimerRunning
bPause = False
tmrMain.Enabled = True
RaiseEvent OnStart
End SubPublic Sub TimerStop()
m_TimerState = eztmStop
tmrMain.Enabled = False
RaiseEvent OnStop
End SubPublic Function GetTimer() As Long
GetTimer = (TimerSec - MMTimer) \ 2
End FunctionFriend Function eztTimerState() As eztmStyle
eztTimerState = m_TimerState
End Function'牡! ちづ簿埃┪э爹秆︽!
'MemberInfo=7,0,0,0
Public Property Get TimerState() As eztmStyle
TimerState = m_TimerState
End PropertyPublic Property Let TimerState(ByVal New_TimerState As eztmStyle)
m_TimerState = New_TimerState
PropertyChanged "TimerState"
End PropertyPrivate Sub tmrMain_Timer()
Dim LastSec As Long
If TimerSec <= 0 Then Exit Sub
MMTimer = (MMTimer + 1) Mod TimerSec
LastSec = (TimerSec - MMTimer) \ 2
If MMTimer Mod 2 = 0 Then RaiseEvent CountDown(LastSec \ 60 ^ 2, LastSec \ 60 Mod 60, LastSec Mod 60)
If MMTimer = 0 Then RaiseEvent Timer
End Sub'﹍てㄏノ北兜妮┦
Private Sub UserControl_InitProperties()
m_IntervalHour = m_def_IntervalHour
m_IntervalMinute = m_def_IntervalMinute
m_IntervalSecond = m_def_IntervalSecond
m_TimerState = m_def_TimerState
End Sub'パ纗跋更妮┦
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
UserControl.Enabled = PropBag.ReadProperty("Enabled", True)
m_IntervalHour = PropBag.ReadProperty("IntervalHour", m_def_IntervalHour)
m_IntervalMinute = PropBag.ReadProperty("IntervalMinute", m_def_IntervalMinute)
m_IntervalSecond = PropBag.ReadProperty("IntervalSecond", m_def_IntervalSecond)
m_TimerState = PropBag.ReadProperty("TimerState", m_def_TimerState)
TimerSec = (m_IntervalHour * 60 ^ 2 + m_IntervalMinute * 60 + m_IntervalSecond) * 2
tmrMain.Enabled = Ambient.UserMode
End SubPrivate Sub UserControl_Resize()
UserControl.Width = Screen.TwipsPerPixelX * 32
UserControl.Height = Screen.TwipsPerPixelY * 32
End SubPrivate Sub UserControl_Terminate()
m_TimerState = eztmStop
End Sub'盢妮┦糶纗跋
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
Call PropBag.WriteProperty("Enabled", UserControl.Enabled, True)
Call PropBag.WriteProperty("IntervalHour", m_IntervalHour, m_def_IntervalHour)
Call PropBag.WriteProperty("IntervalMinute", m_IntervalMinute, m_def_IntervalMinute)
Call PropBag.WriteProperty("IntervalSecond", m_IntervalSecond, m_def_IntervalSecond)
Call PropBag.WriteProperty("TimerState", m_TimerState, m_def_TimerState)
End Sub
----------------------
《CSDN论坛新助手 CSDN's forum Explorer》
1、更快速的浏览
2、更方便地保存
3、更快捷的收/发短信
下载地址:http://www.seeyou.com.cn/CoolSlob/CSDNExplorer.exe
更多说明:http://community.csdn.net/Expert/TopicView.asp?id=3255966