首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

TreeView1的有关问题 100分

2012-03-05 
TreeView1的问题 100分文本内容:1111|222|3334444|555|666怎么把他读到TreeView1里;效果:1111--||---22244

TreeView1的问题 100分
文本内容:
1111|222|333
4444|555|666

怎么把他读到TreeView1里;

效果:

1111--|
  |---222
4444--|
  |---555

最好给完整代码 要动态加载
因为文本内容没有固定 也许十条或者50条

要动态加进去,无论多少条,都行

[解决办法]
没说清楚
[解决办法]
666 333 丢了?
[解决办法]

探讨
666 333 丢了?

[解决办法]
首先你要取值。把|作为分隔符,分开来
Delphi(Pascal) code
  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可以存放起来
[解决办法]
完整代码,完整代码,完整代码......................连这么简单的东西也得完整代码,唉
[解决办法]
1111
222
333
4444
555
666

LZ的意思是这样吧,每一行就是一个节点,以|分隔,前一个值就是后一个值的Parent

Delphi(Pascal) code
procedure 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;
[解决办法]
果断是伸手要课后作业答案的呀。。。
[解决办法]
根据楼主要求,优化了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;

热点排行