schau mal, was dir als rect übergeben wird...evtl. wird die drawroutine (im gegensatz zum Grid) nur 1x pro zeile aufgerufen...dann müsstest du die spalten nacheinander malen und immer ein passendes rest berechnen (TListview.columns.width).
so in etwa (wie immer ungetested
):
Delphi-Quellcode:
var l:integer;
r:TRect;
s:string;
l:=0;
r:=rect;
for i:=0 to listview1.columns.count-1 do
begin
r.left:=l;
r.right:=l+listview1.columns[i].width;
case i of
0:s:=item.caption;
else s:=item.subitems[i-1];
end;
//DrawText
l:=l+listview1.columns[i].width;
end;
HTH Frank