Activar un formulario MDICHILD que ya está abierto

20/04/2010 - 12:57 por Ira | Informe spam
Hola,



Tengo un formulario principal que es un formulario MDI. Este formulario MDI
tiene unos menús. Cuando se clicka en algún menú se abre uno u otro
formulario. Lo que necesito es que si al clickar en un menú, si el
formulario que se tiene que abrir ya está abierto, que no lo vuelva a abrir,
sino que lo active.

Utilizo el siguiente código pero el BringToFront, ni se entera. ¿Alguna idea
de como activar el formulario hijo?



Gracias



Private Sub Mnu_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Mnu.Click

Dim FormularioHijo As New FrmMtoClientes

If FormularioAbierto("FrmMtoClientes") = True Then

FormularioHijo.BringToFront()

Else

FormularioHijo.MdiParent = Me

FormularioHijo.Show()

End If

End Sub



Function FormularioAbierto(ByVal nb_formulario As String) As Boolean

FormularioAbierto = False

Dim Formu As Form

For Each Formu In Application.OpenForms

If Formu.Name = nb_formulario Then

FormularioAbierto = True

End If

Next

End Function

Preguntas similare

Leer las respuestas

#1 L. Garcia
20/04/2010 - 16:17 | Informe spam
Hola:

En tu codigo haces: 'FormularioHijo AS New ...', con lo cual FormularioHijo
'siempre es un nuevo formulario' !!!

Aunque busques con la función FormularioAbierto() si ya existe, luego operas
con FormularoHijo, con lo cual estás creando un formulario cada vez que
haces click!!!

Existen múltiples soluciones, pero la mas 'parecida' a lo que tienes seria
algo que así:

Dim frmHijo as FrmMtoClientes ''' IMPORTANTE: Sin el New!!!

frmHijo = FormularioAbierto("FrmMtoClientes")
If frmHijo Is Nothing Then ' Sino hay ninguno abierto, lo creamos de
nuevo
frmHijo = New FrmMtoClientes
frmHijo.MdiParent = Me
frmHijo.Show
Else ' Si está abierto, lo pasamos p'alante
frmHijo.BringToFront
Endif

Y cambiar la funcion FormularioAbierto para que devuelva el Formulario (en
vez de True/False)

Function FormularioAbierto(ByVal nb_formulario As String) As Form
Dim Formu As Form
For Each Formu In Application.OpenForms
If Formu.Name = nb_formulario Then Return Formu
Next
End Function

NOTA: No he comprobado el código, pero si no funciona, la idea es lo que
vale ;-)
Espero que te sirva
Saludos


"Ira" escribió en el mensaje
news:
Hola,

Tengo un formulario principal que es un formulario MDI. Este formulario
MDI tiene unos menús. Cuando se clicka en algún menú se abre uno u otro
formulario. Lo que necesito es que si al clickar en un menú, si el
formulario que se tiene que abrir ya está abierto, que no lo vuelva a
abrir, sino que lo active.

Utilizo el siguiente código pero el BringToFront, ni se entera. ¿Alguna
idea de como activar el formulario hijo?



Gracias



Private Sub Mnu_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Mnu.Click

Dim FormularioHijo As New FrmMtoClientes

If FormularioAbierto("FrmMtoClientes") = True Then

FormularioHijo.BringToFront()

Else

FormularioHijo.MdiParent = Me

FormularioHijo.Show()

End If

End Sub



Function FormularioAbierto(ByVal nb_formulario As String) As Boolean

FormularioAbierto = False

Dim Formu As Form

For Each Formu In Application.OpenForms

If Formu.Name = nb_formulario Then

FormularioAbierto = True

End If

Next

End Function

Respuesta Responder a este mensaje
#2 SysEdw
20/04/2010 - 22:57 | Informe spam
hola prueba con este codigo

Public Sub MostrarVentana(ByVal Formulario As Form, ByVal Mdi As Form)
Dim Frmllamado As Form
Formulario.Text = Formulario.Name
Dim Escargado As Boolean = False
For Each Frmllamado In Mdi.MdiChildren
If Frmllamado.Text = Formulario.Text Then
Escargado = True
Exit For
End If
Next
If Not Escargado Then
Formulario.MdiParent = Mdi
Formulario.StartPosition = FormStartPosition.CenterScreen
Formulario.Show()
ElseIf Escargado Then
Formulario.Focus()
End If
End Sub
para llamar es algo

MostrarVentana(frmTipoDocente, Me)


espero que te sirva
"L. Garcia" wrote:

Hola:

En tu codigo haces: 'FormularioHijo AS New ...', con lo cual FormularioHijo
'siempre es un nuevo formulario' !!!

Aunque busques con la función FormularioAbierto() si ya existe, luego operas
con FormularoHijo, con lo cual estás creando un formulario cada vez que
haces click!!!

Existen múltiples soluciones, pero la mas 'parecida' a lo que tienes seria
algo que así:

Dim frmHijo as FrmMtoClientes ''' IMPORTANTE: Sin el New!!!

