Hallo,
ein Ansatz wäre das hier:
Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
var
rTmp: TRect;
bTmp: TBitmap;
lv: TListView;
i: Integer;
w: Integer;
begin
DefaultDraw := False;
lv := TListView(Sender);
bTmp := TBitmap.Create;
try
ImageList1.GetBitmap(Item.SubItemImages[SubItem-1], bTmp);
rTmp := Item.DisplayRect(drSelectBounds);
w := lv.Columns[0].Width;
for i := 1 to SubItem - 1 do
w := w + lv.Columns[i].Width;
lv.Canvas.Draw(w + 2, rTmp.Top, bTmp);
lv.Canvas.TextOut(w + 2 + bTmp.Width + 2, rTmp.Top, Item.SubItems[SubItem-1]);
finally
FreeAndNil(bTmp);
end;
end;
Zu beachten ist eigentlich nur, dass es die ImageList1 gibt. Alles andere musst du mal ein bissel probieren. Ich glaube es gibt auch noch ein Problem, wenn man die Spaltenbreite ändert. Aber das Icon wird ersteinmal an die von dir gewünschte Stelle gemalt.
mfg Leonard