unit rs_pub;interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, ADODB,StdCtrls, Buttons, DBCtrls, Grids, DBGrids, Mask, ExtCtrls,comctrls,
  rs_dm1;TYPE
  TRS_PUB=Class
    Class Function  GetCodeStr(Const Code,CodeLen:LongInt):String;
      //取得相应的代码
    Class Procedure Loadtree(TreeData:TDataSet;TreeViewCode:TtreeView);
      //显示树结构
    class Function GetLevel(sFormat,sCode:String):Integer;  //返回当前代码的级别    end;implementation
Class Function TRS_PUB.GetCodeStr(Const Code,CodeLen:LongInt):String;  //取得相应的代码
Var
   aCode,i,ModNum:LongInt;
Begin
   ModNum:=1;
   for i:=1 to CodeLen Do ModNum:=ModNum*10;
   aCode:=(abs(Code) mod ModNum);
   Result:=IntToStr(aCode);
   while Length(Result)<CodeLen do Result:='0'+Result;
End;
class Function  TRS_PUB.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;
//上面函数的功能是返回一代码的级数Class Procedure TRS_PUB.Loadtree(TreeData:TDataSet;TreeViewCode:TtreeView);
var
   NOWID,showtxt:string;
  level:integer;
   treenode:array[0..6]of TtreeNode; //代码及别支持6级
begin
   level:=0;
   with treedata do
     begin
          first;
          TreeViewCode.items.clear;
          treenode[level]:=TreeViewCode.items.add(TreeviewCode.TopItem,'科目');
          treenode[level].ImageIndex:=0;
          treenode[level].SelectedIndex:=0;
          while not eof do
            begin
               nowid:=Trim(FieldByName('编码').AsString);
               ShowTxt:=NowID+' '+FieldByName('名称').AsString;
               Level:=trs_pub.GetLevel('322',NowID);
               //返回代码的级数
               //以下是增加子项
               //以下用上一级节点为父节点添加子节点
                if Level>0 then//确保代码符合标准
                  begin
                  treeNode[Level]:=TreeViewCode.Items.AddChild(treenode[Level-1],ShowTxt);
                  treeNode[Level].ImageIndex:=1;
                  treeNode[Level].SelectedIndex:=2;
                  end;
                 //以上是增加子项
                Next;
            end;
            first;
       end;
   treeNode[0].Expand(false);//将首节点展开
end;end. 
使用的时调用Loadtree(TreeData:TDataSet;TreeViewCode:TtreeView);
在要用的窗体中先加入一个TREEVIEW,在调用
trs_pub.loadtree(rs_dm.ADOTable_bm,rs_list_treeview);
rs_dm.adotable_bm是一个ADO的TABLE,即是一个已连结数据库的构件。