frmHijo = FormularioAbierto("FrmMtoClientes")
If frmHijo Is Nothing Then ' Sino hay ninguno abierto, lo creamos de
nuevo
frmHijo = New FrmMtoClientes
frmHijo.MdiParent = Me
frmHijo.Show
Else ' Si está abierto, lo pasamos p'alante
frmHijo.BringToFront
Endif

Y cambiar la funcion FormularioAbierto para que devuelva el Formulario (en
vez de True/False)

Function FormularioAbierto(ByVal nb_formulario As String) As Form
Dim Formu As Form
For Each Formu In Application.OpenForms
If Formu.Name = nb_formulario Then Return Formu
Next
End Function

NOTA: No he comprobado el código, pero si no funciona, la idea es lo que
vale ;-)
Espero que te sirva
Saludos


"Ira" escribió en el mensaje
news:
> Hola,
>
> Tengo un formulario principal que es un formulario MDI. Este formulario
> MDI tiene unos menús. Cuando se clicka en algún menú se abre uno u otro
> formulario. Lo que necesito es que si al clickar en un menú, si el
> formulario que se tiene que abrir ya está abierto, que no lo vuelva a
> abrir, sino que lo active.
>
> Utilizo el siguiente código pero el BringToFront, ni se entera. ¿Alguna
> idea de como activar el formulario hijo?
>
>
>
> Gracias
>
>
>
> Private Sub Mnu_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles Mnu.Click
>
> Dim FormularioHijo As New FrmMtoClientes
>
> If FormularioAbierto("FrmMtoClientes") = True Then
>
> FormularioHijo.BringToFront()
>
> Else
>
> FormularioHijo.MdiParent = Me
>
> FormularioHijo.Show()
>
> End If
>
> End Sub
>
>
>
> Function FormularioAbierto(ByVal nb_formulario As String) As Boolean
>
> FormularioAbierto = False
>
> Dim Formu As Form
>
> For Each Formu In Application.OpenForms
>
> If Formu.Name = nb_formulario Then
>
> FormularioAbierto = True
>
> End If
>
> Next
>
> End Function
>


.

Respuesta Responder a este mensaje
#3 Ira
21/04/2010 - 09:45 | Informe spam
Muy bueno. Funciona a la perfección. Gracias

"L. Garcia" escribió en el mensaje
news:
Hola:

En tu codigo haces: 'FormularioHijo AS New ...', con lo cual
FormularioHijo 'siempre es un nuevo formulario' !!!

Aunque busques con la función FormularioAbierto() si ya existe, luego
operas con FormularoHijo, con lo cual estás creando un formulario cada vez
que haces click!!!

Existen múltiples soluciones, pero la mas 'parecida' a lo que tienes seria
algo que así:

