Page 1 of 1

TIMER in a CLASS

Posted: Tue May 24, 2022 2:40 pm
by AUGE_OHR
hi,

how can i use a TIMER in a CLASS :?:

Code: Select all

   oWin := "VLCAXWIN_" + STRZERO( i, 3 )
   oControl := "AXCTRL_" + STRZERO( i, 3 )
   cTimer   := "Timer_"+ STRZERO( i, 3 )

   DEFINE WINDOW &oWin ;
      ...
      DEFINE ACTIVEX &oControl
      ... 
      END ACTIVEX

      DEFINE TIMER &cTimer of &oWin INTERVAL 10 ACTION IF(!EMPTY(oVLC), DoCheckTimer(ThisWindow.Name) , nil)

   END WINDOW
Control: Timer_016 Of VLCAXWIN_016 Not defined. Program Terminated

Re: TIMER in a CLASS

Posted: Tue May 24, 2022 3:06 pm
by gfilatov
AUGE_OHR wrote: Tue May 24, 2022 2:40 pm hi,

how can i use a TIMER in a CLASS :?:
Hi,

May be

Code: Select all


  DATA  cTimer
  ...
   oWin := "VLCAXWIN_" + STRZERO( i, 3 )
   oControl := "AXCTRL_" + STRZERO( i, 3 )
   ::cTimer   := "Timer_"+ STRZERO( i, 3 )

   DEFINE WINDOW &oWin ;
      ...
      DEFINE ACTIVEX &oControl
      ... 
      END ACTIVEX

      DEFINE TIMER &( ::cTimer ) of &oWin INTERVAL 10 ACTION IF(!EMPTY(oVLC), DoCheckTimer(ThisWindow.Name) , nil)

   END WINDOW
:?:

Re: TIMER in a CLASS

Posted: Wed May 25, 2022 8:22 pm
by AUGE_OHR
hi Grigory,

my last Message was not clear

it "seems" that TIMER did not work when "Set" in Main when have a ActiveX
i need to use TIMER "in" CLASS where i can have Multi-Instance

Code: Select all

   oVlc := TVlc() :New( GetProperty( oWin, oControl, "Object" ), oWin )

METHOD New( oControl, oWin ) CLASS TVlc
LOCAL cTimer    := "Timer_VLC"
  ...
  ::oWin := oWin
  ... 
  ::lRun := .F.
  DEFINE TIMER &cTimer of &oWin INTERVAL 100 ACTION ::ShowRunThread()

Code: Select all

METHOD Destroy() CLASS TVlc
   IF IsControlDefined( Timer_VLC, ::oWin )
      DoMethod( ::oWin, "Timer_VLC", "Release" )
   ENDIF

Code: Select all

METHOD ShowRunThread() CLASS TVlc

IF ::lRun = .T.
   nPlayState := ::State()
   ...
   CASE nPlayState = VLC_INPUT_STATE_PLAYING
      nDuration := INT( ::GetLength() / 1000 )
      IF !EMPTY( nDuration )
         IF nPosi >= nDuration - 1
            ::Stop()
            ::lRun = .F.
            IF SP_Loop() = .T.
              ::SetTime( 0 )
              ::Play()
            ELSEIF SP_Endless()  = .T.
              // SENDKEY( VK_NEXT )
              ::Play_Next()
            ENDIF