帮我看看哪错了;
type
PMyNodeDataInfo=^TMyNodeDataInfo;
TMyNodeDataInfo =Record
MyDataName:string;
MyDataNumber:integer;
end;procedure TFrmMain.createtreeviewitem ;
var
Pinfo:PMyNodeDataInfo;
functionnode,stationnode:ttreenode;
begin
new(Pinfo);
with treeview1 do
begin
items.clear;
StationNode := Items.Add(nil,'XXXXXXXXX');
functionNode:=items.AddChild(StationNode,'系统管理');
functionnode.ImageIndex := 2;
Pinfo^.MyDataName:='XTSZGL';
Pinfo^.MyDataNumber:=1;
//functionnode.Data:=Pointer(1);
functionnode.Data:=Pinfo;
end;
dispose(Pinfo);
end;在一个主菜单中有一个项是'系统管理',我想和树结构里的'系统管理'关联,所以我在点击主菜单中的系统管理时这样做function TFrmMain.FindNodeNumber(MyNodeData:integer):integer;//根据data值找到相应的项
var
i:integer;
MyNode:TTreeNode;
tmpstr:string;
info:PMyNodeDataInfo;
begin
New(info);
with TreeView1 do
for i:=0 to items.count-1 do
begin
MyNode:=TreeView1.Items.Item[i];
info:=MyNode.Data;
if info=nil then continue;
if (info^.MyDataNumber=MyNodeData)and (info^.MyDataName='XTSZGL') then //MyNodeData= 1;
MyNode.Selected :=true;
end;
dispose(info);
end;
为什么在这里读不出data里面的值呢?
type
PMyNodeDataInfo=^TMyNodeDataInfo;
TMyNodeDataInfo =Record
MyDataName:string;
MyDataNumber:integer;
end;procedure TFrmMain.createtreeviewitem ;
var
Pinfo:PMyNodeDataInfo;
functionnode,stationnode:ttreenode;
begin
new(Pinfo);
with treeview1 do
begin
items.clear;
StationNode := Items.Add(nil,'XXXXXXXXX');
functionNode:=items.AddChild(StationNode,'系统管理');
functionnode.ImageIndex := 2;
Pinfo^.MyDataName:='XTSZGL';
Pinfo^.MyDataNumber:=1;
//functionnode.Data:=Pointer(1);
functionnode.Data:=Pinfo;
end;
dispose(Pinfo);
end;在一个主菜单中有一个项是'系统管理',我想和树结构里的'系统管理'关联,所以我在点击主菜单中的系统管理时这样做function TFrmMain.FindNodeNumber(MyNodeData:integer):integer;//根据data值找到相应的项
var
i:integer;
MyNode:TTreeNode;
tmpstr:string;
info:PMyNodeDataInfo;
begin
New(info);
with TreeView1 do
for i:=0 to items.count-1 do
begin
MyNode:=TreeView1.Items.Item[i];
info:=MyNode.Data;
if info=nil then continue;
if (info^.MyDataNumber=MyNodeData)and (info^.MyDataName='XTSZGL') then //MyNodeData= 1;
MyNode.Selected :=true;
end;
dispose(info);
end;
为什么在这里读不出data里面的值呢?
定义
type
PMyNodeDataInfo=^TMyNodeDataInfo;
TMyNodeDataInfo =Record
MyDataName:string;
MyDataNumber:integer;
end;使用
var
d: TMyNodeDataInfo;
p: PMyNodeDataInfo;
begin
d.MyDataName := ...;
d.MyDataNumber := ...;
p := @d;
//然后让树的节点数据 functionnode.Data:=P;
end;能明白吗?
procedure TFrmMain.createtreeviewitem ;
var
Pinfo:PMyNodeDataInfo;
functionnode,stationnode:ttreenode;
begin
new(Pinfo);
with treeview1 do
begin
items.clear;
Pinfo^.MyDataName:='XTSZGL';
Pinfo^.MyDataNumber:=1;
StationNode := Items.Add(nil,'XXXXXXXXX');
functionNode:=items.AddChildobject(StationNode,'系统管理',Pinfo);
functionnode.ImageIndex := 2;
end;
dispose(Pinfo);
end;
var
Pinfo:PMyNodeDataInfo;
functionnode,stationnode:ttreenode;
begin
new(Pinfo);
with treeview1 do
begin
items.clear;
StationNode := Items.Add(nil,'XXXXXXXXX');
functionNode:=items.AddChild(StationNode,'系统管理');
functionnode.ImageIndex := 2;
Pinfo^.MyDataName:='XTSZGL';
Pinfo^.MyDataNumber:=1;
//functionnode.Data:=Pointer(1);
functionnode.Data:=Pinfo;
end;
dispose(Pinfo);///////##这块不应释放掉Pinfo不然地址就释放掉了。
end;
怎么取出来呀?New(info);
with TreeView1 do
for i:=0 to items.count-1 do
begin
MyNode:=TreeView1.Items.Item[i];
info:=MyNode.Data;
if info=nil then continue;
if (info^.MyDataNumber=MyNodeData)and (info^.MyDataName='XTSZGL') then //MyNodeData= 1;
MyNode.Selected :=true;
end;
dispose(info);
这样取错在哪里呀?
急死我了
var
Pinfo:PMyNodeDataInfo;
functionnode,stationnode:ttreenode;
begin
new(Pinfo);
with treeview1 do
begin
items.clear;
StationNode := Items.Add(nil,'XXXXXXXXX');
functionNode:=items.AddChild(StationNode,'系统管理');
functionnode.ImageIndex := 2;
Pinfo^.MyDataName:='XTSZGL';
Pinfo^.MyDataNumber:=1;
//functionnode.Data:=Pointer(1);
functionnode.Data:=Pinfo;
end;
//dispose(Pinfo);///////##把这注释掉就可以了.
end;
with TreeView1 do
for i:=0 to items.count-1 do
begin
MyNode:=TreeView1.Items.Item[i];
info:=MyNode.Data;
if info=nil then continue;
if (info^.MyDataNumber=MyNodeData)and (info^.MyDataName='XTSZGL') then //MyNodeData= 1;
MyNode.Selected :=true;
end;
dispose(info);