Quick Timer Control Replacement

Quick Timer Control Replacement

Timer controls can be practical when you need to add a small delay in program execution. However, if you need the delay in a class module (instead of on a form), the actual control can be hard to get at. Instead, use these functions in a single code module:

 Option Explicit	Private Declare Function SetTimer Lib "user32" (ByVal _		hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse _		As Long, ByVal lpTimerFunc As Long) As Long	Private Declare Function KillTimer Lib "user32" (ByVal _		hWnd As Long, ByVal nIDEvent As Long) As Long	Private m_cb As Object	Public Function timerSet(lTime As Long, cb As Object) _		As Long		Set m_cb = cb		timerSet = SetTimer(0, 0, lTime, AddressOf _			timerProcOnce)	End Function	Private Sub timerProcOnce(ByVal lHwnd As Long, ByVal _		lMsg As Long, ByVal lTimerID As Long, ByVal lTime _		As Long)		On Error Resume Next		Call KillTimer(0, lTimerID)		m_cb.cbTimer	End Sub

The class module then calls the function like this:

 	...	timerSet 10, Me	...

After 10 milliseconds, the code triggers the cbTimer method in the class module:

 Public Sub cbTimer()	' Do some stuffEnd Sub

You can also use the function on forms instead of the intrinsic Timer control.


Share the Post: