我在TreeList中添加了checkbox复选框。
现在怎么样让
1:父节点的复选框未选中时子节点也不能选中.
2:当父节点的checkbox 为false 时,子节点的checkbox 同时都为FALSE.?

解决方案 »

  1.   

    TRzCheckTree 直接有这个功能
      

  2.   

    可否祥细点??或给个例子?我用的是CXTREELIST
      

  3.   

    其实你要的大部份功能cxTreeList都已经具备啦!只是最后一点"当父节点没选中的时候,子节点不能被选中"。这个要求好像它本身没这功能。不过可以写点代码要实现它!可以参考下面代码。unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
      cxCustomData, cxStyles, cxTL, cxTextEdit, cxTLdxBarBuiltInMenu,
      cxInplaceContainer;type
      TForm1 = class(TForm)
        TreeList_1: TcxTreeList;
        TreeListColumn_TreeList_1Column1: TcxTreeListColumn;
        TreeListColumn_TreeList_1Column2: TcxTreeListColumn;
        procedure FormCreate(Sender: TObject);
        procedure TreeList_1NodeCheckChanged(Sender: TcxCustomTreeList;
          ANode: TcxTreeListNode; AState: TcxCheckBoxState);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    var
      i,j:Integer;
      vNode:TcxTreeListNode;
    begin
      TreeList_1.OptionsView.CheckGroups := True;
      TreeList_1.BeginUpdate;
      try
        TreeList_1.Clear;
        for i:=0 to 5 do
        begin
          vNode := TreeList_1.Add;
          vNode.CheckGroupType := ncgCheckGroup;
          vNode.Values[0] := IntToStr(i);
          for j:=0 to 3 do
          begin
            with vNode.AddChild do
            begin
              CheckGroupType := ncgCheckGroup;
              Values[0] := IntToStr(j);
            end;
          end;
        end;
      finally
        TreeList_1.EndUpdate;
      end;
    end;procedure TForm1.TreeList_1NodeCheckChanged(Sender: TcxCustomTreeList;
      ANode: TcxTreeListNode; AState: TcxCheckBoxState);
    begin
       if not ANode.HasChildren then
       begin
        if ANode.Parent.CheckState <> cbsChecked then
           ANode.CheckState := cbsUnChecked;
       end;
    end;end.
      

  4.   

    TreeList_1NodeCheckChanged这个事件我怎么找不到呢??我用的是ExpressQuantumTreeList 4
      

  5.   

    1.判断当前节点的父节点Parent,为ture时不处理,否则当前节点false
    2.判断当前节点,为ture时不处理,否则循环所有子节点变为false
      

  6.   

    1.判断当前节点的父节点Parent,为ture时不处理,否则当前节点false
    2.判断当前节点,为ture时不处理,否则循环所有子节点变为false这个其实我也想过,,但是判断是否有父节点好判断,但是获取父节点的值不好搞,,,,