文本内容:
1111|222|333
4444|555|666怎么把他读到TreeView1里;效果:1111--|
      |---222
4444--|
      |---555最好给完整代码 要动态加载
因为文本内容没有固定 也许十条或者50条要动态加进去,无论多少条,都行

解决方案 »

  1.   

    首先你要取值。把|作为分隔符,分开来  procedure GetStr(instr:String;Fg:string;Strlist:TStrings);
       var
         bz,i:integer;
       begin 
          bz:=0;
          for   i:=1  to  Length(instr) do
          begin
            if instr[i]=Fg then
            begin
                if Copy(instr,bz+1,i-bz-1)<>'' then strlist.Add(Copy(instr,bz+1,i-bz-1)) ;
                bz:=i;
            end;
          end;
          if instr<>'' then  strlist.Add(Copy(instr,bz+1,Length(instr))) ;
       end;使用:  GetStr(edit1.Text,'|',memo1.Lines);edit1.text是你的带|字符串,memo1.lines可以存放起来在用treeview加进去就好了,别说你不会加哦
      

  2.   

    1111
      222
        333
    4444
      555
        666LZ的意思是这样吧,每一行就是一个节点,以|分隔,前一个值就是后一个值的Parentprocedure TForm1.Button1Click(Sender: TObject);
    var
      i,j:integer;
      s:widestring;
      slist:TStringList;
      fNode:TTreeNode;
    begin
      slist:=TStringList.Create;
      try
      slist.LoadFromFile('d:\1.txt');
      for i:=0 to slist.Count-1 do
      begin
        s:=slist.Strings[i]+'|';
        fNode:=nil;
        while true do
        begin
          j:=pos('|',s);
          if j>0 then
          begin
            fNode:=TreeView1.Items.AddChild(fNode,copy(s,1,j-1));
            delete(s,1,j);
            if s='' then
               break;
          end;
        end;
      end;
      finally
        slist.Free;
      end;
    end;
      

  3.   

    根据楼主要求,优化了6楼的代码,解决了多余空行和超多“|”引起子结点过多问题,代码如下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j:integer;
      s:widestring;
      slist:TStringList;
      fNode:TTreeNode;
    begin
      slist:=TStringList.Create;
      try
      slist.LoadFromFile('d:\D.txt');
      for i:=0 to slist.Count-1 do
      begin
        s:=slist.Strings[i];
        IF s='' then Continue;
        fNode:=nil;
        while s<>'' do
        begin
          j:=pos('|',s);
          if j>0 then
            begin
              fNode:=TreeView1.Items.AddChild(fNode,copy(s,1,j-1));
              if fNode.Level=1 then Break;
              delete(s,1,j);
            end
          else
            Break;
        end;
      end;
      finally
        slist.Free;
      end;
    end;