6

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

4

3 回答 3

15

我想我们都在这一点上学习...

但是从我所看到的 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;
于 2011-09-21T23:45:20.263 回答
2

使用 AddObject(FmxObject) 您也可以添加任何对象(按钮等)...

于 2019-01-22T06:55:39.080 回答
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;
于 2012-06-06T22:35:01.030 回答