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

Semáforo

Estas en el tema de Semáforo en el foro de Visual Basic clásico en Foros del Web. Hola, Alguien me podría ayudar a hacer un semaforo en VB. Con 3 shape, que cuando apreté un botón "Cambiar Luz" vaya salteando de shape. ...
  #1 (permalink)  
Antiguo 01/06/2006, 17:04
 
Fecha de Ingreso: septiembre-2005
Mensajes: 75
Antigüedad: 18 años, 8 meses
Puntos: 0
Semáforo

Hola,

Alguien me podría ayudar a hacer un semaforo en VB.
Con 3 shape, que cuando apreté un botón "Cambiar Luz" vaya salteando de shape.

Desde ya, agradezco la ayuda posible.

Saludos.
  #2 (permalink)  
Antiguo 02/06/2006, 07:08
Avatar de vbx3m  
Fecha de Ingreso: febrero-2005
Ubicación: Venezuela
Mensajes: 524
Antigüedad: 19 años, 3 meses
Puntos: 1
Pues cual es tu duda??? Ya tienes hecho algo???
__________________
ホルヘ・ラファエル・マルティネス・レオン
  #3 (permalink)  
Antiguo 02/06/2006, 07:21
 
Fecha de Ingreso: septiembre-2005
Mensajes: 75
Antigüedad: 18 años, 8 meses
Puntos: 0
Hola vbx3m,

Gracias por tu respuesta.

Lo que tengo echo es muy poco, dado a que no consigo en ningún lado la información correspondiente, de cómo hacerlo.

Shape1.Visible = False
Shape2.Visible = False

Se me queda mostrando Verde y a apretar Cambiar de Luz sigue en verde. Me parece que ¿tengo que hacer un If o un Do?.

Saludos.
  #4 (permalink)  
Antiguo 02/06/2006, 07:29
Avatar de vbx3m  
Fecha de Ingreso: febrero-2005
Ubicación: Venezuela
Mensajes: 524
Antigüedad: 19 años, 3 meses
Puntos: 1
Si quieres que se cambie automaticamente debes utilizar un control timer... si es manual pues debes usar condiciones (IF o SELECT CASE)...

Ya has pensado como hacerlo?? es decir, si quieres que el (o los shapes) no esten visibles y aparezcan cuando se les haga click a un boton o automaticamente, que este visible el shape pero transparente y se le aigne los colores... Lo quieres manual o automatico... ???
__________________
ホルヘ・ラファエル・マルティネス・レオン
  #5 (permalink)  
Antiguo 02/06/2006, 07:33
 
Fecha de Ingreso: septiembre-2005
Mensajes: 75
Antigüedad: 18 años, 8 meses
Puntos: 0
Hola vbx3m,

Gracias por tu respuesta.

No el timer aun no me lo enseñaron, quiero que primero, al ejecutar el programa me aparezcan los 3 shape prendidos, luego que apreté Cambiar de Color y prenda verde y apague los otros, luego Cambiar de Color y prenda amarillo y apage verde y rojo y asi con el rojo.
¿Es con un IF? ¿Es muy difícil?

Saludos.

Última edición por mmontanez; 02/06/2006 a las 07:39
  #6 (permalink)  
Antiguo 02/06/2006, 07:49
Avatar de vbx3m  
Fecha de Ingreso: febrero-2005
Ubicación: Venezuela
Mensajes: 524
Antigüedad: 19 años, 3 meses
Puntos: 1
No es dificil.. Y si con un IF te resulta o un SELECT CASE depende ti...
__________________
ホルヘ・ラファエル・マルティネス・レオン
  #7 (permalink)  
Antiguo 02/06/2006, 08:02
 
Fecha de Ingreso: septiembre-2005
Mensajes: 75
Antigüedad: 18 años, 8 meses
Puntos: 0
Tengo que hacer 3 IF, así:
¿Como sabe el programa, cual es?

If Shape1.Visible = True Then
Shape2.Visible = False
Shape3.Visible = False
End IF

Saludos.
  #8 (permalink)  
Antiguo 02/06/2006, 08:12
Avatar de vbx3m  
Fecha de Ingreso: febrero-2005
Ubicación: Venezuela
Mensajes: 524
Antigüedad: 19 años, 3 meses
Puntos: 1
Pues para eso podria utilizar un contador sencillo... Cuando le des click al boton q aumente el contador y en vez de hacer la condicion si esta visible o no un shape lo comparas con el contador... Me entiendes??
__________________
ホルヘ・ラファエル・マルティネス・レオン
  #9 (permalink)  
Antiguo 02/06/2006, 08:19
Avatar de vbx3m  
Fecha de Ingreso: febrero-2005
Ubicación: Venezuela
Mensajes: 524
Antigüedad: 19 años, 3 meses
Puntos: 1
Aunque si lo quieres hacer comparando cual esta visible tambien te resulta
__________________
ホルヘ・ラファエル・マルティネス・レオン
  #10 (permalink)  
Antiguo 02/06/2006, 08:21
 
Fecha de Ingreso: septiembre-2005
Mensajes: 75
Antigüedad: 18 años, 8 meses
Puntos: 0
La verdad no, ni idea como hacerlo, ¿Como puedo decirle al botón que elija verde, azul o rojo según corresponda?
En el IF, lo que quiero es que establezca que si uno esta prendido los demás no tienen que estar. Eso esta bien el código anterior. Faltan claro los 2 IF mas.

Saludos.
  #11 (permalink)  
Antiguo 02/06/2006, 08:26
Avatar de vbx3m  
Fecha de Ingreso: febrero-2005
Ubicación: Venezuela
Mensajes: 524
Antigüedad: 19 años, 3 meses
Puntos: 1
Pues como veo que quieres trabajar de la manera en que solo un shape este visible por vez, en el momento de iniciar (cargar) la aplicacion le indicas cual quieres que este visible.. en este caso seria el shape1 (rojo)...

