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

favor ayuda

Estas en el tema de favor ayuda en el foro de Visual Basic clásico en Foros del Web. muy buenas mire que estoy realizando un programa sobre la quinela y utuizo el siguiente codigo para que se seleccione 6 check automaticamente con el ...
  #1 (permalink)  
Antiguo 15/03/2011, 10:19
 
Fecha de Ingreso: diciembre-2010
Mensajes: 11
Antigüedad: 13 años, 11 meses
Puntos: 0
favor ayuda

muy buenas mire que estoy realizando un programa sobre la quinela y utuizo el siguiente codigo para que se seleccione 6 check automaticamente con el siguiente codigo
Private Sub Command2_Click()
Dim a As Integer
Dim i As Integer
i = 0

Do
m = CInt(Int((48 * Rnd) + 1))
chk0(m).Value = vbChecked
i = i + 1

If chk0(m) = 49 Then
m = m - 1
End If

If chk0(m).BackColor = vbGreen Then

m = m - 1
End If
'Label1.Caption = m
Loop Until (i = 6)
If i = 6 Then
Command2.Enabled = False
a = 0
Do
chk0(a).Enabled = False
a = a + 1
Loop Until (a = 50)


End If
End Sub


pero al momento de aplicarlo no solo escoge 6 sino que se aplica a 5 check o a veces a 7
me podrian dar alguna forma de corregir ese error o evitar y que solo se selecciones 6 check

gracias
  #2 (permalink)  
Antiguo 15/03/2011, 11:01
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
Respuesta: favor ayuda

El problema es que si te sale dos veces el mismo número al hacer el random vuelves a poner ese check, pero le sumas uno a i por lo que te cogera un check menos (ya que uno te lo ha cogido dos veces). El caso extremo sería que te saliera con el random seis veces el mismo número y por tanto solo te aparecería un check (que has habilitado seis veces, pero visualmente será uno solo)

Antes de ponerlo checked tienes que comprobar si ya está. Si no está lo pones checked y sumas uno a i, si está ya checked no haces nada y sacas otro número aleatorio.

Código vb:
Ver original
  1. Do
  2. m = CInt(Int((48 * Rnd) + 1))
  3. If (chk0(m).Value != vbChecked)
  4. chk0(m).Value != vbChecked
  5. i = i + 1
  6.  
  7. If chk0(m) = 49 Then
  8. m = m - 1
  9. End If
  10.  
  11. If chk0(m).BackColor = vbGreen Then
  12.  
  13. m = m - 1
  14. End If
  15. End If
  16. Loop Until (i = 6)
  #3 (permalink)  
Antiguo 16/03/2011, 13:08
 
Fecha de Ingreso: diciembre-2010
Mensajes: 11
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: favor ayuda

gracias por la respuesta lo voy a probar y haber como salen las cosas te lo cuento
  #4 (permalink)  
Antiguo 25/03/2011, 12:39
 
Fecha de Ingreso: diciembre-2010
Mensajes: 11
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: favor ayuda

muy buenas pues te comento que no se como corregirlo trato de hacer lo que indicas pero lo que pasa es que se cuelga el visual y no funciona favor de ayudarme nuevamente
  #5 (permalink)  
Antiguo 25/03/2011, 15:31
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: favor ayuda

No veo muy claro que intentas hacer, pero si solo quieres poner en verde y activos 6 checkbox de 49 que supongo que estarán indexados del 0 al 48, no necesitas tanto codigo.

Algo así valdría:

Código vb:
Ver original
  1. i=0
  2. Do
  3.   m = Int(49 * Rnd)
  4.   If (chk0(m).Value <> vbChecked) Then
  5.     chk0(m).Value = vbChecked
  6.     chk0(m).BackColor = vbGreen
  7.     i = i + 1
  8.   End If
  9. Loop Until (i = 6)
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #6 (permalink)  
Antiguo 26/03/2011, 16:09
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: favor ayuda

mira aquí acabo de poner en practica el ejemplo de pkj http://www.box.net/shared/y7ivcdxz12
nadamas lo modifique un poco.
  #7 (permalink)  
Antiguo 30/03/2011, 08:45
 
Fecha de Ingreso: diciembre-2010
Mensajes: 11
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: favor ayuda

Muchas gracias por su ayuda es justo lo que estaba buscando

Etiquetas: favor
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 23:15.