Visual Basic - URGENTE. Comunicacion entre 2 formularios

Life is soft - evento anual de software empresarial
 
Vista:

URGENTE. Comunicacion entre 2 formularios

Publicado por FRAN (3 intervenciones) el 18/09/2002 08:54:12
Cómo puedo recuperar el propietario al mostrar un formulario modal?
Es decir al hacer
form1.show vbModal, Me
El form1 como puede recuperar el Me???

Gracias de antemano.
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

RE:URGENTE. Comunicacion entre 2 formularios

Publicado por alberto (278 intervenciones) el 18/09/2002 09:16:10
La forma mas sencilla es crear un procedimiento en el form1:
Public Sub Mostrar(ParentForm As Form)

Show vbModal

Set miParentForm = ParentForm

End Sub

Donde miParentForm es una variable de tipo Form y llamar a ese procedimiento desde el formulario que quiera mostrar dicho Formulario en vez de ejecutar
form1.show vbmodal,me
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

Corrección

Publicado por alberto (278 intervenciones) el 18/09/2002 09:23:20
Una pequeña corrección en el procedimiento a crear, debería quedar:
Public Sub Mostrar(ParentForm As Form)

Set miParentForm = ParentForm
Show vbModal

End Sub

Si no la asignación a miParentForm no se ejecutará hasta que el formulario se halla descargado.
un saludo.
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

RE:URGENTE. Comunicacion entre 2 formularios

Publicado por FRAN (3 intervenciones) el 18/09/2002 13:10:46
Gracias Alberto,
Una solución ingeniosa para salir del aprieto (y que de momento utilizare).
Pero si ves la ayuda del show el segundo parametro es el propietario. Es decir que el formulario que muestra otro puede enviarle una referencia a él mismo por si la necesita y si está especificado tiene que haber alguna forma de recuperarlo en el formulario mostrado. Pero cómo?
Molaría saberlo.
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

Apis

Publicado por alberto (278 intervenciones) el 18/09/2002 16:32:52
Como a traves de las propiedades de un formulario no es factible es posible saberlo mediante la API:

Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

en principio el valor adecuado para nIdex es:
const GWL_HWNDPARENT=-8
el valor devuelto por GetWindowLong es la propiedad hWnd, además en ese caso no es necesario pasarle el segundo parametro, una vez sabido el hWnd, puedes buscar el formulario a traves de la colección Forms.
De todas formas creo que la primera solución es mucho mas sencilla.
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