home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 16
/
CD_ASCQ_16_0994.iso
/
news
/
4611
/
fw16d.ins
/
SOURCE
/
CLASSES
/
TIMER.PRG
< prev
next >
Wrap
Text File
|
1994-04-16
|
1KB
|
63 lines
#include "FiveWin.ch"
static aTimers := {}
static nId := 1
//----------------------------------------------------------------------------//
CLASS TTimer
DATA bAction
DATA lActive
DATA nId, nInterval
DATA hWndOwner
METHOD New( nInterval, bAction, oWnd ) CONSTRUCTOR
METHOD Activate()
METHOD DeActivate() INLINE ::lActive := .f., KillTimer( ::hWndOwner, ::nId )
METHOD Release() INLINE ::DeActivate(), Self := nil
ENDCLASS
//----------------------------------------------------------------------------//
METHOD New( nInterval, bAction, oWnd ) CLASS TTimer
DEFAULT nInterval := 18, bAction := { || nil }
::nInterval = nInterval
::bAction = bAction
::nId = nId++
::lActive = .f.
::hWndOwner = If( oWnd != nil, oWnd:hWnd, GetActiveWindow() )
AAdd( aTimers, Self )
return
//----------------------------------------------------------------------------//
METHOD Activate() CLASS TTimer
::nId = SetTimer( ::hWndOwner, ::nId, ::nInterval, 0 )
::lActive = .t.
return
//----------------------------------------------------------------------------//
function TimerEvent( nId )
local nTimer := AScan( aTimers, { | oTimer | oTimer:nId == nId } )
if nTimer != 0
Eval( aTimers[ nTimer ]:bAction )
endif
return 0
//----------------------------------------------------------------------------//