0

データを含むデータベース テーブルがあり、フィールドをTTreeViewオブジェクトにロードする必要があります。

この線:

ItemTree.Items.AddChild(nil, CurrentField_Text);

ノードを最上位に追加するだけです。

挿入するポイントを指定するにはどうすればよいですか?

テーブルからのデータをループしているときに、(たとえば) 3 つの最上位アイテムを挿入すると、4 番目の要素が実際にはノード 2 の子になることに注意してください。

これを指定するにはどうすればよいですか?

4

2 に答える 2

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 に答える
1

nilの呼び出しではなく親ノードを使用しAddChildて、子が親ノードに追加されるようにします。

ParentNode := ItemTree.Items.AddChild(nil, 'Parent');
ItemTree.Items.AddChild(ParentNode, 'Child node');
于 2012-11-05T03:58:52.747 に答える