Я пытаюсь настроить цвет фона и цвет шрифта элемента ListView, используя событие OnCustomDrawItem. Однако цвет границы подэлемента всегда является цветом фона ListView. Кто-нибудь знает, как это исправить? Вот код, который я использую:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
lst: TListView;
i: integer;
f1, f2, c1, c2: TColor;
begin
if (TListView(Sender).ViewStyle = vsIcon) then
Exit;
lst := Sender as TListView;
lst.Canvas.Brush.Style := bsSolid;
i := lst.Items.Count;
if (i mod 2) <> 0 then
begin
c1 := clWhite;
c2 := $00F8F8F8;
f1 := clBlue;
f2 := clBlack;
end else
begin
c1 := $00F8F8F8;
c2 := clWhite;
f1 := clBlack;
f2 := clBlue;
end;
// Painting...
if (Item.Index mod 2) = 0 then
begin
lst.Canvas.Brush.Color := c2;
lst.Canvas.Font.Color := f2;
end else
begin
lst.Canvas.Brush.Color := c1;
lst.Canvas.Font.Color := f1;
end;
end;
РЕДАКТИРОВАТЬ:
Между столбцами SubItems есть GAP. Этот GAP является цветом фона ListView.
Я использую Delphi XE2 и ОС: Windows 7 бит.
(Item.Index mod 2) = 0
наOdd(Item.Index)
(или отрицание последнего утверждения). - person Andreas Rejbrand   schedule 27.09.2012