Page 1 of 1

como refrescar una imagen despues de cierto tiempo

Posted: Wed Mar 26, 2008 8:21 pm
by cezar
Hola, estoy haciendo una aplicación donde muestra una imagen y algunos datos, lo que me ha detenido es la parte en donde se debe de actualizar la imagen con sus datos, esto se debe hacer después de cierto tiempo (pasado unos 5 minutos); para ello coloqué un TIMER y así poder refrescar la pantalla pero no me funciona, les pido puedan hecharle un vistazo y decirme que me hace falta y/o que hice mal. Se los agradezco. el cod es el sig.:

//////////////
static function muestraimagen(cfoto,cnombre,cpreciopza,cpreciocja)

local lcodigo:=space(15)
local ncant:=0
local oDlgFoto
local sw:=.t.
local oFoto,onombre
local opreciopza:=0,opreciocja:=0
local nwait:=1
local tiempo:=0,cotiempo:=0
local valormaximo:=10
local nseconds:=1
local timemax:=15
local Timer


DEFINE FONT oFont3 NAME "Arial" SIZE 25,65 BOLD
DEFINE FONT oFont2 NAME "Arial" SIZE 45,75 BOLD
DEFINE FONT oFont1 NAME "Arial" SIZE 32,55 BOLD
DEFINE DIALOG oDlgfoto RESOURCE "PHOTOS" OF oDlgFoto title "Muestra la Imagen" from 1,1 to 14,40

REDEFINE SAY onombre VAR cnombre ID 115 OF oDlgfoto UPDATE Font oFont3 color "gr*+/g+"
REDEFINE SAY opreciopza VAR cpreciopza ID 116 OF oDlgfoto UPDATE Font oFont2 color "gr*+/b+"
REDEFINE SAY opreciocja VAR cpreciocja ID 117 OF oDlgfoto UPDATE Font oFont2 color "gr*+/b+"
redefine image oFoto id 100 of oDlgfoto file cfoto update adjust
oFoto:PROGRESS(.f.)

REDEFINE BtnBmp oBtn ID 201 OF oDlgfoto resource "BACEPTA" ACTION (oDlgfoto:end(),sw:=.t.)
// REDEFINE BtnBmp oBtn ID 202 OF oDlgfoto resource "BCANCELA" ACTION (oDlgfoto:end(),sw:=.f.)


DEFINE TIMER cotiempo OF oDlgfoto ;
INTERVAL ( 60000 ) ;
ACTION (tiempo ++, if (tiempo >= 1, (oDlgfoto:END()),)) ; //tiempo:Refresh()
ACTIVATE TIMER cotiempo



// do while nseconds<timemax
// inkey(nwait)
// nseconds+=nwait
// enddo
//keyboard(27)
// ok:= {|| EVAL(odlgFoto:end() )}

ACTIVATE DIALOG oDlgfoto

return nil

Posted: Wed Mar 26, 2008 9:10 pm
by Antonio Linares
Tienes que crear el timer desde la claúsula ON INIT:

ACTIVATE DIALOG oDlgfoto ;
ON INIT CreaTimer( oDlgfoto )

...

function CreaTimer( oDlgfoto )

local cotiempo

DEFINE TIMER cotiempo OF oDlgfoto ;
INTERVAL ( 60000 ) ;
ACTION (tiempo ++, if (tiempo >= 1, (oDlgfoto:END()),)) ; //tiempo:Refresh()
ACTIVATE TIMER cotiempo

return nil

sigue sin refrescar los datos

Posted: Wed Mar 26, 2008 10:16 pm
by cezar
Gracias lo he anotado todo tal cual no me marcado ningún error, pero sigue sin refrescar la imagen ni los datos.

Posted: Thu Mar 27, 2008 3:30 pm
by cezar
al momento de ejecutar la aplicación me marca el sig. error:

Error description: Error FiveWin/3 Cannot create Dialog Box:
Resource: PHOTOS

La linea donde me marca el error es:
ON INIT CreaTimer(oDlgfoto)

cual será la causa del error?, gracias

Posted: Thu Mar 27, 2008 3:38 pm
by cezar
Lo mas raro es que si abro el PHOTO.DLL con WorkShop y lo guardo manteniendo abierto sólo el workshop me permite ejecutar el programa, pero no se ejecuta el TIMER. Si cierro por completo el workshop me marca el error que anote anteriormente.
¿A que se debe esto?