$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
Next
dim 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