将  New(MyRec)  放到循环中来就可以了, 我开始的时候也是这样的
type
  PMyRec=^TMyRec;
  TMyRec=record
    Eid:string;
    EName:string;
    EDuty:string;
end;
var
  MyRec:PMyRec;
procedure TForm1.Button1Click(Sender: TObject);
var
  RootNode:TTreeNode;
  Node:TTreeNode;
  EName:string;
begin
  RootNode:=TV.Items.Add(nil,'开始');
  try
    AQ.Open ;
//最好加句 aq.first 
    While not AQ.Eof do
        begin
          New(MyRec);
          MyRec^.Eid:=AQ.fieldbyname('E_id').asstring;
          MyRec^.EName:=AQ.Fieldbyname('E_name').asString;
          EName:=AQ.Fieldbyname('E_name').asString;
          MyRec^.EDuty :=AQ.Fieldbyname('E_duty').asString;
          Node:=TV.Items.AddChildObject(RootNode,EName,MyRec);
          AQ.Next;
        end;
  finally
      AQ.Close ;
      // Dispose(MyRec);
      TV.FullExpand;
  end;
end;procedure TForm1.TVClick(Sender: TObject);
var
  Node:TTreeNode;
begin
    if TV.Selected <>nil then
      label1.Caption :=PMyRec(TV.Selected.Data)^.EName  ;
end;