先谢了!
正在学习制作一个取色软件,想在TListBox中显示选取的颜色,但是每次选取后前面的颜色块都被换成了最后选取的颜色。应该如何解决?我的代码如下:
procedure TfrmCPicker.LBCjDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  tmpOldColor: TColor;
  tmpShape:TShape;
begin
  with (Control as TListBox) do
    begin
       tmpOldColor:=Canvas.Brush.Color;
       Canvas.FillRect(Rect);
       Canvas.Brush.Color:=RGBToColor(strtoint(EdRed.Text),strtoint(EdGreen.Text),strtoint(EdBlue.Text));
       Canvas.Rectangle(Rect.Left+4,Rect.Top+1,(Rect.Right+Rect.Left)div 3,Rect.Bottom-1);
       Canvas.Brush.Color:=tmpOldColor;
       Canvas.TextOut((Rect.Left+Rect.Right)div 2,Rect.Top+4,(Control as TListBox).Items[Index]);
    end;
end;procedure TfrmCPicker.btnPickClick(Sender: TObject);
begin
  LBCj.Items.Append(EdColor.Text); 
end;