>* dTMRTRAY.PRG >LPARAMETERS pIcon, pTips, pDblClick, pRightClick, pRepeat > >SET PROCEDURE TO dTMRTRAY.PRG ADDITIVE > >IF PEMSTATUS(_SCREEN, "TMRTRAY1", 5) > _SCREEN.REMOVEOBJECT("TMRTRAY1") >ENDIF > >PPCOUNT=PCOUNT() > >DO CASE >CASE PPCOUNT = 0 > _SCREEN.ADDOBJECT("TMRTRAY1", "TMRTRAY") >CASE PPCOUNT = 1 > _SCREEN.ADDOBJECT("TMRTRAY1", "TMRTRAY", pIcon) >CASE PPCOUNT = 2 > _SCREEN.ADDOBJECT("TMRTRAY1", "TMRTRAY", pIcon, pTips) >CASE PPCOUNT = 3 > _SCREEN.ADDOBJECT("TMRTRAY1", "TMRTRAY", pIcon, pTips, pDblClick) >CASE PPCOUNT = 4 > _SCREEN.ADDOBJECT("TMRTRAY1", "TMRTRAY", pIcon, pTips, pDblClick, pRightClick) >CASE PPCOUNT = 5 > _SCREEN.ADDOBJECT("TMRTRAY1", "TMRTRAY", pIcon, pTips, pDblClick, pRightClick, pRepeat) >ENDCASE > >* Start Hide in Tray! >_SCREEN.WINDOWSTATE = 1 > > > > > >** Starting System Tray >PROCEDURE AddTray >LPARAMETERS pIcon, pTips, pDblClick, pRightClick, pRepeat > >PUBLIC SysIconNum >IF TYPE("SysIconNum")="L" > SysIconNum = 1 >ELSE > IF SysIconNum < 5 > SysIconNum = SysIconNum + 1 > ELSE > SysIconNum = 1 > ENDIF >ENDIF > >IF ! [BSYSTRAY.FLL] $ SET([LIBRARY]) > SET LIBRARY TO BSYSTRAY.FLL >ENDIF > >PPCOUNT=PCOUNT() > >DO CASE >CASE PPCOUNT = 0 > AddSysTrayIcon(SysIconNum, [Skat.ico], ALLTRIM(STR(SysIconNum))+[ Demo on Using System Tray], [Messagebox("DblClick me! Great Test!")], [Messagebox("RightClick me! Wonderful!")], .T.) >CASE PPCOUNT = 1 > AddSysTrayIcon(SysIconNum, pIcon, [Demo on Using System Tray], [Messagebox("DblClick me! Great Test!")], [Messagebox("RightClick me! Wonderful!")], .T.) >CASE PPCOUNT = 2 > AddSysTrayIcon(SysIconNum, pIcon, pTips, [Messagebox("DblClick me! Great Test!")], [Messagebox("RightClick me! Wonderful!")], .T.) >CASE PPCOUNT = 3 > AddSysTrayIcon(SysIconNum, pIcon, pTips, pDblClick, [Messagebox("RightClick me! Wonderful!")], .T.) >CASE PPCOUNT = 4 > AddSysTrayIcon(SysIconNum, pIcon, pTips, pDblClick, pRightClick, .T.) >CASE PPCOUNT = 5 > AddSysTrayIcon(SysIconNum, pIcon, pTips, pDblClick, pRightClick, pRepeat) >ENDCASE > >ENDPROC > >PROCEDURE ModTray >LPARAMETERS pIcon, pTips > >PUBLIC SysIconNum >IF TYPE("SysIconNum")="L" > SysIconNum = 1 >ENDIF > >IF ! [BSYSTRAY.FLL] $ SET([LIBRARY]) > SET LIBRARY TO BSYSTRAY.FLL >ENDIF > >PPCOUNT=PCOUNT() > >DO CASE >CASE PPCOUNT = 0 > ModSysTrayIcon(SysIconNum, [Skat.ico], [Terence, You can go ahead!]) >CASE PPCOUNT = 1 > ModSysTrayIcon(SysIconNum, pIcon, [Terence, You can go ahead!]) >CASE PPCOUNT = 2 > ModSysTrayIcon(SysIconNum, pIcon, pTips) >ENDCASE > >ENDPROC > >PROCEDURE DelTray > >PUBLIC SysIconNum >IF TYPE("SysIconNum")="L" > SysIconNum = 1 >ENDIF > >IF ! [BSYSTRAY.FLL] $ SET([LIBRARY]) > SET LIBRARY TO BSYSTRAY.FLL >ENDIF > >DelSysTrayIcon(SysIconNum) > >ENDPROC > >PROCEDURE RestoreWIN > >_SCREEN.VISIBLE = .T. >_SCREEN.WINDOWSTATE = 2 > >ENDPROC > >************************************************** >*-- Class: tmrtray >*-- ParentClass: timer >*-- BaseClass: timer >* >DEFINE CLASS tmrtray AS timer > > > Height = 23 > Width = 23 > Interval = 1000 > jIcon = [] > jtips = [Traffic Light System Demo] > jdblclick = [RestoreWin()] > jrightclick = [RestoreWin()] >* jrightclick = [IIF(MessageBox("(Yes) for Restore Window, (No) for Quit?", 4+32, "Fun....")=6, RestoreWIN(), QUIT)] > jrepeat = .T. > Name = "tmrtray" > > PROCEDURE Init > LPARAMETERS jIcon, jTips, jDblClick, jRightClick, jRepeat > > PPCOUNT = PCOUNT() > IF PPCOUNT > 0 > * Appoint Icon, ZERO PARAMETERS WILL USE DEFAULT > THIS.jIcon = jIcon > PUBLIC IconFace > IconFace = jIcon > ENDIF > IF PPCOUNT > 1 > THIS.jTips = jTips > ENDIF > IF PPCOUNT > 2 > THIS.jDblClick = jDblClick > ENDIF > IF PPCOUNT > 3 > THIS.jRightClick = jRightClick > ENDIF > IF PPCOUNT > 4 > THIS.jRepeat = jRepeat > ENDIF > > THIS.TIMER() > ENDPROC > > PROCEDURE Timer > IF WEXIST([DEBUG]) > THIS.INTERVAL = 0 > THIS.ENABLED = .F. > ENDIF > > IF ! [BSYSTRAY.FLL] $ SET([LIBRARY]) > SET LIBRARY TO BSYSTRAY.FLL > SET PROCEDURE TO COMMON.PRG ADDITIVE > ENDIF > > ** Start to Minimized on Tray! > IF _SCREEN.WINDOWSTATE = 1 && Minimized > _SCREEN.VISIBLE = .F. > PUBLIC IconFace > DO CASE > CASE TYPE([IconFace]) = "L" > IconFace = [Trflight.ico] > > CASE IconFace = [Trflight.ico] > IconFace = [Trfred.ico] > > CASE IconFace = [Trfred.ico] > IconFace = [Trfyellw.ico] > > CASE IconFace = [Trfyellw.ico] > IconFace = [Trfgreen.ico] > > CASE IconFace = [Trfgreen.ico] > IconFace = [Trflight.ico] > > OTHERWISE > * Do Nothing Because Init gives Defined Icon! > ENDCASE > > PUBLIC SysIconNum > IF TYPE("SysIconNum")="L" > AddTray(IconFace, THIS.jTips, THIS.jDblClick, THIS.jRightClick, THIS.jRepeat) > ELSE > ModTray(IconFace, THIS.jTips) > ENDIF > ENDIF > > ** Restore From Tray! > IF INLIST(_SCREEN.WINDOWSTATE, 0, 2) && Normal > PUBLIC SysIconNum > IF TYPE("SysIconNum")<>"L" > DelTray() > RELEASE SysIconNum > _SCREEN.WINDOWSTATE = 2 > ENDIF > ENDIF > ENDPROC > > >ENDDEFINE >* >*-- EndDefine: tmrtray >************************************************** >