• Sábado 21 de Diciembre de 2024, 10:44

Autor Tema:  Cerrar Formulario Hijo  (Leído 4840 veces)

andresfulo

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Cerrar Formulario Hijo
« en: Lunes 17 de Octubre de 2005, 13:06 »
0
tengo una aplicación en visual basic 6 en la que tengo un formulario MDI padre que llama a unos u otros formularios hijos según se le ordene. La llamada la realiza con un "nombreformhijo.Show", y para cerrar estos form hijo utilizo "unload", con esto se descarga el form hijo de memoria y retorna al form padre, el problema es que al volver al form padre se ejecuta de nuevo la instrucción que había llamado al form hijo y este se ejecuta de nuevo. Cómo puedo cerrar el form hijo y que retorne al padre sin más...?

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Cerrar Formulario Hijo
« Respuesta #1 en: Lunes 17 de Octubre de 2005, 14:24 »
0
En qué parte del form padre mandas a cargar los formulariuos hijos?. Por lo que dices parece que lo hicieras en el evento Activate del form padre. Si es así podrías utilizar una variable de tipo lógico que te indique si determinado form hijo ya fue cargado o no. De cualquier forma postea el código a ver cual es el error.

Saludos.


DiabloRojo.

andresfulo

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Cerrar Formulario Hijo
« Respuesta #2 en: Lunes 17 de Octubre de 2005, 16:02 »
0
el código del formulario padre es el siguiente:

Private Sub Consumo_Bateria_Conjunto_Click()
    Formulario_Consumo_Conjunto.Show
End Sub

Private Sub Consumo_Bateria_GPS_Click()
    Formulario_Consumo_GPS.Show
End Sub

Private Sub Consumo_Bateria_GSM_Click()
    Formulario_Consumo_GSM.Show
End Sub

Private Sub MDIForm_Load()
    Call EnlazarBase
End Sub

Private Sub MDIForm_Unload(Cancel As Integer)
    End
End Sub

Private Sub Base_Datos_Click()
    Formulario_BaseDatos.Show
End Sub

Private Sub Iniciar_Medidas_Click()
    Formulario_Medidas.Show
End Sub

Private Sub Cerrar_Aplicación_Click()
    End
End Sub


y para cerrar el form hijo utilizo:

Private Sub Form_Unload(Cancel As Integer)
    Call cerrarpuertos
    Unload Me
End Sub

Private Sub Finalizar_Medidas_Click()
    Call cerrarpuertos
    Unload Me
End Sub


El Sub Finalizar_Medidas_Click() sirve para cerrar el formulario hijo mediante una opción del menú.

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Cerrar Formulario Hijo
« Respuesta #3 en: Martes 18 de Octubre de 2005, 01:45 »
0
En el código que muestras no está la causa del error.
Te aconsejo que con las herramientas de la barra de depuración sigas 'paso a paso' lo que hace el código hasta que descubras cual es la línea que hace que se cargue nuevamente la forma hija.

 :comp:

andresfulo

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Cerrar Formulario Hijo
« Respuesta #4 en: Jueves 20 de Octubre de 2005, 21:17 »
0
Dentro del formulario hijo tengo una serie de bucles en los que se van tomando medidas sin parar...Al llamar al unload en el formulario hijo se cierra la ventana, pero automáticamente se reinicia el form hijo. Ejecutandolo paso a paso, tras el unload, el programa vuelve a la instrucción donde se había quedado y posteriormente empieza de nuevo en Fom_load....no entiendo porque vuelve a ejecutarse el Form_load??

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Cerrar Formulario Hijo
« Respuesta #5 en: Viernes 21 de Octubre de 2005, 00:26 »
0
Lo que dices es lo que pasa si colocas un Unload a mitad de un bucle.
Mejor debes de salir primero de bucle y después hace un Unload.
Por ejemplo:

Código: Text
  1.  
  2. Sub TrabajandoBucle()
  3.     Dim cnt As Long
  4.     Dim Salida As Boolean
  5.     Salida = False
  6.     Do
  7.         ' aqui va tu código
  8.         If cnt = 500 Then
  9.             Salida = True
  10.             Exit Do
  11.         End If
  12.         cnt = cnt + 1
  13.     Loop Until cnt = 1000
  14.     'Esto va en la última línea de la subrutina
  15.     If Salida = True Then
  16.         Unload Me
  17.     End If
  18. End Sub
  19.  


Espero esto te sirva.

 :comp: