Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Unload en ComboBox (vb6)

Estas en el tema de Unload en ComboBox (vb6) en el foro de Visual Basic clásico en Foros del Web. Hola. Estoy haciendo un programa de gestión de un centro de estudios, y en la sección donde se crean, editan y borran los cursos, tengo ...
  #1 (permalink)  
Antiguo 02/05/2007, 03:02
 
Fecha de Ingreso: abril-2007
Mensajes: 114
Antigüedad: 17 años
Puntos: 2
Pregunta Unload en ComboBox (vb6)

Hola.

Estoy haciendo un programa de gestión de un centro de estudios, y en la sección donde se crean, editan y borran los cursos, tengo un problema con un combo box. En el Combo se almacenan todos los cursos, y al hacer click en el Combo, se cargan los elementos de una matriz de controles correspondientes a las asignaturas de ese curso. Evidentemente, al cambiar de Curso en el Combo, y antes de cargar la matriz de controles, debo Descargar (Unload) los elementos que he creado para el anterior curso, para luego proceder a cargar los del Nuevo.

Resulta que al hacerlo me da un error. He revisado el código y no tiene ningún problema. He accedido a la ayuda del programa y he descubierto que Visual Basic 6 no permite realizar un 'Unload' en el evento click o change de un Combo Box.

Quisiera, si alguien lo sabe, que me explicarais cual es la causa de esta restricción y si existe, algún truco o alternativa para saltársela. De momento estoy utilizando un ListBox que no me da problemas, pero es solo una medida temporal para poder seguir elaborando el programa. Necesito ayuda con el combo.

Gracias de antemano.

Un saludo
  #2 (permalink)  
Antiguo 02/05/2007, 14:02
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Re: Unload en ComboBox (vb6)

a ver.... si quieres quieres cargar nuevos cursos en el combo, pero para eso debes descargar los cursos anteriores..... yo lo haria con un clear ej: combo1.clear y despues le cargo los nuevos datos, lo limpio y lo vuelvo a cargar, espero sea eso porque no entendi muy bien la consulta
  #3 (permalink)  
Antiguo 02/05/2007, 16:15
 
Fecha de Ingreso: abril-2007
Mensajes: 114
Antigüedad: 17 años
Puntos: 2
Re: Unload en ComboBox (vb6)

No, vamos a ver. Los cursos del combo son siempre los mismos. El caso es que al cambiar de curso en el combo (en el evento combo_click), se deberían descargar los elementos de una matriz de controles correspondiente a las asignaturas, para posteriormente, cargar los de las asignaturas del curso seleccionado. El funcionamiento debería ser ese.

Lo que ocurre, es que inexplicablemente Visual Basic 6 no me permite hacer un 'Unload' de los elementos de la matriz de controles en el evento combo_click. De hecho, he mirado en la ayuda del programa enlazando desde ese error y literalmente dice que "No se puede realizar un Unload en el evento click o Change de un Combo", y no da más datos sobre las causas o posibles soluciones.

Para quien no entienda mi pregunta que pruebe a crear un proyecto en el que al hacer click en un combo tenga que descargar (unload) elementos de una matriz de controles, que por cierto, deben ser creados en tiempo de ejecución.

Siento daros la lata, pero es que esta duda me tien carcomido. Un saludo y gracias.
  #4 (permalink)  
Antiguo 11/10/2007, 16:01
Avatar de taZan  
Fecha de Ingreso: octubre-2007
Ubicación: El Palo - MÁLAGA
Mensajes: 39
Antigüedad: 16 años, 6 meses
Puntos: 1
De acuerdo Re: Unload en ComboBox (vb6)

Cita:
Iniciado por paloto Ver Mensaje
He accedido a la ayuda del programa y he descubierto que Visual Basic 6 no permite realizar un 'Unload' en el evento click o change de un Combo Box.

Quisiera, si alguien lo sabe, que me explicarais cual es la causa de esta restricción y si existe, algún truco o alternativa para saltársela.
Bueno PALOTO, te voy a dar una solución.

Como tu bien dices Visual Basic no permite hacer el 'unload' desde el evento Combo_Click, en realidad no lo permite desde otros eventos de muchos mas controles. A ese respecto no te puedo responder, he estado buscando información y no encuentro una explicación a este proceder.

Lo que si puedo hacer es darte una alternativa, apunta:


'-----------------------------------------------------
' declararemos una variable publica en un
' modulo para manejar la siguiente accion,
' la del combo(x)_click
'-----------------------------------------------------
Public des_ele As String


'-----------------------------------------------------
' definiremos el evento click del combobox,
' con esto se envian las pulsaciones Alt+F4
' que provocarian el cierre el formulario
'-----------------------------------------------------
Private Sub Combo1_Click()
des_ele = "si"
SendKeys "%{F4}"
End Sub


'-----------------------------------------------------
' crearemos el codigo que interceptara el
' envio de las pulsaciones que provocarian
' la finalizacion de la aplicacion
'-----------------------------------------------------
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If des_ele = "si" Then
des_ele = ""
Cancel = True

End If
End Sub


Justamente aqui, entre las lineas 'Cancel = True' y 'End If' es donde tienes que hacer el 'unload' de los controles, o la llamada al procedimiento que los descarga.

Te puedo decir que me he tirado toda una tarde devanandome el seso para conseguirlo y, como he visto tu post en un par de ocasiones, queria compartirlo contigo y con el resto.

Aunque he de ser sincero, he estado a puntito de no hacerlo. El motivo: me toca muchos los huevos el tener que andar registrandome en foros y no poder meter un post como invitado o anonimo... estais leyendo administradores???:-p

Ala chaval, que te sea de buen provecho.

Un saludo a tod@s!!!!

Última edición por taZan; 11/10/2007 a las 17:35
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:19.