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

Dudas con checked list box en visual basic 6.0

Estas en el tema de Dudas con checked list box en visual basic 6.0 en el foro de Visual Basic clásico en Foros del Web. Buenos dias estimados foristas... Tengo una consulta... tengo un formulario con un checked listbox para darle la posibilidad al usuario de que seleccione la alternativa ...
  #1 (permalink)  
Antiguo 18/12/2009, 07:14
 
Fecha de Ingreso: septiembre-2009
Ubicación: Venezuela
Mensajes: 92
Antigüedad: 14 años, 7 meses
Puntos: 1
Exclamación Dudas con checked list box en visual basic 6.0

Buenos dias estimados foristas...

Tengo una consulta... tengo un formulario con un checked listbox para darle la posibilidad al usuario de que seleccione la alternativa que mas le convenga. Que pasa.... cuando el selecciona una opción cualquiera el sistema, le muestra un valor numerico el cual lo mando a un textbox...

Ahora bien.. cual es el problema ??? Como puedo hacer para que cuando el usuario se equivoque y quiera reversar la opción, se reste el valor numérico marcado en el checked listbox.

les pego el código.

saludos.


Dim i As Integer

For i = 0 To List1.ListCount - 1

If List1.Selected(i) = True Then
Text3.Text = List1.ItemData(i)
Call buscatiempo

End If

Next
  #2 (permalink)  
Antiguo 18/12/2009, 08:45
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Dudas con checked list box en visual basic 6.0

Es bastante confuso lo que pides, ya que no sumas valores en el textbox, sino que solo lo cargas con el valor de la última linea seleccionada en el ListBox.

Si quieres usar solo el valor de una linea seleccionada deberias poner un exit for despues del call.

Código vb:
Ver original
  1. Dim i As Integer
  2.   For i = 0 To List1.ListCount - 1
  3.     If List1.Selected(i) = True Then
  4.       Text3.Text = List1.ItemData(i)
  5.       Call buscatiempo
  6.       Exit For
  7.     End If
  8.   Next i
y mejor si marcas como False la propiedad .MultiSelect del ListBox, (que imagino que tendrá, aunque no he usado nunca ese tipo de listbox), para que solo se pueda seleccionar una linea.

Si quieres sumar los valores de todas las lineas seleccionadas deberias poner text3="0" antes del for y text3 = text3 + list1.itemdata(i) dentro del if

Código vb:
Ver original
  1. Dim i As Integer
  2.   Text3.Text = "0"
  3.   For i = 0 To List1.ListCount - 1
  4.     If List1.Selected(i) = True Then
  5.       Text3.Text = Text3.Text + List1.ItemData(i)
  6.     End If
  7.   Next i
  8.   Call buscatiempo

Con este código en el evento Click del ListBox se calcula el valor del text3 cada vez que marcas o desmarcas una línea.

Si no te sirve nada de esto es que no he entendido lo que quieres conseguir.

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #3 (permalink)  
Antiguo 29/12/2009, 08:21
 
Fecha de Ingreso: septiembre-2009
Ubicación: Venezuela
Mensajes: 92
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Dudas con checked list box en visual basic 6.0

Excelente tu aporte... Ahora mi pregunta es la siguiente... como puedo hacer para que reste ???? por ejemplo.. seleccionastes un item y era 2, seleccionastes un segundo y tambien daría 2... en el text3 tendríamos 4, pero resulta que el segundo item que seleccione no era... solo me quería quedar con el primero.. como puedo hacer para que cuando desmarque el segundo item en vez de tener 4 en el text 3 tenga 2... me explico ???

saludos.
  #4 (permalink)  
Antiguo 29/12/2009, 18:31
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Dudas con checked list box en visual basic 6.0

El problema es que no puedo probar con ese listbox porque creo que es de .net, pero si funciona como creo, solo tienes que copiar el segundo código que puse dentro del evento click del listbox.
Cada vez que haces click, se pone text3 a cero y se vuelven a sumar los elementos que aún estén seleccionados. Dá igual si es para marcar o desmarcar, recalcula todo a cada click.

Si no es eso lo que buscas es que no te he entendido bien.

Suerte.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #5 (permalink)  
Antiguo 06/01/2010, 10:16
 
Fecha de Ingreso: septiembre-2009
Ubicación: Venezuela
Mensajes: 92
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Dudas con checked list box en visual basic 6.0

estimado amigo... el código me funciona PERO cuando desmarco no me resta el valor... creo que no me explico bien jejeje... mira... imaginate que el listbox tiene 3 opciones y cada una de ella tiene una ponderación de 3 puntos... cada opción que tildas pasa a una variable y luego a un textbox para mostrar el resultado... supongamos que tildas las 3 alternativas... si sumamos las opciones marcadas nos daría un total de 9 puntos correcto ?? bueno.... resulta que marcastes una demás... entonces quieres que cuando desmarques una de las opciones en vez de tener un valor de 9 puntos tengas un valor de 6... ahora si me explico ???

