Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Icon in System Tray....
Message
De
16/01/2000 20:09:54
 
 
À
15/01/2000 10:45:44
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Divers
Thread ID:
00318426
Message ID:
00318815
Vues:
20
Hi, BB!

I also use your fll to put Icon into system tray..
but I would like to have more Enhancement that I fail to do!!

First, I add a timer such as Talking Clock V1.0 does, Check _SCREEN.WindowState to consider hide in Tray or Not..

I would try to make a Simply Restore back function for DblClick Action:

Function ReStoreWin
_SCREEN.Visible = .T.
_SCREEN.WindowState = 2 && Max.
EndFunc

Well, in Normal Case, RightClick Icon in System Tray Would appear a Menu for selection....
But Even I make a Simply Menu and put the RightClick Function as:

"Do MYMenu.Mpr"

but it still nothing to see.. maybe the menu show inside _SCREEN.. can't Show Just Above the Tray Icon...


The Below is my Dtmrtray.prg, very simply to hide and store _SCREEN..
You only need to do is to copy some Icon to same directory.. :)


* 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
**************************************************
The weak wait for chance, The strong bid for chance,
The clever notch up chance, but The merciful give you chance.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform