要在treeview的每个节点前面加一个checkbox,怎么办?

解决方案 »

  1.   

    大富翁上搜索了一个解决方案:
    你得在表单中放置一个TTreeView及TImageList控件,然后,为
    TImageList控件提供两个或更多个的位图,以表示你的不同的访问级别,而不
    仅是CheckBox而已,并将TTreeView的Images属性置为该TImageList控件,
    至此你已完成基本设定。(你可以双击此TreeView,并随便加入几个节点,马上
    你能看到你的ImageList中的第一个位图显示在主表单的TreeView的相应节点处)
    别急,下面讲述如何实现你所说的不同访问级别:
        其实你只需在TreeView的MouseDown事件中作类似如下的判定即可:procedure TForm1.TreeView1MouseDown(Sender: TObject; Button:      TMouseButton; Shift: TShiftState; X, Y: Integer);var
      MyHitTest : THitTests;
    begin
      MyHitTest := TreeView1.GetHitTestInfoAt(X,Y);
      if htOnIcon in MyHitTest then
        {
          现在已测定出是在位图上进行了点击,你可据此实现CheckBox功能,
          只需将该节点的ImageIndex属性置为前面TImageList中的相应位图
          即可。至于当前节点,可由TreeView.Selected获得,也可由
          GetNodeAt(X,Y)获得。
          在此,你可根据情况实现更多的级别控制,而非仅是CheckBox而已。
        };
    end;
      

  2.   

    用tcnpack控件,还不错的,而且可以参照源码看看
      

  3.   

    raize有这个功能的控件的,而且也比较好用
      

  4.   

    何必如此麻烦?TreeView自己就有这个属性。设置一下就OK了。const
      TVS_CHECKBOXES = $00000100;  SetWindowLong(TreeView1.Handle, GWL_STYLE,
                    GetWindowLong(TreeView1.Handle, GWL_STYLE) OR TVS_CHECKBOXES);
      

  5.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, StdCtrls;type
      TForm1 = class(TForm)
        TreeView1: TTreeView;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}const
    TVS_CHECKBOXES = $00000100;procedure SetComCtrlStyle(WinCtrl: TWinControl; Value: Integer; UseStyle: Boolean);
    var
    Style: Integer;
    begin
      if WinCtrl.HandleAllocated then
      begin
        Style := GetWindowLong(WinCtrl.Handle, GWL_STYLE);
        if not UseStyle then
        Style := Style and not Value
        else Style := Style or Value;
        SetWindowLong(WinCtrl.Handle, GWL_STYLE, Style);
      end;
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      SetComCtrlStyle(TreeView1, TVS_CHECKBOXES, True);
    end;end.
      

  6.   

    Rz控件组中有带CheckBox的Treeview