Cambiar Tema de color con una listbox

Dudas sobre código
Avatar de Usuario
leadrudi
Nivel 2
Mensajes: 40
Registrado: Sab Oct 14, 2017 7:55 am

Cambiar Tema de color con una listbox

Mensajepor leadrudi » Dom Jun 03, 2018 7:04 am

Buenas noches, estimados:
He buscado por todos los fotos, webs y tutoriales pero no encuentro la forma de poder cambiar el tema de colores de un formulario mediante una listbox. Yo elegiría el "nomrbe" del tema pero internamente cambiaría a un tema de colores preexistente de Access.
La idea es que el usuario personalice su interfaz basado en los colores que establece de forma automática los temas de color incorporados en Access.
¿Existe alguna forma?
:oops: :mrgreen: :|

pitxiku
VIP
Reto01
Mensajes: 200
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Cambiar Tema de color con una listbox

Mensajepor pitxiku » Dom Jun 03, 2018 11:54 am

¿Y si cambias el tema de Access?

- viewtopic.php?f=11&t=41&start=60#p6195

Avatar de Usuario
leadrudi
Nivel 2
Mensajes: 40
Registrado: Sab Oct 14, 2017 7:55 am

Re: Cambiar Tema de color con una listbox

Mensajepor leadrudi » Mié Jun 06, 2018 1:18 am

Por lo que alcanzo a ver, no es lo que necesito:
► Por lo que entiendo, es para cambiar el tema de la interfaz de Access.
Lo que yo necesito es cambiar la combinación de colores del propio formulario (Form en Modo diseño ► Pestaña Diseño ► Grupo Temas ► Comando Colores.
De esa forma, cambiar la interfaz del propio formulario con rojos, verdes, etc. (asignando al primer tema el valor 0, al siguiente el 1, al quinto el 3 (porque el tercero y cuarto no cuajan con lo que busco)...
:oops: :mrgreen: :|

Avatar de Usuario
Fayad
Colaborador
Mensajes: 266
Registrado: Mié Oct 28, 2015 9:43 pm

Re: Cambiar Tema de color con una listbox

Mensajepor Fayad » Mié Jun 06, 2018 10:25 am

Hola!

Tan simple como poner:.

Código: Seleccionar todo

Private Sub  listbox_Click()

 Select Case Me.listbox
   Case 0
      Me.Detalle.BackColor = RGB(255, 0, 0) ' Rojo
      Me.EncabezadoDelFormulario.BackColor = RGB(255, 0, 0)
   Case 1
      Me.Detalle.BackColor = RGB(0, 0, 0) ' Negro
      Me.EncabezadoDelFormulario.BackColor = RGB(0, 0, 0)
   Case 2
      Me.Detalle.BackColor = RGB(255, 255, 0) ' el que quieras
      Me.EncabezadoDelFormulario.BackColor = RGB(255, 255, 0)
 End Select

 End Sub
Salu2.

Avatar de Usuario
leadrudi
Nivel 2
Mensajes: 40
Registrado: Sab Oct 14, 2017 7:55 am

Re: Cambiar Tema de color con una listbox

Mensajepor leadrudi » Sab Jun 09, 2018 6:16 am

Gracias Fayad. Es eso lo que ya tengo realizado pero es bastante molesto formulario por formulario asignar eso. Por ello, el objetivo era cambiar el tema del formulario directamente desde un combo. Pero de cualquier forma, creo que dejaré lo que ya tengo realizado.
:oops: :mrgreen: :|

Avatar de Usuario
leadrudi
Nivel 2
Mensajes: 40
Registrado: Sab Oct 14, 2017 7:55 am

Re: Cambiar Tema de color con una listbox

Mensajepor leadrudi » Sab Jun 09, 2018 6:25 am

¿Cómo puedo aplicar este código registrándolo en un Módulo y llamándolo?

Código: Seleccionar todo

For Each vCTRL In me.Controls
        vLong = vLong + 1
        If Left(vCTRL.Name, 2) = "E_" Then
            vCTRL.ForeColor = vRGB4
            vCTRL.BackColor = vRGB3
            vCTRL.BorderColor = vRGB1
        End If
    Next vCTRL


Ese Me.Controls, ¿cómo puedo covertirlo en algo que controle en el formulario del que se llama al Public Sub?
:oops: :mrgreen: :|

Avatar de Usuario
Neckkito
Moderador
Mensajes: 774
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Cambiar Tema de color con una listbox

Mensajepor Neckkito » Sab Jun 09, 2018 9:22 am

En el módulo:

Public sub subHagoAlgo(elForm as Form)
For each ctrl in elForm.controls
'Bla bla
Next ctrl
End sub

En el evento desde el que se quiera llamar

Call subHagoAlgo(me)

Saludos
Access MVP 2017-2019
http://bit.ly/NckAccess

Avatar de Usuario
leadrudi
Nivel 2
Mensajes: 40
Registrado: Sab Oct 14, 2017 7:55 am

Re: Cambiar Tema de color con una listbox

Mensajepor leadrudi » Sab Jun 09, 2018 8:36 pm

¡ERES MI IDOLO!
Me has ahorrado tiempo y millones de líneas de código.
:oops: :mrgreen: :|

Avatar de Usuario
leadrudi
Nivel 2
Mensajes: 40
Registrado: Sab Oct 14, 2017 7:55 am

Re: Cambiar Tema de color con una listbox

Mensajepor leadrudi » Lun Jun 11, 2018 5:05 am

Ha surgido un problema:
en esta línea:

Código: Seleccionar todo

Call Cambia_Colores_Def(Me)

cómo indico que es un subformulario o un formulario cargado con:

Código: Seleccionar todo

Me.subForm.SourceObject = "frmA"

O bien especificar el nombre del formulario?

Porque me da error cuando pongo el nombre del formulario entre comillas, poner Me.Name, y ya se me quemaron los libros.
:oops: :mrgreen: :|

Avatar de Usuario
Neckkito
Moderador
Mensajes: 774
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Cambiar Tema de color con una listbox

Mensajepor Neckkito » Lun Jun 11, 2018 10:41 am

Veamos...

Uno de los propósitos del foro es que aprendáis Access, no que os limitéis a copiar los códigos sin entender qué estáis haciendo.

El objeto form (el argumento lo dice claramente: elForm as Form) es eso, un objeto; y como tal, tiene propiedades y métodos. Los estás manipulando continuamente: me.name = manipulas la propiedad nombre; me.caption = manipulas la propiedad título, etc.

En consecuencia, si el parámetro indica que lo que espera que se le pase es un objeto (me), ¿por qué te extraña que te dé error si lo que le pasas es una propiedad (name)? Si quisiera recibir una propiedad hubiera escrito, como parámetro, (elNomForm as string).

Lo mismo pasa con el subformulario. Debes pasarle el objeto formulario que se corresponda con el subformulario, lisa y llanamente, y no propiedades ni historias raras. ¿Y cómo se llama a un subformulario en un formulario? Este foro, cualquier otro foro y el mundo internetiano mundial está más que a rebosar de ejemplos de cómo es la estructura de esa llamada. Pero seremos buenos y lo repetiremos por enésima vez: para llamar a un subformulario X (subFormX) desde el propio formulario la estructura es: me.subFormX.Form

Hay que esforzarse por entender los códigos y no limitarse a copiarlos. Y no lo digo por ser gruñón: lo digo porque eso os hará más independientes programando vuestros Access.

Saludos.
Access MVP 2017-2019
http://bit.ly/NckAccess


Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados