如何将数据库中的分层数据加载到树视图中

时间:2012-11-05 03:04:41

标签: treeview lazarus

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

该行:

ItemTree.Items.AddChild(nil, CurrentField_Text);

只需将节点添加到顶层。

如何指定插入点?

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

我该如何指定?

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,则在树上打开一个新的父节点,否则将打开一个新的子节点。