采用递归方法为cxDBtreelist (Devexpress VCL) 控件增加复选框
cxDBtreelist 控件功能强大,运用灵活,但不知什么原因,Devexpress 为 cxTreelist 控件(非 绑定模式)设计了可以自动级联选择的复选框,但是由 cxTreelist 继承而来的 cxDBtreelist 却 未提供这一功能。下面的示例我们采用递归编程的方法,遍历每一个节点,使 cxDBtreelist 控件也可以实现自动级联选择的复选框
程序运行后界面如下:
程序如下:
//此子程序通过递归方式,遍历每个子节点实现复选
procedure CheckedSubnodes(ANode:TcxTreeListNode);
var i:Integer;
begin
for i := 0 to ANode.Count -1 do
begin
aNode.CheckGroupType:=ncgCheckGroup;
if aNode.HasChildren then
begin
CheckedSubnodes(aNode.Items[i]); //递归
end;
end;
end;
procedure TreelistShowCheckbox(componentObj:TcxDBTreeList);
begin
//设定 cxdbtreelist 控件的视图显示方式为“可复选”模式
componentObj.OptionsView.CheckGroups := True;
//调用遍历子程序,设置视图中的每个节点为带复选框方式
CheckedSubnodes(componentObj.Root);
end;
//窗体显示时,调用 TreelistShowCheckbox 方法
procedure TmainForm.FormShow(Sender: TObject);
begin
TreelistShowCheckbox(cxDBTreeList1);
end;