FoxPro/Visual FoxPro - GRACIAS FIDEL, AHORA EL TAMAÑO DE LA IMAGEN

   
Vista:

GRACIAS FIDEL, AHORA EL TAMAÑO DE LA IMAGEN

Publicado por JOSÉ ÁNGEL LUNA GRAJEDA (62 intervenciones) el 18/11/2013 20:20:59
Muchas gracias Fidel, ya funcionó perfectamente, pero ahora la duda que tengo es como darle tamaño ya que lo moví...¡GRACIAS!
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

GRACIAS FIDEL, AHORA EL TAMAÑO DE LA IMAGEN

Publicado por Fidel José (558 intervenciones) el 18/11/2013 22:22:54
Fijate que el redimensionamiento es un poco más complejo:
1) Para las imágenes debes utilizar la propiedad .Stretch=2. Con la propiedad Stretch=0 (default) no cambiará el tamaño de la imagen. Si Stretch=1 (Isometric), el cambio de tamaño se comportará de un modo extraño.
2) Conviene utilizar el botón derecho para reubicar y el izquierdo para redimensionar
3) Para poder redimensionar necesitas utlizar el evento MouseDown
4) Debes evitar el colapso del control por medida mínima
5) Debes evitar que el control redimensionado supere el tamaño de su contenedor.

El ejemplo que sigue es para imágenes sobre el formulario. Si las tienes sobre container o pageframe, tendrás que adaptar el código.

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
******************************
* Para un objeto individual
****************************************
* MouseDown Event
LPARAMETERS nButton, nShift, nXCoord, nYCoord
IF INLIST(nButton,1,2)
	ADDPROPERTY(thisform,"owid",this.width)
	ADDPROPERTY(thisform,"oHei",this.Height)
	ADDPROPERTY(thisform,"Stax",nxCoord)
	ADDPROPERTY(thisform,"Stay",nyCoord)
ENDIF
 
* MouseMove Event
LPARAMETERS nButton, nShift, nXCoord, nYCoord
IF nButton=2
	WITH this
		.Top=nYCoord
		.Left=nXCoord
	ENDWITH
ENDIF
IF nButton=1
	ny=Thisform.oHei+nyCoord-Thisform.stay
	nx=Thisform.oWid+nxCoord-Thisform.Stax
 
	this.Height=MAX(17,MIN(thisform.Height,ny))
	this.Width=MAX(17,MIN(thisform.Width,nx))
 
ENDIF
* Debe evitarse que el control colapse por medida inferior a la permitida
* debe evitarse que el control se torne mayor que el formulario que lo contiene.
* Si el contenedor es un Container, deberá efectuarse el reemplazo pertinenete.
 
 
**************************
* Para BindEvent
**************************
* Init del Formulario
***************************
 
for each oControl in thisform.Controls
	if ocontrol.BaseClass=="Image"
		BindEvent(oControl , "MouseMove" , Thisform , "Movimage" )
		BINDEVENT(oControl , "MouseDown" , Thisform , "ForMouseDown" )
	endif
endfor
 
 
 
**********************
* Metodo ForMouseDown
**********************
LPARAMETERS nButton, nShift, nXCoord, nYCoord
LOCAL obj,nEvents,nSalto
nSalto=7
nEvents=AEVENTS(gaEvents,0)
IF nEvents=0
	RETURN
ENDIF
obj=gaEvents[1]
IF INLIST(nButton,1,2)
	ADDPROPERTY(thisform,"owid",obj.width)
	ADDPROPERTY(thisform,"oHei",obj.Height)
	ADDPROPERTY(thisform,"Stax",nxCoord)
	ADDPROPERTY(thisform,"Stay",nyCoord)
 
ENDIF
 
 
****************************
* Metodo Movimage **********
*****************************
LPARAMETERS nButton, nShift, nXCoord, nYCoord
LOCAL obj,nEvents,ny,nx
nSalto=7
nEvents=AEVENTS(gaEvents,0)
IF nEvents=0
	RETURN
ENDIF
obj=gaEvents[1]
IF nButton=2
	WITH obj
		.Top=nYCoord
		.Left=nXCoord
	ENDWITH
ENDIF
IF nButton=1
	ny=Thisform.oHei+nyCoord-Thisform.stay
	nx=Thisform.oWid+nxCoord-Thisform.Stax
	obj.Height=MAX(17,MIN(thisform.Height,ny))
	obj.Width=MAX(17,MIN(thisform.Width,nx))
 
ENDIF
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