Saludos estimados,
Estoy buscando ejemplos para hacer un programa residente que lea cada X cantidad de segundos una carpeta, el TestTray, es un buen comienzo, pero crea un Menu, no hay otro ejemplo con una idea similar a lo que busco, gracias
FUNCTION Main()
DEFINE ICON oIcon RESOURCE "Z_IPS"
DEFINE ICON oIcon1 FILE "..\icons\folder.ico"
DEFINE WINDOW oWnd Title "Sistema Empresarial, Enviando Archivos de Recargas"
ACTIVATE WINDOW oWnd ON INIT (RETORNA_IPPUB(),oTray := TTrayIcon():New( oWnd, oIcon, "Enviando Archivos de Recargas...",;
{ || MsgInfo( "Enviando Archivos de Recargas...","Enviando" ) },;
{ | nRow, nCol | MenuTray( nRow, nCol, oTray, oWnd ) } ),VerificaIPPub(@oTimer),oTimer:Activate()) ;
VALID oTray:End() ON RIGHT CLICK oTray:SetIcon( oIcon1, "Another" )
Cerrar()
RETURN .T.
FUNCTION MenuTray( nRow, nCol, oTray , oWnd)
LOCAL oMenu
MENU oMenu POPUP
MENUITEM "Muestra Aplicacion" ACTION oWnd:Show(), oWnd:SetFocus()
MENUITEM "Oculta Aplicacion" ACTION oWnd:Hide()
SEPARATOR
MENUITEM "Cierra Aplicacion" ACTION oWnd:end()
ENDMENU
ACTIVATE POPUP oMenu AT nRow, nCol OF oTray:oWnd
RETURN .T.
FUNCTION VERIFICAIPPUB(oTimerActual)
DEFINE TIMER oTimerActual INTERVAL 60000 ACTION RETORNA_IPPUB() OF oWnd
RETURN .T.
.....
.....
ACTIVATE WINDOW oWindow MAXIMIZED VALID Cerrar() ON INIT Tiempo()
/*
* --------------------------------------------------------------------------*
* --------------------------------------------------------------------------*
*/
STATIC FUNCTION Tiempo()
LOCAL nIntervalo := 60000 * oRsEmp:Fields("EMP_ACM"):Value
IF nIntervalo > 0
// 60,000 milesimas es igual a 1 minuto, se crea y se activa solo una vez
DEFINE TIMER oTimer OF oWindow INTERVAL nIntervalo ACTION Ventana() // 600000 es igual a 10 minutos
oTimer:Activate()
ENDIF
RETURN(NIL)
//---------------------//
FUNCTION AvisaMf()
local oDlg
LOCAL oTimer, nInterval := 60000 * .50
local cNombServ := "SERVIDOR", cDir := "PRUEBAS"
local cPathF := "\\"+cNombServ+"\"+cDir
local cTable := "TUTABLA"
local nRegis := 0
if !file(cPathF+"\"+cTable+".dbf")
MsgStop("No se encontro tabla "+ cPathF+"\"+cTable+".dbf" + " Revise y reintente")
return nil
endif
dbusearea(.t.,,(cPathF)+"\"+(cTable),(cTable),.t.)
if neterr()
MsgStop("Hey... No se puede usar en este momento, la tabla "+cPathF+"\"+cTable)
return nil
endif
nRegis := (cTable)->(Reccount())
(cTable)->(dbclosearea())
DEFINE DIALOG oDlg SIZE 400,200 PIXEL
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT TmrDocs(@oTimer,nInterval,@nRegis,cPathF,cTable)
oTimer:End()
RETURN(NIL)
//-------------------------------------------------------
Function TmrDocs(oTimer,nInterval,nRegis,cPathF,cTable)
DEFINE TIMER oTimer INTERVAL nInterval ACTION DctoModifi(cPathF,cTable,@nRegis)
ACTIVATE TIMER oTimer
Eval( oTimer:bAction )
Return nil
//----------------------------
Function DctoModifi(cPathF,cTable,nRegis)
local nRegistActual
dbusearea(.t.,,(cPathF)+"\"+(cTable),(cTable),.t.)
if neterr()
MsgStop("No se puede usar en este momento, la tabla "+cPathF+"\"+cTable)
return nil
endif
nRegistActual := (cTable)->(Reccount())
if nRegistActual != nRegis
MsgInfo("Hay modificaciones")
nRegis := nRegistActual
else
MsgInfo("No ha habido modificaciones")
endif
(cTable)->(dbclosearea())
Return nil
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 78 guests