5,930
社区成员
发帖
与我相关
我的任务
分享
你把加上去的每个节点的.data都给附上数据库中的id,
到你选择的时候,你把它的data取出来,取到id就可以啦,
data的类型为指针,你最好构造一个Record,再定义一个指针。
type
PR : ^R ;
R = record
id : integer ; //id
NodeText : string ;//节点Text值
end ;
var
p : PR ;
node : TTreeNode ;
begin
new(p) ;
try
p^.id := .. ;
p^.NodeText := .. ;
node := TreeView1.Items.Add(....) ;或者 node := TreeView1.Items.AddChild(....) ;
node.Data := p ;
finally
dispose(p) ;
end;
end;
读取时,
var
p : PR ;
id :integer ;
nodeText : String ;
begin
new(p) ;
try
if TreeView1.Selected <> nil then
begin
if (TreeView1.Selected.Data <> nil ) then
betin
p :=(PR)TreeView1.Selected.Data ;
id := p^.id ;
nodeText := p^.NodeText ;
end;
end;
finally
dispose(p) ;
end;
end;
直接在这里面写的,你自己看看,我也不知道有没有问题,家里没有环境写。
procedure TCustFormX.LoadGroupDir(billid: Integer; node: TTreeNode);
var
i: Integer;
nodechild, nodeparent: TTreeNode;
begin
AGroupFram.tvGroup.Items.BeginUpdate;
if billid = 0 then
begin
if node = nil then
begin
for i := 0 to AGroupDirs.Count - 1 do
begin //根节点
if TAGroupDir(AGroupDirs[i]).Parent = 0 then
begin
nodeparent := AGroupFram.tvGroup.Items.Add(node, TAGroupDir(AGroupDirs[i]).CName);
nodeparent.Data := AGroupDirs[i];
LoadGroupDir(billid, nodeparent);
end;
end;
end
else
begin
for i := 0 to AGroupDirs.Count - 1 do
begin //子节点
if TAGroupDir(AGroupDirs[i]).Parent = TAGroupDir(node.Data).TreeId then
begin
nodechild := AGroupFram.tvGroup.Items.AddChild(node, TAGroupDir(AGroupDirs[i]).CName);
nodechild.Data := AGroupDirs[i];
LoadGroupDir(billid, nodechild);
end;
end;
end;
end
else
begin
if node = nil then
begin
for i := 0 to AGroupDirs.Count - 1 do
begin //根节点
if (TAGroupDir(AGroupDirs[i]).Parent = 0) and (TAGroupDir(AGroupDirs[i]).BillId = billid) then
begin
nodeparent := AGroupFram.tvGroup.Items.Add(node, TAGroupDir(AGroupDirs[i]).CName);
nodeparent.Data := AGroupDirs[i];
LoadGroupDir(billid, nodeparent);//递归调用
end;
end;
end
else
begin
for i := 0 to AGroupDirs.Count - 1 do
begin //子节点
if (TAGroupDir(AGroupDirs[i]).Parent = TAGroupDir(node.Data).TreeId) and (TAGroupDir(AGroupDirs[i]).BillId = billid) then
begin
nodechild := AGroupFram.tvGroup.Items.AddChild(node, TAGroupDir(AGroupDirs[i]).CName);
nodechild.Data := AGroupDirs[i];
LoadGroupDir(billid, nodechild));//递归调用
end;
end;
end;
end;
AGroupFram.tvGroup.Items.EndUpdate;
AGroupFram.tvGroup.FullExpand;
end;