Moin!
Zitat von
jim_raynor:
Mmh. clInfoBk ist eine Konstante und gibt nicht die richtige Farbe wieder sondern nur einen Wert, damit Windows weiß, dass es die Systemfarbe nutzen soll. Genauso verhält es sich mit clBtnFace und den anderen Systemfarben. Wenn du also IntToHex(ColorToRGB(clInfoBk),6) benutzt bekommst du auf jedem System den gleichen Wert, auch wenn sich die Farbe ändert. Um den eigentlichen Farbwert zu bekommen gibt es sicherlich ne
API Funktion die ich jetzt nicht kenne. Aber du kannst ja im Eigenschaftsdialog der Anzeige schauen (bei Darstellung glaube).
Wenn du sowas hier schon behauptest und schreibst, dann probiere es bitte auch aus.
Die clXXX Konstanten sind negative Indexe (bzw. oberstes Bit ist zur Kennzeichnung gesetzt) die Borlands Konstanten kennzeichnen und um daraus eine Farbe mit
RGB Werten zu bekommen, kann man die ColorToRGB() Funktion nutzen. Diese sorgt dafür, dass wenn es eine solcher Konstante ist, ein
RGB Wert zurück kommt. Ansonsten werden die schon übergebenen
RGB Werte wieder zurück gegeben.
Delphi-Quellcode:
function ColorToRGB(Color: TColor): Longint;
begin
if Color < 0 then
Result := GetSysColor(Color and $000000FF) else
Result := Color;
end;
In so fern ist deine Aussage von oben falsch, denn man bekommt immer die
RGB Werte, da die von dir vermutete Funktion schon aufgerufen wird. Wenn du aber
IntToHex(clInfoBK), 8)
machst, dann bekommst du im untersten Byte ein Index für die Systemfarbe und das oberste Bit (MSB) ist gesetzt.
MfG
Muetze1