我有一个包含数据的数据库表,需要将字段加载到TTreeView
对象中。
该行:
ItemTree.Items.AddChild(nil, CurrentField_Text);
只需将节点添加到顶层。
如何指定插入点?
请注意,在循环遍历表格中的数据时,我可能(例如)插入3个顶级项目,然后第4个元素实际上是节点2的子节点。
我该如何指定?
答案 0 :(得分:1)
在nil
的调用中使用父节点而不是AddChild
,以便将子节点添加到父节点:
ParentNode := ItemTree.Items.AddChild(nil, 'Parent');
ItemTree.Items.AddChild(ParentNode, 'Child node');
答案 1 :(得分:1)
这是直接从我的程序中提取的一些代码,它将从查询中获取的值插入到树视图中。
tv.items.clear;
with qCustTree do // this is the query which 'feeds' the treeview
try
close;
params[0].asinteger:= qCustWithCallsID.asinteger;
open;
tv.items.BeginUpdate;
while not eof do
begin
father:= fieldbyname ('father').asinteger;
if father = 0
then node:= nil
else node:= FindANode (father);
lastnode:= tv.Items.AddChildObject (node, fieldbyname ('curdate').asstring,
pointer (fieldbyname ('id').asinteger));
next
end;
finally
tv.items.endupdate;
tv.fullexpand;
tv.Selected:= tv.Items[0];
tvchange (nil, tv.Selected);
end;
如果返回的元组的'father'字段为0,则在树上打开一个新的父节点,否则将打开一个新的子节点。