FoxPro/Visual FoxPro - TRAER RUBRO DE UN FORMULARIO A OTRO

 
Vista:
sin imagen de perfil
Val: 313
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

TRAER RUBRO DE UN FORMULARIO A OTRO

Publicado por Jose Francisco (166 intervenciones) el 26/11/2017 19:16:14
ESTIMADOS TENGO UN FORMULARIO ARTICULOS, DONDE ES UN ABM ,, Y DE UN GRID TOMO EL RUBRO DEL ARTÍCULO OK.

PERO SI NO ESTÁ DADO DE ALTA ESE RUBRO , DESDE ESE FORM.ARTÍCULOS LEVANTO EL FORMULARIO RUBROS Y LO DOY DE ALTA AL RUBRO NUEVO OK.-

CUANDO VUELVO CON RETURN DEL FORMULARIO RUBRO AL FORMULARIO ARTICULOS NECESITO QUE ME TRAIGA EL RUBRO Y LO PEGUE DIRECTAMENTE AL CAMPO TXTRUBRO .

(GRABAR SI , LO GRABA Y LO PUEDO TOMAR DEL GRID) PERO QUISIERA QUE ME LO TRAIGA DIRECTAMENTE CUANDO CIERRO CON RETURN EL FORM. RUBRO.-

INTENTÉ CON VARIABLES PUBLIC PERO NO LO PUEDO SOLUCIONAR.

AGUARDO RESPUESTA
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
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

TRAER RUBRO DE UN FORMULARIO A OTRO

Publicado por Fidel José (657 intervenciones) el 27/11/2017 13:20:24
Acá hay dos soluciones posibles;
1) Si el formulario rubros es modal o quieres que sea modal, puede enviar una respuesta

1
2
3
4
5
6
7
8
9
10
11
lcRubro = ""
DO FORM RUBRO TO lcRubro
IF !EMPTY(lcRubro)
	ThisForm.TxtRubro.Value = m.lcRubro
	* Otras Acciones
ENDIF
 
* En el formulario RUBROS, deberías crear una propiedad que albergue el valor del rubro seleccionado, digamos "RUBRO_SELEC". En el Unload del formulario rubros, tienes que poner
IF This.WindowType = 1
	RETURN This.Rubro_Selec
ENDIF
El formulario RUBROS puede funcionar como modal y que devuelva una respuesta, de dos maneras:
a) Configurandolo como WindowType = 1 en el diseñador de formularios
DO FORM RUBROS TO lcRubros
b) Con un parámetro en el INIT del formulario Rubros
*Init Event (Rubros.scx)
LPARAMETERS tnWindowType
this.Windowtype = EVL(m.tnWindowType,0)
*
DO FORM RUBROS WITH 1 TO lcRubros

b) Si no quieres que el formulario Rubros funcione como modal (por los inconvenientes que pueda tener), el tema es más trabajoso, aunque desde mi punto de vista mejor.

Para esto necesitas pasar, al menos, dos parámetros al formulario Rubros, por lo que debes adecuar el Init del formulario rubros:
*<Init_Rubros.scx>
LPARAMETERS toClass , tcRaiseEvent
ADDPROPERTY(Thisform,"oClass",m.toClass)
ADDPROPERTY(Thisform,"cRaiseEvent",m.tcRaiseEvent)
* Otras lineas de INIT
*</Init_Rubros.scx>

En el botón de Aceptar del formulario Rubros.scx, deberías tener un código como este
1
2
3
4
5
6
7
Thisform.Rubro_Select = Tabla.Valor
IF VARTYPE(thisform.oClass) = "O" ;
	AND !EMPTY(thisform.cRaiseEvent) ;
	AND PEMSTATUS(thisform.oClass,thisform.cRaiseEvent,5)
	RAISEEVENT(thisform.oClass,Thisform.cRaiseEvent,Thisform.Rubro_Select)
ENDIF
Thisform.Release()

En el formulario que llama a rubros debes crear un método que reciba la respuesta: Llamémosle "Get_Rubro"
1
2
3
4
5
6
7
*<Método Get_Rubro>
LPARAMETERS tcRubro
IF !EMPTY(m.tcRubro)
	thisform.TxtRubro.Value = m.tcRubro
	* Otras acciones correspondientes
ENDIF
*</Método Get_Rubro>

*Para llamar al formulario Rubros,
DO FORM RUBROS WITH Thisform , "Get_Rubro"
* Acá no debe ir nada más. La resolución estará totalmente en el método Get_Rubro
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