Saludos !
  #6 (permalink)  
Antiguo 06/01/2010, 19:56
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Dudas con checked list box en visual basic 6.0

Hola, proba esto:

Código vb:
Ver original
  1. Option Explicit
  2.  
  3. Private Sub Form_Load()
  4.     With List1
  5.         .AddItem "Opcion 1"
  6.         .AddItem "Opcion 2"
  7.         .AddItem "Opcion 3"
  8.     End With
  9. End Sub
  10.  
  11. Private Sub List1_Click()
  12.     Dim vPuntos As Integer
  13.     Dim i As Integer
  14.    
  15.     For i = 0 To List1.ListCount - 1
  16.         If List1.Selected(i) = True Then
  17.             vPuntos = vPuntos + 3
  18.         End If
  19.     Next i
  20.    
  21.     MsgBox vPuntos
  22. End Sub

tambien podes ponerlo en el evento ItemCheck, ¿ pregunta en que visual basic estas programando ?

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #7 (permalink)  
Antiguo 08/01/2010, 09:19
 
Fecha de Ingreso: septiembre-2009
Ubicación: Venezuela
Mensajes: 92
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Dudas con checked list box en visual basic 6.0

Excelente la solución amigo !!!! ahora tengo una pregunta...

Como puedo hacer para que las opciones del checked box se almacenen en la base de datos... ???

me explico.. supongamos que seleccionamos la opcion 1 y la opción 2.... como hago para que al darle click a un botón me grabe los campos que seleccione ??? porque tengo la opción de que marcas uno y lo graba....

Imaginate que tengas 10 opciones y selecciones 6... como podrias marcarlos... y al final cuando estes de acuerdo con el resultado le des click a grabar y te los almacene todos en la base de datos !!!

Saludos.

Carlos.
  #8 (permalink)  
Antiguo 10/01/2010, 14:13
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Dudas con checked list box en visual basic 6.0

el tema es que ni idea que son las opciones que tenes, o sea ¿son opciones que cargas de sde codigo? ¿o esas opciones salen de una tabla? yo te doy explico como seria, pero ni idea si es lo qu vos estas haciendo, por ejemplo:

supongamos que tenes un ABM de "Proveedores de Gaseosas", y al mismo tiempo tenes un ABM de "Tipos de Gaseosas", o sea que en al base de datos tenes 2 tablas una que almacena los proveedores y la otra los tipos de gaseosa, por ejemplo:

Tabla Proveedores:

ID Nombre Dirección

1 Jose Rivadavia 9999
2 Mariano Balcarce 2300

Tabla Tipos de Gaseosa

ID Nombre

1 Coca Cola
2 Sprite
3 Pepsi

entonces supongamos que entro al ABM de proveedores y selecciono el Proveedor "Jose", cuando entro a la pantalla tengo un ListBox con los "Tipos de Gaseosa" que vende ese proveedor (o sea que en el listbox cargo toda la tabla "Tipos de Gaseosa")

entonces selecciono la opcion que yo quiero que tenga ese proveedor y despues lo guardo, el tema aca es que al guardarlo debe guardar en una tabla aparte las relaciones Proveedor-Tipo de Gaseosa, entonces cuando entre al proveedor "Jose" nuevamente, me aparescan seleccionadas las opciones que habia guardado.entonces debes tener una tabla aparte que guarde el ID del proveedor y "LOS" ID del tipo de gaseosa, ya que un proveedor puede tener varias gaseosas.entocnes la tabla quedaria:


Tabla Proveedores-Tipos

ID Proveedor ID Gaseosa
1 1
1 2
1 3

esto quiere decir que el proveedor con ID = 1 tiene las 3 opciones del listbox chequeadas.

entonces ya esta explicado como es, ahora el tema de como guardar y como cargar.

Para Guardar:

debes guardar en la tabla de relaciones el ID del proveedor que estas viendo actualmente, y TODOS los ID de las gaseosas que estan seleccionadas en el listbox.esto es facil es casi como el codigo que te puse antes, debes recorrer el listbox y para cada item seleccionado que encuentre, vas haciendo un INSERT INTO en la tabla de relaciones, entocnes te guarda todos los items seleccionados en la tabla.obviamente antes de guardar debes borrar todos los items que tenga ese proveedor sino te va a duplicar registros.

Para Cargar:

debes cargar los tipos de gaseosa de la tabla y ponerlos en el listbox, y despues para chequar los items que guardaste, debes hacer un SELECT a la tabla de relaciones que te traiga todos los items que tenga ese proveedor(si es que tiene) , entonces te queda un recordset, recorres ese recordset y vas chequeando los items del listbox que coincidan.

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
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 03:39.