Estoy con una aplicación en la que se seleccionan colores a partir de un archivo, con un ColorChooser y, lo que me importa, colores del sistema.
Estoy buscando una solución más «elegante» que la que he encontrado. Se trataría de recorrer de alguna manera las propiedades estáticas y las constantes de Color. De momento, mi solución es ésta, pero seguro que vosotros conocéis alguna manera más lógica:
Private Sub Carga_Sistema()
Dim strAlfa As New String[]
Dim i As Integer
strAlfa.Add("Background")
strAlfa.Add("ButtonBackground")
strAlfa.Add("ButtonForeground")
strAlfa.Add("Foreground")
strAlfa.Add("LightBackground")
strAlfa.Add("LightForeground")
strAlfa.Add("LinkForeground")
strAlfa.Add("SelectedBackground")
strAlfa.Add("SelectedForeground")
strAlfa.Add("TextBackground")
strAlfa.Add("TextForeground")
strAlfa.Add("TooltipBackground")
strAlfa.Add("TooltipForeground")
strAlfa.Add("VisitedForeground")
strAlfa.Add("Black")
strAlfa.Add("Blue")
strAlfa.Add("Cyan")
strAlfa.Add("DarkBlue")
strAlfa.Add("DarkCyan")
strAlfa.Add("DarkGray")
strAlfa.Add("DarkGreen")
strAlfa.Add("DarkMagenta")
strAlfa.Add("DarkRed")
strAlfa.Add("DarkYellow")
strAlfa.Add("Default")
strAlfa.Add("Gray")
strAlfa.Add("Green")
strAlfa.Add("LightGray")
strAlfa.Add("Magenta")
strAlfa.Add("Orange")
strAlfa.Add("Pink")
strAlfa.Add("Red")
strAlfa.Add("Transparent")
strAlfa.Add("Violet")
strAlfa.Add("White")
strAlfa.Add("Yellow")
grdSistema.Rows.Count = strAlfa.Count
grdSistema.Columns.Count = 2
grdSistema.Padding = 0
For i = 0 To strAlfa.Max
grdSistema.Row = i
grdSistema.Column = 0
grdSistema.Current.Background = Eval("Color." & strAlfa[i])
grdSistema.Column = 1
grdSistema.Current.Text = strAlfa[i]
Next
grdSistema.Row = 0
End
Dim strAlfa As New String[]
Dim i As Integer
strAlfa.Add("Background")
strAlfa.Add("ButtonBackground")
strAlfa.Add("ButtonForeground")
strAlfa.Add("Foreground")
strAlfa.Add("LightBackground")
strAlfa.Add("LightForeground")
strAlfa.Add("LinkForeground")
strAlfa.Add("SelectedBackground")
strAlfa.Add("SelectedForeground")
strAlfa.Add("TextBackground")
strAlfa.Add("TextForeground")
strAlfa.Add("TooltipBackground")
strAlfa.Add("TooltipForeground")
strAlfa.Add("VisitedForeground")
strAlfa.Add("Black")
strAlfa.Add("Blue")
strAlfa.Add("Cyan")
strAlfa.Add("DarkBlue")
strAlfa.Add("DarkCyan")
strAlfa.Add("DarkGray")
strAlfa.Add("DarkGreen")
strAlfa.Add("DarkMagenta")
strAlfa.Add("DarkRed")
strAlfa.Add("DarkYellow")
strAlfa.Add("Default")
strAlfa.Add("Gray")
strAlfa.Add("Green")
strAlfa.Add("LightGray")
strAlfa.Add("Magenta")
strAlfa.Add("Orange")
strAlfa.Add("Pink")
strAlfa.Add("Red")
strAlfa.Add("Transparent")
strAlfa.Add("Violet")
strAlfa.Add("White")
strAlfa.Add("Yellow")
grdSistema.Rows.Count = strAlfa.Count
grdSistema.Columns.Count = 2
grdSistema.Padding = 0
For i = 0 To strAlfa.Max
grdSistema.Row = i
grdSistema.Column = 0
grdSistema.Current.Background = Eval("Color." & strAlfa[i])
grdSistema.Column = 1
grdSistema.Current.Text = strAlfa[i]
Next
grdSistema.Row = 0
End
La aplicación tiene un GridView en el que la columna cero es la que tiene el color de fondo del color correspondiente y la columna uno el nombre. El Gridview se llama grdSistema. —Sí, usaré un «with» cuando esté funcional.—
Gracias de antemano