将 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;
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;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货