FoxPro/Visual FoxPro - TIMER CON TABLA VFP

   
Vista:

TIMER CON TABLA VFP

Publicado por alexcoinc (10 intervenciones) el 26/07/2016 22:44:02
Buenas tardes
Tengo una tabla con un campo llamdo foto; en este campo está guardada la dirección de ubicación de las fotos (*.JPG).

Lo que quiero es irlas mostrando en una IMAGE alojafda en mi formlario, de acuerdo a un tiempo determinado digamos....unos 10 segundos; luego cambiar al proximo registro de la tabla, lo cual cambiara la imagen, mostrarla por otros 10 segundos y asi susecivamente hasta el final de la tabla, en cuyo caso debera volver al primer registro y empezar de nuevo el ciclo.

Como lo puedo hacer ?'........con un timer......COMO ???

Gracias quedo atento.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

TIMER CON TABLA VFP

Publicado por Fidel José (321 intervenciones) el 27/07/2016 00:53:37
Justamente, necesitas utilizar un control Timer.
Supongamos que se llama Timer1 y tienes un control image llamado "img_pict1"
Fijate que es más conveniente en este caso crear un Array para controlar el timer.

En un ejemplo
* Init del formulario (o método de usuario)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
LOCAL lcFolder,lnfiles,i,;
	lnSegundos_Interval
 
* Carpeta de imágenes
lcFolder = "c:\theodore\graphics"
 
lnSegundos_Interval = 10
 
* Esto reemplaza a la tabla con imágenes
*< Creo un cursor >
CREATE CURSOR misbmp ("FileName" c(100),"FileSize" i,"fecha" D, "Hora" c(5))
 
* Levanto las imágenes en el cursor
lnfiles = ADIR(laFiles,ADDBS(lcFolder)+"*.bmp","",1)
FOR i = 1 TO lnFiles
	INSERT INTO MisBmp (FileName,FileSize,Fecha,Hora) ;
		VALUES (ADDBS(m.lcFolder)+laFiles[i,1],laFiles[i,2],laFiles[i,3],laFiles[i,4])
NEXT
*</ Creo un cursor >
 
* Creo una Propiedad Array y Dos propiedades numéricas
ADDPROPERTY(thisform,"nItems",0)
ADDPROPERTY(thisform,"nCount",0)
ADDPROPERTY(thisform,"aPictures[1]",.f.)
 
* Relleno la propiedad array con datos del cursor
SELECT filename ;
	FROM MisBmp ;
	INTO ARRAY thisform.aPictures
thisform.nItems = _tally
 
* Asigno el intervalo de muestra
IF thisform.nItems > 0
	thisform.timer1.Interval = m.lnSegundos_interval * 1000
	* Pongo en marcha el timer
	thisform.timer1.Enabled = .t.
ENDIF

* Código del Evento Timer del control Timer1
1
2
3
4
5
6
7
WITH thisform
	IF .nCount = .nItems
		.nCount = 0
	ENDIF
	.nCount = .nCount + 1
ENDWITH
thisform.img_pict1.Picture = TRIM(thisform.aPictures[thisform.nCount])
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

TIMER CON TABLA VFP

Publicado por alexcoinc (10 intervenciones) el 27/07/2016 20:25:26
Le agradezco a Fidel José

Su solución funciona muy bien, salvo que estas instrucciones

ADDPROPERTY(thisform,"nItems",0)
ADDPROPERTY(thisform,"nCount",0)
ADDPROPERTY(thisform,"aPictures[1]",.f.)

NO me funcionaron y me toco reemplazarlas por estas:

thisform.ADDPROPERTY("nItems",0)
thisform.ADDPROPERTY("nCount",0)
thisform.ADDPROPERTY("aPictures[1]",.f.)

Podría ser un asunto de sintaxis.

PERO LA IDEA ES BUENA y LO MEJOR F U N C I O N A .!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

TIMER CON TABLA VFP

Publicado por Fidel José (321 intervenciones) el 27/07/2016 23:52:50
Es extraño que no te funcione la función Addproperty().
Salvo que tu formulario sea un formulario de clase, en la que hayas marcado el método AddProperty como Hidden o Protected.
Para saber si la propiedad se agregó al objeto, puedes consultar el valor de retorno

lCreateProp = Addproperty( Thisform , "NombreProp" , 0 )

De todos modos, para el caso, el resultado es igual. También puedes crear esas propiedades en el diseñador de formularios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar