Für die erste 3 brauchst du doch eigentlich nicht auf dem TCanvas zeichnen, sondern nur die Farbe vom Hintergrund ändern.
Delphi-Quellcode:
if SubItem = 4 then
Sender.Canvas.Brush.Color:= clBlue
else
Sender.Canvas.Brush.Color:= graphics.clBtnHighlight
Nur beim 4. Beispiel müsstest du wegen dem Rahmen auf dem TCanvas zeichnen. Außerdem müsstest du doch auch dann die Subitems abfragen und je nach dem
DefaultDraw aktivieren oder nicht.