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

Reconocer CheckBoxes

Estas en el tema de Reconocer CheckBoxes en el foro de Visual Basic clásico en Foros del Web. Hola a todos: Con unas variables habilito (enabled = True / False) segun el Numero 0 o 1 Código: Private Sub c1_Change(Index As Integer) If ...
  #1 (permalink)  
Antiguo 29/02/2012, 19:48
 
Fecha de Ingreso: septiembre-2009
Mensajes: 108
Antigüedad: 14 años, 10 meses
Puntos: 1
Reconocer CheckBoxes

Hola a todos:
Con unas variables habilito (enabled = True / False) segun el Numero 0 o 1

Código:
Private Sub c1_Change(Index As Integer)
    If Val(c1(1)) <> 0 Or Val(c1(2)) <> 0 Or Val(c1(3)) <> 0 Or Val(c1(4)) <> 0 Or Val(c1(5)) <> 0 Then
        chkDoc(1).Enabled = True
    Else
        chkDoc(1).Enabled = False
    End If
End Sub
Private Sub c2_Change(Index As Integer)
    If Val(c2(1)) <> 0 Or Val(c2(2)) <> 0 Or Val(c2(3)) <> 0 Or Val(c2(4)) <> 0 Or Val(c2(5)) <> 0 Then
        chkDoc(2).Enabled = True
    Else
        chkDoc(2).Enabled = False
    End If
End Sub
Private Sub c3_Change(Index As Integer)
    If Val(c3(1)) <> 0 Or Val(c3(2)) <> 0 Or Val(c3(3)) <> 0 Or Val(c3(4)) <> 0 Or Val(c3(5)) <> 0 Then
        chkDoc(3).Enabled = True
    Else
        chkDoc(3).Enabled = False
    End If
End Sub
Lo que hago es recibir un 1 o un 0 de cada uno de los textboxes :
c1(1), c2(1), c3(1)
c1(2), c2(2), c2(2)
c2(3), c3(3), c3(3)
c3(4), c4(4), c4(4)
c4(5), c5(5), c5(5)

Hasta aqui todo perfecto

Con esto lo que hago es poner en visible 3 CheckBox
chkDoc(1), chkDoc(2), chkDoc(3)

y dependiendo de la cantidad de CheckBox habilitados y Tildados voy a pasarle un valor (1 o 0) a un TextDocumentacion.Text

Asi lo estoy haciendo:
Código:
Private Sub chkDoc_Click(Index As Integer)
    If chkDoc(1).Enabled = True And chkDoc(1).Value = 1 Then
        TextDocumentacion.Text = 1
        chkDoc(1).Value = 1
    Else
        TextDocumentacion.Text = 0
        chkDoc(1).Value = 0
    End If
    If chkDoc(2).Enabled = True And chkDoc(2).Value = 1 Then
        TextDocumentacion.Text = 1
        chkDoc(2).Value = 1
    Else
        TextDocumentacion.Text = 0
        chkDoc(2).Value = 0
    End If
    If chkDoc(3).Enabled = True And chkDoc(3).Value = 1 Then
        TextDocumentacion.Text = 1
        chkDoc(3).Value = 1
    Else
        TextDocumentacion.Text = 0
        chkDoc(3).Value = 0
    End If
End Sub
Pero el problema es que si estan habilitados los 3 checkbox y solo tildo el tercero, ya me pasa el valor 1 a TextDocumentacion.Text, y yo quiero que le pase el valor 1 si estan tildado los 3 o los 2 o 1, segun esten habilitados los chekbox

Desde ya muchas gracias a todos
  #2 (permalink)  
Antiguo 05/03/2012, 06:24
 
Fecha de Ingreso: junio-2008
Ubicación: Punta Alta, Argentina
Mensajes: 82
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Reconocer CheckBoxes

El problema que tenes es porque no esta bien encarado... los condicionales que pusiste (los IFs) estan trabajando independientemente uno del otro, es decir, el VB "razona primero If chkDoc(1).Enabled = True And chkDoc(1).Value = 1 Then y ejecuta, dependiendo del resultado. Luego, "razona" el siguiente If If chkDoc(2).Enabled = True And chkDoc(2).Value = 1 Then, y asi sucesivamente...

Lo que tienes que hacer es o encarar de otra forma, con otras sentencias, o hacer condicionales anidados... este ultimo es sencillo de probar, pero a la vez es engorrioso ya que para cada cosa que quieras verificar, seran mas y mas condicionales...
  #3 (permalink)  
Antiguo 05/03/2012, 06:29
 
Fecha de Ingreso: junio-2008
Ubicación: Punta Alta, Argentina
Mensajes: 82
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Reconocer CheckBoxes

algo sencillo que se me ocurre podria ser (sin colocar if anidados), colocando una variable a cada check y luego verificarla..
  #4 (permalink)  
Antiguo 07/03/2012, 05:01
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años
Puntos: 29
Respuesta: Reconocer CheckBoxes

Prueba asi:

Código vb:
Ver original
  1. Private Sub chkDoc_Click(Index As Integer)
  2.     CompruebaChecks
  3. End Sub
  4.  
  5. Private Sub CompruebaChecks()
  6.     TextDocumentacion.Text="0"
  7.     If chkDoc(1).Enabled = True And chkDoc(1).Value = 1 Then
  8.         TextDocumentacion.Text = "1"
  9.     End If
  10.     If chkDoc(2).Enabled = True And chkDoc(2).Value = 1 Then
  11.         TextDocumentacion.Text = "1"
  12.     End If
  13.     If chkDoc(3).Enabled = True And chkDoc(3).Value = 1 Then
  14.         TextDocumentacion.Text = "1"
  15.     End If
  16.  
  17.     If chkDoc(1).Enabled = True And chkDoc(1).Value = 0 Then
  18.         TextDocumentacion.Text = "0"
  19.     End If
  20.     If chkDoc(2).Enabled = True And chkDoc(2).Value = 0 Then
  21.         TextDocumentacion.Text = "0"
  22.     End If
  23.     If chkDoc(3).Enabled = True And chkDoc(3).Value = 0 Then
  24.         TextDocumentacion.Text = "0"
  25.     End If
  26. End Sub
  27.  
  28. Private Sub c1_Change(Index As Integer)
  29.     If Val(c1(1)) <> 0 Or Val(c1(2)) <> 0 Or Val(c1(3)) <> 0 Or Val(c1(4)) <> 0 Or Val(c1(5)) <> 0 Then
  30.         chkDoc(1).Enabled = True
  31.     Else
  32.         chkDoc(1).Enabled = False
  33.     End If
  34.     CompruebaChecks
  35. End Sub
  36.  
  37. Private Sub c2_Change(Index As Integer)
  38.     If Val(c2(1)) <> 0 Or Val(c2(2)) <> 0 Or Val(c2(3)) <> 0 Or Val(c2(4)) <> 0 Or Val(c2(5)) <> 0 Then
  39.         chkDoc(2).Enabled = True
  40.     Else
  41.         chkDoc(2).Enabled = False
  42.     End If
  43.     CompruebaChecks
  44. End Sub
  45.  
  46. Private Sub c3_Change(Index As Integer)
  47.     If Val(c3(1)) <> 0 Or Val(c3(2)) <> 0 Or Val(c3(3)) <> 0 Or Val(c3(4)) <> 0 Or Val(c3(5)) <> 0 Then
  48.         chkDoc(3).Enabled = True
  49.     Else
  50.         chkDoc(3).Enabled = False
  51.     End If
  52.     CompruebaChecks
  53. End Sub
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Etiquetas: checkboxes, reconocer
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 04:03.