把 node 定义成全局变量;把下面的代码执行两次以上。
  Node:=Treeview1.Items.AddChild(Node,'北京');

解决方案 »

  1.   

    指定 node
    也可以直接写
    NODE := TREEVIEW.ITEMS.ADD(NIL,'北京') ;
    这样NODE 就是指北京这个节点
      

  2.   

    可能是 TreeView 还没有构造好吧。
    找一个晚一点执行的事件试试
      

  3.   

    多谢各位,我按照xiaonan的代码执行了一遍,成功了,但我不明白Nil是什么意思?
      

  4.   

    窗体初始化的时候,你的TreeView 还没有‘生’出来呢,当然不行了。
      

  5.   

    你必须在Form1.FormShow()中去加入:TreeView1.Items.AddChild(nil,'北京');
      

  6.   

    也不一定。你可以在form1的oncreate事件里加treeview1.items.add('nil,'北京').
    nil就是空的意思了。一开始,treeview里为空了。
      

  7.   

    nil是指根节点,比如资源管理器的“桌面”
    treeview.create后treeview就创建了,只不过没有节点而已,并不是空的
      

  8.   

    在追加节点的时候,你要先判断树是否为空,要是没有节点的话,就要用addfirstchild方法来追加节点.或者先用addchild(nil,'boot node')创建一个根节点,就OK了!
      

  9.   

    //在构造时还没有窗口句柄,还不能调用传递窗口句柄的方法
    //需要重载基类的CreateWnd,当它返回时表明所有元件创建完毕
    //否则会出现一个Control has no parent window的异常
    void __fastcall TMainForm::CreateWnd()
    {
      TForm::CreateWnd();  ClassTree=new TTreeView(this);
      ClassTree->Parent=this;//  这儿当没重载基类的CreateWnd时不能引用ClassTree
    }