如下的字符串转换:
'11(人事管理)'#8'1101(考勤)'#8'1102(福利)'#8'12(销售管理)'#8'13(财务管理)'#8'1301(工资)'#8'1302(差旅费)'#8'14(客户管理)'#8// 它会生成如下的树:
11(人事管理)|
            |-1101(考勤)     //11是上级的编号
            |-1102(福利)     //11是上级的编号
12(销售管理)
13(财务管理)|-1301(工资)     //13是上级的编号
            |-1302(差旅费)   //13是上级的编号
14(客户管理)  树有可能是N级的!!!!
请问该如何处理?
先谢谢了!

解决方案 »

  1.   

    这里有个文件或目录转换成Treeview的函数,可以借鉴。procedure DirToTreeView(Tree: TTreeView; Directory: string; Root: TTreeNode; IncludeFiles:Boolean);varSearchRec : TSearchRec;ItemTemp : TTreeNode;beginwith Tree.Items dotryBeginUpdate;if Directory[Length(Directory)] <> ' then Directory := Directory + ';if FindFirst(Directory + '*.*', faDirectory, SearchRec) = 0 thenbeginrepeatif (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.')thenbeginif (SearchRec.Attr and faDirectory > 0) thenRoot := AddChild(Root, SearchRec.Name);ItemTemp := Root.Parent;DirToTreeView(Tree, Directory + SearchRec.Name, Root, IncludeFiles);Root := ItemTemp;endelse if IncludeFiles thenif SearchRec.Name[1] <> '.' thenAddChild(Root, SearchRec.Name);until FindNext(SearchRec) <> 0;FindClose(SearchRec);end;finallyEndUpdate;end;end;
      

  2.   

    to DelphiBoy2003(一朵梨花压海棠,玉树临风胜潘安) 
    我要的是N层树,好象没那么简单哦?
      

  3.   

    个人推荐你用Develop Express公司的DBTreeView控件,蛮好用的。www.51delphi.com上也有下载。
      

  4.   

    不会吧现在还没人跟你解答,高手们都睡着了?
    其实我上次给你的代码改一改就行了procedure TForm1.Button1Click(Sender: TObject);
    const
      s = '11(人事管理)' + #8+ '1101(考勤)'+ #8 + ‘110101’ + #8 + '1102(福利)'+ #8 + '12(销售管理)'+ #8 + '13(财务管理)' + #8 + '1301(工资)'+ #8 + '1302(差旅费)' + #8 +'14(客户管理)'+ #8;
    var
      I, J: Integer;
      StrList: TStrings;
      Node, PNode: TTreeNode;
    begin
      StrList := TStringList.Create;
      try
        StrList.Text := StringReplace(s, #8, #13#10, [rfReplaceAll]);
        for I := 0 to StrList.Count - 1 do
        begin
          for J := I - 1 downto 0 do
            if Length(StrList[J]) < Length(StrLit[I]) then Break;
          if J = -1 then 
            PNode := nil
          else  
            PNode := StrList.Objects[J];
          StrLit.Objects[I] := TreeView1.Items.AddChild(PNode, StrList[I]);
        end;
      finally
        StrList.Free;
      end;end;上面的代码只适用于你的字符串按按树的规律生成的如果次序打乱了就不行,如果还有什么问题,我下班再看现在比较忙
      

  5.   

    不用弟归。你把树一层层展开,展到第N层,就取第N*2+1 到 N*2+2两个字符
      

  6.   

    to wush007(防守反击) 
    你可能不是学Delphi的吧!!!