Nu heb ik zelf wat sterretjes getekend - en krijg ze ook wel op de listview subitem, alleen teken ik nu rechtstreeks op het canvas van de listview met als gevolg zwarte blokjes bij selectie, ook het tekenen gaat niet zo heel erg netjes..
Ik doe dit nu zo:
Delphi Code:
procedure TfrmMain.lvVODCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
var
ListView: TListView absolute Sender;
R: TRect;
begin
DefaultDraw := SubItem <> 1;
if not DefaultDraw then
begin
ListView_GetSubItemRect(ListView.Handle, Item.Index, SubItem,
LVIR_BOUNDS, @R);
Listview.Canvas.StretchDraw(R, image2.Picture.Graphic);
end;
Sender.Canvas.Font.OnChange(Sender);
end;
[Edit]
Met dank aan de ideeen van mensen hier is het toch gelukt!
Code:
Delphi Code:
procedure TfrmMain.lvVODCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
var
ListView: TListView absolute Sender;
R: TRect;
procedure DrawStarRating(Canvas: TCanvas; R: TRect; Rating: Integer);
begin
case Rating of
0 : Canvas.Draw(R.Left + 4, R.Top + 2, EmptyStarRating);
1 : Canvas.Draw(R.Left + 4, R.Top + 2, OneStarRating);
2 : Canvas.Draw(R.Left + 4, R.Top + 2, TwoStarRating);
3 : Canvas.Draw(R.Left + 4, R.Top + 2, ThreeStarRating);
4 : Canvas.Draw(R.Left + 4, R.Top + 2, FourStarRating);
5 : Canvas.Draw(R.Left + 4, R.Top + 2, FullStarRating);
end;
end;
var
E: Extended;
I: Integer;
begin
DefaultDraw := SubItem <> 1;
if not DefaultDraw then
begin
ListView_GetSubItemRect(ListView.Handle, Item.Index, SubItem, LVIR_BOUNDS, @R);
Listview.Canvas.Brush.Style := bsClear;
if TryStrToFloat(listView.Items[Item.Index].SubItems[0], E, RatingFormat) then
begin
DrawStarRating(Listview.Canvas, R, Ceil(E / 2));
end else
if TryStrToInt(listView.Items[Item.Index].SubItems[0], I) then
begin
DrawStarRating(Listview.Canvas, R, Ceil(I / 2));
end else
begin
DrawStarRating(Listview.Canvas, R, 0);
end;
end;
Sender.Canvas.Font.OnChange(Sender);
end;
Opmerkingen of verbeteringen zijn welkom! Als de code efficienter kan dan zelfs graag!
De afbeeldingen zijn png, heb deze zelf even getekend in Fireworks.
Bookmarks