Nie w OnClick, tylko w OnDrawItem :)
Ten przykład zaznacza itema w czterokolumnowym listview, i jeszcze zostawia z lewej strony itema miejsce na ikonę (zmienna offset) :
if Item.Selected then begin
offset := 36;
ListView1.Canvas.Font.Color := clWhite;
ListView1.Canvas.Brush.Color := clBlack;
ListView1.Canvas.FillRect(Rect);
ListView1.Canvas.TextOut(Rect.Left+offset, Rect.Top+2, Item.Caption);
Offset := ListView1.Columns.Items[0].Width;
ListView1.Canvas.TextOut(Rect.Left+offset, Rect.Top+2, Item.SubItems[0]);
Offset := Offset + ListView1.Columns.Items[1].Width;
ListView1.Canvas.TextOut(Rect.Left+offset, Rect.Top+2, Item.SubItems[1]);
Offset := Offset + ListView1.Columns.Items[2].Width;
ListView1.Canvas.TextOut(Rect.Left+offset, Rect.Top+2, Item.SubItems[2]);
end
//niezaznaczony
else begin
Offset := 36;
ListView1.Canvas.Brush.Color := clWhite;
ListView1.Canvas.Font.Color := clBlack;
ListView1.Canvas.FillRect(Rect);
ListView1.Canvas.TextOut(Rect.Left+offset, Rect.Top+2, Item.Caption);
Offset := ListView1.Columns.Items[0].Width;
ListView1.Canvas.TextOut(Rect.Left+offset, Rect.Top+2, Item.SubItems[0]);
Offset := Offset + ListView1.Columns.Items[1].Width;
ListView1.Canvas.TextOut(Rect.Left+offset, Rect.Top+2, Item.SubItems[1]);
Offset := Offset + ListView1.Columns.Items[2].Width;
ListView1.Canvas.TextOut(Rect.Left+offset, Rect.Top+2, Item.SubItems[2]);
end;