En el evento click del boton compararias con el IF cual estaria visible... Si el shape1(rojo) esta visible entonces el shape1(rojo) pasaria a estar invisible y el Shape2(amarillo) pasaria a estar visible y el shape3(verde) seguiria invisible sino si el que esta visible es el shape2(amarillo) entonces el shape2(amarillo) pasaria a estar invisible y el shape3(verde) a visible sino si el shape3(verde) ... etc.. etc...
__________________
ホルヘ・ラファエル・マルティネス・レオン
  #12 (permalink)  
Antiguo 04/06/2006, 13:56
 
Fecha de Ingreso: septiembre-2005
Mensajes: 38
Antigüedad: 18 años, 7 meses
Puntos: 0
Pues ya lo tienes

Esta sencillo, no te compliques, tienes la logica, ahora simplemente hazlo.

En tiempo de diseño deja el Verde encendido y los otros apagados, luego...

En el evento click del boton escribe el codigo que tienes en mente:

Cita:
Inicio Evento Click
if Shape_Verde.Visible = True then '<-- si esta el Verde prendido

Shape_Verde.Visible = False '<----- lo apagas
Shape_Amarillo.Visible = True '<--- prendes el amarillo

else if Shape_Amarillo.visible = True then '<-- si esta el Amarillo prendido

Shape_Amarillo.Visible = False '<----- lo apagas
Shape_Rojo.Visible = True '<--- prendes el Rojo

else if Shape_Rojo.visible = True then ' <-- si esta el Rojo prendido

Shape_Rojo.visible = false '<--- lo apagas
Shape_Verde.VIsible = True '<--- prendes el Verde

end if

Fin Evento Click
Es importante que utilizes Else If, en lugar de If porque si no se te cicla el programa.

Es lo que te entendi, espero te sirva, el codigo adecualo al Lenguaje de Visual Basic, me parece que es algo similar.
  #13 (permalink)  
Antiguo 13/06/2006, 15:42
 
Fecha de Ingreso: febrero-2006
Mensajes: 37
Antigüedad: 18 años, 3 meses
Puntos: 0
Espero te sirva


Dim mueve

Private Sub Command1_Click()

mueve = mueve + 1: If mueve > 3 Then mueve = 1

If mueve = 1 Then Shape_Verde.BackColor = vbGreen Else Shape_Verde.BackColor = vbWhite
If mueve = 2 Then Shape_amarillo.BackColor = vbYellow Else Shape_amarillo.BackColor = vbWhite
If mueve = 3 Then Shape_rojo.BackColor = vbRed Else Shape_rojo.BackColor = vbWhite

End Sub
__________________
Jerico
  #14 (permalink)  
Antiguo 13/06/2006, 15:45
 
Fecha de Ingreso: febrero-2006
Mensajes: 37
Antigüedad: 18 años, 3 meses
Puntos: 0
P.D.

No olvides cambiar el atributo de BackStyle en los Shapes a 1 - Opaco
para que coloree

Espero te sirva




Dim mueve

Private Sub Command1_Click()

mueve = mueve + 1: If mueve > 3 Then mueve = 1

If mueve = 1 Then Shape_Verde.BackColor = vbGreen Else Shape_Verde.BackColor = vbWhite
If mueve = 2 Then Shape_amarillo.BackColor = vbYellow Else Shape_amarillo.BackColor = vbWhite
If mueve = 3 Then Shape_rojo.BackColor = vbRed Else Shape_rojo.BackColor = vbWhite

End Sub
__________________
Jerico
  #15 (permalink)  
Antiguo 26/06/2006, 13:07
 
Fecha de Ingreso: junio-2006
Mensajes: 1
Antigüedad: 17 años, 10 meses
Puntos: 0
Bueno esta seria una opcion sin tocar el visible, o sea, no se dejan de ver nunca

HE utilizado el QBCOLOR porque no tenia ganas de buscar el amarillo en RGB ;)
Código:
Dim col As Integer                                 ' Definimos la variable
Private Sub Command1_Click()
If col = 1 Then
    Shape1.BackColor = RGB(255, 0, 0)       ' Ponemos el SHAPE1 en rojo
    Shape3.BackColor = RGB(0, 0, 0)          ' Ponemos el SHAPE3 en negro
    col = 2                                             ' Ponemos la variable a 2
        Exit Sub
End If
If col = 2 Then
    Shape2.BackColor = QBColor(14)          'Ponemos el SHAPE2 en amarillo
    Shape1.BackColor = RGB(0, 0, 0)          'Ponemos el SHAPE1 en negro
    col = 3                                            'Ponemos la variable a 3
        Exit Sub
End If
If col = 3 Then
    Shape3.BackColor = RGB(0, 255, 0)       'Ponemos el SHAPE3 en rojo
    Shape2.BackColor = RGB(0, 0, 0)          'Ponemos le SHAPE2 en negro
    col = 1                                            'Ponemos la variable a 1 para que vuelva a empezart
    Refresh
        Exit Sub
End If

End Sub

Private Sub Form_Load()
Command1.caption = "Cambiar luz"   'Da el nombre al boton
Form1.caption = "Topskil ;)"            'DA el nombre al formulario
'Pone los shapes negros --------------------------------
Shape1.BackColor = RGB(0, 0, 0)
Shape2.BackColor = RGB(0, 0, 0)
Shape3.BackColor = RGB(0, 0, 0)
'-------------------------------------------------------
col = 1
End Sub

Última edición por topskil; 26/06/2006 a las 13:15
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 15:51.