Page 1 of 1

Tray System

Posted: Mon Oct 31, 2005 6:42 am
by goosfancito
Estimados:

Quiero hacer que cuando mi programa en xHarbour este corriendo se muestre en el systray (al lado del reloj, por ejemplo) un ícono indicando que esta siendo utilizado el programa.

Me pueden dar una idea del mismo.

Gracias.

Posted: Mon Oct 31, 2005 6:47 am
by Antonio Linares
Gustavo,

Revisa el ejemplo samples\TestTray.prg.

De paso, te pido que uses una foto personal tuya como "avatar". Gracias.

Posted: Mon Oct 31, 2005 7:50 am
by goosfancito
[quote="Antonio Linares"]Gustavo,

Revisa el ejemplo samples\TestTray.prg.

De paso, te pido que uses una foto personal tuya como "avatar". Gracias.[/quote]

Con respecto a la foto, puse esa porque pensé que habias autorizado a usar cualquiera, ya que vi que otros usuarios la tienen.

Posted: Mon Oct 31, 2005 9:27 am
by Antonio Linares
Gustavo,

Estamos pidiéndole a todos los usuarios que proporcionen una foto personal. Las que no sean fotos personales se borrarán en breve.

Posted: Mon Oct 31, 2005 2:16 pm
by DanielPuente
Gustavo:

Static oTray, oTrayMenu
static oTaskBarIcon, oIcon

DEFINE ICON oIco RESOURCE "PETROSUR"

DEFINE WINDOW oWnd FROM 0,0 TO 23, 79 ;
TITLE OEMTOANSI("Petrosur S.R.L. * Actualizador de datos en servidor MYSQL");
ICON oIco ;
MENU BuildMenu();
COLOR CLR_BLACK, RGB(88,102,129)

oWnd:bTaskBar := { | nWParam, nLParam | TaskBar( nWParam, nLParam ) }

ACTIVATE WINDOW oWnd MAXIMIZED ;
ON INIT (SetUpTray(oBmp),IF(LOGIN(),(cLogin:=.T.,Start(), MuestraUsuario()), oWnd:End()));
VALID FINALIZAR(oTray)

Function SetUpTray(oBmp)
Local oIcon

DEFINE ICON oIcon RESOURCE "PETROSUR" //"SANTAC"
oTray := TaskAddIcon( oWnd, oIcon, "Programa Actualizador MYSQL" )

Return NIL

Function RMenu(r,c)
Local oMenu

MENU oMenu POPUP
MENUITEM "Abrir Programa Actualizador MYSQL" ACTION ( oWnd:Show() )
MENUITEM "Cerrar Programa Actualizador MYSQL" ACTION ( oWnd:end() )
ENDMENU

ACTIVATE POPUP oMenu OF oWnd AT r,c
Return NIL

Function TaskBar( nWParam, nLParam )
Local a := array(2)

static lWorking := .f.

if ! lWorking
lWorking = .t.
do case
case nLParam == WM_LBUTTONUP

case nLParam == WM_RBUTTONUP
a := GetCursorPos()
a = ScreenToClient( oWnd:hWnd, a )

RMenu(a[1],a[2])
endcase

lWorking = .f.
endif

return nil

FUNCTION FINALIZAR()

LOCAL RET:=.F.

SALIR:=99

IF cProcesando
ELSE
RET:=.T.
ENDIF
if oMysql # nil .and. ret
oMysql:Close()
endif
if ret
TaskDelIcon( oTray )
IF oTmr # nil
oTmr:Deactivate()
ENDIF

endif

RETURN RET

Saludos,

Grac ias a todos.

Posted: Mon Oct 31, 2005 3:59 pm
by goosfancito
Tema cerrado.