一个关于TREEVIEW的内容添加的问题,急,在线等!(100分)

  • 主题发起人 主题发起人 北狼
  • 开始时间 开始时间

北狼

Unregistered / Unconfirmed
GUEST, unregistred user!
用TREEVIEW.LOADFROMFILE()从文本文件中读取父结点。
每个父结点都有一个对应的子结点文本文件。
在程序的ONCREATE事件中,将子结点添加到相应的父结点中。
该怎么实现?
 
有固定格式吗,如果有就好作了。
 
字节写配置文件。保存各节点信息,不是使用SaveToFile属性
 
treeview1.Items.AddChildObject

你看看这个的帮助
 
帮我看一下代码:
Node:=Form2.TreeView1.Items.Item[0];
For j:=0 to Form2.iii-1 do
begin
s := TStringList.Create;
ListDirs(Form2.Filmno[j], s);
for k:=0 to s.Count-1 do
begin
Form2.TreeView1.Items.AddChild(Node,s.Strings[k]);
end;
s.Free;
While node.Parent.GetNextSibling <> nil do
node := node.Parent.GetNextSibling;
end;
 
最省事的方法,到网上去找一个pathTreeView 你一看就知道怎么用了。
 
原来我是这样写的:
For j:=0 to Form2.iii-1 do
begin
s := TStringList.Create;
ListDirs(Form2.Filmno[j], s);
Node:=Form2.TreeView1.Items.Item[j];
for k:=0 to s.Count-1 do
begin
Form2.TreeView1.Items.AddChild(Node,s.Strings[k]);
end;
s.Free;
// While node.Parent.GetNextSibling <> nil do
// node := node.Parent.GetNextSibling;
end;
结果是记录都是望第一个父结点中加,行成了很多层。
 
请知道的帮忙解决,急啊,谢谢!
 
这个应该很好解决,
 
可我总解决不了啊。帮我啊!
 
没人知道吗?
没人我就顶,顶到有人知道为止~~~~~~~~~~~~呵呵
 
问题在 Node:=Form2.TreeView1.Items.Item[j]; 一句。
你定位父节点的思路到底是什么?

ps: 将问题提前只要按一下位于“附加功能”的按钮,不用发帖子。
 
Form2.Treeview1.loadfromfile('d:/tt.txt');
iii:=Form2.Treeview1.items.count;
III等于多少,就有多少个Strings(),将Strings()加到对应的父结点去。
 
你可以这样:
创建一个顶层结点——以这个节点为父节点创建字节点——创建下一个顶层结点...
这样就肯定不会出错了。
 
顶层结点是从文件的LOAD的啊
 
Form2.Treeview1.loadfromfile('d:/tt.txt'); //调入父结点
iii:=Form2.Treeview1.items.count; //父结点个数
For j:=0 to Form2.iii-1 do
begin
s := TStringList.Create;
ListDirs(Form2.Filmno[j], s);
Node:=Form2.TreeView1.Items.Item[j];
for k:=0 to s.Count-1 do
begin
Form2.TreeView1.Items.AddChild(Node,s.Strings[k]);//加如子结点
end;
s.Free;
While node.Parent.GetNextSibling <> nil do //焦点移到下一个父结点。[red]这里有问题[/red]
node := node.Parent.GetNextSibling;
end;
 
用数据表解决!
设几个字段来做
 
[red]顶,大家帮忙啊。[/red][:(!]
 
要倒过来添加,不能从第一个节点开始添加,
而是要从最后一个开始,这样才能保证节点的索引不变:
假设第一个文件中存放的子点的文件名。

以下是我成功的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
lst:TStrings;
i,j:integer;
begin
Treeview1.loadfromfile('d:/temp/delphi/cc.txt');
lst:=TStringList.create;
for i:=treeview1.items.count-1 downto 0 do
begin
lst.LoadFromFile('d:/temp/delphi/'+treeview1.items.text);
for j:=0 to lst.count -1 do
begin
treeview1.Items.addchild(treeview1.Items,lst.Strings[j] );
end;
end;
lst.free
end;

建立的三个文本文件都放在 d:/temp/delhpi 目录下:
////cc.txt
aa1.txt
aa2.txt

///aa1.txt
aaaaaaa11
aaaaaaa12
aaaaaaa13

////aa2.txt
bbbbb21
bbbbb22
bbbbb23
 
后退
顶部