Using TListview with subitems is more difficult on Lazarus then Delphi.
I have a Listview with vsreport. To color event rows I use this code (ownerdraw to true):
procedure TFrmBasisdata.LVBasisdataCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var rt, r: TRect;
begin
if Item.Index mod 2 = 0 then
TListView(Sender).Canvas.Brush.Color := clSilver
else
TListView(Sender).Canvas.Brush.Color := clWhite;
r := Item.DisplayRect(drBounds);
TListView(Sender).Canvas.FillRect(r);
rt := r;
rt.Left := rt.Left + 5;
rt.Top := rt.Top + 1;
TListView(Sender).Canvas.TextOut(Item.Left, Item.Top, Item.Caption);
DefaultDraw:=False;
end;
This gives a full length of row with the selected color. But subitems are not showed.
AFAIK you have to use CustomDrawSubItem:
procedure TFrmBasisdata.LVBasisdataCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
begin
TListView(Sender).Canvas.TextOut(Item.Left, Item.Top, Item.SubItems[subitem]);
DefaultDraw := false;
end;
But it shows no subitems. How do I get them displayed?