jwcolby
jwcolby at colbyconsulting.com
Sat Jul 16 08:35:28 CDT 2011
I'm building a little database to time / log my son's computer time. I have a form which he uses to select a game which opens the game for him, creates a record in the table and starts the timer, leaving this form up in the background behind the game. As he closes the game the form becomes visible and he clicks a button to update the stop time in the table and stops the elapsed time timer. Not yet done, I will be causing the form to beep at him as he goes over the allotted time to play the game. Nothing special here, just wrapping the code / date I needed to measure elapsed time into a class. Obviously the point of putting it in a class is that it can be used in one or a hundred forms to perform elapsed time calcs, and it carves out all of that data / logic into a single place. To use it in any form just dimension a variable and set it to a new instance of the variable: Dim mcElapsedTime As clsElapsedTime Private Sub Form_Open(Cancel As Integer) Set mcElapsedTime = New clsElapsedTime Me.TimerInterval = 1000 - set up the timer for one second timer ticks End Sub Private Sub Form_Timer() mcElapsedTime.UpdateElapsedTime txtElapsedTime = mcElapsedTime.pElapsedTime End Sub The elapsed time class: Option Compare Database Option Explicit Private mlngSeconds As Long Private mlngMinutes As Long Private mlngHours As Long Private mstrElapsedTime Property Get pElapsedTime() As String pElapsedTime = mstrElapsedTime End Property Property Get pSeconds() As Long pSeconds = mlngSeconds End Property Property Get pMinutes() As Long pMinutes = mlngMinutes End Property Property Get pHours() As Long pHours = mlngHours End Property Private Function CalcElapsedTime() mstrElapsedTime = mlngHours & ":" & mlngMinutes & ":" & mlngSeconds End Function Function mResetElapsedTime() mlngSeconds = 0 mlngMinutes = 0 mlngHours = 0 End Function Function UpdateElapsedTime() mlngSeconds = mlngSeconds + 1 If mlngSeconds >= 60 Then mlngSeconds = 0 mlngMinutes = mlngMinutes + 1 End If If mlngMinutes >= 60 Then mlngMinutes = 0 mlngHours = mlngHours + 1 End If CalcElapsedTime End Function -- John W. Colby www.ColbyConsulting.com