Hallo,
ausserdem fehlt in Deiner SetColor noch die Anweisung zum Neuzeichnen der Liste, damit die Farbänderung auch wirksam wird:
Delphi-Quellcode:
procedure MyColorListBox.SetColor(Value: TColor);
begin
if (FColor<>Value) then
begin
FColor:=Value;
Invalidate;
end; // if
end;