0

我有一个包含数据的数据库表,需要将字段加载到TTreeView对象中。

该行:

ItemTree.Items.AddChild(nil, CurrentField_Text);

只需将一个节点添加到顶层。

我怎样才能指定一个点来插入它?

请注意,在遍历表中的数据时,我可能(例如)插入 3 个顶级项目,然后第 4 个元素实际上是节点 2 的子节点。

我该如何指定?

4

2 回答 2

1

nil在对 的调用中使用父节点而不是AddChild,以便将子节点添加到父节点:

ParentNode := ItemTree.Items.AddChild(nil, 'Parent');
ItemTree.Items.AddChild(ParentNode, 'Child node');
于 2012-11-05T03:58:52.747 回答
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,则在树上打开一个新的父节点,否则打开一个新的子节点。

于 2012-11-05T04:12:56.527 回答