如何才能让同一个 TreeNode 的 Text 显示两种颜色效果图:http://kivens.nease.net/treelist.jpg我用Spy++看他用的是TdxTreeList,不知哪位大侠能给出一个例子,谢谢

解决方案 »

  1.   

    TdxTreeList具体怎么设不知道,但我知道在VirtualTree中,节点有Static Text,也是这个效果。
      

  2.   

    TdxTreeList肯定有什么属性直接设置的
      

  3.   

    還是CSDN好啊,至少有這麼多人回復,我開始放在大富翁,兩天都沒一個人回to:
    myy() : 先謝了,我下午再去試試看
      

  4.   

    to : cybercake(数字蛋糕) 能提示一下怎麼做嗎,如果能在標准TreeView中實現,我想盡量不用第三方控件。
      

  5.   

    呵呵,不知是不是这种效果!procedure TForm1.FormCreate(Sender: TObject);
    var
      i: Integer;
      Node: TTreeNode;
    begin
      With TreeView1 do
      begin
        Node := Items.AddChild(nil,'test');
        for i:=0 to 9 do
          Items.AddChild(Node,'Node'+IntToStr(i));
      end;
    end;procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    var
      r: TRect;
      oldColor: TColor;
    begin
      r := Node.DisplayRect(true);
      OffsetRect(r,Sender.Canvas.TextWidth(Node.Text)+10,0);
      oldColor := Sender.Canvas.Font.Color;
      if (cdsSelected in State) then
        Sender.Canvas.Font.Color := clWhite
      else
        Sender.Canvas.Font.Color := clBlue;
      Sender.Canvas.TextRect(r,r.Left,r.Top,Node.Text);
    end;
      

  6.   

    改进一步
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i: Integer;
      Node: TTreeNode;
    begin
      With TreeView1 do
      begin
        Node := Items.AddChild(nil,'test');
        for i:=0 to 9 do
          Items.AddChild(Node,'Node'+IntToStr(i));
      end;
    end;procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    var
      r: TRect;
      oldColor: TColor;
    begin
      r := Node.DisplayRect(true);
      OffsetRect(r,Sender.Canvas.TextWidth(Node.Text),0);
      r.Right := r.Right + 10;
      oldColor := Sender.Canvas.Font.Color;
      if (cdsSelected in State) then
        Sender.Canvas.Font.Color := clWhite
      else
        Sender.Canvas.Font.Color := clBlue;
      Sender.Canvas.TextRect(r,r.Left+10,r.Top,Node.Text);
    end;