DevExpress VCL 的 cxDBTreeList 的使用方法
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 需要 迭代父子关系。 ===== 细节另行细述!