如何添加删除 根/子 节点?  最好能加简短说明 新手先谢过了

解决方案 »

  1.   

    var node:ttreenode;
    begin
      node:=treeview1.Items.Add(nil,'根节点名字');
      treeview1.Items.Add(node,'子节点名字');
    end;
    treeview1.Selected.Delete;//删除被选择节点
      

  2.   

    谢谢 能否再多说点常用的基本属性 方法啊  书上都不说 晕死了:(treeview1.Items.Add(node,Edit1.Text);编译出错:
    [Error] Unit4.pas(44): Undeclared identifier: 'node'
    [Fatal Error] Project1.dpr(9): Could not compile used unit 'Unit4.pas'
      

  3.   

    仓库甲
       仓库甲A
       仓库甲B
       仓库甲C
    var node:ttreenode;
    begin
      node:=treeview1.Selected;
      treeview1.Items.Add(node,'子节点名字');
    end;如果选中 仓库甲 然后添加,添加到与 仓库甲 同级别的Item  我想做的选中 仓库甲 添加 到与 仓库甲A 仓库甲B ... 一个级别的还有nil什么意思 多次看到  
      

  4.   

    其实不用的 你就看treeview的方法就行了
    输入treeview.items.add相关的都是添加节点的
    里面有多种不同的方法
    你自己选择用 再有不明白的可以有针对地搜索一下就成了
      

  5.   

    nil的地方原本应该放置根结点的
    但是由于目的是添加根结点 也就是说根结点的根节点应该设置为nil 这样的话你创建的节点就是根节点了
      

  6.   

    我经常用的是add addchild addobject  addchildobjyect 这几个添加的方法
    具体的使用你可以参考帮助 也可以搜索一些资料 因为我在家 明天我去单位可以给你一些比较好的例子你看一下就懂了
      

  7.   

    unit TreeFillThrd;interfaceuses
      Classes, ComCtrls, ADODB, SysUtils;type
      TNodeData = record
        Index: integer;
        Caption: string;
      end;
      PNodeData = ^TNodeData;
      TTreeFill = class(TThread)
        TV: TTreeView;
        TableName: string;
        FieldIndex: string;
        FieldPID: string;
        FieldCaption: string;
        RootText: string;
        Conn: TADOConnection;
        Ptr: PNodeData;
        constructor Create(ATreeView: TTreeView; AConn: TADOConnection;
          ATable: string; ARootText: string = '我的目录';
          AFieldIndex: string = 'ID'; AFieldPID: string = 'PID';
          AFieldCaption: string = 'Caption');
      private
        procedure AddTree(Node: TTreeNode; PN: PNodeData);
      protected
        procedure Execute; override;
      end;implementation
    //------------------------------------------------------------------------------
    constructor TTreeFill.Create(ATreeView: TTreeView; AConn: TADOConnection;
      ATable: string; ARootText: string = '我的目录';
      AFieldIndex: string = 'ID'; AFieldPID: string = 'PID';
      AFieldCaption: string = 'Caption');
    begin
      FieldIndex := AFieldIndex;
      FieldPID := AFieldPID;
      FieldCaption := AFieldCaption;
      TV := ATreeView;
      TableName := ATable;
      RootText := ARootText;
      Conn := AConn;
      New(Ptr);
      inherited Create(False);
    end;
    //------------------------------------------------------------------------------
    procedure TTreeFill.Execute;
    var
      Node: TTreeNode;
    begin
      FreeOnTerminate := True;
      TV.Items.Clear;
      Ptr^.Index := 0;
      Ptr^.Caption := RootText;
      Node := TV.Items.AddObject(nil, RootText, Ptr);
      Node.ImageIndex := 0;
      Node.SelectedIndex := 0;
      AddTree(Node, Ptr);
      TV.FullExpand;
    end;
    //------------------------------------------------------------------------------
    procedure TTreeFill.AddTree(Node: TTreeNode; PN: PNodeData);
    var Query: TADOQuery;
      nNode: TTreeNode;
      PNode: PNodeData;
    begin
      try
        Query := TADOQuery.Create(nil);
        Query.Connection := Conn;
        Query.SQL.Text := 'Select * from ' + TableName + ' where ' + FieldPID + ' =' + IntToStr(PN^.Index);
        if Query.Active then
          Query.Close;
        Query.Open;
        while Query.Eof = False do
        begin
          New(PNode);
          PNode^.Caption := Query.FieldByName(FieldCaption).AsString;
          PNode^.Index := Query.FieldByName(FieldIndex).AsInteger;
          nNode := TV.Items.AddChildObject(Node, PNode^.Caption, PNode);
          nNode.ImageIndex := 1;
          nNode.SelectedIndex := 2;
          AddTree(nNode, PNode);
          Query.Next;
        end;
      finally
        Query.Free;
      end;
    end;
    //------------------------------------------------------------------------------
    end.
      

  8.   

    仓库甲
       仓库甲A
       仓库甲B
       仓库甲C
    var node:ttreenode;
    begin
      node:=treeview1.Selected;
      treeview1.Items.Add(node,'子节点名字');
    end;如果选中 仓库甲 然后添加,添加到与 仓库甲 同级别的Item  我想做的选中 仓库甲 添加 到与 仓库甲A 仓库甲B ... 一个级别的还有nil什么意思 多次看到  
      

  9.   

    解决了 用AddChild 就可以了谢谢大家 :)
      

  10.   

    type
      TNodeData = record
        Index: integer;
        Caption: string;
      end;
      PNodeData = ^TNodeData; //写在这里对么?总是提示 unexpected token:PNodeData