如何才能实现LISTVIEW的ITEMS(或者说某一行)在满足一定条件的时候变成某种颜色查了资料好像用SMALLIMAGE属性可以完成,具体是如何使用的,有没有实例提供参考一下?

解决方案 »

  1.   

    不是在事件CustomDrawItem中写代码的那种
      

  2.   

    这个好办,ListView 有一个 OnAdvancedCustomDrawItem 事件,在事件中设置就可以了procedure TForm1.lvwDetailAdvancedCustomDrawItem(
      Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
      Stage: TCustomDrawStage; var DefaultDraw: Boolean);
    begin
          if StrToCurr(Item.SubItems[2]) < 0 then begin
            // Sender.Canvas.Font.Color := cLBlue; 前景色
            Sender.Canvas.Brush.Color := clYellow;  //背景色
          end;
    end;
      

  3.   

    to xiaoxinghappy:在满足一定条件指的是:从外面程序发来一个消息,本进程也有一个接受消息的事件,要在此事件中使得LISTVIEW变色。恐怕只能用SMALLIMAGE
      

  4.   

    用SMALLIMAGE?改变图标的颜色?
      

  5.   

    建议你使用 VirtualTreeview 
      

  6.   


    楼主,ListView 的 Column 中加一列来表示数据,收到消息改变其值,并 Refresh,使ListView 重画,搞掂,写程序要用推箱子的思维,不能一条道走到黑
      

  7.   

    重畫行,必定要用到OnCustomDraw;smallImage是處理圖標用的
      

  8.   

    up  
    把逻辑写在OnAdvancedCustomDrawItem 里 然后Refresh