您當前的位置:首頁 > 仿真假山與仿真樹 > 仿真假山與仿真樹作用
TTreeView Delphi組件顯示項目的分層列表- 樹節點。節點由節點文本和可選圖像表示。樹視圖中的每個節點都是TTreeNode類的實例。
雖然您可以在設計時使用TreeView Items Editor在樹形視圖中填充項目,但在大多數情況下,您將在運行時填充樹形視圖-取決于應用程序的用途。
TreeView Items Editor顯示只有少量信息可以“附加”到節點:文本和一些圖像索引(對于正常狀態,展開,選定等)。
本質上,樹視圖組件易于編程。有兩種方法可以將新節點添加到樹中并設置其層次結構。
這是將10個節點添加到樹視圖(名為“ TreeView1”)的方法。請注意,Items屬性提供對樹中所有節點的訪問。AddChild將新節點添加到樹視圖。個參數是父節點(用于構建層次結構),第二個參數是節點文本。
古樸大氣仿真古樹北京淡水河谷于網絡摘錄此圖,若有不妥請通知我們
AddChild返回新添加的TTreeNode。在以上代碼示例中,所有10個節點都被添加為根節點(沒有父節點)。
在任何更復雜的情況下,您都希望節點攜帶更多信息-好具有一些特定于您正在開發的項目的特殊值(屬性)。
假設您要顯示數據庫中的客戶訂單項目數據。每個客戶可以擁有更多訂單,每個訂單由更多項目組成。這是一個可以在樹視圖中顯示的層次關系:
在您的數據庫中,每個訂單和每個項目都會有更多信息。樹狀視圖顯示(只讀)當前狀態-您想查看所選訂單的每個訂單(甚至每個項目)詳細信息。
當用戶選擇節點“ Order_1_1”時,您希望向用戶顯示訂單詳細信息(總計,日期等)。
那時,您可以從數據庫中獲取所需的數據,但是您需要知道所選順序的標識符(比如說整數值)才能獲取正確的數據。
古樸大氣仿真古樹北京淡水河谷于網絡摘錄此圖,若有不妥請通知我們
我們需要一種方法來將該訂單標識符與節點一起存儲,但是我們不能使用Text屬性。我們需要存儲在每個節點中的自定義值是一個整數(僅作為示例)。
當發生這種情況時,您可能會傾向于尋找Tag屬性(許多Delphi組件都具有),但是TTreeNode類未公開Tag屬性。
將自定義數據添加到樹節點:TreeNode.Data屬性
樹節點的Data屬性允許您將自定義數據與樹節點相關聯。數據是一個指針,可以指向對象和記錄。在TreeView中顯示XML(RSS提要)數據顯示了如何將記錄類型變量存儲到樹節點的Data屬性中。
許多項目類型的類都公開了Data屬性-您可以將其與項目一起存儲。一個示例是TListView組件的TListItem。這是將對象添加到Data屬性的方法。
將自定義數據添加到樹節點:TreeView.CreateNodeClass
如果您不想使用TTreeNode的Data屬性,而是想用幾個屬性擴展自己的TreeNode,Delphi也提供了一個解決方案。
古樸大氣仿真古樹北京淡水河谷于網絡摘錄此圖,若有不妥請通知我們
說你想做
以下是使用您自己的一些屬性擴展標準TTreeNode的方法:
1、通過擴展TTreeNode創建TMyTreeNode。
2、添加一個字符串屬性MyProperty。
3、處理樹視圖的OnCreateNodeClass以指定應創建的節點類。
4、在窗體級別上公開類似TreeView1_SelectedNode屬性的內容。這將是TMyTreeNode類型。
5、處理樹視圖的OnChange,將所選節點的值寫入到SelectedNode中。
6、使用TreeView1_Selected.myProperty讀取或寫入新的自定義值。
這是完整的源代碼(窗體上的TButton:“ Button1”和TTreeView:“ TreeView1”):
這次不使用TTreeNode類的Data屬性。而是,將TTreeNode類擴展為具有自己的樹節點版本:TMyTreeNode。
使用樹視圖的OnCreateNodeClass事件,您可以創建自定義類的節點,而不是標準TTreenode類。