帮帮忙~~~
1.不懂要怎么和数据库表中的一个bit类型字段关联起来,为真是树为选中状态,为假时则不选中
2.要怎么跟其它的表联系起来....比如,在表格中选中某行记录时,显示相应的权限...(两个表,一个表中有用户编号,权限表中也有用户编号),根据编号来取权限表中的相应模块的权限......并用RzCheckTreer 的状态来表示权限
3.在打开这个窗体时.根据当前登录的用户编号...进行树的节点加载同时判断该用户的权限
真晕~~~又是树~~

解决方案 »

  1.   

    和普的的TreeView 一样用, 
    csChecked:   //选中
    csUNChecked:   //非选中
      

  2.   

    还有两个没解决....
    1.要怎么屏蔽这个复选的功能?
    2.让主窗体上的菜单.最上面的一排的ENABLE为FALSE..不懂怎么设
      while not adoquery1.Eof do
      begin
        mode_id := trim(adoquery1.fieldbyname('mode_id').AsString);
        for i := 0 to MainMenu1.Items.Count - 1 do
        begin
          if MainMenu1.Items[i].Name= mode_id then
          begin
           if adoquery1.FieldByName('Examine').AsBoolean = false then
              MainMenu1.Items[i].Enabled:=false //这样写不行,要是条件为真.整个菜单都没了
           else
              MainMenu1.Items[i].Enabled:=true;
          end;
          for j := 0 to mainmenu1.items[i].count - 1 do
          begin
            if MainMenu1.Items[i].Items[j].Name = mode_id then
            begin
              if adoquery1.FieldByName('Examine').AsBoolean = false then
                MainMenu1.Items[i].Items[j].Enabled := false
              else
                MainMenu1.Items[i].Items[j].Enabled := true;
            end;
          end;
        end;
        adoquery1.Next;
      end;
      

  3.   

    {******************************************************************************}1,数据如下:
    ModuleCode                               ModuleName                               ModuleLevel 
    ---------------------------------------- ---------------------------------------- ----------- 
    11                                       系统维护                                     1
    21                                       基础资料                                     1
    31                                       采购管理                                     1
    31-31                                    采购收货单                                    2
    31-31-101                                采购收货单-开单                                 3
    31-31-102                                采购收货单-修改                                 3
    31-31-103                                采购收货单-删除                                 3
    31-41                                    采购付款单                                    2
    31-41-101                                采购付款单-开单                                 3
    31-41-102                                采购付款单-修改                                 3
    31-41-103                                采购付款单-删除                                 3
    31-51                                    采购退货单                                    2
    31-51-101                                采购退货单-开单                                 3
    31-51-102                                采购退货单-修改                                 3
    31-51-103                                采购退货单-删除                                 3
    32                                       销售管理                                     1
    {******************************************************************************}
    --模块编码
    2 SQL 语句如下,注意 ORDER BY ModuleCode
    SELECT ModuleCode,ModuleName,ModuleLevel FROM SB_Modules ORDER BY ModuleCode
    /*
    SELECT ModuleCode,ModuleName,LeafModuleSign,ParentModuleCode,ModuleLevel FROM SB_Modules ORDER BY ModuleCode
    */
    {******************************************************************************}3,代码如下procedure TfrmPurviewAssign.BuildCheckTree(pDataSet:TDataSet);
    var
      iLevel:Integer;
      sCode,sName:string;
      MyNode:array[0..10]of TTreeNode;//保存各级节点,最长支持 10 级(重点)
    begin
      Screen.Cursor:=crHourGlass;
      ckTreePurview.Items.Clear;
      //FIDList.Clear;
      with pDataSet do
      begin
        First;
        //以上是增加第一项
        while not Eof do
        begin
          sCode:=Trim(FieldByName(Purviews.FModuleCode_FieldName).AsString);
          sName:=Trim(FieldByName(Purviews.FModuleName_FieldName).AsString);
          iLevel:=FieldByName(Purviews.FModuleLevel_FieldName).AsInteger;
          if iLevel=1 then//确保代码符合标准
          begin
            MyNode[iLevel]:=ckTreePurview.Items.AddChild(nil,sName);
          end
          else
          begin
            MyNode[iLevel]:=ckTreePurview.Items.AddChild(MyNode[iLevel-1],sName);
          end;
          //MyNode[iLevel].ImageIndex:=iLevel;
          //MyNode[iLevel].SelectedIndex:=iLevel-1;
          Next;
        end;
        First;
      end;
      Screen.Cursor:=crDefault;
    end;
    {******************************************************************************}
      

  4.   

    //==============================================================================
    procedure TfrmPurviewAssign.SetCheckedTree(pModuleDataSet:TDataSet;pPurviewDataSet:TDataSet);
    var
      I:integer;
      iRecNO:integer;
    begin
      FInitFlag:=True;
      for I:=0 to ckTreePurview.Items.Count-1 do
      begin
        iRecNO:=I+1;
        Purviews.MoveToModuleCode(iRecNO);
        Purviews.ModuleCode:=Purviews.GetModuleCode;
        if Purviews.LocatePurview(Purviews.ModuleCode) then
        begin
          ckTreePurview.ItemState[I]:=csChecked;
        end
        else
        begin
          ckTreePurview.ItemState[I]:=csUnChecked;
        end;
      end;
      FInitFlag:=False;  Purviews.MoveToModuleCode(1);
    end;
      

  5.   

    感谢楼上的.....可是这些事件写在哪?自定义的?好像RZCHECKTREE里头没这些的啊....还有烦你解释一下这些语句.......都看得不怎么懂~~-_-~~~我的数据结构跟你的表不太一样..只有菜单名.CAPTION .在表中并没有为菜单分级....加载树时是根据菜单结构来加载的.....
    呵呵...谢谢你了~~~