FoxPro/Visual FoxPro - ¿Como hacer que visual fox pro haga un calculo numerico apenas sea ingresado el dato?

 
Vista:
sin imagen de perfil

¿Como hacer que visual fox pro haga un calculo numerico apenas sea ingresado el dato?

Publicado por simon (1 intervención) el 19/08/2018 07:07:45
Alguien que me pueda ayudar en este problema necesito saber como hacer para que visual fox pro sume cierta cantidad de datos numéricos automáticamente apenas sea ingresado el valor sin necesidad de agregar un botón de comando
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 hacer que visual fox pro haga un calculo numerico apenas sea ingresado el dato?

Publicado por Tony Rengifo del Castillo (13 intervenciones) el 19/08/2018 08:02:02
Todo lo que ibas a programar en el botón de comando hazlo en el evento interactivechange del cuadro de texto en donde quieres ingresar el valor numérico.
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 hacer que visual fox pro haga un calculo numerico apenas sea ingresado el dato?

Publicado por Fidel José (657 intervenciones) el 19/08/2018 17:25:39
El lugar correcto es el evento Valid del Textbox o Spinner correspondiente.
En caso de necesitar redirigir el foco, no puedes utilizar SetFocus, pero si RETURN Thisform.TalCuadro, o los más conocidos RETURN 0, RETURN -1, etc.

* Valid Event
Thisform.MisSumas( This.Value )

Nota1)
si los cuadros son varios, necesitarás identificar qué cuadro envía un valor
* Valid Event
Thisform.MisSumas( This ) && sin punto, sin comillas (referencia de objeto)

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
PROCEDURE MisSumas	 && Método de formularo
* Supone que existen propiedades numéricas en el form
* .Gravado,.Nogravado,.Exento, .Iva , .AlicuotaIva, .Total
LPARAMETERS toText
LOCAL lcName,lnValue
 
IF VARTYPE(toText)="O"
	lcName = lower(toText.name)
	lnValue = toText.Value
	DO CASE
		CASE m.lcName = "txt_gravado"
			this.Gravado = m.lnValue
			this.Iva = ROUND(m.lnValue * this.AlicuotaIva/100,2)
 
		CASE m.lcName = "txt_nogravado"
			this.NoGravado = m.lnValue
 
		CASE m.lcName = "txt_exento"
			this.Exento = m.lnValue
	ENDCASE
 
	This.total = this.gravado + this.Iva ;
		+ this.NoGravado ;
		+ this.Exento
 
	toText = null	&& libera la referencia de objeto
ENDIF
ENDPROC

Nota 2) Recuerda que un objeto liado por ControlSource a una propiedad o campo de un cursor, recién actualizará el valor de la propiedad o el campo del cursor una vez superado el Evento Valid (para fines prácticos, en el LostFocus)

Nota 3) No se recomienda utilizar el evento InteractiveChange para este caso, porque lanzará un recálculo para cada dígito que se ingresa, lo que puede resultar algo molesto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar