想在TTreeNode中加多一个属性或者方法,让它可以多一个如下的使用方法:
主要是想它可以多记录一个整数值。
var
 TempNode : TTteeNode 
begin
 TempNode.DataID := 12;
 showmessage(Inttostr(TempNode.DataID)); 
end;
我试着改了一下 ComCtrls 这个单元,  TTreeNode = class(TPersistent)
  private
    FOwner: TTreeNodes;
    FText: string;
    FDataID : Integer;   //在这里加多了一个变量
    FData: Pointer;可是不知道怎样重新编辑它。

解决方案 »

  1.   

    新建了一个工程,加入你改的ComCtrls.pas编译,再拷贝编译生成的ComCtrls.dcu  到Delphi的安装目录 lib中,覆盖原来的ComCtrls.dcu参考:http://topic.csdn.net/t/20010925/10/301637.html
    http://topic.csdn.net/t/20010611/11/154535.html
      

  2.   

    汗死,别乱改呀。FDataID : Integer;还定义成private,直接从TTreeNode派生一个类吧
      

  3.   

    呵呵,,不改改,怎么知道错呢~~~不过private还真是不行哩,,改成public吧
      

  4.   

    同意楼上的,
    从TTreeNode派生一个新类,加入成员变更,及想应的方法和属性。这个很方便嘛!
      

  5.   

    其实DELPHI提供了强大的扩展,我们可以利用TreeNode的Data指针来存储很多与当前节点相关的值。unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, StdCtrls;
    type
      TNodeValue=class  //与当前节点相关的值的类
        N1:string;
        N2:integer;
      end;  TForm1 = class(TForm)
        TreeView1: TTreeView;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure TreeView1Click(Sender: TObject);
      private
      public
      end;
    var
      Form1: TForm1;
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      i:integer;
      ANode:TTreeNode;
      AValue:TNodeValue;
    begin
      for i:=0 to 3 do
        begin
        AValue:=TNodeValue.Create;
        AValue.N1:='节点'+Inttostr(i);
        AValue.N2:=i;
        ANode:=TreeView1.Items.Add(Nil,'节点'+Inttostr(i));
        ANode.Data:=AValue;
        end;
    end;procedure TForm1.TreeView1Click(Sender: TObject);
    begin
      showmessage(TNodeValue(TreeView1.Selected.Data).N1);
      showmessage(Inttostr(TNodeValue(TreeView1.Selected.Data).N2));
    end;end.
      

  6.   

    呵呵,好方法,本来就想知道Data这个指针到底用来做怎么的。可惜只有100分,非常感谢。