在treeview中有如下所示图样
-1
 -123
  -321
现在我想删除整个树,为避免有游离节点,我规定用户在删除时必须从未节点开始删,也就是先判断要删除的内容是否是未结点,如果是则删除,不是则给出提示上图就是点击123时提示为能删除,而点击321时再可以删除,因为他是未节点。请指教。

解决方案 »

  1.   

    if TreeView1.Selected.HasChildren then 删除 
      else 不删除
      

  2.   

    你只要判断选中的节点是否有子节点就可以了
    If TreeView1.Selected.Item.Count > 0 Then
      有子节点
    Else
      没有子节点最好前面有一个判断
    If TreeView1.Selected = nil then Exit;
      

  3.   

    ZyxIp(绝望中...)这样行吗?我试过这样不行的,因为他们都有一个字段记录上级节点的地址,如果上级节点删除,它们就成了没有父结点了子节点,也就是孤立节点,在<<数据结构>>的教本中有说过这样的问题吧?
      

  4.   

    数据结构中的树和控件TreeView 不一样吧。TreeView 只是显示罢了。你说的是数据库中保存的记录吧?这两都不能混谈吧。
      

  5.   

    虽然用TreeView1.Clear();可以一次性清除所有节点。如果你硬要一个一个从深层删除,用递归也是可以实现的,procedure DeleteNodes(node: TTreeNode);
    var
      i: integer;
    begin
      while node.HasChildren do
      begin
        DeleteNodes(node.Item[0]);
      end;
      node.Delete();
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      while TreeView1.TopItem <> nil do
        DeleteNodes(TreeView1.TopItem);
    end;