Q&A

  • 트리뷰에서 자식노드의 제어
트리뷰에서 자식노드의 제어에 대한 질문입니다.

+ 부서 -------------- 노드 0  
  + 영업부 ---------      1
     + 영업1팀 -----      2
     + 영업2팀 -----      2
  + 관리부 ---------      1
     + 총무팀 ------      2
     + 경리팀 ------      2

이런식으로 테이블에서 불러와서, 트리뷰에 보여주려고 하는데,
노드 1을 선택하면, 노드 2를 뿌려주는것 까지는 되는데,
노드 1을 다시 선택하면, 기존에 있던 노드 2를 지우고,
노드 2를 다시 뿌려주려고 하는데, 잘 않되네요...
1  COMMENTS
  • Profile
    김경록 2002.04.29 08:20
    음.. 해당 Node에서 Child가 있는지 Check해서..
    해당 Node의 Child가 존재하면..
    Node의 Child를 제거하면 될 거 같네여..
    단, Child가 있는데.. 그 Child에  Child가 있다면..
    그 Child도 제거해야 합니다..
    즉, 재귀호출을 해서.. 제거해야 한다는 이야기입니다..
    재귀호출은 알꺼라구 생각하구여..
    아래 내용이 맞는진 모르겠지만..(빨리 쓸려니..  *^^*)
    대략적으로 썼으니깐... 뭐 이런식으로 하면 제 의도는 파악될겁니다.
    이렇게 해서..
    자식노드를 모두 제거하는 방법을 취한 후에..
    다시 추가하는 루틴을 쓰면 될겁니다..
    (추가는 성공하셨다니.. 그거 쓰면 될테니.. 제가 안써도 되져? *^^*)

    Procedure NodeChildRemove(CurNode: TTreeNode)
    Var
         ChildNode, RmNode: TTreeNode;
         ll_Cnt: LongInt;
    Begin
           If Not CurNode.HasChild Then Exit;

           ChildNode := CurNode.FirstChild; //FirstChild가 맞는가?
           While (ChildNode <> Nil) Do
           Begin      
                  If ChildNode.HasChild Then
                          NodeChildRemove(ChildNode);

                 RmNode :=  ChildNode;
                 RmNode제거;
                 ChildNode := CurNode.NextChild;
           End;
    End;