** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Colores en etiquetas
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoColores en etiquetas

 Responder Responder
Autor
Mensaje
JuanaM Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 13/Junio/2019
Localización: San Javier
Estado: Sin conexión
Puntos: 9
Enlace directo a este mensaje Tema: Colores en etiquetas
    Enviado: 06/Junio/2020 a las 18:59
Tengo un formulario con 20 etiquetas llamadas E1, E2, E3,.... y quisiera que al hacer clic en cualquiera de ellas su color de fondo se volviera amarillo. Pero no quiero ir diciendo una por una que al hacer click...sino algo como
for each... 
y en que evento tendría que ponerlo

Os agradecería mucho la respuesta 
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 06/Junio/2020 a las 19:41
Hola
Sí he entendido bien, una forma "manual" de conseguirlo sería:
1º.-En vista diseño y en el evento click de cada etiqueta pegamos: =cambiacolor()
2º.- En el código del formulario pegamos:

Private Function cambiacolor()
Dim nn As Long
For nn = 1 To 20
Me.Controls("E" & nn).BackStyle = 1
Me.Controls("E" & nn).BackColor = RGB(255, 255, 0)
Next
End Function

Con lo que cambiarían a amarillo las 20 etiquetas al hacer click en cualquiera de ellas.

Otra cosa sería que fuesen muchísimas más etiquetas, en cuyo caso en vista diseño del formulario y en un módulo independiente se puede crear una función ( parecida a la expuesta ) que "pegue" el nombre de la función en todas ellas en el evento click.
Espero que ayude a resolver la duda.
Ya comentas.
Un saludo a todos
Arriba
JuanaM Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 13/Junio/2019
Localización: San Javier
Estado: Sin conexión
Puntos: 9
Enlace directo a este mensaje Enviado: 07/Junio/2020 a las 00:54
Te lo agradezco, pero no es lo que busco. Me explico. Si tengo 20 etiquetas, lo que quiero es que cambie de color solo la que "toque" pero sin tener que poner en cada una de las 20, en su evento Al hacer clic la función cambiacolor(). Por eso decía algo parecido a 
for each control in form.controls
if control.controltype=aclabel then
if control.setfocus o If control=controlactivo( es decir que sea al que se le hace clic then
control.backcolor=vbyellow
¿Como decirle que el control activo es el que recibe el enfoque?
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Enlace directo a este mensaje Enviado: 07/Junio/2020 a las 09:54
Hola Juana,

El problema es que una etiqueta no coge 'el foco' nunca, con lo que no puedes cazar directamente el nombre de la etiqueta a partir de Me.ActiveControl.Name.

Como siempre hay varias opciones, aunque yo me decantaría por crear una función como esta:

Function FondoAmarillo(ByVal Valor As String)
    Me.Controls(Valor).BackColor = vbYellow
End Function

Y en la propiedad 'al hacer clic' de cada etiqueta poner:
=FondoAmarillo("NombreEtiqueta")


Edito: para dar valor a la propiedad de todas las etiquetas de una vez:
Private Sub Form_Load()
     For i = 1 To 6
        NombreEtiqueta = "Etiqueta" & i
        Me.Controls(NombreEtiqueta).OnClick = "=FondoAmarillo(""" & NombreEtiqueta & """)"
    Next
End Sub



Editado por Mihura - 07/Junio/2020 a las 10:26
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 807
Enlace directo a este mensaje Enviado: 07/Junio/2020 a las 10:44
creo que lo que quiere es:

En el timer del form, ver que control tiene el foco y colorearlo. Es lo que entiendo.
algo como:
if typename(.activecontrol)="label" then activecontrol.BackColor = vbYellow

Edito:de corrido y sin probar


Editado por 01loko - 07/Junio/2020 a las 10:45
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Enlace directo a este mensaje Enviado: 07/Junio/2020 a las 11:15
01loko,

Una etiqueta no coge foco.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 07/Junio/2020 a las 13:05
Hola
Ya que estamos hablando de etiquetas:
¿Hay forma de discriminar las etiquetas "independientes" de las que están ligadas a un cuadro de texto?
Un saludo a todos
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 807
Enlace directo a este mensaje Enviado: 07/Junio/2020 a las 13:21
Pregunta: Cuando hacemos clic en una etiqueta ¿la convierte en control activo?
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
Emilio Ver desplegable
Administrador
Administrador

Santander

Unido: 08/Agosto/2004
Localización: España
Estado: Sin conexión
Puntos: 18836
Enlace directo a este mensaje Enviado: 07/Junio/2020 a las 13:30
Hola!

Pedro, las etiquetas ligadas a un cuadro de texto llevan el nombre de este en su propiedad parent, que en el caso de las independientes está vacío.

Private Sub Comando23_Click()
MsgBox Me.IdCliente_Etiqueta.Parent.Name
End Sub
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 07/Junio/2020 a las 13:37
Lo había probado con parent y no se me había ocurrido lo de parent.name.
Gracias
Edito.
En las independientes da el nombre del formulario


Editado por prga - 07/Junio/2020 a las 13:39
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 07/Junio/2020 a las 14:58
Publicado originalmente por 01loko 01loko escribió:

Pregunta: Cuando hacemos clic en una etiqueta ¿la convierte en control activo?
No. Las etiquetas, como ya dijo Mihura, no toman el foco
Xavi, un minyó de Terrassa

Mi web
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3849
Enlace directo a este mensaje Enviado: 09/Junio/2020 a las 03:04
Pues si que hay una forma,

1 annade un modulo de clase y llamalo lblChecker (u otrpo nombre, pero que luego coincida)
2 en este modulo annade este codigo

Option Explicit
 Public WithEvents lblChecker As MSForms.Label
 Private Sub lblChecker_Click()
    lblChecker.BackColor = RGB(255, 255, 0)
 End Sub


3 en el user form annade

Dim MyLabel(1 To 3) As New lblChecker

Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 1 To 3 ' aqui el numero de etiquetas que tengas en el form, ni mas ni menos
        Set MyLabel(i).lblChecker = Controls("Label" & i)
    Next i
End Sub
 

4 prueba

Un saludo.

Luis
El Búho es un pajarraco
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 807
Enlace directo a este mensaje Enviado: 09/Junio/2020 a las 07:28
aprovechando que el Pisuerga pasa por Valladolid:

Me podeis explicar de manera sencilla la diferencia entre modulo de clase y modulo?

Nunca lo entendi del todo

Gracias de antemano

Recordar de que soy nuevo y estoy aprendiendo.
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3849
Enlace directo a este mensaje Enviado: 09/Junio/2020 a las 14:48
Pues aunque debería ser en otro hilo, por esta vez lo dejo.

En un resumen muy rápido.
En un módulo defines la funcionalidad que quieres para tu programa
En un módulo de clases defines las propiedades de los objetos.

Es decir, puedes hacer una clase que tome las funcionalidades de un botón y añadirle una funcionalidad, por ejemplo que al pulsarlo cambie el fondo a color amarillo, o que envíe los datos a una web pirata, allá tú, así todos los botones definidos en tu clase además de la funcionalidad normal del botón, tendrán las que le añadas

Por supuesto no tiene por qué ser solo asociado a un objeto ya existente,puedes crear nuevos objetos, no se, por ejemplo el objeto Factura, o el objeto coche, o moto,o silla, lo que puedas necesitar.

De esta forma, igual que al usar un botón normal no tienes que programar que al pulsarlo cambie de aspecto para que parezca pulsado y que al soltarlo se recupere, puesto que está en el objeto toda esa lógica, en tu objeto coche, tendrías algo similar.

Es "un poco" más complicado que eso, pero creo que para dar una idea aproximada vale.
El Búho es un pajarraco
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 807
Enlace directo a este mensaje Enviado: 09/Junio/2020 a las 16:13
Gracias por la explicacion, nunca lo he tenido claro.
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable