i see,在treeview的onchange事件上通过node.displayrect,自己把字符串画上去吧

解决方案 »

  1.   

    将TreeView的HotTrack属性设为True
      

  2.   

    procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
      var I:integer;
    begin
    for I:=0 to treeview1.items.count-1 do
    if treeview1.items.item[i].selected
     then treeview1.items.item[i].stateindex:=1
    else 
    treeview1.items.item[i].stateindex:=2;
    end;将上面的语句稍微改一下即可.
      

  3.   

    procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
      if Node.Selected then
      begin
         DefaultDraw:=false ;
         TreeView1.Canvas.Brush.Color:=clBlue;
         TreeView1.Canvas.Font.Color:=clRed;
         TreeView1.Canvas.FillRect(Node.DisplayRect(true));
         TreeView1.Canvas.Textout(Node.DisplayRect(true).Left+2,
                                  Node.DisplayRect(true).top+2,
                                  node.text);
      end
    end;
      

  4.   

    请问 shuangsa(双萨) ,我是想让某个节点的字体的颜色改变以后就一直保持改变后的颜色,可是我根据你的代码实验以后,只有点中的节点的颜色变了,而以前的节点的颜色又变回去了。
      

  5.   

    procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
    Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
    if Node.Text = '123' then  //根据Node的具体值给出判断条件
    begin
    DefaultDraw:=True ;
    TreeView1.Canvas.Font.Color:=clRed;
    TreeView1.Canvas.Textout(Node.DisplayRect(true).Left+2,
    Node.DisplayRect(true).top+2,
    node.text);
    end
    end;