如何在 listbox中每行中添加图标 VCL组件开发及应用http://www.delphi2007.net/DelphiVCL/html/delphi_20061226161818102.html
如何在 listbox中每行中添加图标
procedure TfrmMain.lbLanmuDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with Control as TListBox do begin
Canvas.FillRect(Rect);
ilType.Draw(Canvas,Rect.Left,Rect.Top+2,index+1); //绘图,ilType-TImageList
Canvas.TextOut(Rect.Left+ilType.Width+4,Rect.Top+8,Items.Strings[index]);
end;
end
假设我已经把ico放在了imagelist中了呢?
先将ListBox的Style属性设为lbOwnerDrawFixed
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
AColor: TColor;
begin
with TListBox(Control) do
begin
Canvas.Brush.Color := Color;
Canvas.Brush.Style := bsSolid;
Canvas.FillRect(Rect);
ImageList1.Draw(Canvas, Rect.Left, Rect.Top, 0);
AColor := ColorToRgb(Color) xor $FFFFFF;
Canvas.Font.Color := AColor;
Canvas.TextOut(ImageList1.Width + 2, Rect.Top, Items[Index]);
end;
end;