我想给listview加背景色,蓝绿隔开,问问该怎么做?顺便问一下,怎么改变listview数据行的高度,谢谢

解决方案 »

  1.   

    如何改变listview一行的颜色(在线等待) 
    主要解答者: tommy_linux 提交人: zxfsdbj 
    感谢: tommy_linux 
    审核者: findcsdn 社区对应贴子: 查看 
         A :  如何改变listview一行的颜色  
    ---------------------------------------------------------------  
     
    procedure  TMainForm.ListView1CustomDrawItem(Sender:  TCustomListView;    
       Item:  TListItem;  State:  TCustomDrawState;  var  DefaultDraw:  Boolean);    
    begin    
       if  Item.Caption  =  'aaa'  then      //加上条件  
           (Sender  as  TListView).Canvas.Font.Color  :=  clMaroon    
       else      
           (Sender  as  TListView).Canvas.Font.Color  :=  clRed;    
    end;
      

  2.   

    今天快下班了,先给个基本demo,
    use CommCtrl
    .......
    procedure TForm1.Button1Click(Sender: TObject);
    var
    aa:Trect;
    hbrred,hbrblue:HBRUSH;
    begin
     hbrred:= createsolidbrush(clred);
     hbrblue:=  createsolidbrush(clblue);
     ListView_GetItemRect(self.ListView1.Handle,1, aa, LVIR_BOUNDS);
     fillrect(getdc(self.ListView1.Handle),aa,hbrred);
     ListView_GetItemRect(self.ListView1.Handle,2, aa, LVIR_BOUNDS);
     fillrect(getdc(self.ListView1.Handle),aa,hbrblue);
    end;你先看看吧,主要是提供个函数ListView_GetItemRect
      

  3.   

    在 jinjazz(近身剪(N-P攻略))基础上改一下,只能改变有数据区域
    procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
    if  Item.Index mod 2=0  then      //¼ÓÉÏÌõ¼þ
           (Sender  as  TListView).Canvas.Brush.Color  :=  clblue
       else
           (Sender  as  TListView).Canvas.Brush.Color   :=  clgreen;
    end;