Pasar un Form por Parámetro a otro Form (VFP)

Visual FoxPro 9.0
Tengo un formulario modal, el cual es llamado desde dos formulario distintos. Lo que quiero es que desde mi formulario modal pueda actualizar( form. Refresh() ) el formulario del cuál fue llamado.
Por eso mi idea es pasarle por parámetro al form modal el form que lo está llamando. Mi problema es que no sé como recibirlo.
Por ejemplo en el Init del form modal sería algo así
LPARAMETERS formQueLLama
*acá no sé como declarar así después desde un método de este form pueda refrescar el formQueLLama
Ojalá pueden ayudarme.

1 respuesta

Respuesta
1
Esto lo podés hacer así: desde el formulario donde llamás lo hacés DO FORM formulario WITH This (le pasás como parámetro el formulario desde donde llamás). En el Init del formulario modal directamente recibís el objeto:
PARAMETERS oFormularioOrigen
** Podés evaluar si viene el parámetro
IF TYPE("oFormularioOrigen") # "O"
   RETURN .F.     && Si el parámetro no viene, el formulario modal no se ejecuta
ENDIF
** Hacés lo que quieras hacer en el formulario modal y después refrescás el que lo llamó:
OFormularioOrigen. Refresh
Y listo. Así de simple.
Hola amigo, gracias por contestar
Al hacer hacer referencia al oFormularioOrigen no me lo reconoce.
Una vez que lo recibo en el Init del form Modal... cómo puedo hacer referencia al oFormularioOrigen para refrescar desde otro método del form Modal que no sea el Init.
FORM CLIENTE
DO FORM agregarcliente WITH 0, thisform
MÉTODO INIT DE AGREGARCLIENTE
LPARAMETERS tel, oForm
thisform.txtTelefono.Value=0
IF  !EMPTY(tel)
    thisform.txtTelefono.Value=tel
    thisform.txtApellido.SetFocus
ENDIF
MÉTODO AGREGAR DE AGREGAR CLIENTE
oCliente.agregarCliente(tel, apellido, nombre, direccion, email)
 oFormOrigen.refresh()
**esta es la parte donde no me reconoce el oFormOrigen ("No se encuentra el objete oFormOrigen"). Hay algo que me está faltando, como asignar el form y pasarlo al método "agregar". 
A ver si podes encontrar qué estoy haciendo mal.
Gracias, saludos
Bien. Ahora está más claro. Lo que te dije originalmente guarda el objeto en una variable que según como se defina tiene más o menos alcance (según sea local, privada o pública). Para que no tengas problemas hacé esto en el Init del formulario agregarcliente (el modal):
LPARAMETERS oFormularioOrigen
ThisForm. AddProperty("FormOrigen", oFormOrigen)
Lo que hacés con esto es guardar el objeto formulario origen en una propiedad del formulario modal, entonces lo podes llamar desde cualquier lugar, por ejemplo, desde el método "Agregar" que me mostraste:
OCliente. AgregarCliente(tel, apellido, nombre, direccion, email)
ThisForm. FormOrigen. Refresh()

Probalo y cualquier cosa me preguntás nuevamente. Suerte !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas