看了csdn上面一些老的相似的帖子,貌似有一点儿不一样,所以自己开个贴
已有如下的书:
config
|-versionList
|-----versinon
| |--id:123
| |--fileList
| |-file
| | |--fileName:123.txt
| | |--fileSize:122122
| | |--fileHash:asdfsdfs22
| | |--fileLevel:true
| |-+file
| |-+file
|-----+version
|-----+version
|-----+version
|-+newAllFiles好了问题是这样的,我需要给书中加一个新的version节点,是不是这样
我定义一个treenode,把我要加的数据写进去后
然后var
nodes:TTreeNodes;begin
nodes:=tv1.items;
myNode:=nodes.addChild(tv1.items[1],'version')
end;
还有一个问题就是,你看我的version里面都有一个id,怎么根据id的值来给每个version排序。好的,谢谢各位。
已有如下的书:
config
|-versionList
|-----versinon
| |--id:123
| |--fileList
| |-file
| | |--fileName:123.txt
| | |--fileSize:122122
| | |--fileHash:asdfsdfs22
| | |--fileLevel:true
| |-+file
| |-+file
|-----+version
|-----+version
|-----+version
|-+newAllFiles好了问题是这样的,我需要给书中加一个新的version节点,是不是这样
我定义一个treenode,把我要加的数据写进去后
然后var
nodes:TTreeNodes;begin
nodes:=tv1.items;
myNode:=nodes.addChild(tv1.items[1],'version')
end;
还有一个问题就是,你看我的version里面都有一个id,怎么根据id的值来给每个version排序。好的,谢谢各位。
我用的TTreeView控件
我看了下,他添加节点的方法,写了下面的代码 intDlg(dlgOpen1,'选择版本控制文件','versionList|versionList.xml|allfile|*.*');
if dlgOpen1.Execute() then
begin
// tv1.LoadFromFile(dlgOpen1.FileName);
XMLDocument1.LoadFromFile(dlgOpen1.FileName);
myVerList:=Getconfig(XMLDocument1);
nodes:=tv1.Items;
node:=nodes.Add(nil,'versionList');
for I := 0 to myVerList.VersionList.Count - 1 do
begin
childnode:=nodes.AddChild(node,'version');
cnode:=nodes.AddChild(childnode,'<id>'+myVerList.VersionList[i].Id+'</id>');
cnode:=nodes.AddChild(childnode,'<abandon>'+myVerList.VersionList[i].Abandon+'</abandon>'); cnode:=nodes.AddChild(childnode,'fileList'); for j := 0 to myVerList.VersionList[i].FileList.Count - 1 do
begin
childnode:=nodes.AddChild(cnode,'File');
bnode:=nodes.AddChild(childnode,'<path>'+myverList.VersionList[i].FileList[j].Path+'</path>');
bnode:=nodes.AddChild(childnode,'<fileSize>'+inttostr(myverList.VersionList[i].FileList[j].FileSize)+'</fileSize>');
bnode:=nodes.AddChild(childnode,'<fileHash>'+myverList.VersionList[i].FileList[j].FileHash+'</fileHash>');
bnode:=nodes.AddChild(childnode,'<fileLevel>'+myverList.VersionList[i].FileList[j].FileLevel+'</fileLevel>')
end;
end;
node:=nodes.Add(nil,'AllFiles');
childnode:=nodes.AddChild(node,'<allPath>'+myverList.NewAllFile.AllPath+'</allPath>');
childnode:=nodes.AddChild(node,'<allSize>'+inttostr(myVerList.NewAllFile.AllSize)+'</allSize>');
childnode:=nodes.AddChild(node,'<allHash>'+myVerList.NewAllFile.AllHash+'</allHash>');
versionListPath:=dlgOpen1.FileName;
end;
btnFiles.Enabled:=True;
btnAdd.Enabled:=True;
btnPreview.Enabled:=True;
btnSave.Enabled:=True;
chkAllFiles.Enabled:=True;
end;
这个是把我的xml文件写到treeView里面去
我看了直接loadFromFile函数,他是按照空格或者Tab来的,所以很多时候不准确。但是这个指定添加到某个节点下面我,没有看到有什么FindByText之类的函数,所以我来问问指定添加到某个节点下面怎么添加
用treeView的items[index]么?来制定父节点??
begin
fatherNode:=tree.Selected;//(比如要在选种节点下加子节点)
if fatherNode=nil then exit;
//fatherNode.HasChildren:=true;
//fatherNode.Expand(false); newNode:=tvWLCC.Items.AddChild(fatherNode,'请修改这个新名字');
newNode.id=0;排序的话就要在加载树的时候排
就像上学时练习的,数字排序加入到listbox
比较id 双重循环向父节点里加 (取出一个id跟其他的比较)