![[Imagen: MM1vFa3.png]](https://i.imgur.com/MM1vFa3.png)
  $aColors.Add([Color.Background, "Background"])
  $aColors.Add([Color.Black, "Black"])
  $aColors.Add([Color.Blue, "Blue"])
  $aColors.Add([Color.ButtonBackground, "ButtonBackground"])
  $aColors.Add([Color.ButtonForeground, "ButtonForeground"])
  $aColors.Add([Color.Cyan, "Cyan"])
  $aColors.Add([Color.DarkBlue, "DarkBlue"])
  $aColors.Add([Color.DarkCyan, "DarkCyan"])
  $aColors.Add([Color.DarkGray, "DarkGray"])
  $aColors.Add([Color.DarkGreen, "DarkGreen"])
  $aColors.Add([Color.DarkMagenta, "DarkMagenta"])
  $aColors.Add([Color.DarkOrange, "DarkOrange"])
  $aColors.Add([Color.DarkPurple, "DarkPurple"])
  $aColors.Add([Color.DarkRed, "DarkRed"])
  $aColors.Add([Color.DarkRoyal, "DarkRoyal"])
  $aColors.Add([Color.DarkViolet, "DarkViolet"])
  $aColors.Add([Color.DarkYellow, "DarkYellow"])
  $aColors.Add([Color.Default, "Default"])
  $aColors.Add([Color.Foreground, "Foreground"])
  $aColors.Add([Color.Gray, "Gray"])
...
...
'etc,etc
		
	(04-05-2023, 12:03)Shordi escribió: ¿Alguien conoce una manera más elegante de crear ese Variant[], es decir, obtener las constantes y los valores de la clase Color, sin tener que ponerlos a pedal?
Dim myClass As Class = Classes["Color"]
Dim sSymbol As String
  For Each sSymbol In myClass.Symbols
    If myClass[sSymbol].Kind = Class.Constant Then
      $aColors.Add([myClass[sSymbol].Value, sSymbol])
    Endif
  Next  For Each sSymbol In myClass.Symbols
    If myClass[sSymbol].Kind = Class.Property Or If myClass[sSymbol].Kind = Class.Constant Then
      $aColors.Add([myClass[sSymbol].Value, sSymbol])
    Endif
  Nextdim ncolor as integer
dim colorname as string
colorname = "Background"
ncolor = color.(colorname) 'pongo los paréntesis por poner algo...(05-05-2023, 08:46)Shordi escribió: Se puede hacer un enfoque mixto donde los colores "simples" se obtengan con tu bucle y los del sistema con mi aproximación chapucera... pero sigue siendo poco elegante.
$ find . -type f -exec grep -H 'defaultBackground' {} \;
./gb.gtk/src/gcontrol.cpp:gColor gControl::defaultBackground() const
./gb.gtk/src/gcontrol.cpp:    return defaultBackground();
./gb.gtk/src/gcontrol.cpp:        return no_default ? defaultBackground() : COLOR_DEFAULT;
./gb.gtk/src/gtextbox.h:    virtual gColor defaultBackground() const;
./gb.gtk/src/gtextbox.cpp:gColor gTextBox::defaultBackground() const
./gb.gtk/src/gbutton.h:    gColor defaultBackground() const;
./gb.gtk/src/gbutton.cpp:gColor gButton::defaultBackground() const
./gb.gtk/src/gbutton.cpp:        return gControl::defaultBackground();
./gb.gtk/src/gcontrol.h:    virtual gColor defaultBackground() const;
./gb.gtk/src/gtextarea.h:    virtual gColor defaultBackground() const;
./gb.gtk/src/gtextarea.cpp:gColor gTextArea::defaultBackground() const  Dim sSymbol As String
  For Each sSymbol In myClass.Symbols
    If myClass[sSymbol].Kind = Class.Constant Then
      $aColors.Add([myClass[sSymbol].Value, sSymbol])
    Else If myClass[sSymbol].Kind = Class.Property
      $aColors.Add([Object.GetProperty(Color, sSymbol), sSymbol])
    Endif
  Next For Each sSymbol As String In Classes["Color"].Symbols
   If Classes["Color"][sSymbol].Kind = Class.Constant Or If Classes["Color"][sSymbol].Kind = Class.Property Then $Colors[sSymbol] = Object.GetProperty(Color, sSymbol)
 Next.Symbols
  aSymbols.sort
  For Each sSymbol As String In Classes["Color"].Symbols
    If Classes["Color"][sSymbol].Kind = Class.Constant Or If Classes["Color"][sSymbol].Kind = Class.Property Then
      $aColors.Add([Object.GetProperty(Color, sSymbol), sSymbol])
    Endif
  Next