如何获取 TreeView 选中项的所有上一级的父ID?(100)

  • 主题发起人 主题发起人 LZ2000
  • 开始时间 开始时间
L

LZ2000

Unregistered / Unconfirmed
GUEST, unregistred user!
先用数据库加载 TreeView..树的所有节点根据 数据库表字段 ID 和 PID 生成.ID是自动编号.如商品类别 |---水果 | |_苹果 | |_雪梨 | |_国产 | |---汽水 |_可乐//注,下面的ID值 是 对应 数据库里的 值,不是 TreeView 的值..国产 的 ID 是 4 PID是 3雪梨 的 ID 是 3 PID是 1水果 的 ID 是 1 PID是 0汽水 的 ID 是 5 PID 是 0可乐 的 ID 是 100 PID 是 2现点击 国产,获取得到的 子ID和父ID 是 4+3 ,雪梨 是 3+1现要实现 点击 其中一级,就能获取 所有 上一级的 子ID+父ID值如 :点击 国产,得到的 是 10+31+43= 103143 (请问如何实现这个效果呢) 点击 可乐,得到的 是 50+1002= 501002 //下面代码可以获取 TEXT 值,但要获取 数据库对应的 ID值..//效果是 水果+雪梨+国产procedure Tfrm1.TreeView1Click(Sender: TObject);varMyNode:TTreeNode;begin edit1.Text:=''; if TreeView1.SelectionCount>0 then begin MyNode:=TreeView1.Selected; while MyNode.Parent<>nil do begin edit1.Text:='->'+MyNode.Text+edit1.text; MyNode:=MyNode.Parent; end; edit1.Text:=MyNode.Text+edit1.Text; end;end;
 
两种方法,一,将ID和PID存入Node.Data 二,直接去数据库循环取
 
type PNodeID = ^TNodeID; TNodeID = record ID: Integer; ParentID: Integer; end; 生成树时把 New(PNodeID类型指针) 并赋好值, 然后 Node.Data := PNodeID类型指针; 这样你就把 两个ID 存到对应节点上了. 然后怎样释放指针呢? procedure TForm1.tv1Deletion(Sender: TObject; Node: TTreeNode);begin if Assigned(Node.Data) then Dispose(Node.Data);end;给分~~~
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
532
import
I
后退
顶部