Привет.
Несколько вопросов по отрисовке
Есть 
	Код:
	Tlistview - vsreport - OwneкDraw:=true;
 
 
1) 
Текст вывожу так
	Код:
	
with (sender as Tlistview).Canvas do begin
TextOut(Rect.Left+18 ,Rect.Top+4,Item.Caption);
TextOut(Rect.Left+(sender as Tlistview).Columns.Items[0].Width ,Rect.Top+4,Item.SubItems[0]);
TextOut(Rect.Left+(sender as Tlistview).Columns.Items[0].Width
+(sender as Tlistview).Columns.Items[1].Width,Rect.Top+4,Item.SubItems[1]);
TextOut(Rect.Left+(sender as Tlistview).Columns.Items[0].Width
+(sender as Tlistview).Columns.Items[1].Width+(sender as Tlistview).Columns.Items[2].Width+3,Rect.Top+4,Item.SubItems[2]);
TextOut(Rect.Left+(sender as Tlistview).Columns.Items[0].Width
+(sender as Tlistview).Columns.Items[1].Width+(sender as Tlistview).Columns.Items[2].Width+3
+(sender as Tlistview).Columns.Items[3].Width,Rect.Top+4,Item.SubItems[3]);
TextOut(Rect.Left+(sender as Tlistview).Columns.Items[0].Width
+(sender as Tlistview).Columns.Items[1].Width+(sender as Tlistview).Columns.Items[2].Width+3
+(sender as Tlistview).Columns.Items[3].Width+(sender as Tlistview).Columns.Items[4].Width,Rect.Top+4,Item.SubItems[4]);
TextOut(Rect.Left+(sender as Tlistview).Columns.Items[0].Width
+(sender as Tlistview).Columns.Items[1].Width+(sender as Tlistview).Columns.Items[2].Width+3
+(sender as Tlistview).Columns.Items[3].Width+(sender as Tlistview).Columns.Items[4].Width
+(sender as Tlistview).Columns.Items[5].Width,Rect.Top+4,Item.SubItems[5]);
 end;
 
 
Тут все норм кроме одного .  Если длина текста больше ширины колонки  , то он рисуется на следующую колонку .
Вопрос : Как сделать обрезание текста , чтоб на конце было '...' ?
2) Чередование цвета строк
Делаю так 
  
	Код:
	  if trunc((i) / 2) < (i / 2) then
  sender.canvas.brush.Color := color1
 else
  sender.canvas.brush.Color := color2;
 
 
Вопрос : как раскрасить весь Listview чередованием даже если он пустой . Так делают во многих проигрывателях . Вот что я хочу получить в итоге -

Спасибо .