可以建一个指针。

type PMyData = ^TMyData;
     TMyData = Record
            ss : String;
            ii : Integer;
     end;   
var pp: PMyData;
使用的时候:
Node: TTreeNode;Node := TreeView1.Items.Add(ParentNode,'asdasdasd');
New(pp);
pp^.ss := 'asdasd';
pp^.ii := 123;
Node.Data := pp;使用的时候PMyData(TreeView1.Selected.Data)^.ss;

解决方案 »

  1.   

    可以。
    在加入节点的时候,不用一般的add的方法,用带object的add方法
    要记住object是指针
      

  2.   

    这个type... 放在哪里啊,我刚学delphi,
      

  3.   

    请问:DATA是拿来干什么用的?在什么情况下需要用到??
      

  4.   

    unit untDataTree;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ComCtrls, Buttons;type
      PDataNode = ^TDataNode;
      TDataNode = record
        ID: Integer;
        Name: string;
        price: Currency;
        dt: TDateTime;
      end;type
      TfrmDataTree = class(TForm)
        TreeView1: TTreeView;
        GroupBox1: TGroupBox;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        DateTimePicker1: TDateTimePicker;
        BitBtn1: TBitBtn;
        BitBtn2: TBitBtn;
        procedure BitBtn1Click(Sender: TObject);
        procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
        procedure BitBtn2Click(Sender: TObject);
      private
        { Private declarations }
        procedure AddDataNode(tv: TTreeView; pData: PDataNode);
        procedure DelDataNode(tv: TTreeView);
      public
        { Public declarations }
      end;var
      frmDataTree: TfrmDataTree;implementation{$R *.DFM}{ TfrmDataTree }procedure TfrmDataTree.AddDataNode(tv: TTreeView; pData: PDataNode);
    var
      tn: TTreeNode;
    begin
      if pData = nil then Exit;
      tn := nil;  if tv.Items.Count = 0 then
        tn := tv.Items.AddObject(nil, 'Item[\]', pData)
      else if tv.Selected <> nil then
        tn := tv.Items.AddObject(tv.Selected, 'Item' + IntToStr(tv.Selected.AbsoluteIndex), pData);  if tn <> nil then tn.Selected := True;
    end;procedure TfrmDataTree.DelDataNode(tv: TTreeView);
    begin
      if tv.Selected = nil then Exit;  // 释放数据
      Dispose(PDataNode(tv.Selected.Data));  // 删除结点
      tv.Selected.Delete;
    end;procedure TfrmDataTree.BitBtn1Click(Sender: TObject);
    var
      pData: PDataNode;
    begin
      new(pData);
      pData.ID := StrToIntDef(Edit1.Text, 0);
      pData.Name := Edit2.Text;
      try
        pData.price := StrToCurr(Edit3.Text);
      except
        pData.price := 0.00;
      end;
      pData.dt := DateTimePicker1.DateTime;  AddDataNode(TreeView1, pData);
    end;procedure TfrmDataTree.TreeView1Change(Sender: TObject; Node: TTreeNode);
    begin
      if TreeView1.Selected <> nil then begin
        Edit1.Text := IntToStr(PDataNode(TreeView1.Selected.Data)^.ID);
        Edit2.Text := PDataNode(TreeView1.Selected.Data)^.Name;
        Edit3.Text := CurrToStr(PDataNode(TreeView1.Selected.Data)^.price);
        DateTimePicker1.DateTime := PDataNode(TreeView1.Selected.Data)^.dt;
      end;
    end;procedure TfrmDataTree.BitBtn2Click(Sender: TObject);
    begin
      DelDataNode(TreeView1);
    end;end.