又不早说:
procedure TForm1.ProgressBarLV1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
aRect:TRect;
begin
aRect:=Item.DisplayRect(drBounds );
if cdsSelected in State then
begin
bmp := TBitmap.Create;
try
ImageList1.GetBitmap(0, bmp);
Sender.Canvas.StretchDraw(Rect(aRect.Left ,aRect.Top , bmp.Width, bmp.Height), bmp);
finally
bmp.Free;
end;
end;
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
bmp: TBitmap;
begin
if cdsSelected in State then
begin
bmp := TBitmap.Create;
try
ImageList1.GetBitmap(0, bmp);
Sender.Canvas.StretchDraw(Rect(20,10, bmp.Width, bmp.Height), bmp);
finally
bmp.Free;
end;
end;
end;
TO: xzhifei(星级饭桶(抵制日货)·飞)
你说的重画是不是这个意思, 但还是达不到我的效果呢?
而且Sender.Canvas.StretchDraw(Rect(20,10, bmp.Width, bmp.Height), bmp);
在这句里面的Left和Top又怎么能得到原来的值,在重画的时候,才能完全覆盖!
你自己重画
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if State = cdsSelected then
begin
{选中时}
end
else
begin
end;
end;