FoxPro/Visual FoxPro - Como crear un proyecto con unos formularios que tengan imágenes aleatorias

 
Vista:

Como crear un proyecto con unos formularios que tengan imágenes aleatorias

Publicado por Gabriela Lopez (1 intervención) el 17/12/2014 00:13:16
Hola, Soy nueva utilizando este programa, me mandaron hacer un proyecto con unos formularios que tengan imágenes aleatorias, pero no se como... Si alguien me podría facilitar el código se lo agradecería :D
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

Como crear un proyecto con unos formularios que tengan imágenes aleatorias

Publicado por CARLOS ALEXANDER (47 intervenciones) el 17/12/2014 14:51:08
hola grabiela yo se lo hago pero le cobro por el programa
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Como crear un proyecto con unos formularios que tengan imágenes aleatorias

Publicado por Fidel José (558 intervenciones) el 17/12/2014 15:13:32
Para que estudies un poco el problema te comento una idea:
1) Necesitarás una carpeta con imágenes numeradas (1.bmp, 2.jpg, 3.png, 4.bmp, 5.jpg etc).
2) Para el ejemplo utilizo una serie de 100 imágenes numeradas del 1 al 100
El método se basa en el uso de la función Rand(), iniciando on un valor semilla -1

Para un entorno de producción, el método random_image puede ser un procedure en un prg, o un método del formulario de clase común, o un método en una clase custom. Depende de donde lo insertas como será la llamada al método.

La prueba.
En un formulario de prueba pones varios elementos y creas el método "random_Image".
Agregas un command button "cmdPicture".

Lo importante:
Debes tratar de justificar cada parte del código, de manera de poder independizarte y adaptarlo a lo que realmente necesitas.

Transcribo a continuación el código de "random_Image" y de "cmdPicture.Click"

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
*<Procedure Random_Image>
*PROCEDURE RANDOM_IMAGE
LPARAMETERS toObjeto
IF VARTYPE(toObjeto)#"O"
	toObjeto=thisform
ENDIF
IF !PEMSTATUS(toObjeto,"Picture",5)
	* El objeto pasado no tiene la propiedad Picture
	STRTOFILE(toObjeto.name+CHR(13),"random_omit.txt",1)
	RETURN
ENDIF
 
STRTOFILE(toObjeto.name+CHR(13),"random_process.txt",1)
LOCAL lcNameImage,i,nit,lcNewImage,lcRandImage,;
	lcFolder,lcImagenInstalda,lcListExtension,;
	lcExtension, lcFileRandomFolder
 
lclistExtension="bmp,jpg,png,ico"
*<Carpeta_de_Imagenes_seriadas>
	lcFileRandomFolder="Get_RandomFolder.txt"
	IF !FILE(lcFileRandomFolder)
		lcFolder=GETDIR(FULLPATH(""),"Seleccione la carpeta donde ;
			guarda las imágenes Random","Carpeta de Imágenes Random",48)
		IF EMPTY(lcfolder)
			RETURN
		ENDIF
		STRTOFILE(lcFolder,lcFileRandomFolder)
	ENDIF
	lcFolder=FILETOSTR(lcFileRandomFolder)
*</Carpeta_de_Imagenes_seriadas>
 
lcImagenInstalada=toObjeto.picture
lcNewImage=lcImagenInstalada
 
lcNameImage=EVL(JUSTSTEM(lcImagenInstalada),"*")
lcRandImage=lcNameImage
LOCAL ARRAY gaMat(1)
gaMat[1]=TRANSFORM(CEILING(RAND(-1)*100))
nit=0
FOR i=1 TO 1000
	lcRand=TRANSFORM(CEILING(RAND()*100))
	IF ASCAN(gaMat,lcRand)=0
		nit=nit+1
		DIMENSION gamat(nit)
		gamat[nit]=lcRand
	ENDIF
	IF nit>100
		EXIT
	ENDIF
NEXT
 
FOR i=1 TO ALEN(gaMat)
	IF gamat[i] # lcNameImage
		lcRandImage=gaMat[i]
		EXIT
 
	ENDIF
NEXT
 
lcNewImage=FORCEPATH(lcRandImage,lcFolder)
lExito=.f.
FOR i=1 TO GETWORDCOUNT(lcListExtension,",")
	lcExtension=GETWORDNUM(lcListExtension,i,",")
	lcNewImage=FORCEEXT(lcNewImage,lcExtension)
	IF FILE(lcNewImage)
		toObjeto.picture = lcNewImage
		STRTOFILE(toObjeto.Name+" Picture="+lcNewImage;
			+"lcRand="+lcRandImage+CHR(13),"random_Ima.txt",1)
		lExito=.t.
		EXIT
	ENDIF
NEXT
IF !lExito
	STRTOFILE(toObjeto.name+" » lcNewImage="+lcNewImage;
		+"lcRand="+lcRandImage + CHR(13) , "random_fail.txt",1)
ENDIF
 
RETURN
*ENDPROC
*</Procedure Random_Image>
 
*<commandButton cmdPictures>
* Permite asignar aleatoriamente una imagen a cada objeto del form
*
LOCAL oControl,i,oCnt,lcName,lnHand,opage
lnHand=FCREATE("get_random.txt")
Thisform.Random_Image(thisform)
FOR EACH oControl IN thisform.Controls
 
	DO CASE
		CASE ocontrol.baseclass="Custom"
		CASE ocontrol.baseclass="Control"
 
		CASE oControl.baseclass="Pageframe"
 
			=FPUTS(lnHand,oControl.name)
			FOR i=1 TO oControl.pagecount
				thisform.random_image(oControl.pages(i))
 
				=FPUTS(lnHand,oControl.Name+"."+oControl.pages(i).name)
				FOR EACH oPage IN oControl.pages(i).controls
					thisform.random_image(oPage)
					=FPUTS(lnHand,oControl.name+"."+oControl.pages(i).name+"."+oPage.name)
				ENDFOR
 
			NEXT
		CASE oControl.baseclass="Container"
 
			thisform.random_image(oControl)
			=FPUTS(lnHand,oControl.name)
			FOR EACH oCnt IN oControl.controls
				thisform.random_image(oCnt)
				=FPUTS(lnHand,oControl.name+"."+oCnt.Name)
			NEXT
 
		CASE ocontrol.baseClass="Commandgroup"
			FOR i=1 TO oControl.buttoncount
				thisform.random_image(oControl.buttons(i))
				=FPUTS(lnHand,oControl.name+"."+oControl.Buttons(i).name)
			NEXT
 
		OTHERWISE
 
			thisform.random_image(oControl)
			=FPUTS(lnHand,oControl.Name)
	ENDCASE
 
ENDFOR
=FCLOSE(lnHand)
*</commandButton_Llamada>
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