资源说明:在Delphi中,主要通过Canvas画布对象进行绘图,Delphi可以在窗体或组件上绘制出各式各样的图像,通过Canvas的属性将一些图形变为文字,或是将一些文字变为图形;这里我主要是通过Canvas属性来美化列表框ListBox中的列表项:
首先要将ListBox的Style属性设为lbownerDrawFixed,然后再ListBox的OnDrawItem事件上书写代码如下:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;Rect: TRect; State: TOwnerDrawState);beginwith Control as TListBox dobegin Canvas.FrameRect(Clientrect); if odSelected in State then begin Canvas.Brush.Color:=clRed; Canvas.RoundRect(Rect.Left,Rect.Top,Rect.Right,Rect.Bottom,8,15); //前面四个参数分别是左上顶角和右下顶点坐标,构成一个矩形区域,后面两参数是来设置四个顶角端的小三角大小,为了美观可自行设定 setBkMode(Canvas.Handle,TRANSPARENT );//这个在前面文章中有介绍,是设置透明背景 Canvas.TextOut((Rect.right-Rect.Left) div 2,Rect.Top,Items.Strings[Index]); end else begin Canvas.Brush.Color:=clSkyBlue;//这里为了列表项和ListBox背景色一致,最好就都设成一样颜色 Canvas.RoundRect(Rect.Left,Rect.Top,Rect.Right,Rect.Bottom,15,15); Canvas.TextRect(Rect,Rect.Left,Rect.Top,Items.Strings[Index]); end;end;end;
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。