Der einzige Unterschied ist dass in clWindow nicht die eigentliche Farbe enthalten ist sondern quasi nur eine eine Art ID für die Fensterfarbe.
ColorToRGB wandelt diese "Pseudo-Farbe" um indem es mit einer
API den wahren in Windows eingestellten Farbwert für clWindow herausfindet.
Was das unterm Strich damit zu tun hat, dass clWindow dieses seltsame Verhalten hervorruft weiß ich allerdings auch nicht.
Es sollte eigentlich auch ohne ColorToRGB funktionieren denke ich.
Edit: Ich hab eine Theorie:
Die ganzen "speziellen" Farben beginnen alle mit 0xFF, statt 0x00. Wenn man dieses Byte als Alphawert deuted (was vllt. die Windows
API hinter dem ListView tut), dann ist clWindow einfach nur eine komplett durchsichtige Farbe. Und wenn intern das ListView so gezeichnet wird, dass nicht nur die aktuelle Spalte mit der Farbe gezeichnet wird, sondern von Spalte X bis zum Ende dann hätte man genau das verhalten.
Edit2: Hab grad meine Theorie widerlegt. D.h. hab wieder keine Ahnung