如何在 listbox中每行中添加图标

解决方案 »

  1.   

    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
      

  2.   

    假设我已经把ico放在了imagelist中了呢?
      

  3.   

    先将ListBox的Style属性设为lbOwnerDrawFixedprocedure 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;