TColor in Hex umrechnen

Irgendwie versteh ich dieses Delphi noch nicht so ganz :slight_smile:
Gibt es eine einfach Möglichkeit, an die Farbe eines Playlist Elementes in ‘normaler’ HEX Schreibweise als String zu kommen ?

var
item_color:TColor;
pi: IPlaylistItem;

pi := CurrentPlaylist.GetItem(0);
item_color:=pi.GetColor;

Hier habe ich etwas gefunden (jedoch nicht ausprobiert):

https://www.delphi-treff.de/tipps-tricks/grafik/konvertierungen/tcolor-in-den-html-farbcode-umwandeln-und-umgekehrt/

Hallöchen,
danke für deine Antwort.
Über diesen Artikel bin ich auch schon gestolpert.

Es scheitert hier jedoch an

Unknown identifier ‘ColorToRgb’

vermutlich eine Funktion von irgend einer Bibliothek, welche von Mairlist so nicht unterstützt wird.

keine Ahnung, ob es eine bessere Lösung gibt.
Aber ich hab mich jetzt damit beholfen:

function IntToHexChar(Value: Byte): Char;
  begin
    if Value < 10 then
      Result := Chr(Ord('0') + Value)
    else
      Result := Chr(Ord('A') + (Value - 10));
  end;

function ByteToHex(Value: Byte): string;
  begin
    Result := IntToHexChar(Value shr 4) + IntToHexChar(Value and $0F);
  end;

function ColorToHex(Color: TColor): string;
  var
    R, G, B: Byte;
  begin
    R := Color and $FF;
    G := (Color shr 8) and $FF;
    B := (Color shr 16) and $FF;
    Result := '#' + ByteToHex(R) + ByteToHex(G) + ByteToHex(B);
  end;

Somit bekomme ich zumindest mittels :

var
  item_color:TColor;
  pi: IPlaylistItem;
  hexColor: string;


item_color := pi.GetColor;
hexColor := ColorToHex(item_color);

die gewünschte Farbe des Items.

1 Like