FoxPro/Visual FoxPro - nose como validar un boton

 
Vista:
sin imagen de perfil

nose como validar un boton

Publicado por Tannaly (7 intervenciones) el 07/11/2016 16:51:16
Hola buenos dias

Tengo un formulario el cual contiene un botón de modificar, pero ese boton tiene un mensaje " la modificación se ha realizado con exito" que se activa al momento de precionarlo, aún sin que se haya modificado algun campo en el mismo.

Lo que quiero saber es de que manera puedo obligar al boton a que si no he hecho ninguna modificación en el formulario me de otro mensaje que me diga "usted no ha hecho ninguna modificación en este formulario", o de lo contrario guarde con exito.! Agradezco la ayuda
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
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

nose como validar un boton

Publicado por Fidel José (657 intervenciones) el 08/11/2016 14:55:38
Tienes dos formas básicas, que dependen un poco del formulario:

1) Por Interfaz: Capturando el Evento InteractiveChange de cada objeto que pueda modificarse con una propiedad tipo Flag. Esto tiene el defecto de que no analiza el contenido. Si el usuario volvió al estado anterior, marcará un cambio cuando en realidad no lo hubo.

2) Por contenido: Creando una propiedad Array del formulario con dos columnas: 1) referencia de objeto, 2) Valor del objeto
Luego en tu botón de Aceptar, analizas el array para cada fila: si la columna 2 coincide con el Value de cada objeto de la columna 1, no se ha efectuado ningún cambio.
Por ejemplo, supongamos que queremos controlar lo que sucede en un container "cnt_daper" que tiene 7 controles.
Creamos 2 métodos en el formulario ("Array_create" y "Array_Review"). Array_create es un método que se puede llamar después de rellenar los controles (modificación) o en el init del form (alta). Y Array_Review lo llamaremos en el botón de Aceptar.

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
* Method: Array_Create
LOCAL lcList,oControl as Object
lcList=""
 
ADDPROPERTY(thisform,"aModify[1,2]",null)   && crea una propiedad Array en el form
 
TEXT TO lcList NOSHOW PRETEXT 15
,txt_calle,
txt_ciudad,
txt_nombre,
txt_provincia,
txt_cuit,
txtdate1,txt_num1,
ENDTEXT
lcList = CHRTRAN(m.lclist,CHR(32),"")
 
lnItem = 0
FOR EACH ocontrol IN this.cnt_daper.Controls
	IF AT(CHR(44)+LOWER(oControl.Name)+CHR(44),m.lcList) > 0
		lnItem = m.lnItem + 1
		DIMENSION this.aModify(m.lnItem,2)
		this.amodify[m.lnItem,1] = oControl
		this.amodify[m.lnItem,2] = oControl.Value
	ENDIF
ENDFOR
oControl = null

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
* Method: Array_Review
LOCAL i,loControl as Object,;
	lnModify,lnEmpty,;
	lcType
 
lnModify = 0
lnEmpty = 0
 
FOR i = 1 TO ALEN(this.aModify,1)
	loControl = this.amodify[m.i,1]
	lcType = VARTYPE(this.amodify[m.i,2])
	IF EMPTY(loControl.Value)
		lnEmpty = m.lnEmpty + 1
	ENDIF
	IF m.lcType = "C"
		IF loControl.Value == this.amodify[m.i,2]
		ELSE
			lnModify = m.lnModify + 1
		ENDIF
	ELSE
		IF loControl.Value # this.amodify[m.i,2]
			lnModify = m.lnModify + 1
		ENDIF
	ENDIF
ENDFOR
MESSAGEBOX(TRANSFORM(ALEN(this.amodify,1))+" Controles" + CHR(13);
		+ TRANSFORM(m.lnEmpty)+" Controles sin datos" + CHR(13);
		+ TRANSFORM(m.lnModify) + " Controles modificados",0,PROPER(PROGRAM()))
 
loControl = null

En Array_Review, en lugar del Messagebox, irá la acción correspondiente.
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

nose como validar un boton

Publicado por Tannaly (7 intervenciones) el 08/11/2016 15:04:54
lo pondre en práctica, muchas 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
Imágen de perfil de Leonardo Daniel A.
Val: 1.115
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

nose como validar un boton

Publicado por Leonardo Daniel A. (497 intervenciones) el 10/11/2016 01:25:10
Lo mas facil que puedes hacer, es lo que hacia yo cuando desarrolle en visual Foxpro..... crea una libreria de clases y creas todos tus objetos, un textbox y le agregas una nueva propiedad, "modificado" de tipo booleano, yo incluso agregue una llamada "editable", y asi lo hice para las ffechas, los combobox, y los checkbox, etc. y tenia mi libreria de clases, en cada control en el evento changed algo asi ya no recuerdo, le ponia modificado = .t.

luego en el formulario en lugar de poner los controles que vienen ahi en la toolbar, arrastraba mi control personalizado y pues le asignas el campo, o desde el diseñador de tablas le pones que libreria usara y le asignas el control y cuando generas el formulario te pone tus controles personalizados..... ojo, tambien tenia un formulario personalizado el cual usaba siempre para mis pantallas..... en ese formulario tenia una funcion llamada modificado, y cuando precionaba el boton cerrar le decia if thisform.modificado() = .t. mensaje, hay datos no guardados, return................. y esa funcion lo que hacia era tener una variable llamada valor = .f. y luego hacia un for sobre thisform.controlcount y preguntaba if thisform.control[ contador ].modificado = .t. entonces valor = .t. y al final del for un return valor y asi si modificaba cualquier control, con esa funcion dsabia si se habia movido algo....

no te puedo enviar codigo porque no lo tengo a la mano
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