我增加这个域的目的是对于每个TreeNode都保存数据库中相应的关键字,以便在操作TreeView的时候能迅速定位到数据库中的某条记录,从而使得操作TreeView中的结点时,对数据库的增加、修改、删除、查询也变得很容易。  
请问懂得VCL组件设计的朋友们,我应该怎样实现我的这个想法?  
问题也许很简单,但请帮助我一下。多谢了

解决方案 »

  1.   

    TreeView1.Items.AddObject();
    就可以实现
      

  2.   

    type
      P = ^R;
      R = record
       i:integer;  //这个就是你要带的整数
    end;var
      pt:P;
      lt:TList;...//增加2个带有integer域的结点
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      lt := TList.Create;
      new(pt);
      pt.i := 1;  //integer域里的值
      lt.Add(pt);
      TreeView1.Items.AddChildObject(nil,'aa',lt.Items[0]);
      new(pt);
      pt.i := 2;  //
      lt.Add(pt);
      TreeView1.Items.AddChildObject(nil,'aa',lt.Items[1]);
    end;//显示每个结点integer域里的值
    procedure TForm1.TreeView1Click(Sender: TObject);
    begin
      if TreeView1.Selected = nil then Exit;
        ShowMessage(IntToStr(P(TreeView1.Selected.Data)^.i));
    end;以上代码调试通过
      

  3.   

    TCheckTreeNode = class(TTreeNode)
      private
        { Private declarations }
        FChecked: Boolean;
        procedure SetChecked(const Value: Boolean);
      public
        { public declarations }
        property Checked: Boolean read FChecked write SetChecked;
      end;// TCheckTreeView = Class(TTreeView)
    procedure TCheckTreeView.CreateCheckNodeClass(Sender: TCustomTreeView;
      var NodeClass: TTreeNodeClass);
    begin
      NodeClass := TCheckTreeNode;
    end;使用:
    var
      Node: TCheckTreeNode;
    begin
      Node := TCheckTreeNode(TreeView.Items.GetFirstNode);
      Node.Checked := False;
    end;
      

  4.   

    其实,node.Data中你可以存放任何你想存放的东西,为何还要新做呢?
      

  5.   

    同意  luke5678(奇异) 
    另外,最好把这段扩展并单独放在一个类里.
    type
      P = ^R;
      R = record
       i:integer;  //这个就是你要带的整数
    end;
      

  6.   

    如果就一个Integer的话,record都可以不定义,node.Data本身就是一个指针类型,与Integer一样4字节,把它当Integer用就行了。