SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: pacegar en Miércoles 28 de Diciembre de 2005, 15:08

Título: Cambiar Colores
Publicado por: pacegar en Miércoles 28 de Diciembre de 2005, 15:08
Alguien sabe como se puede establecer mediante código los colores de los controles pertenecientes a un formulario, obviamente sin saber los nombres de los controles.
Título: Re: Cambiar Colores
Publicado por: Jose Arriagada en Miércoles 28 de Diciembre de 2005, 15:21
Private Sub Command1_Click()
On Error GoTo control

For Each control In Form1
    control.ForeColor = vbRed
Next control
Exit Sub

control:
    Resume Next
End Sub
Título: Re: Cambiar Colores
Publicado por: pacegar en Miércoles 4 de Enero de 2006, 16:21
Gracias por la respuesta.

¿Pq en algunos controles tales como los frames, labels, options o checks no funciona por ejemplo control.backcolor?

He puesto un control de cada en un formulario y en algunos se ve el cambio y en otros no.

Saludos
Título: Re: Cambiar Colores
Publicado por: Jose Arriagada en Miércoles 4 de Enero de 2006, 19:37
Estas seguro?

Yo probe el mismo ejemplo, pero cambiando forecolor por backcolor, y funciono.

Ahora, debes tener claro, que no a todos los controles les puedes cambiar las propiedades de color. Es el caso de button control.

Usando este ejemplo, es el basico.

Se pueden cambiar los colores, pero usando funciones API de windows para otros controles.

Y eso estimado(a), es otra consulta...
Título: Re: Cambiar Colores
Publicado por: pacegar en Jueves 5 de Enero de 2006, 11:11
He hecho el ejemplo tal y como has puesto, en el click de un command y va bien.

El problema me surgue cuando creo un procedimiento para hacerlo. Sólo cambia el color de algunos controles.

Private Sub Form_Load()
    Apariencia Me
End Sub

Public Sub Apariencia(formulario As Form)
    On Error GoTo SinPropiedad
    For Each control In formulario
        control.BackColor = Cfg_Colores.Fondo
        control.ForeColor = Cfg_Colores.Texto
    Next control
   
SinPropiedad:
    Resume Next
End Sub