Migración de un control de Vb6 a Vb.NET

02/09/2004 - 15:24 por Salvador Acosta | Informe spam
Esta es la porción de código que me crea problemas para la migración.
Existen dos problemas, uno es la propiedad Extender que ya no existe en .NET
y el otro es ObjPtr que no tiene equivalente en .NET.

myMDIForm es una referencia a un formulario hijo y UserControl es un control
que se coloca sobre el mencionado formulario.


Set myMDIForm = UserControl.Extender.Parent

SetProp myMDIForm.hwnd, "pMDIFrame", ObjPtr(myMDIForm)

Si alguien ya pasó por ésto, le agradecería eternamente que me ayuda a
solucionar el inconveniente.

Gracias.

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
02/09/2004 - 17:38 | Informe spam
Set myMDIForm = UserControl.Extender.Parent



El objeto Extender no existe mas porque todo esta en el control. Para saber
el formulario en el que esta el control usa la propiedad TopLevelControl.

SetProp myMDIForm.hwnd, "pMDIFrame", ObjPtr(myMDIForm)



Esto no tiene equivalente de ningun tipo ya que no es posible saber la
direccion de memoria de un objeto. ¿Para que es que lo necesitas?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 Salvador Acosta
02/09/2004 - 18:25 | Informe spam
Lo del Extender, ya logré solucionarlo.

Cambié 'Usercontrol.Extender.Parent' por 'Mybase.FindForm' que me localiza
el formulario en el que está situado el control.

> SetProp myMDIForm.hwnd, "pMDIFrame", ObjPtr(myMDIForm)



Y sobre lo del puntero, es que tengo un OCX hecho en Visual Basic 6 que
facilita ubicar formularios que están en una librería .DLL dentro del
formulario MDI de otra aplicación. La cual, por supuesto referencia a la DLL
mencionada y ubica los formularios como forms MDIChild. El OCX es bastante
bueno, ya que permite que estos forms importados tengan el mismo
comportamiento de cualquier form MDIChild creado en la aplicación misma.

Justo en la parte más importante porque es ahí en donde la pasa la
referencia a la aplicación principal. Necesito saber cómo acceder en la
posición de memoria en donde está la referencia del formulario.

Si existe alguna otra forma de hacer los mismo, quisiera que me la hagan
saber.

Gracias por tu atención.


"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> escribió en el
mensaje news:
> Set myMDIForm = UserControl.Extender.Parent

El objeto Extender no existe mas porque todo esta en el control. Para


saber
el formulario en el que esta el control usa la propiedad TopLevelControl.

> SetProp myMDIForm.hwnd, "pMDIFrame", ObjPtr(myMDIForm)

Esto no tiene equivalente de ningun tipo ya que no es posible saber la
direccion de memoria de un objeto. ¿Para que es que lo necesitas?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
02/09/2004 - 19:43 | Informe spam
En .net cualquier formulario puede pasar a ser un mdi hijo sin necesidad de
hacer nada especial mas que colocar en su propiedad MdiParent la instancia
del formulario MDI padre.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#4 Salvador Acosta
02/09/2004 - 23:31 | Informe spam
De repente hace falta que alguien nos haga ver la luz.

Hice como mencionaste y funcionó. Ejecuto una aplicación MDI que tiene una
librería DLL con otros formularios. Al llamar al procedimiento que carga el
formulario le paso la referencia al MDI principal y luego eso dato le asigno
a la propiedad MdiParent de los formularios contenidos en el DLL. Perfecto!!

Todo esto en Vb.NET.

Hasta allí todo bien. Ahora, por motivos de facilitar la migración de Vb6 a
Vb.NET, lo que voy a intentar hacer es ejecutar una aplicación MDI compilada
en Vb6, la que va a tener un DLL con formularios compilados con Vb.NET, los
cuales deberán integrarse al MDI de tal forma que parezca natural.

Tal vez parezca una complicación, pero a mí me permitiría utilizar todas las
funciones del sistema en Vb6 (que es bastante grande) junto con las nuevas
que ya las quisiera realizar en Vb.NET.

Quisiera que me ayuden es esta tarea.

Gracias.



"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> escribió en el
mensaje news:
En .net cualquier formulario puede pasar a ser un mdi hijo sin necesidad


de
hacer nada especial mas que colocar en su propiedad MdiParent la instancia
del formulario MDI padre.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida