Delphi Vcl到Firemonkey.TopItem解决方案

Delphi Vcl到Firemonkey.TopItem解决方案,delphi,firemonkey,vcl,Delphi,Firemonkey,Vcl,我对delphi和firemonkey相当陌生。到目前为止,我通过挑选不同的例子来阐述我的理解。我应该如何将这段代码从Vcl转换为Firemonkey?问题是它使用了.TopItem,我一直在搜索firemonkey.TopItem的等效版本或通用解决方案,但没有找到任何内容。非常感谢您的帮助 procedure Tree2XML(tree: TTreeView); var tn : TTreeNode; XMLDoc : TXMLDocument;

我对delphi和firemonkey相当陌生。到目前为止,我通过挑选不同的例子来阐述我的理解。我应该如何将这段代码从Vcl转换为Firemonkey?问题是它使用了.TopItem,我一直在搜索firemonkey.TopItem的等效版本或通用解决方案,但没有找到任何内容。非常感谢您的帮助

    procedure Tree2XML(tree: TTreeView);
    var
      tn : TTreeNode;
      XMLDoc : TXMLDocument;
      iNode : IXMLNode;

      procedure ProcessTreeItem(tn : TTreeNode; iNode : IXMLNode);
      var
        cNode : IXMLNode;
      begin
        if (tn = nil) then Exit;
        cNode := iNode.AddChild('item');
        cNode.Attributes['text'] := tn.Text;
        cNode.Attributes['imageIndex'] := tn.ImageIndex;
        cNode.Attributes['stateIndex'] := tn.StateIndex;

        //child nodes
        tn := tn.getFirstChild;
        while tn <> nil do
        begin
          ProcessTreeItem(tn, cNode);
          tn := tn.getNextSibling;
        end;
      end; (*ProcessTreeItem*)
    begin
      XMLDoc := TXMLDocument.Create(nil);
      XMLDoc.Active := True;
      iNode := XMLDoc.AddChild('tree2xml');
      iNode.Attributes['app'] := ParamStr(0);

      tn := tree.TopItem;
      while tn <> nil do
      begin
        ProcessTreeItem (tn, iNode);

        tn := tn.getNextSibling;
      end;

      XMLDoc.SaveToFile(ChangeFileExt(ParamStr(0),'.XML'));

    end; (* Tree2XML *)
过程树2xml(树:TTreeView);
变量
tn:treenode;
XMLDoc:TXMLDocument;
iNode:IXMLNode;
过程ProcessTreeItem(tn:treeNode;iNode:IXMLNode);
变量
cNode:IXMLNode;
开始
如果(tn=nil),则退出;
cNode:=iNode.AddChild('item');
cNode.Attributes['text']:=tn.text;
cNode.Attributes['imageIndex']:=tn.imageIndex;
cNode.Attributes['stateIndex']:=tn.stateIndex;
//子节点
tn:=tn.getFirstChild;
而tn零做
开始
工艺流程(tn、cNode);
tn:=tn.getNextSibling;
结束;
结束;(*ProcessTreeItem*)
开始
XMLDoc:=TXMLDocument.Create(无);
XMLDoc.Active:=True;
iNode:=XMLDoc.AddChild('tree2xml');
iNode.Attributes['app']:=ParamStr(0);
tn:=tree.TopItem;
而tn零做
开始
ProcessTreeItem(tn,iNode);
tn:=tn.getNextSibling;
结束;
SaveToFile(ChangeFileExt(ParamStr(0),'.XML');
结束;(*Tree2XML*)

编辑为更具体一些您是否尝试以某种特定的方式遍历树?是的,我尝试将节点输出到结构化XML文件,以便在程序稍后打开时加载。确实如此,但是您选择的节点有什么特殊之处?为什么你需要TopItem?如果有更好的方法达到同样的效果,我不一定需要。正如我所说,我是个新手。