Dim frmHijo as FrmMtoClientes ''' IMPORTANTE: Sin el New!!!

frmHijo = FormularioAbierto("FrmMtoClientes")
If frmHijo Is Nothing Then ' Sino hay ninguno abierto, lo creamos de
nuevo
frmHijo = New FrmMtoClientes
frmHijo.MdiParent = Me
frmHijo.Show
Else ' Si está abierto, lo pasamos p'alante
frmHijo.BringToFront
Endif

Y cambiar la funcion FormularioAbierto para que devuelva el Formulario (en
vez de True/False)

Function FormularioAbierto(ByVal nb_formulario As String) As Form
Dim Formu As Form
For Each Formu In Application.OpenForms
If Formu.Name = nb_formulario Then Return Formu
Next
End Function

NOTA: No he comprobado el código, pero si no funciona, la idea es lo que
vale ;-)
Espero que te sirva
Saludos


"Ira" escribió en el mensaje
news:
Hola,

Tengo un formulario principal que es un formulario MDI. Este formulario
MDI tiene unos menús. Cuando se clicka en algún menú se abre uno u otro
formulario. Lo que necesito es que si al clickar en un menú, si el
formulario que se tiene que abrir ya está abierto, que no lo vuelva a
abrir, sino que lo active.

Utilizo el siguiente código pero el BringToFront, ni se entera. ¿Alguna
idea de como activar el formulario hijo?



Gracias



Private Sub Mnu_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Mnu.Click

Dim FormularioHijo As New FrmMtoClientes

If FormularioAbierto("FrmMtoClientes") = True Then

FormularioHijo.BringToFront()

Else

FormularioHijo.MdiParent = Me

FormularioHijo.Show()

End If

End Sub



Function FormularioAbierto(ByVal nb_formulario As String) As Boolean

FormularioAbierto = False

Dim Formu As Form

For Each Formu In Application.OpenForms

If Formu.Name = nb_formulario Then

FormularioAbierto = True

End If

Next

End Function





Respuesta Responder a este mensaje
#4 Lord Voldemort - Ferretero
21/04/2010 - 17:48 | Informe spam
podes usar simplemente..

Private Sub Mnu_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Mnu.Click







My.Forms.MiFormulario.Show

end codigo..


y ya estuvo...
como es un hijo, sino esta creado lo crea y si ya esta creado lo muestra...

saludos



"Ira" escribió en el mensaje de
noticias:
Muy bueno. Funciona a la perfección. Gracias

"L. Garcia" escribió en el mensaje
news:
Hola:

En tu codigo haces: 'FormularioHijo AS New ...', con lo cual
FormularioHijo 'siempre es un nuevo formulario' !!!

Aunque busques con la función FormularioAbierto() si ya existe, luego
operas con FormularoHijo, con lo cual estás creando un formulario cada
vez que haces click!!!

Existen múltiples soluciones, pero la mas 'parecida' a lo que tienes
seria algo que así:

Dim frmHijo as FrmMtoClientes ''' IMPORTANTE: Sin el New!!!

frmHijo = FormularioAbierto("FrmMtoClientes")
If frmHijo Is Nothing Then ' Sino hay ninguno abierto, lo creamos de
nuevo
frmHijo = New FrmMtoClientes
frmHijo.MdiParent = Me
frmHijo.Show
Else ' Si está abierto, lo pasamos p'alante
frmHijo.BringToFront
Endif

Y cambiar la funcion FormularioAbierto para que devuelva el Formulario
(en vez de True/False)

Function FormularioAbierto(ByVal nb_formulario As String) As Form
Dim Formu As Form
For Each Formu In Application.OpenForms
If Formu.Name = nb_formulario Then Return Formu
Next
End Function

NOTA: No he comprobado el código, pero si no funciona, la idea es lo que
vale ;-)
Espero que te sirva
Saludos


"Ira" escribió en el mensaje
news:
Hola,

Tengo un formulario principal que es un formulario MDI. Este formulario
MDI tiene unos menús. Cuando se clicka en algún menú se abre uno u otro
formulario. Lo que necesito es que si al clickar en un menú, si el
formulario que se tiene que abrir ya está abierto, que no lo vuelva a
abrir, sino que lo active.

Utilizo el siguiente código pero el BringToFront, ni se entera. ¿Alguna
idea de como activar el formulario hijo?



Gracias



Private Sub Mnu_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Mnu.Click

Dim FormularioHijo As New FrmMtoClientes

If FormularioAbierto("FrmMtoClientes") = True Then

FormularioHijo.BringToFront()

Else

FormularioHijo.MdiParent = Me

FormularioHijo.Show()

End If

End Sub



Function FormularioAbierto(ByVal nb_formulario As String) As Boolean

FormularioAbierto = False

Dim Formu As Form

For Each Formu In Application.OpenForms

If Formu.Name = nb_formulario Then

FormularioAbierto = True

End If

Next

End Function









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