⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 bcb中通过递归方式将xml导入到树形列表(Treeview)中
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

//赋值:
void __fastcall TForm1::XMLtoTree(TTreeNode *Node,_di_IXMLNode node,TTreeView *Tree)
{
        //定义结构
        typedef struct MyRec
        {
                String FName,LName;
        }TMyRec;
        typedef TMyRec* PMyRec;
        PMyRec MyRecPtr;
        TTreeNode* Layel;
        _di_IXMLNodeList nodes=node->ChildNodes;
        if(node->HasChildNodes)
        {
                for(int i=0;i<nodes->Count;i++)
                {
                        AnsiString ss = nodes->Nodes[i]->GetNodeName();
                        //Layel = Tree->Items->Add(Node,ss);
                        if(ss!="#text")
                                Layel = Tree->Items->AddChild(Node,ss);
                        for(int j=0;j<(nodes->Nodes[i]->ChildNodes->Count);j++)
                        {
                                MyRecPtr=new TMyRec;
                                MyRecPtr->FName=nodes->Nodes[i]->ChildNodes->Nodes[j]->GetNodeName();
                                //MyRecPtr->LName=nodes->Nodes[i]->ChildNodes->Nodes[j+1]->GetText().w_str();
                                //MyRecPtr->LName = nodes->Nodes[i]->ChildNodes->Nodes[j+1]->GetNodeName().c_bstr();
                                TTreeNode *Node2;
                                if(MyRecPtr->FName!="#text")
                                        Node2 = Tree->Items->AddChildObject(Layel,MyRecPtr->FName,MyRecPtr);
                                //获取节点
                                node= nodes->Nodes[i]->ChildNodes->Nodes[j];
                                //递归
                                if(node->HasChildNodes){
                                        XMLtoTree(Node2,node,Tree);
                                }
                        }
                }
        }

}

//取值的:
String __fastcall TForm1::GetTreeValue(TTreeView *Tree)
{
        typedef struct MyRec
        {
                String FName,LName;
        }TMyRec;
        typedef TMyRec* PMyRec;
        PMyRec  MyRecPtr;
        //return PMyRec(Tree->Selected->Data)->LName;
}

//程序入口
void __fastcall TForm1::FormCreate(TObject *Sender)
{
        //创建对象
        _di_IXMLDocument xml;
        //载入xml文件
        xml = LoadXMLDocument("record.xml");
        //获取根结点
        _di_IXMLNode node = xml->DocumentElement;
        XMLtoTree(NULL,node,TreeView1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1DblClick(TObject *Sender)
{
        ShowMessage(GetTreeValue(TreeView1));
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -