ich verwende Listview eigentlich nie, aber so bekomme ich das
IMHO gewünschte Ergebnis:
(kann sicher noch optimiert werden)
Delphi-Quellcode:
var r : TRect;
i : Integer;
s : String;
begin
PlanView.Canvas.Brush.Color := clWhite;
PlanView.Canvas.Brush.Style := bsclear;
if SubItem<1
then begin
DefaultDraw:=true;
exit;
end;
r := Item.DisplayRect(drbounds);
for i := 0 to SubItem-1 do begin
r.Left := r.Left + PlanView.Columns.Items[i].Width;
r.Right := r.Left + PlanView.Columns.Items[i+1].Width;
end;
if SubItem=1
then PlanView.Canvas.Pen.Color := clRed
else PlanView.Canvas.Pen.Color := clBlue;
PlanView.Canvas.FillRect(r);
PlanView.Canvas.Rectangle(r.Left, r.Top, r.Right, r.Bottom);
r.Left := r.Left +1;
r.Right := r.Right - 1;
r.Top := r.Top + 1;
r.Bottom := r.Bottom - 1;
if item.SubItems.Count >= SubItem then s := item.SubItems[SubItem-1];
PlanView.Canvas.TextRect(r,s);
DefaultDraw := false;
end;