Como controlar formulario con MDI

15/09/2005 - 10:47 por Tecnicos Aydai | Informe spam
Hola a todos!!!!
Os comento mi duda.
Tengo un formulario MDI, en el cual se cargan distintos tipos de formularios
hijos, pero solo puede haber una instancia de cada uno de estos hijos, y me
gustaria saber como puedo controlar que solo se cargue una instancia de cada
uno de los hijos.

Un saludo y gracias.

Preguntas similare

Leer las respuestas

#1 Don Quijote de Nicaragua
15/09/2005 - 15:52 | Informe spam
Yo hice algo también de esta forma:
Llamar al formulario desde el Menú

Private Sub mnuAutomotor_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles mnuAutomotor.Click
'Comprueba si el formulario ya está Cargado
If Not udfComprobarMDI("FrmAutomotor", Me) Then
'Abre el formulario solicitado
Dim Form As New FrmAutomotor
Form.Icon = Me.Icon
Form.MdiParent = Me
Form.Show()
Form = Nothing
End If
End Sub

' Función que verifica si el formulario MDI ya se encuentra cargado,
declarado en un Modulo
Friend Function udfComprobarMDI(ByVal strTitulo As String, ByVal frm As
FrmPrincipal) As Boolean
Dim x As Integer
For x = 0 To (frm.MdiChildren.Length) - 1
If frm.MdiChildren(x).Name = strTitulo Then
udfComprobarMDI = True
Exit Function
Else
udfComprobarMDI = False
Exit Function
End If
Next x
udfComprobarMDI = False
End Function

Espero te sirva,
Saludos.
Don Quijote de Nicaragua
Elder Soto.

"J. Carlos Herrrero" escribió en el mensaje
news:u2IXe$
Hola:
Prueba esto
En el MDI:
Private Sub mnuXXXX_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles mnuXXXX.Click
Me.mnuXXXX.Enabled = False
Dim lofrmXXXX As New frmXXXX
lofrmXXXX.MdiParent = Me
lofrmXXXX.Show()
End Sub
En el frmXXXX:
Private Sub frmXXXX_Closed(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Closed
'utilizando la funcion CType(), moldeamos la propiedad MdiParent
'del formulario al tipo correspondiente a la clase del formulario MDI
'con ello tenemos acceso a sus miembros y en particular a la opcion de
menu
CType(Me.MdiParent, frmMDI).mnuXXXX.Enabled = True
End Sub

Espero que te sirva
Un saludo desde Bilbo:
Carlos

"Tecnicos Aydai" escribió en el mensaje
news:u%
> Hola a todos!!!!
> Os comento mi duda.
> Tengo un formulario MDI, en el cual se cargan distintos tipos de
> formularios hijos, pero solo puede haber una instancia de cada uno de
> estos hijos, y me gustaria saber como puedo controlar que solo se cargue
> una instancia de cada uno de los hijos.
>
> Un saludo y gracias.
>


Respuesta Responder a este mensaje
#2 Miguel E.
15/09/2005 - 16:19 | Informe spam
Tambien podrias implementar un patron singleto que en realidad es muy
sencillo, y que tus formularios hereden de este. Tan solo tienes que ponerle
una variable Shared (estática)booleana por ejemplo iniciallizada a false y
en el constructor comprobar el valor de ésta, si es false no se ha creado
formulario y si es true pues no creas el objeto.

Espero te sirva
"A.Poblacion" escribió en
el mensaje news:
"Tecnicos Aydai" wrote in message
news:u%
Tengo un formulario MDI, en el cual se cargan distintos tipos de


formularios
hijos, pero solo puede haber una instancia de cada uno de estos hijos, y


me
gustaria saber como puedo controlar que solo se cargue una instancia de


cada
uno de los hijos.



Bueno, en un formulario MDI no "se cargan" formularios hijos. Los
formularios hijos los cargas tú ejecutando un trozo de código tuyo para
abrirlos. Si no quieres abrir más de una instancia de cada hijo, pon un
"IF"
en el cacho de código que los abre, y no los vuelvas a abrir si ya los
tienes abiertos.
Para controlar si un formulario ya está abierto, una de las formas más
fáciles de hacerlo es declarar una variable estática booleana, y poner la
variable a True cuando abras el formulario, y ponerla a False en el evento
Close del formulario.
Otra forma consiste en buscar el formulario en cuestión a través de la
propiedad MdiChildren del formulario MDI, que te da un array con todos los
hijos que están abiertos.



Respuesta Responder a este mensaje
#3 Miko_tnt
15/09/2005 - 17:37 | Informe spam
Hola esto te va a servir...

lo ejecutas en el evento que va abrir tu formulario hijo .. o komo te
dijeron anteriormentepuedes manejar una variable booleana en el evento enter
de tu formulario.. pero lo de abajo te debe solucionar el problema


Try
Dim NombreForm As String = "Tu Forma"
Dim x As Integer
For x = 0 To (Me.MdiChildren.Length) - 1
If Me.MdiChildren(x).Name = NombreForm Then
Me.MdiChildren(x).Focus()
Exit Sub
End If
Next x

Dim Forma As New TuFormulario()
Forma .MdiParent = Me
Forma .Name = NombreForm
Forma .Show()
Catch ex As Exception
MsgBox(ex.Message)
End Try

suerte con tu proyecto .. kualkier cosa vuelve a escribir pero esto te
funcionara

"Tecnicos Aydai" escribió:

Hola a todos!!!!
Os comento mi duda.
Tengo un formulario MDI, en el cual se cargan distintos tipos de formularios
hijos, pero solo puede haber una instancia de cada uno de estos hijos, y me
gustaria saber como puedo controlar que solo se cargue una instancia de cada
uno de los hijos.

Un saludo y gracias.



Respuesta Responder a este mensaje
#4 J. Carlos Herrrero
15/09/2005 - 20:08 | Informe spam
Hola:
Prueba esto
En el MDI:
Private Sub mnuXXXX_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles mnuXXXX.Click
Me.mnuXXXX.Enabled = False
Dim lofrmXXXX As New frmXXXX
lofrmXXXX.MdiParent = Me
lofrmXXXX.Show()
End Sub
En el frmXXXX:
Private Sub frmXXXX_Closed(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Closed
'utilizando la funcion CType(), moldeamos la propiedad MdiParent
'del formulario al tipo correspondiente a la clase del formulario MDI
'con ello tenemos acceso a sus miembros y en particular a la opcion de
menu
CType(Me.MdiParent, frmMDI).mnuXXXX.Enabled = True
End Sub

Espero que te sirva
Un saludo desde Bilbo:
Carlos

"Tecnicos Aydai" escribió en el mensaje
news:u%
Hola a todos!!!!
Os comento mi duda.
Tengo un formulario MDI, en el cual se cargan distintos tipos de
formularios hijos, pero solo puede haber una instancia de cada uno de
estos hijos, y me gustaria saber como puedo controlar que solo se cargue
una instancia de cada uno de los hijos.

Un saludo y gracias.

Respuesta Responder a este mensaje
#5 Tecnicos Aydai
16/09/2005 - 09:05 | Informe spam
Muchas gracias a todos, me habeis dado ideas que me han sido de gran
utilidad.
"Tecnicos Aydai" escribió en el mensaje
news:u%
Hola a todos!!!!
Os comento mi duda.
Tengo un formulario MDI, en el cual se cargan distintos tipos de
formularios hijos, pero solo puede haber una instancia de cada uno de
estos hijos, y me gustaria saber como puedo controlar que solo se cargue
una instancia de cada uno de los hijos.

Un saludo y gracias.

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