Autor Tema: Problema al cerrar aplicación  (Leído 6218 veces)

0 Usuarios y 1 Visitante están viendo este tema.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Problema al cerrar aplicación
« en: Octubre 12, 2010, 02:56:08 pm »
Buenas.
Tengo un proyecto donde uso el control de usuario ucBtnSkin obtenido de http://www.recursosvisualbasic.com.ar/htm/ocx-componentes-activex-dll/214-boton-checkbox-optionbutton-con-skin.htm
Todo fue muy bien.

Sucede que he querido crear algo similar a los tabs de un navegador pero con Forms. Ya que requiero abrir el mismo formulario varias veces (para atender diversas peticiones y quiero evitar abrir la aplicación varias veces), esto también lo tocamos en otro hilo.
El asunto lo logre usando un form donde en ese form tengo un PictureBox y en ese PictureBox cargo el formulario, de tal manera que cargo dinamicamente pictures y en ese nuevo picture cargo el formulario en cuestión.
Pues bien, este formulario tiene diversos controles y también usa el ucBtnSkin.

El asunto es que cuando descargo los formularios "hijos" y luego cierro la aplicación el VB6 se cae. Si genero la aplicación y hago el mismo proceso de cerrar la aplicación la aplicación se queda colgada y solo queda matarla.

He debuggeado y he visto que cuando hago el unload se llama al ucBtnSkin y al terminar el debuggeo no cae pero tampoco cierra, esto solo pasa si intento descargar el formulario incrustado en los pictures mas no en los formularios cargados normalmente, aun sigo estudiando ese código del ucBtnSkin para ver como lograr que al descargar el form no entre alli.
O quizá estoy administrando mal el cerrar el formulario, uo hago el nothing a form pero quizá me falta algo mas, todo me hace sospechar de que creo no estoy cerrando bien el UC.

Agradecería me pueden dar una orientación (porfa que no sea convertir el UC en ocx, al menos quiero insistir en resolverlo y si ya no se logra ni modo lo encapsulo en un OCX, pero quier evitar esto)

Miren, cuando le doy a cerrar al form mediante un botón que tiene este código

Set frmPedidoHacer = Nothing
Unload Me

y cuando va a ejecutar la linea Unload Me se mete a:

    If (Ambient.UserMode And IsWindowVisible(UserControl.hwnd) > 0) Or _
       (Ambient.UserMode = False) Then
        If mFlagReadInitProp = False Then
            Call mUpdateBtn(Normal)
        End If
    End If

OJO: El boton que presiono en un simple commandbutton, para salir quisiera evitar que se invoque al UC y creo que alli lo tendría resuelto.
P.D.: Cuando entro al código anterior y detengo con el stop el VB6 se cae ¿esto es normal?
P.d.2: Todas estas atrocidades ocurren solo en los formularios metidos en el picture, en otros formularios que tienen el ucBtnSkin y hago el unload no se mete al codigo del UC.


Gracias.
Me encuentras en YAcosta.com

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Problema al cerrar aplicación
« Respuesta #1 en: Octubre 12, 2010, 03:18:39 pm »
Hola ivan la verdad es medio complicado poder reproducir tu situación, no podes armar algo parecido con solo esa parte y subir el ejemplo a un lugar para descargar y ver donde esta el error.

Saludos.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema al cerrar aplicación
« Respuesta #2 en: Octubre 12, 2010, 03:20:33 pm »
Si tienes razón, no lo había pensado, voy a hacerlo ahora mismo
Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema al cerrar aplicación
« Respuesta #3 en: Octubre 12, 2010, 04:45:30 pm »
Ya esta. Mira no deberia dar problema ya que quite todo lo referente a la conexion de la BD y demas chichiricosas, por alli se me colaron otros forms que no son llamados, no son necesarios.
El proceso donde se cae es:
1.- Ejecutas y presionas el boton de la "cajita fuerte".
2.- se abre un form que tiene una pestaña
3.- Abajo hay un botón que dice "Cerrar todo", le das alli y el form se cierra
4.- Luego cierra el programa y se cae el VB6, aqui mi problema.
http://www.4shared.com/file/MsBgxrXp/CODIGO.html


pd: No borres el proyecto que sobre quisiera hacerte otra preguntilla, pero primero veamos este punto.

Muchisimas gracias maestro Yoda.

Me encuentras en YAcosta.com

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Problema al cerrar aplicación
« Respuesta #4 en: Octubre 12, 2010, 07:19:11 pm »
hola ivan, mira hay una molificación en la que no da error pero vas a tener que cambiar ciertas cosas para que funcione correctamente, vos después te vas a dar cuenta

son estas dos rutinas el Form_load y el  btnCerrar_Click
lo que hice fue eliminar frmPedidoHacer como objeto unico y lo puse como parte de la colección, y después hay que hacer es asegurarse de que se descarguen los formularios hijos antes de que se destrulla el contenedor. (btnCerrar), por lo visto esto no es problema del ucBtnSkin sino por hacer un SetParent cuando utilizas un mdi child

Código: [Seleccionar]
Private Sub btnCerrar_Click()
    Dim frm As Form
    For Each frm In FormsCol
        Unload frm
    Next

    Unload Me
End Sub

