FoxPro/Visual FoxPro - Metodo para que el usuario pueda posicionar objetos a voluntad

 
Vista:
sin imagen de perfil

Metodo para que el usuario pueda posicionar objetos a voluntad

Publicado por ricardo (10 intervenciones) el 25/11/2012 01:27:03
Estimados mi consulta es la siguiente, ¿Alguien tiene alguna recomendación para hacer un form en el cual los usuarios puedan disponer libremente los objetos en tiempo de ejecución y que al salir y volver a cargar ese for conserve las posiciones que el usuario decidio?

Me explico un poco mas estoy desarrollando un software para restaurantes y quiero dotarlo de un form que represente al comedor y la idea es que el administrador del restauran coloque los 'command buttons' que representan a las mesas, de acuerdo a la distribución física que estas tienen en el comedor.

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

Metodo para que el usuario pueda posicionar objetos a voluntad

Publicado por es_binario (757 intervenciones) el 25/11/2012 16:40:16
Tienes que tener una tabla que se llame digamos mesas, en donde debes guardar el numero de mesa, luego tienes las propiedades top y left que son las que ubican un objeto dentro del formulario pensando que digamos todos los objetos tienen las mismas dimenciones digamos, higth y width

altura y ancho se supone deben de ser constantes, solo varia su ubicacion que seria top y left.

ademas tambien yo te recomendaria una propiedad libre-ocupado, incluso limpieza en espera de que se limpie.

puedes usar un picture en donde se represente una mesa ocupada o desocupada, o en estado de limpieza....

luego cada que abras el form, tienes que leer el estado de las mesas, deberias de crear una propiedad o ponerla en el refresh del form, luego cuando se desocupe u ocupe una mesas volver a llamar al metodo refresh, thisform.refresh(), asi siempre estaran al dia las mesas.
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

Metodo para que el usuario pueda posicionar objetos a voluntad

Publicado por RICARDO (10 intervenciones) el 26/11/2012 00:47:40
Gracias por tu aporte en conjunto con la otra recomendación me permite implementar lo que estaba buscando

Gracias
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

Metodo para que el usuario pueda posicionar objetos a voluntad

Publicado por Fidel (657 intervenciones) el 25/11/2012 16:55:52
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
* PASO 1
* CREAR UN METODO EN EL FORMULARIO (GETUPMOUSE)
 
* METODO DE USUARIO GETUPMOUSE
*******************************
LPARAMETERS xcName,xnTop,xnleft
lcExact=SET("EXACT")
lcName=Thisform.Name+","+xcName
SET EXACT ON
SELECT formpos
IF !INDEXSEEK(lcName,.f.,"FORMPOS","IFORMPOS")
	INSERT INTO FORMPOS (CONTROLES) ;
		VALUES (lcName)
ENDIF
INDEXSEEK(lcName,.T.,"FORMPOS","IFORMPOS")
REPLACE ngTop WITH xnTop,;
	ngLeft WITH xnLeft
SET EXACT &lcExact
 
 
 
* LOAD DEL FORMULARIO
*********************
&& se crea la tabla "FORMPOS" para conservar las posiciones del formulario y sus objetos
IF !FILE("FORMPOS.DBF")
	CREATE TABLE FORMPOS FREE ;
	("CONTROLES" C(150),;
	"NGTOP" I,;
	"NGLEFT" I)
	SELECT FORMPOS
	INDEX ON CONTROLES TAG IFORMPOS
 
ENDIF
IF !USED("FORMPOS")
	USE FORMPOS IN 0 EXCLUSIVE
ENDIF
 
* INIT DEL FORMULARIO
*********************
lcFormName=This.Name
qlen=LEN(lcFormName)
SELECT FORMPOS
SCAN FOR LEFT(controles,qlen)==lcFormName
	lcProp=ALLTRIM(controles)
	lnControls=ALINES(gaControl,lcProp,1,",")
	DO case
		CASE lnControls=0
 
		CASE lnControls=1
			WITH thisform
				.Top=ngtop
				.left=ngLeft
			ENDWITH
		CASE lnControls=2
			lcControl=gaControl[2]
			&& Previene objetos borrados ó cambio de nombres
			IF VARTYPE(thisform.&lcControl)="O"
				WITH thisform.&lcControl.
					.Top=formpos.ngtop
					.left=formpos.ngleft
				ENDWITH
			endif
 
	ENDCASE
ENDSCAN
 
 
*DESTROY DEL FORMULARIO
************************
lcExact=SET("EXACT")
lcName=Thisform.Name
SET EXACT ON
* Guarda la posición del formulario y cierra el archivo
SELECT formpos
IF !INDEXSEEK(lcName,.f.,"FORMPOS","IFORMPOS")
	INSERT INTO FORMPOS (CONTROLES) ;
		VALUES (lcName)
ENDIF
INDEXSEEK(lcName,.T.,"FORMPOS","IFORMPOS")
REPLACE ngTop WITH this.Top,;
	ngLeft WITH this.Left
SET EXACT &lcExact
 
IF USED("FORMPOS")
	SELECT FORMPOS
	USE
ENDIF
 
**********************************************
* En cada botón que puede moverse
**********************************
* Evento MOUSEMOVE
******************
LPARAMETERS nButton, nShift, nXCoord, nYCoord   && línea Default()
IF NBUTTON=1
	WITH this
		.Top=nYCoord
		.Left=nXCoord
	ENDWITH
ENDIF
 
* EVENTO MOUSEUP
****************
LPARAMETERS nButton, nShift, nXCoord, nYCoord  && Línea Default()
thisform.getupmouse(this.Name,this.Top,this.Left)
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

Metodo para que el usuario pueda posicionar objetos a voluntad

Publicado por ricardo (10 intervenciones) el 26/11/2012 00:04:30
Gracias Fidel lo probare y les comento
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

Metodo para que el usuario pueda posicionar objetos a voluntad

Publicado por ricardo (10 intervenciones) el 26/11/2012 00:20:39
Gracias Fidel es Exactamente lo que estaba buscando me ffunciona alas mil maravillas

Gracias
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