Hace no muchos días contesté en los foros una pregunta similar.
A parte de lo que te comenta Delphius, que te ayudará a entender seguro cómo funciona el sistema de coloración y lo que debes hacer, yo te recomiendo que revises la unit
GraphUtil que viene con Delphi. Algunas funciones que trae te pueden ser de utilidad:
Código Delphi
[-]
function GetHighLightColor(const Color: TColor): TColor;
function GetShadowColor(const Color: TColor): TColor;
procedure ColorRGBToHLS(clrRGB: COLORREF; var Hue, Luminance, Saturation: Word);
function ColorHLSToRGB(Hue, Luminance, Saturation: Word): TColorRef;
function ColorAdjustLuma(clrRGB: TColorRef; n: Integer; fScale: BOOL): TColorRef;