各位大哥.请问大家treview里如何增加checkbox显示,如果在checkbox里能打钩,打上钩后如何实现本节点选中,如果本级节点被选中了,如何实现它下面如果有子节点也能被自动选中,子节点里的checkbox自动打上钩

解决方案 »

  1.   


    加checkbox
    SetWindowLong(TreeView1.Handle, GWL_STYLE, GetWindowLong(TreeView1.Handle, GWL_STYLE) or $00000100); 
      

  2.   


    uses
      CommCtrl;列举选中的节点
    var
      Node: TTreeNode;
      TVI: TTVItem;
      i:integer;
    begin
      for i:=0 to TreeView1.Items.Count - 1 do
      begin
        Node := TreeView1.Items[i];
        TVI.mask := TVIF_STATE;
        TVI.hItem := Node.ItemId;
        TreeView_GetItem(TreeView1.Handle, TVI);
        if TVI.state and $2000 = $2000 then
          ShowMessage(Node.Text);
      end;
    end;
      

  3.   

    加上checkbox好像有个属性的吧
      

  4.   

    好像有这个属性的吧,在object inspector里面,listview是有的,记得
      

  5.   

    结合imagelist,使用图标仿照。
      

  6.   

    listview有checkbox属性,treeview没有这个属性。
    可以参照楼上的兄弟们的方法实现这个功能。
    不过有个问题,比如:有3个item,其中第1,2个设置了checkbox属性,第3个根据界面逻辑需要不用设置。
    那么,当你空格键按第3个item的时候,它会自动出现checkbox,这个可能是个bug,可能是vcl一直没有原生包装checkbox属性的原因