如何在运行时向FireMonkey的TreeView添加节点

时间:2011-09-21 23:11:48

标签: delphi treeview delphi-xe2 firemonkey

我无法在在线文档或Delphi XE2附带的演示中找到任何示例,用于在运行时向FMX.TreeView.TTreeView控件添加节点。那么,如何在运行时添加,删除和遍历FireMonkey TreeView的节点?

3 个答案:

答案 0 :(得分:13)

我认为我们现在都在学习......

但是从我所看到的TTreeView使用的原则是任何控件都可以为另一个控件提供父级。

您需要做的就是设置Parent属性以使项目显示为孩子。

var
  Item1 : TTreeViewItem;
  Item2 : TTreeViewItem;
begin
  Item1 := TTreeViewItem.Create(Self);
  Item1.Text := 'My First Node';
  Item1.Parent := TreeView1;

  Item2 := TTreeViewItem.Create(Self);
  Item2.Text := 'My Child Node';
  Item2.Parent := Item1;
end;

因此,您可以执行以前从未有过的操作,例如在TreeView中放置任何控件。例如,此代码将向Item2使用的区域添加一个按钮,在Item2可见之前,该按钮将不可见。

  Button := TButton.Create(self);
  Button.Text := 'A Button';
  Button.Position.X := 100;
  Button.Parent := Item2;

答案 1 :(得分:0)

我有另一个想法。第一个答案帮我搞定了。 所以添加以下代码

Var
TempItem:TTreeViewItem;
Begin
TempItem := TTreeViewItem.Create(Self);
TempItem.Text := 'Enter Caption Here';
TempItem.Parent := TreeView;  
End

现在,当您必须释放该项目以使其不使用不必要的内存时,实际的技巧就出现了。所以假设你在循环中使用它,就像我在这里做的那样:

ADOTable.Connection := ADOConnection;
  ADOTable.TableName := 'MenuTree';

  ADOTable.Open;
  ADOTable.First;

  ADOTable.Filter := '(CHFlag=''CURRENT'') AND (Parent=''Tree'')';
  ADOTable.Filtered := True;

  While NOT ADOTable.Eof Do
    Begin
      TempItem := TTreeViewItem.Create(Self);
      TempItem.Text := ADOTable['ItemName'];
      TempItem.Parent := TreeView;
      // TempItem.Free;

      ADOTable.Next;
    End;
  TempItem.Free;
  ADOTable.Close;

答案 2 :(得分:0)

使用AddObject(FmxObject),您还可以添加任何对象(按钮等)。