Cambiar estado al mover el VScrollBar

Iniciado por Chuxxx, 16 Mayo 2010, 01:42 AM

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

Chuxxx

Hola chicos, resulta que tengo que hacer un sistema que administre 3 bombas de agua, y en tal tanque hay 2 medidores, y al medidor lo hice con un VScrollBar, asi va quedando mi proyecto:



Y tengo que hacer para que cuando suba el scroll, los dos segundos cuadraditos se pongan en verde, y cuando baje se ponga solo el de abajo, o ninguno si esta a 0, y a la medida que esta el cuadradito, mi pregunta es, como hago para que cuando mueva el scroll cambie el label de color?

Gracias por la ayuda... ;)

Psyke1

Mira esto:
Código (vb) [Seleccionar]

Dim miNivel As Integer

Private Sub Form_Load()
        miNivel = SCRLL.Value
End Sub

Private Sub SCRLL_Change()
    If SCRLL.Value > miNivel Then
        MsgBox "estoy subiendo el nivel"
    Else
        MsgBox "estoy bajando el nivel"
    End If
    miNivel = SCRLL.Value
End Sub


Con esto de base solo tendrias que adaptarlo a tu proyecto para que los shapes cambien de color...
Espero que te sirva... ;)

Salu2! :)

Chuxxx

Graciaas.. Anda perfecto.. Pero faltó una cosa...
Que cuando el scrollbar este a la mitad, se prenda en verde solo la de abajo, y la de arriba quede en rojo, como diciendo que el agua llega al primer medidor...
Se podrá?
(Como dice mi profe, en la programacion se puede TODO, lo que vos QUIERAS xD asi que si, se tiene que poder xD)

Psyke1

claro ;)
Seria así:
Código (vb) [Seleccionar]

Dim miNivel As Integer

Private Sub Form_Load()
        miNivel = SCRLL.Value
End Sub

    If SCRLL.Value = SCRLL.Max / 2 Then
        MsgBox "estoy en el medio"
    ElseIf SCRLL.Value > miNivel Then
        MsgBox "estoy subiendo el nivel"
    Else
        MsgBox "estoy bajando el nivel"
    End If
    miNivel = SCRLL.Value
End Sub


Salu2! ;D

Chuxxx

#4
No sale, sale solo lleno o vacio, el del medio no, será que deberá ser muy exacta la posicion para que quede en el medio?

Private Sub VScroll2_Change()
If VScroll2.Value > MedidorNivel3 Then
       Label5.BackColor = vbRed
       Label6.BackColor = vbRed
       MsgBox "El medidor del nivel 3 detecta baja cantidad de agua"
   ElseIf VScroll2.Value < MedidorNivel3 Then
       Label5.BackColor = vbGreen
       Label6.BackColor = vbGreen
       MsgBox "El medidor del nivel 3 detecta alta cantidad de agua"
   ElseIf VScroll2.Value = VScroll2.Max / 2 Then
       Label5.BackColor = vbRed
       Label6.BackColor = vbGreen
       MsgBox "estoy en el medio"
End If
       MedidorNivel3 = VScroll2.Value
End Sub

Psyke1

#5
Cita de: *PsYkE1* en 16 Mayo 2010, 18:36 PM
claro ;)
Seria así:
Código (vb) [Seleccionar]

Dim miNivel As Integer

Private Sub Form_Load()
       miNivel = SCRLL.Value
End Sub

Private Sub VScroll2_Change()
   If SCRLL.Value = SCRLL.Max / 2 Then
       MsgBox "estoy en el medio"
   ElseIf SCRLL.Value > miNivel Then
       MsgBox "estoy subiendo el nivel"
   Else
       MsgBox "estoy bajando el nivel"
   End If
   miNivel = SCRLL.Value
End Sub


Salu2! ;D

Tienes que hacerlo en el orden que te puse yo, porque sino, detecta antes que has aumentado el value y sales del IF antes de que compruebe que esta en la mitad, ¿entiendes?:huh:
Prueba con esto:

Código (vb) [Seleccionar]
Private Sub VScroll2_Change()
   If VScroll2.Value = VScroll2.Max / 2 Then
       Label5.BackColor = vbRed
       Label6.BackColor = vbGreen
       MsgBox "estoy en el medio"
   ElseIf VScroll2.Value > MedidorNivel3 Then
       Label5.BackColor = vbRed
       Label6.BackColor = vbRed
       MsgBox "El medidor del nivel 3 detecta baja cantidad de agua"
   Else
       Label5.BackColor = vbRed
       Label6.BackColor = vbRed
       MsgBox "El medidor del nivel 3 detecta baja cantidad de agua"
   End If
   MedidorNivel3 = VScroll2.Value
End Sub


Y si, es exacto, es exactamente la mitad del scroll... :-\
Si el maximo del Scroll no es par, la mitad no te dara exacta, entonces pones el doble del valor, asi la mitad del nuevo Max seria el antiguo Max :P (no se si me explique...)

Espero haberte ayudado! ;)

Salu2! ;D

Chuxxx

#6
EDIT: Encontre ya como es... :D

Psyke1

Cita de: Chuxxx en 16 Mayo 2010, 22:31 PM
uhh esta dificil encontrarle....
Pero funciona, ¿verdad? :) Investiga un poco que nadie mejor que tu va ha saber lo que quieres... ;)
Respecto a lo del And en el If seria asi:
Código (vb) [Seleccionar]

If Date = "16/05/2010" And Time = "22:48:50" Then Msgbox "*PsYkE1* no te va ha hacer los deberes todos los dias..."


:xD

Salu2! :)

Chuxxx

Jajaja justo habia encontrado como... Sisi funciona!! Gracias por la ayuda, ya quiero terminar el curso y ayudar a otros noobs, pero bueno, todo a su tiempo ^^ Si encuentro algo mas vuelvo a molestar por aca ^^ Gracias

CitarIf Date = "16/05/2010" And Time = "22:48:50" Then Msgbox "*PsYkE1* no te va ha hacer los deberes todos los dias..."
Bueno ese code! xDD

Chuxxx

#9
Hola *PsYkE1* otra vez te vuelvo a molestar, con esto que no entiendo :S Y me fije en internet y no dá, mira esta imagen...



Ese menu, me salta "a veces", para el label, para dejar que salte, tuve que borrarlo y poner un label nuevo, y pude hacer bien el codigo, y ya he probado hacer uno de cada uno en ese menu y me sale este mensaje:



PD: Mi VB6 es medio malo :S Sepan disculparlo xDD