• Domingo 22 de Diciembre de 2024, 19:00

Autor Tema:  Duda Sobre Los Mdicontainer  (Leído 3240 veces)

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Duda Sobre Los Mdicontainer
« en: Jueves 12 de Abril de 2007, 19:04 »
0
Que tal a todos .... tengo el siguiente caso tengo 3 forms , 1 form es el principal y le pongo a la propieda IsMdiContainer = true ,  y a su vez tiene un menu toolstrip, en el menu tiene un boton el cual llama a al form2.... el cual quiero que sea tambien tenga la propiedad IsMdiContainer = true , porque quiero que dentro del form2 llame a su vez al form3, pero no se puede , pero quiero que todo que adentro del form1  :P , como puedo llevar acabo esto  :o  
Gracias por la ayuda  ;)

 :comp:

Modifico:

He hecho lo siguiente pero aun no esta como lo quiero en realidad
cuando mando a llamar al form3 desde el form2 le pongo

Código: Text
  1. My.Forms.Form3.MdiParent = Form1
  2.         Form3.Show()
  3.  

En realidad esta bien porque queda todo atrapado en el form1, pero en realidad quiero que el form3 quede adentro del form2  :(
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



maldicion

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Duda Sobre Los Mdicontainer
« Respuesta #1 en: Viernes 13 de Abril de 2007, 00:21 »
0
Espero esto sea lo que tu quieres realizar

El Código fuente 512 muestra el código del menú de frmPrincipal que instancia este objeto y lo muestra como formulario hijo del MDI.

Private Sub mnuCarta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuCarta.Click
' este formulario se abre como hijo del MDI
Dim ofrmCarta As New frmCarta()
ofrmCarta.MdiParent = Me
ofrmCarta.Show()
End Sub
Código fuente 512

A continuación agregaremos al proyecto el formulario frmBuscar. Este formulario actuará como dependiente de frmCarta, permitiéndonos buscar una cadena en el TextBox de este último. La Figura 306 muestra el aspecto de frmBuscar. Aunque no sería necesario, para adaptarlo mejor a su funcionamiento, hemos variado mediante la propiedad FormBorderStyle, el estilo de su borde a ventana de herramientas con el valor FixedToolWindow.

Para conseguir que frmBuscar se comporte como formulario dependiente, al pulsar dentro de frmCarta el botón Buscar, instanciaremos un objeto frmBuscar, añadiéndolo a la colección de formularios dependientes de frmCarta mediante el método AddOwnedForm( ), de la clase Form. El Código fuente 513 muestra el código del botón Buscar en el formulario frmCarta.

Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
' crear un objeto frmBuscar
Dim ofrmBuscar As New frmBuscar()
' establecer dependencia entre forms
Me.AddOwnedForm(ofrmBuscar)
ofrmBuscar.Show()
End Sub
Código fuente 513

Podemos eliminar la asociación entre un formulario propietario y uno dependiente mediante el método RemoveOwnedForm( ) en el formulario propietario. Esto no quiere decir que el formulario dependiente sea eliminado, simplemente se elimina su dependencia con respecto al propietario.
En lo que respecta al código de frmBuscar, al pulsar su botón Buscar, buscamos el contenido del control txtBuscar en el formulario propietario frmCarta.
Si la búsqueda tiene éxito, seleccionamos el texto encontrado dentro del propietario. La propiedad Owner del formulario nos devuelve una referencia del propietario, mientras que para manipular los controles de dicho propietario, realizaremos un moldeado de tipo o type casting sobre Owner utilizando la función CType( ) (observe el lector de nuevo, la enorme potencia que encierra esta función).
Además mostramos una etiqueta en el formulario dependiente, que sólo se visualizará al localizar el texto; cuando volvamos a escribir de nuevo texto a buscar, se ocultará dicha etiqueta. El Código fuente 514 muestra los métodos de frmBuscar que llevan a cabo estas labores.

' al pulsar este botón, buscamos en el formulario ' propietario de este dependiente
Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
Dim iResultadoBuscar As Integer
' la propiedad Owner contiene el formulario propietario
iResultadoBuscar = CType(Me.Owner, frmCarta).txtDocumento.Text.IndexOf(Me.txtBuscar.Text)
' si encontramos el texto buscado...
If iResultadoBuscar > 0 Then ' pasamos el foco al TextBox del formulario propietario ' y seleccionamos el texto encontrado CType(Me.Owner, frmCarta).txtDocumento.Focus() CType(Me.Owner, frmCarta).txtDocumento.SelectionStart = iResultadoBuscar CType(Me.Owner, frmCarta).txtDocumento.SelectionLength =
Me.txtBuscar.Text.Length
Me.lblEncontrado.Show() End If
End Sub
' al volver a teclear un valor a buscar, se oculta el Label Private Sub txtBuscar_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBuscar.TextChanged
Me.lblEncontrado.Hide()
End Sub
Código fuente 514

La imagenes no se muestran pero tienes un formulario principal, y este hace el llamado a otro para escribir un archivo, y en este hay botones en los cuales tu puedes mandar a traer otros formularios y estan dentro del mismo formulario 2

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Duda Sobre Los Mdicontainer
« Respuesta #2 en: Viernes 13 de Abril de 2007, 00:21 »
0
Hola, he hecho lo que quieres pero no he trabajacon en MDIs sino con form normales, mira te en el Form1 y Form2 he agregado un panel y lo he acoplado con Dock a todo el formulario, ahora desde el Form1 llamo al Form2 y lo agrego al panel:

Código: Text
  1.         Dim ventana As New Form2
  2.         ventana.TopLevel = False
  3.         ventana.Visible = True
  4.         Me.Panel1.Controls.Add(ventana)
  5.  

Y cuando esté cargado el Form2, desde el menu llamo al Form3:

Código: Text
  1.         Dim ventana As New Form3
  2.         ventana.TopLevel = False
  3.         ventana.Visible = True
  4.         Me.Panel1.Controls.Add(ventana)
  5.  
Ninguno de los 2 Formularios tienen que ser MDI ps saldría error, es una forma de lograr lo que quieres, tal vez la menos apropiada pero funciona, espero te sirva nos vemos
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Duda Sobre Los Mdicontainer
« Respuesta #3 en: Viernes 13 de Abril de 2007, 00:36 »
0
;)  si funciona  Cajami te lo agradezco mucho..... ummm aunque entonces como yo lo solicite no se puede hacer ? aunque si el usuario quisiera mobilizar la ventana (que en realidad es el panel) no lo podria hacer  <_<  

 :scream:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Duda Sobre Los Mdicontainer
« Respuesta #4 en: Viernes 13 de Abril de 2007, 00:39 »
0
Cita de: "elnapster"
;)  si funciona  Cajami te lo agradezco mucho..... ummm aunque entonces como yo lo solicite no se puede hacer ? aunque si el usuario quisiera mobilizar la ventana (que en realidad es el panel) no lo podria hacer  <_<  

 :scream:
Hola, bueno si trabajas con MDI de la forma que te digo de los panel sale error, a que te refieres con mobilizar la ventana???  :hola:
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Duda Sobre Los Mdicontainer
« Respuesta #5 en: Viernes 13 de Abril de 2007, 00:42 »
0
:rolleyes:  
Citar
Hola, bueno si trabajas con MDI de la forma que te digo de los panel sale error, a que te refieres con mobilizar la ventana??? 

Lo he hecho con la Anchor del Panel ... asi que cada vez que el usuario maximize el menu (por decirlo de esa manera) el panel se autoajustara para que la ventana que este dentro del pueda movilizarce en todo el espacio del menu  :D

Thk's  :kicking:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa