我现在要做的事是在TreeView里面选中一个节点进行新建,这个是成功的,但是要同时XML文件里的对应的那个节点下也新建一个节点,貌似没有成功啊,每次都是在XML的根节点下新建了一个节点,经过调试后我发现树的所选节点没有传递到我定义的FindNodePath函数里面去,后面的当然也没法有数据了,先附一下我的代码吧,不长,但看着可能有点费力,但问题应该不是在我的函数里面//==============================================================================
// 新建节点
//==============================================================================
procedure TForm1.newBtnClick(Sender: TObject);
var
rNode,tmpNode,newNode: IXMLNode;
nowTreeNode: TTreeNode ;
nowNodePath: TStringList;
cNode,pNode,nNode:TTreeNode ;
i:Integer;
xmlToTree:TXmlToTree;
newname:string;
flag : Boolean;
begin
newname := InputBox('提示','请输入文件名:','newname');
flag := True ;
if TreeView1.Selected.HasChildren then
begin
cNode := TreeView1.Selected.getFirstChild;
for i:=1 to TreeView1.Selected.Count-1 do
begin
cNode := cNode.getNextSibling;
if cNode.Text = newname then
begin
ShowMessage('已经有一个此名字的文件!');
flag := False ;
Break;
end;
end;
end;
if flag then
TreeView1.Items.AddChild(TreeView1.Selected , newname); xmlToTree:= TXmlToTree.Create ;
nowTreeNode:= TreeView1.Selected;//此句执行后nowTreeNode为什么是空的? nowNodePath := xmlToTree.findNodePath(nowTreeNode);
rNode := XMLDocument1.DocumentElement;
tmpNode := xmlToTree.findNode(nowNodePath,rNode);
newNode := tmpNode.AddChild('DIR');
newNode.Attributes['Label'] := newname; XMLDocument1.SaveToFile('e:\xiaowei\mytest.xml');
end;
// 新建节点
//==============================================================================
procedure TForm1.newBtnClick(Sender: TObject);
var
rNode,tmpNode,newNode: IXMLNode;
nowTreeNode: TTreeNode ;
nowNodePath: TStringList;
cNode,pNode,nNode:TTreeNode ;
i:Integer;
xmlToTree:TXmlToTree;
newname:string;
flag : Boolean;
begin
newname := InputBox('提示','请输入文件名:','newname');
flag := True ;
if TreeView1.Selected.HasChildren then
begin
cNode := TreeView1.Selected.getFirstChild;
for i:=1 to TreeView1.Selected.Count-1 do
begin
cNode := cNode.getNextSibling;
if cNode.Text = newname then
begin
ShowMessage('已经有一个此名字的文件!');
flag := False ;
Break;
end;
end;
end;
if flag then
TreeView1.Items.AddChild(TreeView1.Selected , newname); xmlToTree:= TXmlToTree.Create ;
nowTreeNode:= TreeView1.Selected;//此句执行后nowTreeNode为什么是空的? nowNodePath := xmlToTree.findNodePath(nowTreeNode);
rNode := XMLDocument1.DocumentElement;
tmpNode := xmlToTree.findNode(nowNodePath,rNode);
newNode := tmpNode.AddChild('DIR');
newNode.Attributes['Label'] := newname; XMLDocument1.SaveToFile('e:\xiaowei\mytest.xml');
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货