First 26 to me, I will give you My source

解决方案 »

  1.   

    给分了,把source发[email protected],谢谢。
      

  2.   

    Sorry ,三天内发 E_M 给你的(6/22)
      

  3.   

    代码正确,有待优化                UnitClass 表结构
    -------------------------------------------------
        CUnitClassCode             Varchar   10    CUnitClassName             Varchar   20     IUCGrade                   Int        1     Bend                       Bit        
    -------------------------------------------------/////////////////////////////////////
    //节点第一次刷新过程
    ////////////////////////////////////procedure Tfrm_ClientMain.node_first_fresh;
    var
       treenode : tfctreenode;
       fstr : string;
       bint : integer;
       ibegin : integer;
       i : integer;
       level_tmp : integer;begin
         if frm_clientmain.fctreeview1.Enabled = false then
            frm_clientmain.fctreeview1.enabled := true;
         fctreeview1.items.clear;     treenode := fcTreeView1.items.add(nil,'单位分类');
         statusbar1.Panels[0].Text :=  '所选类名为:'+'单位分类';     node_text := '单位分类';     treenode.ImageIndex := 0 ;     if treenode = fcTreeView1.Items[0] then
                   treenode.ImageIndex := 0 ;     if cds_unitclass.IsEmpty = false then
         begin
             cds_unitclass.First;
             fstr := trim(cds_unitclass.FieldByName('cunitclasscode').asstring)+' '+
                     trim(cds_unitclass.fieldbyname('cunitclassname').asstring);         if treenode = fcTreeView1.Items[0] then
                   treenode.ImageIndex := 0 ;         while not cds_unitclass.Eof  do
             begin
                   bint := cds_unitclass.FieldByName('igrade').value;
                   if ((bint = 1) = true)  then
                   begin
                        treenode :=  fcTreeView1.Items[0];
                        treenode.ImageIndex := 0;
                        treenode :=  fcTreeView1.items.addchild(treenode,fstr);
                        treenode.ImageIndex := 1;
                   end;//一级类判断结束               if ((bint <> 1) = true) then
                   begin                   treenode := fctreeview1.Items.addchild(treenode,fstr);
                       treenode.imageindex := 1;
                   end;               level_tmp := treenode.Level;
                   cds_unitclass.Next;
                   ibegin := cds_unitclass.FieldValues['igrade'];
                   if ibegin = level_tmp then
                   begin                   treenode :=  treenode.Parent;
                       treenode.ImageIndex := 1;
                   end
                   else
                       begin
                       for i := 0 to (level_tmp -ibegin) do
                       begin                       treenode := treenode.parent;
                           treenode.ImageIndex := 1;
                       end;
                   end;
                   fstr := trim(cds_unitclass.FieldByName('cunitclasscode').asstring)+' '
                     + trim(cds_unitclass.fieldbyname('cunitclassname').asstring);           end;//结束数据list循环        end
         else
         begin
             node_text := '单位分类';
             exit; //如果 UnitClass 无纪录,退出节点刷新过程     end;   //如果 UnitClass 无纪录,退出节点刷新过程end;
    ////////////////////////////////////////////////////
    //点击节点,定位  FB_UnitClass 表中的纪录
    ////////////////////////////////////////////////////procedure Tfrm_ClientMain.fcTreeView1GetImageIndex(
      TreeView: TfcCustomTreeView; Node: TfcTreeNode);var
       i : integer ;
       scode : string; // 正被选择的节点 TEXT (即 FB_UnitClass 表的主键)
       stemp : string;begin
        if cds_unitclass.RecordCount <> 0 then
        begin       if treeview.Selected = nil then
              exit;
           if node = nil then
              exit;
           if node.Selected = true then       begin
              //statusbar1.SimpleText := '所选类名为:'+node.Text;
              statusbar1.Panels[0].Text :=  '所选类名为:'+node.Text;          node_text := node.text ;
              if node_text <> '单位分类' then
              begin
              /////////////////////////////////
                  dbgrid1.DataSource := ds_unit; //不是总跟节点时,显示数据
                  dbgrid1.enabled := true;
              /////////////////////////////////
                  for i := 1 to 60 do
                  begin
                      stemp := copy(node.text,i,1);
                      if  stemp = ' ' then
                      begin
                          stemp := copy(stemp,1,(length(stemp)-1));
                          break;
                      end;
                      scode := TRIM(trim(scode)+trim(stemp));
                      node_code := scode;
                  end ;  // 计数循环结束
              end
              else
              begin
                     /////////////////////////////
                      node_grade := 0;
                      dbgrid1.Enabled := false ;
                      dbgrid1.DataSource := nil;  总根结点时,显示为空
                    ////////////////////////////////
              end;
           end
           else
               exit; // 没有节点被选择退出节点图片选择过程
           cds_unitclass.Locate('CUnitClassCode',vararrayof([SCODE]),[loPartialKey]);       node_grade := cds_unitclass.FieldValues['igrade'];       node_bend := cds_unitclass.FieldValues['bend'];       if node.Expanded then
           begin
                if node.Level = 0 then
                begin
                   node.imageindex := 0 ;
                   node.selectedindex := 0;
                end
                else
                begin
                   node.ImageIndex := 2;
                   node.SelectedIndex := 2;
                end
           end
           else
           begin
                if node.level = 0  then
                begin
                   node.imageindex := 0 ;
                   node.selectedindex := 0;
                end
                else
                begin
                   node.imageindex := 1;
                   node.SelectedIndex :=1;
                end;
           end;
       end
       else
       begin
          node_text := '单位分类';      fctreeview1.Selected := fctreeview1.Items[0];
          
          statusbar1.Panels[0].Text :=  '所选类名为:'+node.Text;      dbgrid1.Enabled := false;
          exit;
       end;end;