我无法在在线文档或Delphi XE2附带的演示中找到任何示例,用于在运行时向FMX.TreeView.TTreeView
控件添加节点。那么,如何在运行时添加,删除和遍历FireMonkey TreeView的节点?
答案 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),您还可以添加任何对象(按钮等)。