TreeView1的问题 100分
文本内容:
1111|222|333
4444|555|666
怎么把他读到TreeView1里;
效果:
1111--|
|---222
4444--|
|---555
最好给完整代码 要动态加载
因为文本内容没有固定 也许十条或者50条
要动态加进去,无论多少条,都行
[解决办法]
没说清楚
[解决办法]
666 333 丢了?
[解决办法]
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
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;