• Jueves 2 de Mayo de 2024, 03:15

Autor Tema:  Problema Con Mdichildrens...!  (Leído 1708 veces)

[Zerox]

  • Nuevo Miembro
  • *
  • Mensajes: 20
  • Nacionalidad: pe
    • Ver Perfil
Problema Con Mdichildrens...!
« en: Miércoles 7 de Mayo de 2008, 00:13 »
0
Ante todo Buenas colegas...

Les Escribo porque me tope con un pequeño incoveniente en el desarrollo de un sistema que estoy implementando...
Tengo un MdiPrincipal (Contenedor), y dentro de el un WebBrowser (Con una Animacion), cuando cargo los Formularios Hijos (MdiChildren), no me los muestra porque supuestamente el Control WebBrowser me los tapa...

Alguno de ustedes les paso algo parecido...?

Tuve en mente utilizar la Api SetParent para meter los MdiChildren dentro del WebBrowser, pero no me dio resultado...

Busque en la Web pero ningun resultado... o tal vez no busque bien, espero su ayuda...

Gracias ...!
 :D
TP-Systems
Our Knowledge is our power...

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Problema Con Mdichildrens...!
« Respuesta #1 en: Jueves 8 de Mayo de 2008, 18:54 »
0
1º Un formulario contenedor MDI puede contener a otros formularios con la propiedad MDIChilfren establecida a true.... seguro que activaste dcha propiedad ???

2º Cuando estableces formularos mdichildren, para visualizarlos debes invocarlos  formx.show  tal cual si estuvieran fuera del contenedor.

3º Si El formulario que mdichildren webbrowser que utilizas es en efecto un mdichildren, no puedes pretender que el resto de los formularios mdichildren se alojen dentro de un formulario que no es MDI.  Un formulario MDI es distinto de la propiedad mdichildren. El formulario MDI es la caja grande, los formularios con la propiedad mdichildren son cajas dentro de esa caja grande, pero no cajas dentro de otra caja dentro de la caja grande.

4º setparent en vb.net no se comporta al igual que lo hacía en vb6.0, ahora rechaza 'meter' un contenedor 'raíz' dentro de otro. Yo he superado esto de la siguiente forma: cuando tengo el formulario aún por estrenar coloco un 'pannel' , controlo sus medidas con el evento resize del formulario, cuando en otras circunstancias haría un setparent ahora hago un me.controls.add desde el formulario que lo deseo llamarlo
suponiendo el formulario padre (formP) y el formulario que sería hijo con un pannel (panelH) sería algo como


Código: Text
  1.  
  2. ' añado el panel del otro formulario en el evento load del padre... o cuando quieras...
  3. Private Sub formP_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.     if apadrinar_Controles( form2.panelH)=true then
  5.            añade=""
  6.     else
  7.           añade= "no "
  8.     end if
  9.     msgbox ("El panel " & añade & "se añadió al dormulario...")
  10. end sub
  11.  
  12. ' esta función va en el formulario padre si se desea que fuera común para pasar controles de un formulario a otro, debería añadirse la referencia del padre en otro parámetro (hasta el nivel de formulario) y sustituírlo por ME, y colocar la función en un módulo compartido.
  13.  
  14. public function apadrinar_Controles( ctr as Control) as boolean
  15.     on error goto fallo   ' por ejemplo cuando le pasas un formulario. Con try-catch, puedes interceptar el 'message'
  16.      me.controls.add(Ctype(ctr, Control)    ' en el ejemplo ctr sería: form2.panelH
  17.     ctr.left= posicion_deseadaX
  18.     ctr.top= posicion_deseadaY
  19.     ctr.width=tamaño_DeseadoX
  20.     ctr.Height= tamaño_DeseadoY
  21.     return true
  22.     exit function
  23. fallo:
  24.     return false
  25. end function
  26.  
  27.  
«Ma non troppo»
----> ModoVacaciones = False<----

[Zerox]

  • Nuevo Miembro
  • *
  • Mensajes: 20
  • Nacionalidad: pe
    • Ver Perfil
Re: Problema Con Mdichildrens...!
« Respuesta #2 en: Miércoles 14 de Mayo de 2008, 00:17 »
0
Bueno parece que no me entendiste Doc...
Lo que pasa es que tengo un formulario Padre (MDIPrincipal), dentro de el pegue un control WebBrowser para mostrar una animacion, ok espero ser entendible hasta esa parte
En mi proyecto agregue 4 Formularios (MdiChildren), les puse la propiedad MdiParent = MDIPrincipal, y luego los muestro ok.

Pero mi problema es que el control WebBrowser que esta dentro del MDIPrincipal tapa a los formularios hijos cuando los llamo...
Espero que me hayas entendido..  :(
TP-Systems
Our Knowledge is our power...

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Problema Con Mdichildrens...!
« Respuesta #3 en: Viernes 16 de Mayo de 2008, 01:49 »
0
Bueno, entender, entender... más bién me despistaste con esto...
Citar
Tuve en mente utilizar la Api SetParent para meter los MdiChildren dentro del WebBrowser, pero no me dio resultado...
que parecía ser el problema final que querías resolver...

Puedes utilizar la propiedad formX.bringToFront  para traer a primer plano el formulario deseado (equivale a la función 'Zorder 0' de VB-6.0). Si el problema es el tamaño del 'webbrowser' modifica estos.  Te mando un archivo, con un ejemplo de como lograrlo sin problemas, abajo del mensaje te dejo el enlace.

...y asegúrate que el formulario 'webBrowser' no tiene la propiedad 'topMost' establecida a true (eso le forzaría a estar siempre encima de los demás..) y que no esté maximizado, si lo está usa el método que empleo en el proyecto de ejemplo..
Ten encuenta la propiedad 'MainMenuStrip' de los formularios 'hijos', para determinar si el menú de estos se fusiona con la del  formulario MDI cuando el hijo se maximiza.



Descargar ejemplo de uso de formulario MDI
en la ventana que sale primero ariba del todo darle a 'continue to megaupload'... en la siguiente ventana introducir el código de 3 letras arriba a la izquierda darle a descargar y esperar 45sg. después darle a 'free download' se descarga en nada... (joder lo que lo complican)
Descargar ejemplo en RAR 28KB.
lo siento el FTP de sólo código no reconoce los datos que se indican...
nota: el proyecto está en VB 2008 si tu versión no lo reconociera abre los formularios con un editor de texto y copia el contenido a tu propio proyecto de ejemplo, son 3 formularios y el principal tiene propiedad de MDI, lleva un menuStrip llamado ventana y aloja un combobox...
«Ma non troppo»
----> ModoVacaciones = False<----