DevExpress VCL 的 cxDBTreeList 的使用方法:(假設控件名為: WBSTree)
1、控件WBSTree 通過綁定 DataSet 獲取數據記錄(Nodes),通過 Columns 綁定到 DataSet 的域(Field);
1)通過For循環:0 to WBSTree.ColumnCount -1,WBSTree.Columns[integer] (TcxTreeListColumn) 獲取的列記錄順序,參考下圖。 下列圖中有三個 Band(0,1,2),且各列(Column)分別交叉屬於不同Band。
2)也可以通過 :WBSTree.ColumnByName(‘NameString’) ,提供列名稱字符獲取列(TcxTreeListColumn);
3)TcxTreeListColumn 的 ItemIndex 屬性(Integer)返回的整數值,即是下圖中列的順序值。因此要取某列(名稱標識)在 Columns 中 順序碼 Index,通過下列方法: WBSTree.ColumnByName(‘WBSTreeId’).ItemIndex . 獲取 ‘WBSTreeId’列的順序碼,值絕對是 0,排第一位。
2、要獲取列 Column 在 Band 中位置,有一個參數 Position 與 VisibleIndex 。WBSTree.ColumnByName(‘WBSTreeId’). Position/VisibleIndex
Position 對象(類TcxTreeListColumnPosition)有幾個屬性:BandIndex, ColIndex and RowIndex,LineCount,可見性(VisibleBandIndex, VisibleColIndex, VisibleRowIndex). 及 相應的 (Band, Column, and Row).
WBSTree.ColumnByName(‘WBSTreeId’). Position.Band 獲取所在Band (TcxTreeListBand);
3、通過 Tree控件的 WBSTree.FocusedNode 或者 Selections[ Index: Integer ] (SelectionCount 是選中的數量) 獲得某行節點(TcxDBTreeListNode ) ;
Node記錄 ,它 data cells 通過 Values[ Integer ] 來獲取相應列 Columns 的值,兩者 Index 一致 ;節點的字符串值 通過 Texts 或者 DisplayTexts。
樹的”根Root節點“ 通過 WBSTree.Items 獲得; 每個節點(並不限於根節點) 通過 HasChildren 判斷是否有下級節點,並通過 Items 獲得下級節點。
4、節點 的 checked state ,首先設置 TcxTreeList 的 OptionsView.CheckGroups 為True ,再通過 WBSTree.AbsoluteCount 對所有節點 進行設置 Check 的類型: WBSTree.AbsoluteItems[I].CheckGroupType := ncgCheckGroup; 也可以是 單選 Radio 型。
根節點需要單設 :WBSTree.Root.CheckGroupType := ncgCheckGroup;
節點有一屬性代表 選擇狀態:CheckState (類:TcxCheckBoxState)有三個枚舉值:cbsUnchecked,cbsChecked,cbsGrayed;
節點還有一個 Boolean屬性: Checked ,只能有兩個值。
節點的 Enabled 屬性,決定用戶能否改變選擇狀態。
節點還有一個屬性 AllowGrayed ,決定其能否有三個狀態,即能有 :cbsGrayed 的狀態值。
5、是通過 樹組件的 節點的 Selections[ Index: Integer ] 或者 通過 節點的 Checked 或者 CheckState 選擇節點 ,以便 進行導入 或者輸出 ?
Selections 方便; Checked / CheckState 需要 迭代父子關系。 ===== 細節另行細述!