Private Sub Form_Load()
Dim NewForm As New frmPedidoHacer
Me.Top = 0: Me.Left = 0: Me.Height = 9465: Me.Width = 15315
lblMEMP_NBRE(0).Caption = qGMEMP_NBRE1
Set FormsCol = New Collection
FormsCol.Add NewForm

Call Incrustar_Formulario(NewForm, Pic(0))
NewForm.lblMEMP_NBRE = qGMEMP_NBRE1
NewForm.LblMEMP_ID = qGMEMP_ID1

'Dim rsE As New ADODB.Recordset
'rsE.Open sqlMEMP_BUS(qGMEMP_ID), dB, 1, 1
'NewForm.lblControlContable = rsE.Fields("MEMP_CONT")


lblPrimCarga = "NO"
End Sub
« última modificación: Octubre 12, 2010, 07:22:27 pm por LeandroA »

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema al cerrar aplicación
« Respuesta #5 en: Octubre 12, 2010, 11:48:28 pm »
guauuu, gracias mi estimado, esto amerita quedarme esta noche hasta las 3 am para aplicar y entender el tema, lo haré hoy y te cuento como me fue mañana.
Un abrazo y muchas gracias.
Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema al cerrar aplicación
« Respuesta #6 en: Octubre 13, 2010, 02:04:04 am »
Funciona perfectamente. Me hiciste ver mi error, muchas gracias.
Muchas gracias men, me salvaste.

Doc, ahora quisiera proponer un reto (esto aun no se lo digo al cliente pero estoy seguro que se le va a ocurrir pedírmelo) y es que como esta ventana se usara en punto de venta y antes ellos abrían la aplicación varias veces, pues pasaban de una ventana a otra usando el Atl Tab. Así que, la pregunta, propuesta o pedido, ¿es como poder pasar de una ventana a otra usando teclado?
Yo pienso que para la primera vez obligaría a usar el mouse porque debe seleccionar la empresa.
el form frmPedidoHacer tendria el keyPreview en true y capturo teclas de función para simular los click sobre los tabs.
Lo que quiero es usar el Alt + Flecha izq para ir a la ventana de la izquierda y Alt + Flecha Derecha para ir a la ventana de la derecha.
Entonces tendría que usar como base el index actual para restar o para sumar y poder simular el cambio de tab.

Bueno, es lo que se me ocurre, voy a probarlo, si tuvieras (o alguien) una idea mejor me gustaría leerla.

Por lo pronto el problema principal esta bien resuelto.


P.d (el otro dia alguien me llamo la atención porque escribí "Doc" diciéndome que no era doctor, porfa yo lo uso porque es una manía o costumbre que tengo de llamar a los amigos de esa forma, no lo tomes(n) a mal, gracias)
« última modificación: Octubre 13, 2010, 02:32:00 am por YvanB »
Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema al cerrar aplicación
« Respuesta #7 en: Octubre 13, 2010, 01:29:17 pm »
guaaa, salió mas sencillo de lo que pensé.

Use la tecla control con la flecha a la derecha y la izquierda y en el keydown del form puse esto:
Código: (vb) [Seleccionar]
If Shift = 2 Then
   If KeyCode = 39 Then
        If KeyCode = 39 Then: frmPedidoContenedor.Pic(Val(lblContenedor) + 1).ZOrder
        If KeyCode = 37 Then: frmPedidoContenedor.Pic(Val(lblContenedor) - 1).ZOrder
   End If
End If
Ya solo tengo que pulir para cuando llega al final o al inicio del tab, pero ya eso es sencillo.
« última modificación: Octubre 13, 2010, 01:30:56 pm por YvanB »
Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema al cerrar aplicación
« Respuesta #8 en: Octubre 15, 2010, 11:05:16 pm »
Leandro. un preguntilla

Te ha pasado que si tienes cargada de entrada la Empresa 1 (formulario) y pones digamos un valor cualquiera por probar y de allí vas al TAB y seleccionas digamos la Empresa 2 (abre otro formulario), la primera se descargo?, esto me esta pasando y no logro resolver, luego de que cargo la tercera ya no hay problema pero para la primera vez que uso el tab me hace una copia del primero quedando como segundo y el primer form quedo descargado.
Voy a seguir indagando pero si por allí logras capturar el porque pasa esto te agradecería mucho tu comentario.

Gracias.
Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema al cerrar aplicación
« Respuesta #9 en: Octubre 16, 2010, 08:09:23 pm »
Leando, despues de varias horas de andar en tinieblas ya encontré la respuesta a mi problema jajaaj, Wolf me va a matar.

El problema que tenia es que yo empezaba a ordenar las cosas usando el index del picture en cero hasta 4 (o sea 5 ventanas), pero acabo de darme cuenta que las colecciones empiezan desde 1 (pensé que era como los index), por eso que cuando cargaba el segundo me lo quitaba del que ya tenia cargado... que wada, bueno ya esta esto resuelto, jeje.
Me encuentras en YAcosta.com

wolf_kof

  • Visitante
Re:Problema al cerrar aplicación
« Respuesta #10 en: Octubre 18, 2010, 05:17:43 pm »
 :o :o :o :o :o :o :o :o :o :o    8) no mato despues de mi desalluno