网上传很开的将索引装入TreeView的三种方法相關問題.

网上传很开的将目录装入TreeView的三种方法相關問題...
http://www.shangxueba.com/jingyan/86198.html
这是网上传很开的将目录结构装入TreeView控件的三种方法
当然第三种方法很好用,不过实际运行,每当点回上一层父节点时,又会自动添加子节点一次..

点根目录[ROOT]就全部第二层子节点都自动添加一次
这该怎么处理阿!流传到现在好几年头了,没有人修正过

我尝试修正,清空再加入,判断底下子节点相同就不加入...都无法成功
或是有更好用的方式,不要一次全装入,怕拖慢载入速度。
请大神帮个忙吧.. 困扰我三天了 !! 网上传很开的将索引装入TreeView的三种方法相關問題.
treeview C++ Builder 目录 节点

------解决方案--------------------
在点击的时候判断一下,如果被点击的节点下有子节点的话就什么也不干,这样就可以了
------解决方案--------------------
就是添加一行判断:

if(TreeView1->Selected->Count>0){ // 取得选中节点下单层子节点的数量
return;
}
把上面的代码放在最前面就可以了
------解决方案--------------------
BCB的节点在点击时执行代码是要容错的,你试试:
if(
TreeView1->Items->Count<=0

------解决方案--------------------

TreeView1->SelectionCount<=0

------解决方案--------------------

TreeView1->Selected->Count>0
){
return;
}


------解决方案--------------------
这样:
void __fastcall TForm1::TreeView3Changing(TObject *Sender, TTreeNode *Node, bool &AllowChange)

{
  Screen->Cursor=crHourGlass;
  //Animate1->Active=true;
  //防止重复增加节点
    if(Node->Count==0){
      TSearchRec sr;
      AnsiString DirName,DirTmp;
      TTreeNode * NodeTmp=Node;
      DirName=Node->Text;
  //得到完整的路径
        for(int I=Node->Level ;I>0 ;I--){
          NodeTmp=NodeTmp->Parent;
          DirTmp=NodeTmp->Text;
            if(DirTmp.SubString(DirTmp.Length(),1)!="\\")