Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Chuxxx en 16 Mayo 2010, 01:42 am



Título: Cambiar estado al mover el VScrollBar
Publicado por: Chuxxx en 16 Mayo 2010, 01:42 am
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:

(http://r.i.elhacker.net/cache?url=http://img193.imageshack.us/img193/7025/administraciondebombas.jpg) (http://img193.imageshack.us/i/administraciondebombas.jpg/)

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... ;)


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Psyke1 en 16 Mayo 2010, 01:55 am
Mira esto:
Código
  1. Dim miNivel As Integer
  2.  
  3. Private Sub Form_Load()
  4.        miNivel = SCRLL.Value
  5. End Sub
  6.  
  7. Private Sub SCRLL_Change()
  8.    If SCRLL.Value > miNivel Then
  9.        MsgBox "estoy subiendo el nivel"
  10.    Else
  11.        MsgBox "estoy bajando el nivel"
  12.    End If
  13.    miNivel = SCRLL.Value
  14. 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! :)


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Chuxxx en 16 Mayo 2010, 18:10 pm
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)


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Psyke1 en 16 Mayo 2010, 18:36 pm
claro ;)
Seria así:
Código
  1. Dim miNivel As Integer
  2.  
  3. Private Sub Form_Load()
  4.        miNivel = SCRLL.Value
  5. End Sub
  6.  
  7.    If SCRLL.Value = SCRLL.Max / 2 Then
  8.        MsgBox "estoy en el medio"
  9.    ElseIf SCRLL.Value > miNivel Then
  10.        MsgBox "estoy subiendo el nivel"
  11.    Else
  12.        MsgBox "estoy bajando el nivel"
  13.    End If
  14.    miNivel = SCRLL.Value
  15. End Sub

Salu2! ;D


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Chuxxx en 16 Mayo 2010, 20:02 pm
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?

Código:
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


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Psyke1 en 16 Mayo 2010, 20:38 pm
claro ;)
Seria así:
Código
  1. Dim miNivel As Integer
  2.  
  3. Private Sub Form_Load()
  4.        miNivel = SCRLL.Value
  5. End Sub
  6.  
  7. Private Sub VScroll2_Change()
  8.    If SCRLL.Value = SCRLL.Max / 2 Then
  9.        MsgBox "estoy en el medio"
  10.    ElseIf SCRLL.Value > miNivel Then
  11.        MsgBox "estoy subiendo el nivel"
  12.    Else
  13.        MsgBox "estoy bajando el nivel"
  14.    End If
  15.    miNivel = SCRLL.Value
  16. 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
  1. Private Sub VScroll2_Change()
  2.    If VScroll2.Value = VScroll2.Max / 2 Then
  3.        Label5.BackColor = vbRed
  4.        Label6.BackColor = vbGreen
  5.        MsgBox "estoy en el medio"
  6.    ElseIf VScroll2.Value > MedidorNivel3 Then
  7.        Label5.BackColor = vbRed
  8.        Label6.BackColor = vbRed
  9.        MsgBox "El medidor del nivel 3 detecta baja cantidad de agua"
  10.    Else
  11.        Label5.BackColor = vbRed
  12.        Label6.BackColor = vbRed
  13.        MsgBox "El medidor del nivel 3 detecta baja cantidad de agua"
  14.    End If
  15.    MedidorNivel3 = VScroll2.Value
  16. 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


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Chuxxx en 16 Mayo 2010, 22:31 pm
EDIT: Encontre ya como es... :D


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Psyke1 en 16 Mayo 2010, 22:50 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
  1. 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! :)


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Chuxxx en 16 Mayo 2010, 22:57 pm
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

Citar
If 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


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Chuxxx en 17 Mayo 2010, 18:06 pm
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...

(http://r.i.elhacker.net/cache?url=http://img257.imageshack.us/img257/1664/97236064.jpg) (http://img257.imageshack.us/i/97236064.jpg/)

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:

(http://r.i.elhacker.net/cache?url=http://img338.imageshack.us/img338/7121/43508958.jpg) (http://img338.imageshack.us/i/43508958.jpg/)

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


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Psyke1 en 17 Mayo 2010, 18:14 pm
mmmm
explicame que es lo que pasa exactamente y que no entiendes que no me aclaro... :-\

EDITO:
Lo que kieres es cambiar el color de fondo del Label Status, verdad?¿
Cambiale en nombre por Estado y me cuentas... :P

Salu2!


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Chuxxx en 17 Mayo 2010, 21:35 pm
Que yo le quiero cambiar el color de fondo a ese label, pero "a veces" me salta ese cartel para completar, que dice:

Código:
Count
Item
Lbound
UBound

No?
Y selecciono uno de esos (ya probe con todos) y me salta ese error, y no me deja cambiarle el color, porque si pongo directamente
Código:
label.backcolor = vbred
me salta: "El argumento no es opcional"

Pero lo mas raro es que a veces, por que a veces pongo

Código:
Status.backcolor = vbGreen

Y me anda perfecto...
Se entiende? xDDD

EDIT: Cambie el nombre a ESTADO y me sigue saltando eso...


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Psyke1 en 17 Mayo 2010, 21:53 pm
Pues siento decirte que no se de que se trata amigo... :(

Salu2!


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Maik33 en 18 Mayo 2010, 08:23 am
No se si sera esto pero cuando tienes una matriz de objetos (objetos con el mismo nombre pero con el index diferente) tienes que poner
Código:
NombreDelObjeto(Index).Propiedad
Ejemplo:
Código:
Label(2).backcolor = vbRed
O con lo de item y eso que dices
Código:
NombreDelObjeto.Item(index).propiedad
Ejemplo:
Código:
Label.Item(2).backcolor = vbRed
No se si es a lo que te refieres


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Psyke1 en 18 Mayo 2010, 09:00 am
Cierto, no se me habia ocurrido... :P ... Vaya ciego que estoy... :laugh:
Pues claro que es eso!! ( gracias  Maik33 ) ;)
Lo que pasa Chuxxx es que has hecho una matriz de controles...
Una matriz de controles es un nombre común que se le asigna a varios objetos pero con distintos Index para poder diferenciarlos...
Investiga un poco sobre las matrizes, son muy útiles a la hora de trabajar con varios objetos del mismo tipo...
En tu caso lo que tienes que hacer es mirar la propiedad Index del Label que quieres cambiar el color de fondo, seria asi:

Código
  1. Status(0).BackColor = vbBlack ' El 0 lo sustituyes por el Index de tu Label

Salu2! :)


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Chuxxx en 18 Mayo 2010, 17:24 pm
mmm porque esta con el mismo nombre? Bueno cuando despues a la tarde que tenga un tiempito veo el programita a ver si es eso...
Saludos y gracias Maik33! :D
Y a vos tambien *PsYkE1* xD


Título: Re: Cambiar estado al mover el VScrollBar
Publicado por: Chuxxx en 19 Mayo 2010, 03:27 am
Siii eso era.. Ahora anda perfecto! Gracias por la ayuda! :D