谢谢 !!!

解决方案 »

  1.   

    给你一个列子    function TForm5.LoadCode(crTbl:Ttable):Integer;   var NowID,ShowTxt:String;//NOWID 编码,ShowTxt 名称       Level:Integer;//level保存结点级数       MyNode:array[0..2]of TTreeNode;//保存各级节点,最长支持3级(重点)    begin    Screen.Cursor:=crHourGlass;//设置光标    Level:=0;//初始为最顶点    With crTbl do    begin     //try     if not Active then Open;    First;     tveCode.Items.Clear;     //以下是增加第一项    MyNode[Level]:=tveCode.Items.Add(tveCode.TopItem,SFirstNodeTxt);    MyNode[Level].ImageIndex:=0; //设置显示图片    MyNode[Level].SelectedIndex:=1;     //以上是增加第一项    While Not Eof do     begin    NowID:=Trim(FieldByName('aCode').AsString);//保存编码    ShowTxt:=NowID+' '+FieldByName('aName').AsString;//名称    Level:=GetLevel(SCodeFormat,NowID); //返回代码的级数     //以下是增加子项     //以下用上一级节点为父节点添加子节点     if Level>0 then//确保代码符合标准     begin    MyNode[Level]:=tveCode.Items.AddChild(MyNode[Level-1],ShowTxt);    MyNode[Level].ImageIndex:=1;    MyNode[Level].SelectedIndex:=2;    end;     //以上是增加子项    Next;    end;   // finally    //Close;   // end;    end;    MyNode[0].Expand(False);//将首节点展开    Screen.Cursor:=crDefault;    end;    //以上函数将Code.db表中的科目代码和科目代码名称显示出来    //下面函数的功能是返回一代码的级数,参数sFormat传递科目代//码结构;    //参数sCode传递某一科目代码    function TForm5.GetLevel(sFormat,sCode:String):Integer;    var i,Level,iLen:Integer;    begin    Level:=-1;//如果代码不符合标准,则返回-1    iLen:=0;    if (sFormat<>'')and(sCode<>'')then     for i:=1 to Length(sFormat) do     begin     iLen:=iLen+StrToInt(sFormat[i]);     if Length(sCode)=iLen then     begin    Level:=i;    Break;     end;     end;    Result:=Level;    end;    //上面函数的功能是返回一代码的级数调用的时候这样LoadCode(一个table控件),当然,你的表里面应该有一个字段
    用类似这样的表示一级001,二级001001,三级001001001
      

  2.   

    gytyl(delphi混混)
      我也是按照你的思路来设计的,但我不知道 如何和数据库连接,这个比较不懂,请赐教。
      

  3.   

    cow8063(网际浪子) 的方法是可以,我也是这样做的,不过我补充一点,就TTable中的数据一定要是升序排列的。