to windfire(wanglei)
how to do

解决方案 »

  1.   

    你的需求我不太清楚,下面这段程序是用递归实现的.如果不明白再问我吧.
    var
      tmpNode: TTreeNode;  procedure SetImageIndex(ANode: TTreeNode);
      begin
        if ANode.ImageIndex = 0 then
          ANode.ImageIndex := 1
        else
          ANode.ImageIndex := 0;
      end;  procedure ChangeImage(ATreeNode: TTreeNode);
      begin
        if ATreeNode.Count <> 0 then
        begin
          tmpNode := ATreeNode.GetFirstChild;
          SetImageIndex(tmpNode);
          ChangeImage(tmpNode);
          tmpNode := tmpNode.GetNext;
          SetImageIndex(tmpNode);
          ChangeImage(tmpNode);
        end;
      end;begin
      tmpNode := TreeView2.items.Item[0];
      SetImageIndex(tmpNode);
      ChangeImage(tmpNode);
    end;
      

  2.   

    to reonlyrun
    我是了你的代码它实现的功能是点一下即变,但点的那个节点却不变
    而我要实现的功能是点中根目录,所有的子目录全变,再点又变回来,
    请指教
      

  3.   

    我把程序又改了改,这样子行吗?不过好想有一个问题点击根节点后必须再点击一下才能再点别的,我想是就两张图片的问题,不知道你的应用中有几个图片所以也就没有再试,不行的化再和我联系
    procedure TForm1.TreeView1Click(Sender: TObject);
      procedure SetImageIndex(ANode: TTreeNode);
      begin
        if ANode.ImageIndex = 0 then
          ANode.ImageIndex := 1
        else
          ANode.ImageIndex := 0;
      end;  procedure ChangeImage(ATreeNode: TTreeNode);
      var
        tmpNode: TTreeNode;
      begin
        if ATreeNode.Count <> 0 then
        begin
          tmpNode := ATreeNode.GetFirstChild;
          SetImageIndex(tmpNode);
          ChangeImage(tmpNode);
        end;
        tmpNode := ATreeNode.getNextSibling;
        if tmpNode <> nil then
        begin
          SetImageIndex(tmpNode);
          ChangeImage(tmpNode);
        end;
      end;begin
      if TreeView1.Selected.Count <> 0 then
      begin
        SetImageIndex(TreeView1.Selected.GetFirstChild);
        ChangeImage(TreeView1.Selected.GetFirstChild);
      end;
    end;