FoxPro/Visual FoxPro - Pasar datos de un formulario a otro

   
Vista:

Pasar datos de un formulario a otro

Publicado por Alan alangran@gmail.com (2 intervenciones) el 12/11/2017 19:58:57
Hola expertos quisiera saber como pasar datos de un formualrio a otro, ya que no entiendo las respuestas anteriores.
Tengo un formulario llamado FACTURAR y otro formulario llamado LISTA DE PRODUCTOS, en mi formulario FACTURAR tengo un textbox el cual quiero que reciba el codigo del producto elegido mediante click en mi formulario LISTA DE PRODUCTOS. Me podrian ayudar con ello
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
Imágen de perfil de Mauricio Antonio

Pasar datos de un formulario a otro

Publicado por Mauricio Antonio (1433 intervenciones) el 13/11/2017 13:54:22
Cuales respuestas anteriores??
Te dare una idea: puedes hacerlo con un PageFrame, usando 2 Page, el el primero va facturar y en el segundo lista de productos


factura
listado
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

Pasar datos de un formulario a otro

Publicado por Fidel José (520 intervenciones) el 13/11/2017 15:00:06
La solución depende de si tu formulario Lista de Productos es Modal (Windowtype=1) o Modeless (WindowType = 0 [default] ) y, también, de qué versión de Visual Fox Pro estás usando.

Te pongo una idea para Visual Fox Pro 9 y para el caso de que el formulario Lista de Productos sea Modeless (WindowType=0).
Supongamos que ese formulario se llama ListaProductos.scx

Como no tengo idea de como se llaman tus campos, inventaré algunos que luego reemplazarás por los que correspondan.
1) Tienes que crear un método en el formulario de facturación que pueda recibir la respuesta del otro formulario
Llamemos a es Método "Raise_productos"
* Method: Raise_Productos
1
2
3
4
5
6
7
8
LPARAMETERS toREsp
IF VARTYPE(toResp) = "O"
	lcId = toResp.idProducto
	lcProducto = toResp.Descripcion
	lnPrecio = toResp.precio
       * Acá seguramente irá un nuevo registro en un cursor o tabla donde se insertan el ID del producto y su precio, y tal vez la  descripción y alguna otra cosa (si es fraccionable, si tiene IVA, Impuestos internos, etc)
ENDIF
toResp = null

2) Tienes que preparar el formulario ListaProductos para que pueda recibir la llamada. Para ello, es necesario crear dos propiedades:
Propiedad Referencia objeto: "oClass"
Propiedad Nombre del método que se debe atacar: "cRaiseEvent"
* INIT de Lista de productos
1
2
3
4
5
6
*<ListaProductos.Init>
LPARAMETERS toClass,tcRaiseEvent
ADDPROPERTY(thisform,"oClass",m.toClass)
ADDPROPERTY(thisform,"cRaiseEvent",m.tcRaiseEvent)
* Las otras definiciones que tengas en el Init
*</ListaProductos.Init>

3) En el botón que tengas para aceptar el item seleccionado, debes agregar el siguiente código
1
2
3
4
5
6
7
8
9
10
11
*<Boton_Aceptar.Click>
IF VARTYPE(thisform,"oClass") = "O" ;
	AND !EMPTY(thisform.cRaiseEvent) ;
	AND PEMSTATUS(thisform.oClass,thisform.cRaiseEvent,5)
	loResp = NEWOBJECT("Empty")
	SELECT (thisform.grid1.recordSource)	&& selecciona el cursor del grid
	SCATTER NAME loREsp
	RAISEEVENT(thisform.oClass,thisform.cRaiseEvent,loResp)       && lanza el método del formulario padre.
	thisform.Release()
ENDIF
*</Boton_Aceptar.Click>

4) En el botón del formulario de facturación que llama al formulario ListaProductos, va lo siguiente:
1
2
3
4
5
6
*<Boton_Seleccionar_Producto.Click>
* Nota: el parámetro Thisform es una referencia de objeto que se envía al otro form. No debe llevar puntos ni comillas.
DO FORM ListaProductos WITH thisform , "Raise_Productos"
*!*	Acá no debe ir nada más.
*!*	Lo que tenga que resolverse se hará en el método "Raise_Productos".
*</Boton_Seleccionar_Producto.Click>
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