Access - Cambiar estado etiqueta al pasar por encima

 
Vista:

Cambiar estado etiqueta al pasar por encima

Publicado por Carlos (7 intervenciones) el 06/06/2013 21:17:44
Hola!! A ver si me podéis ayudar...

Necesito que una etiqueta (en realidad cualquier objeto del formulario) cambie de color cuando pase por encima el puntero del ratón, pero que vuelva a su estado original cuando no esté ya.

IMPORTANTE: necesito poder ejecutarlo no poniendo MouseMove en el detalle del formulario para que recupere el color original.

Estoy haciendo una base grande, con muchas etiquetas y demás objetos, y no quiero tener que poner en le detalle del formulario que todos y cada uno de los elementos vuelvan a su origen.... Puede parecer vagería, pero creo que es lógico jejeej

Muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Toni

Cambiar estado etiqueta al pasar por encima

Publicado por Toni (129 intervenciones) el 06/06/2013 22:42:19
Hola Carlos,

Como parece que sabes de que va el tema te doy sólo el código para que devuelvas el estado original a las etiquetas, yo lo uso en el evento "MouseMove" del formulario y no te has de preocupar de si son muchos o pocos ojetos ya que lo que haces es recorrer un bucle haciendo referencia al control etiqueta, sólo a ese control, aunque puedes hacer referencia a otros controles si también los tienes con color, por ejemplo el botón.

En el evento mousemove del detalle del formulario :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Detalle_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
 
    Dim ctrLabel As control
    Dim ctrForm As Form
    Dim ctrcomand As control
 
    Set ctrForm = Me
 
    For Each ctrLabel In ctrForm
        With ctrLabel
          'las etiquetas las tengo nombradas con "ETIQ...." 
           If .ControlType = acLabel And Left(ctrLabel.Name, 4) = "ETIQ" Then
                'aqui las etiquetas vuelven a su estado original, azul y letra 12
                If .ForeColor = 255 Then
                    .FontUnderline = False
                    .ForeColor = 8388608
                    .FontSize = 12
                End If
            End If
        End With
    Next ctrLabel
End Sub


Como ves no te has de preocupar cuantas etiquetas tienes en tu formulario ya que las cambiará todas a su estado original, para identificarlas yo las renombro con "ETIQ"...y lo que sea, asi me aseguro que no me vaya a cambiar otra etiqueta que no me interese a mi.

Aqui te falta el codigo de la propia etiqueta, si no lo sabes dímelo y te lo pongo, pero ese es el más fácil, es el que al pasar por encima de ella te la cambia al modo que tu hayas elegido, subrayada, negrita, etc..

Saludos
Toni
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar estado etiqueta al pasar por encima

Publicado por Carlos (7 intervenciones) el 06/06/2013 23:22:08
Hola Toni, lo primero agradecerte la respuesta, se nota que me has entendido lo que quería decir jeje gracias.

He de admitir que soy un novato y mi nivel es muy básico. El código para la etiqueta, sin problema.
Pero no consigo "ver" a qué te refieres con renombrar como ETIQ.

Yo tengo las típicas etiquetas que por defecto salen como "Etiqueta1" "Etiqueta2"..... Cómo podría usar el código que comentas en mi formulario?

Gracias y disculpa por volver a preguntar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Toni

Cambiar estado etiqueta al pasar por encima

Publicado por Toni (129 intervenciones) el 07/06/2013 00:06:00
Que tal,

Bueno si el código para la etiqueta ya lo tienes, entonces te explico lo de "ETIQ",

Piensa que en ese código le estás indicando que a todos los controles que son etiquetas les cambie el color y el tamaño cuando muevas el ratón por el formulario, pero puede que tu tengas etiquetas a las que no quieras aplicarle esos cambios, por ejemplo las etiquetas que identifican a los campos, o a una simple etiqueta que hace de titulo, bueno pues si tu a las etiquetas que SI quieres cambiarle esos atributos en vez de llamarlas "Etiqueta1", "Etiqueta2", etc... las llamas de una forma distinta luego puedes identificarlas en ese código.

Yo para identificarlas utilizo esas 4 letras que no las uso.... digamos "normalmente", de esa forma uso: "ETIQ_clientes", "ETIQ_Proveedores", etc..para opciones de por ejemplo Selección o Menú, luego para etiquetas normales uso: "Et_loquesea". con eso me aseguro que cuando quiero que cambien de color SÓLO van a cambiar esas etiquetas que he identificado de esa manera especial.

Ojo, cambian porque en éste código le estás indicando que si es etiqueta y las 4 primeras letras comenzando por la izquierda son iguales a "ETIQ........

"If .ControlType = acLabel And Left(ctrLabel.Name, 4) = "ETIQ" Then"

lógicamente tu puedes adaptar el código a como a ti te vaya bien identificarlas.

Esto es un ejemplo, seguramente habrá más formas de hacerlo pero yo lo hago así y me funciona.

Espero haberte despejado la duda.

Saludos.
Toni
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar estado etiqueta al pasar por encima

Publicado por Carlos (7 intervenciones) el 07/06/2013 19:14:19
Toni.... gracias, gracias.... y mil gracias!!!! por fin!! No sabes el tiempo que llevo detrás de esto... jejeje

Me has ayudado muchísimo, gracias.

un saludo!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar estado etiqueta al pasar por encima

Publicado por Carlos (5 intervenciones) el 17/06/2013 16:38:37
Hola de nuevo. Como dije, me funcionó perfectamente, pero ahora lo he querido hacer en otra base de datos de otro ordenador, y me sale lo siguiente:

- "Error de compilación: se esperaba un tipo definido por el usuario, no un proyecto"

El código está bien puesto, calcado al que sí me funciona en el otro ordenador.

¿qué podría ser?

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar