想把 ItemIndex 记录默认的深蓝色换成别的颜色,如何实现?

解决方案 »

  1.   

    这个试试看,拷过来的
    把Listbox的style属性改为lbOwnerDrawVariable以后,要怎么显示你就可以随心所欲了。
    只在两个事件中写代码即可:procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
      var Height: Integer);
    begin
      Height := Index Mod 3 * 2 + ListBox1.ItemHeight; 
     //你要画的每个Item的高度,根据字体不同而不同,我这是随便取了几个不同的值
    end;procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    begin
      ListBox1.Canvas.Brush.Color := Index * $A0F0F0;
      ListBox1.Canvas.FillRect(Rect);
    //上面的代码是填充Item的背景,下面画出每个Item的文字,可以为每个Item设置不同的字体及着色
      if Index mod 2 = 0 then
      begin
        ListBox1.Canvas.Font.Name := 'Impact';
        ListBox1.Canvas.Font.Color := clLime;
      end
      else
      begin
        ListBox1.Canvas.Font.Name := 'Tahoma';
        ListBox1.Canvas.Font.Color := clRed;
      end;
    //用Canvas的TextOut画出文字:
      ListBox1.Canvas.TextOut(Rect.Left, Rect.Top, ListBox1.Items[Index]);
    end;