请教Xml子节点如何与TreeView的子节点绑定的问题?

tjs_125 2013-07-26 09:22:57
程序里面我想实现Xml文件与TreeView树形图绑定,
首先,我已经实现了将Xml的节点内容加载到了TreeView里面,形成同样的层级结构。
现在问题是,我想通过单击TreeView节点能直接指向Xml的对应节点,访问xml中的相关内容,
我想应该要用到TreeView的TreeView1.Items.AddChildObject函数与 TreeView1.Selected.Data指针,但是现在不知道怎么用才能与Xml子节点结合?
...全文
122 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
iamduo 2013-07-31
TreeView1.Items.AddChildObject(TreeNode, XmlNode.Attributes['name'], Pointer(XmlNode)) 可以不?
回复
tjs_125 2013-07-26
PIXMLNode在前面有定义,如下:
type PIXMLNode = ^IXMLNode;
回复
tjs_125 2013-07-26
问题已经解决了。 我原来的代码是这样:
function TForm1.CreateTreeview(XmlNode: IXMLNode;
  TreeNode: TTreeNode): TTreeNode;
var
  i: integer;
  ParentTreeNode, CurrentTreeNode: TTreeNode;
  pXmlNode: PIXMLNode;
begin
  new(pXmlNode);
  pXmlNode := @XmlNode;
  if XmlNode.HasAttribute('name') then
     CurrentTreeNode := TreeView1.Items.AddChildObject(TreeNode, XmlNode.Attributes['name'], pXmlNode)
  else CurrentTreeNode := TreeView1.Items.AddChildObject(TreeNode, XmlNode.NodeName, pXmlNode); //pointer(...)
  if XmlNode.HasChildNodes then
  begin
    ParentTreeNode := CurrentTreeNode;
    i := 0;
    while ((i < XmlNode.ChildNodes.Count) and (not XmlNode.IsTextElement)) do
    begin
      CreateTreeview(XmlNode.ChildNodes[i], ParentTreeNode);
      INc(i);
    end;
  end;
  result := CurrentTreeNode;
end;
后来发现会出错,一直不行,后来发现只要改一句话就行了, 就是下面这句:
 pXmlNode := @XmlNode;
改为:
 pXmlNode^ := XmlNode;
回复
问题不难的,建议楼主慢慢研究研究吧
回复
bdmh 2013-07-26
回复
相关推荐
发帖
Delphi
创建于2007-08-02

4924

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2013-07-26 09:22
社区公告
暂无公告