问题1:将XML文件加载到TreeView后在TreeView中拖动节点,相应的XML文件怎么操作,也就是说怎么 把TreeView中的内容原保存至XML文件中?
procedure TForm1.tvChannelDragDrop(Sender, Source: TObject; X, Y: Integer);
var targetnode,sourcenode:TTreenode;
MyHitTest : THitTests;
XMLNode,XMLNodeS,XMLNodeT:IXMLNode;
begin
targetnode:=tvChannel.getnodeat(x,y); //获得源节点
sourcenode:=tvChannel.selected; //获得目标节点
MyHitTest := tvChannel.GetHitTestInfoAt(X,Y);
if htOnIcon in MyHitTest then begin
Sourcenode.MoveTo(targetnode,naInsert);
XMLNode??????//这里怎么写?
tvXML.SaveToFile(ExtractFilePath(Application.ExeName)+'test.xml');;
end else begin
//修改数据库中当前节点的父节点号parent_id,使其等目标节点标识号;
if targetnode.SelectedIndex=0 then begin
tvChannel.items.beginupdate; //禁用TreeView重绘操作
try
copynodeunder(tvChannel,sourcenode,targetnode); //启动移动过程
????这个过程怎么写?
tvChannel.selected:=targetnode;
finally
tvChannel.items.endupdate; //重新设置
end;
end;
end;
end;
问题2:ClientDataSet中的记录集怎么按某字段排序?
procedure TForm1.tvChannelDragDrop(Sender, Source: TObject; X, Y: Integer);
var targetnode,sourcenode:TTreenode;
MyHitTest : THitTests;
XMLNode,XMLNodeS,XMLNodeT:IXMLNode;
begin
targetnode:=tvChannel.getnodeat(x,y); //获得源节点
sourcenode:=tvChannel.selected; //获得目标节点
MyHitTest := tvChannel.GetHitTestInfoAt(X,Y);
if htOnIcon in MyHitTest then begin
Sourcenode.MoveTo(targetnode,naInsert);
XMLNode??????//这里怎么写?
tvXML.SaveToFile(ExtractFilePath(Application.ExeName)+'test.xml');;
end else begin
//修改数据库中当前节点的父节点号parent_id,使其等目标节点标识号;
if targetnode.SelectedIndex=0 then begin
tvChannel.items.beginupdate; //禁用TreeView重绘操作
try
copynodeunder(tvChannel,sourcenode,targetnode); //启动移动过程
????这个过程怎么写?
tvChannel.selected:=targetnode;
finally
tvChannel.items.endupdate; //重新设置
end;
end;
end;
end;
问题2:ClientDataSet中的记录集怎么按某字段排序?
解决方案 »
- 被fygnyyfr所要求.. 散分
- 指纹开发
- 局域网访问access数据库难题!!!
- 关于treeview中文字,背景的颜色
- 请问怎样用NMStrm和NMStrmServer做p2p的文件传输?
- 请教:关于TMemoryStream的问题,急,很奇怪,在线等待(100分)
- Delphi7中安装上自己编写的控件后出现的问题???
- 求助 SendMessage 如何模拟鼠标点击WebBrowser1 不了解怎样点
- 用Basic开发OpenGL !
- 注意:下载http://yts.my5599.net/soft/i1.htm源代码(一个画图软件),请用下载工具下载:推存用:网络蚂蚁。
- 开帖散分,10/10[铁公鸡拨毛]
- TDataSetField使用的问题?
var newnode:ttreenode;
i:integer;
begin
newnode:=TreeView.items.addchildfirst(targetnode,''); //建立目标项
newnode.assign(sourcenode); //复制源项属性
for i:=sourcenode.count-1 downto 0 do //递归调用,按倒序移动其所有子项
CopyNodeUnder (treeview,sourcenode.item[i],newnode);
treeview.items.delete(sourcenode); //删除源项
end;
这个过程操作TreeView是这样的,我会写,但操作XMLDocument的就不会写了,请高手赐教。
procedure TFrmMain.SaveChannelToFile;
var XMLNode:IXMLNode;
XMLInt:IDOMDocument;
XML:TXMLDocument;
begin
XML:=TXMLDocument.Create(Self);
XML.Active:=True;
XMLInt:=XML.DOMDocument;
XMLInt.CreateElement('HTTPYIKUORSSChannel');
XMLNode:=XML.AddChild('RSSChannel');
SaveToXML(tvChannel.Items.Item[0],XML.ChildNodes.Nodes[0]);
XML.SaveToFile(ExtractFilePath(Application.ExeName)+'YKChannel.xml');
XML.Free;
end;procedure TFrmMain.SaveToXML(tvNode:TTreeNode;XMLD:IXMLNode);
var XMLNode:IXMLNode;
i:Integer;
begin
ShowMessage(IntToStr(tvNode.Count));
for i:=0 to tvNode.Count-1 do begin
if tvNode.Item[i].HasChildren then begin
XMLNode:=XMLD.AddChild('ChannelName');
XMLNode.Attributes['Name']:=tvNode.Item[i].Text;
SaveToXML(tvNode.Item[i],XMLNode);
end else begin
XMLNode:=XMLD.AddChild('Channel');
XMLNode.Attributes['Name']:=tvNode.Item[i].Text;
XMLNode.NodeValue:=ChannelLink(tvNode.Item[i].Data)^.nodeLink;
end;
end;
end;
Clientdataset1.indexdefs[0].fields :='field1';
TClientdataset.indexdefs[0].descfields :='fiel1';
这样,就是一个以field1降序排列的索引了