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