我的 listview控件 每行前都有一个复选框我想每当这复选框被选中时,该行内容同时被为蓝色。复选框取消时,该行内容又变为白色。
用什么事件来控制呢请高手指点!!

解决方案 »

  1.   

    设置Style为lbOwnerDrawFixed
    在OnDrawItem事件中写
        with SkinList.Canvas do
        begin
          if SkinList.Checked[Index] then
            Brush.Color := clBlue
          else
            Brush.color := clWhite;
          FillRect(Rect);
          TextOut(Rect.Left, Rect.Top, SkinList.Items.Strings[Index]);
        end;
      

  2.   

    listview 无style属性呀。还报错!!能再给看看吗。wywry谢谢了
      

  3.   

    大概这样写,有一点效果,楼主自己再弄弄吧
    procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    var
      Rect :TRECT;
    begin
        with Sender.Canvas do
        begin
          if  Item.Checked then
          begin
            Color := clWhite;
            Brush.Color := clBlue
          end
          else
          begin
            Color := clBlack;
            Brush.color := clWhite;
          end;      Rect :=  Item.DisplayRect(drBounds);
          FillRect(Rect);
        end;    DefaultDraw := true;
    end;
      

  4.   

    procedure TFrmTemIn.ListView1AdvancedCustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
      var DefaultDraw: Boolean);
    var
      i:integer;
    begin
      if Item.Checked then  
      begin
        ListView1.Canvas.Brush.Color:=$0046A3FF;
      end
      else
      begin
        ListView1.Canvas.Brush.Color:=$0080FF80;
      end;
    end;