重发 关于自绘LISTVIEW的经验。(以前发过一个,找不到了) -menxin(1分)

  • 主题发起人 主题发起人 menxin
  • 开始时间 开始时间
M

menxin

Unregistered / Unconfirmed
GUEST, unregistred user!
查看问题时看到有很多朋友提出有关listview的customdraw问题,把以前做的一个拿出来供大家参考

var
Form1: TForm1;
bmp:TBitmap;
implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
bmp:=TBitmap.Create;
bmp.LoadFromFile('c:/1.bmp');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
bmp.free;
end;

procedure TForm1.ListView1CustomDraw(Sender: TCustomListView;
const ARect: TRect; var DefaultDraw: Boolean);
begin
Sender.Canvas.Draw(0,0,bmp); //画上个背景
end;

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
function GetRGBColor(Value: TColor): DWORD;
begin
Result := ColorToRGB(Value);
case Result of
clNone: Result := CLR_NONE;
clDefault: Result := CLR_DEFAULT;
end;
end;
begin
DefaultDraw:=False;
if Item.Selected then
begin
Sender.Canvas.Brush.Color:=clHighlight;
Sender.Canvas.Font.Color:=clHighlightText;
ImageList_DrawEx(ImageList1.Handle, item.ImageIndex, Sender.Canvas.Handle, Item.Left,Item.Top, 0, 0, GetRGBColor(ImageList1.BkColor), GetRGBColor(ImageList1.BlendColor), 4);
end
else
ImageList1.Draw(Sender.Canvas,Item.Left,Item.Top,Item.ImageIndex,True);
Sender.Canvas.TextRect(Item.DisplayRect(drLabel),Item.Left+(ImageList1.Width+(Length(Item.Caption)div 2)*TListView(Sender).Font.Height)div 2, Item.Top+ImageList1.Height+4,Item.Caption);
if Item.Selected or Item.Focused then
Sender.Canvas.DrawFocusRect(Item.DisplayRect(drLabel));
end;



 
to menxin:[:D]
小徒看过了,但还没试[:D]
[:D][:D]
 
呵呵呵,你也在呀[:o)]
 
今天楼上王经理搬来了一台机器,从29号机上的窗户出去了一根网线。
对了,项目如何了
 
小活,干着呢
 
再没人看我结束了
 
接受答案了.
 
我回去试一下
 
怎么没有Uses部分呀!程序运行不通!
 
后退
顶部