SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Visual Basic para principiantes => Mensaje iniciado por: andresfulo en Lunes 17 de Octubre de 2005, 13:06

Título: Cerrar Formulario Hijo
Publicado por: andresfulo en Lunes 17 de Octubre de 2005, 13:06
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...?
Título: Re: Cerrar Formulario Hijo
Publicado por: DiabloRojo en Lunes 17 de Octubre de 2005, 14:24
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.
Título: Re: Cerrar Formulario Hijo
Publicado por: andresfulo en Lunes 17 de Octubre de 2005, 16:02
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ú.
Título: Re: Cerrar Formulario Hijo
Publicado por: cpmario en Martes 18 de Octubre de 2005, 01:45
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:
Título: Re: Cerrar Formulario Hijo
Publicado por: andresfulo en Jueves 20 de Octubre de 2005, 21:17
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??
Título: Re: Cerrar Formulario Hijo
Publicado por: cpmario en Viernes 21 de Octubre de 2005, 00:26
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: