请教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子节点结合?
...全文
159 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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;
山东蓝鸟贵薪 2013-07-26
  • 打赏
  • 举报
回复
问题不难的,建议楼主慢慢研究研究吧
bdmh 2013-07-26
  • 打赏
  • 举报
回复

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