如何设置根据节点的level来设置该层的颜色,我是这样做的:
   case Node.Level of
      0:TTreeView(sender).Canvas.Font.Color:=clWindowText;
      1:TTreeView(sender).Canvas.Font.Color:=clBackground;
      2:TTreeView(sender).Canvas.Font.Color:=clFuchsia;
      3:TTreeView(sender).Canvas.Font.Color:=clPurple;
      4:TTreeView(sender).Canvas.Font.Color:=clRed;
      5:TTreeView(sender).Canvas.Font.Color:=clBlue;
   end;
   with TTreeView(sender).Canvas do
      begin
        NodeRect:=TTreeView(sender).Selected.DisplayRect(true);
        FillRect(NodeRect);
        TextOut(NodeRect.Left, NodeRect.Top,TTreeView(sender).Selected.Text);
        NodeRect := Node.DisplayRect(False);
      end;
但是有问题。

解决方案 »

  1.   

    case Node.Level of
          0:TTreeView(sender).Canvas.Font.Color:=clWindowText;
          1:TTreeView(sender).Canvas.Font.Color:=clBackground;
          2:TTreeView(sender).Canvas.Font.Color:=clFuchsia;
          3:TTreeView(sender).Canvas.Font.Color:=clPurple;
          4:TTreeView(sender).Canvas.Font.Color:=clRed;
          5:TTreeView(sender).Canvas.Font.Color:=clBlue;
       end;只需要上面这部份的代码就可以了,后面的重画代码不要,交给TreeView去处理。
      

  2.   

    非常谢谢。20分给定你了。
    再帮我解决两个问题吧,你已经帮了我这个大菜鸟很多次了,谢谢!
    1,怎样可以改变被选中的节点的选折区域的颜色,默认是深蓝色;
    2,被选中的节点的选折区域的宽度如何确定? 节点
      ----------------------------------------
     |asdfsdfsdf                          <--|---选折区域的颜色
     | ______________________________________|
             
     |<---------选折区域的宽度--------------->|
      

  3.   

    var
      NodeRect: TRect;
      backRect: TRect;
    begin
       case Node.Level of
          0:TTreeView(sender).Canvas.Font.Color:=clWindowText;
          1:TTreeView(sender).Canvas.Font.Color:=clBackground;
          2:TTreeView(sender).Canvas.Font.Color:=clFuchsia;
          3:TTreeView(sender).Canvas.Font.Color:=clPurple;
          4:TTreeView(sender).Canvas.Font.Color:=clRed;
          5:TTreeView(sender).Canvas.Font.Color:=clBlue;
       end;
       with TTreeView(sender).Canvas do
       begin
         if cdsSelected in State then
           Brush.Color := clYellow;  // 设置所选行背景色
         NodeRect:=Node.DisplayRect(True);
         // backRect即为所选区域
         backRect := Rect(NodeRect.Left, NodeRect.Top, TreeView1.Width, NodeRect.Bottom);
         FillRect(backRect);
       end;
    end;
      

  4.   

    节点
      --------------------------------------------------------------------------
     |asdfsdfsdf                        |        黄色                          | 
     |__________________________________|______________________________________| 
                  /\
     |             |_____虚线框          |希望变成这样子节点
      ------------------------------------------------------------------------
     |asdfsdfsdf                                黄色                          | 
     |________________________________________________________________________| 
                  /\
     |             |_____虚线框                                               |
      

  5.   

    晕,这不能吧?要的话设置DefaultDraw为False,全部自己画,还得画节点前面的线和加减号,我不会哦。
      

  6.   

    不好意思。
    是我搞错了。
    焦点不落在treeview上那个虚线框就不见了。
    但这种效果我在dxDBTreeList控件上看见过。
      

  7.   

    哦你可以研究一下dxDBTreeList的源码
      

  8.   

    http://www.51delphi.com/delphi/soft?cx=devexpress
    或者到www.playicq.com查找devexpress