我添加了一个Treeview控件,现在我想动态创建它的结点及子结点,应该怎样做,应该在哪个事件里实现

解决方案 »

  1.   


    procedure TForm1.Button1Click(Sender: TObject);var
      MyTreeNode1, MyTreeNode2: TTreeNode;
    begin
      with TreeView1.Items do
      begin
        Clear; { remove any existing nodes }
        MyTreeNode1 := Add(nil, 'RootTreeNode1'); { Add a root node }
        { Add a child node to the node just added }
        AddChild(MyTreeNode1,'ChildNode1');    {Add another root node}
        MyTreeNode2 := Add(MyTreeNode1, 'RootTreeNode2');
        {Give MyTreeNode2 to a child }
        AddChild(MyTreeNode2,'ChildNode2');    {Change MyTreeNode2 to ChildNode2 }
        { and add a child node to it}
        MyTreeNode2 := TreeView1.Items[3];
        AddChild(MyTreeNode2,'ChildNode2a');    {Add another child to ChildNode2, after ChildNode2a }
        Add(MyTreeNode2,'ChildNode2b');    {add another root node}
        Add(MyTreeNode1, 'RootTreeNode3');
      end;end;
      

  2.   


    procedure Tfrm_YGQA_Initiate.FormCreate(Sender: TObject);
    var
      no_ygc, no_ygs: string;
      ygjNode, ygcNode: TTreeNode;  // 申明两个TreeNode变量
    begin
      if DM.AllUnits.Active then
        DM.AllUnits.First()
      else begin
        DM.AllUnits.SQL.Text := 'select *  from AllUnits order by NO_ZCDW';
        DM.AllUnits.Open();
      end;  no_ygc :=  DM.AllUnits.FieldByName('NO_ZCDW').AsString;
      ygjNode := tv_AllUnits.Items.AddFirst(nil, no_ygc + '[' + DM.AllUnits.FieldByName('Name_ZCDW').AsString + ']');
      ygcNode := ygjNode;  // 创建父节点  DM.AllUnits.Next();
      while not DM.AllUnits.Eof do begin
        no_ygs := DM.AllUnits.FieldByName('NO_ZCDW').AsString;
        if Copy(no_ygs,1,4) = Copy(no_ygc,1,4) then  // 同一个市州
          tv_AllUnits.Items.AddChild(ygcNode, no_ygs + '[' + DM.AllUnits.FieldByName('Name_ZCDW').AsString + ']')  // 创建子节点
        else begin  // 不同的市州
          no_ygc := no_ygs;
          ygcNode := tv_AllUnits.Items.AddChild(ygjNode, no_ygc + '[' + DM.AllUnits.FieldByName('Name_ZCDW').AsString + ']');
        end;
        DM.AllUnits.Next();
      end;end;上述代码的功能是:创建省(地市)为父亲节点、县市为子节点的TreeView,只有两层。多层的思路相同,即用子节点再创建孙节点。
      

  3.   

    procedure TForm1.btnAddRootClick(Sender: TObject);
    begin
      TreeView1.Items.AddChildFirst(nil,'aa');
      TreeView1.SetFocus;
    end;procedure TForm1.btnAddChildClick(Sender: TObject);
    begin
      if TreeView1.Selected = nil then
        btnRootClick(nil);
      TreeView1.Items.AddChild(TreeView1.Selected, TreeView1.Selected.Text + '1');
    end;