大家好,怎么在TreeView中数据而且呈多列显示,并且每一个Item前面加一个复选框呢?

解决方案 »

  1.   

    Treeview改造的工程量还是比较庞大的,建议使用第三方的,如DevExpress,ehlib,都有相应的组件;
    到www.2ccc.com去找吧!
      

  2.   

    VirtualTrees可以
    如果只要复选框,
    通过stateimageindex切换就行了
    或者用api:
    procedure TreeviewAddCheckBox(TV:Ttreeview);
    begin
      SetWindowLong(TV.Handle, GWL_STYLE, GetWindowLong(TV.Handle, GWL_STYLE) or TVS_CHECKBOXES);
    end;
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls;type
      TForm1 = class(TForm)
        TreeView1: TTreeView;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
     uses CommCtrl;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    var
      H: HWND;
    begin
      H := TreeView1.Handle;
      SetWindowLong(H, GWL_STYLE, GetWindowLong(H, GWL_STYLE) or TVS_CHECKBOXES);
    end;end.
    注意uses CommCtrl;这样编写出来的父 Node 和子node 不是太连贯,自己判断
      

  4.   

    用7楼的方法显示复选框,下面的方法判断是否选中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;
      

  5.   

    http://download.csdn.net/source/1325963,我自己写的一套控件包,其中minilistview符合你的需要.
      

  6.   

    DevExpress5.0就可以,网上好多地方可以下载,盒子上就有