2011-09-21 64 views
4

我無法在FMX.TreeView(firemonkey Treeview)的聯機文檔中找到任何示例,並且在包含在delphi xe-2中的示例中可以在運行時添加節點。所以how I can add , remove and traverse the nodes of a Firemonkey Treeview in runtime?如何在運行時將節點添加到firemonkey樹狀圖

+0

在運行時添加樹項目的另一個例子,看到與RAD Studio中的示例中提供的CustomTreeView項目(的Samples \ FireMonkey文件夾) 。 – Alnitak

回答

11

我想我們都在學習在這一點......

但是,從我所看到的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; 
+0

非常重要的一點是,根節點(所有不屬於另一個節點的節點)應該由它自己的TreeView擁有。 –

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; 
+0

它是否爲程序員提供了比最佳答案更多的新信息? –