Imprimir página | Cerrar ventana

Ocultar/mostrar imagen segun valor Checkbox

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85078
Fecha de impresión: 23/Abril/2024 a las 10:37


Tema: Ocultar/mostrar imagen segun valor Checkbox
Publicado por: toño
Asunto: Ocultar/mostrar imagen segun valor Checkbox
Fecha de publicación: 19/Marzo/2020 a las 18:23
Hola a todos, tengo un informe y en función del valor de un Checkbox (activado/desactivado), muestra/oculta unas imágenes, lo he probado para un Checkbox y me funciona a la perfección, pero quiero aplicarlo a más Checkbox (CHECKBOX2, CHECBOX3.....) dentro del mismo informe y me pierdo un poco, mis conocomientos aun son muy limitados, y no se si voy por el buen camino, no se si es buena idea seguir con la estructura If…Then…Else…End If o mejor buscar otra opción,se agradece cualquier sugerencia, comentario o ayuda.
-----------------------------------------------------------------------
If Me.[CHEKBOX1].OldValue Then

        Me.[IMAGEN1].Visible = True
        Me.[IMAGEN2].Visible = False

      
    Else
        Me.[IMAGEN1].Visible = False
        Me.[IMAGEN2].Visible = True
      
      
 End If
--------------------------------------------------------------------------

Muchas gracias



Respuestas:
Publicado por: xavi
Fecha de publicación: 19/Marzo/2020 a las 19:33
Hola,

Para empezar me sorprende el uso de OldValue... Supongo que no te afecta porque OldValue y Value deben valer lo mismo.

En cuanto a la estructura que expones, es simplificable. A fin de cuentas debes asignar un valor True/False a la propiedad Visible de una imagen. Y los CheckBox admiten True/False. Añadiendo a la expresión (si es necesario) el operador Not, ya lo tienes.

Imaginemos que IMAGEN1 sólo se muestra si CheckBox1 está marcado
Me!IMAGEN1.Visible = Me!CheckBox1

Imaginemos que IMAGEN! solo se muestra si CheckBox1 *no* está marcado
Me!IMAGEN1.Visible = Not Me!CheckBox1

Si lo que tienes es una colección de imagenes numerada y de sus correspondientes checkbox tambien numerados, lo puedes simplificar tal que así. 

(imaginamos 10 parejas y que marcado = visible)

For i = 1 To 10
  Me("IMAGEN" & i).Visible = Me("CheckBox" & i)
Next

Espero te sirva.

Un saludo




-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: toño
Fecha de publicación: 19/Marzo/2020 a las 21:14
Buenas tardes Xavi, lo primero muchas gracias por tu ayuda, como dije no tengo mucho conocimiento, estoy tratando de aprender algo por mi cuenta a traves de vuestros foros, usé OldValue ya que la propiead Value no me aparece, así me funcionaba lo que pretendía realizar.

He aplicado tú primer método y me funciona a la perfección lo que necesitaba que era en función de cada uno de los 6 checkbox muestra una imagen cuando está activado y otra imagen cuando no lo está, lo único supone 12 líneas
  
        Me.img1.Visible = Me ![chk1]
        Me.img2.Visible = Not Me![chk1]
        Me.img3.Visible = Me![chk2]
        Me.img4.Visible = Not Me![chk2]
        Me.img5.Visible = Me![chk3]
        Me.img6.Visible = Not Me![chk3]
        Me.img7.Visible = Me![chk4]
        Me.img8.Visible = Not Me![chk4]
        Me.img9.Visible = Me![chk5]
        Me.img10.Visible = Not Me![chk5]
        Me.img11.Visible = Me![chk6]
        Me.img12.Visible = Not Me![chk6]

Mas adelante probaré con el metodo For i To Next

Muchas gracias de nuevo



Imprimir página | Cerrar ventana