Delphi 中用 Xml 配置文档生成 Treeview
2008-10-22 20:38
344 查看
用递归方法,使用 xml 文档生成 Treeview 树形视图。由于是动态生成,所以可以通过修改 xml 的逻辑来定制 Treeview 的结构,
从而实现了 xml 对 Treeview 的动态配置,而不用修改代码。
xml 文件如下:
注意程序中 Treeview 的 TreeView1.Items.AddChildObject 方法,其最后一个参数用来保存该节点的相关数据,是一个指针类型的数据,使用时要格外小心。本例中,先定义一个记录类型,再定义一个指针指向它,然后作为 AddChildObject 的最后一个参数。记录类型可以保存节点的很多相关参数,本例中只用到了一个,实际使用时可以任意扩充。
从而实现了 xml 对 Treeview 的动态配置,而不用修改代码。
xml 文件如下:
<?xml version=”1.0″ encoding=”gb2312″?> <root topic=”频道列表” catalog=”none”> <channel topic=”操作系统” catalog=”none”> <channel topic=”Windows频道” catalog=”windows” /> <channel topic=”DOS频道” catalog=”dos” /> <channel topic=”Linux” catalog=”linux” /> </channel> <channel topic=”菜鸟专区” catalog=”cainiaozhuanqu” /> <channel topic=”应用软件” catalog=”app” /> <channel topic=”安全专区” catalog=”safe” /> <channel topic=”代码实验室” catalog=”lab” /> <BBS topic=”电脑学习社区” catalog=”none”> <subBBS topic=”子社区-1″ catalog=”sub1″ /> <subBBS topic=”子社区-2″ catalog=”sub2″ /> </BBS> </root> 程序代码如下: unit tree_xml; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, XMLDoc, XMLIntf; type TForm1 = class(TForm) TreeView1: TTreeView; Memo1: TMemo; Button1: TButton; procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Button1Click(Sender: TObject); private procedure CreateTreeview(XmlNode: IXMLNode; TreeNode: TTreeNode); { Private declarations } public { Public declarations } end; type pRec = ^TData; TData = record sCatalog: string; sReserved: String end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.CreateTreeview(XmlNode: IXMLNode; TreeNode: TTreeNode); var i: integer; ParentTreeNode, CurrentTreeNode: TTreeNode; pData: pRec; begin New(pData); pData^.sCatalog := XmlNode.AttributeNodes[’catalog’].NodeValue; CurrentTreeNode := TreeView1.Items.AddChildObject(TreeNode, XmlNode.AttributeNodes[’topic’].NodeValue, pData); //pointer(…) if XmlNode.HasChildNodes then begin ParentTreeNode := CurrentTreeNode; for i:=0 to XmlNode.ChildNodes.Count-1 do begin CreateTreeview(XmlNode.ChildNodes[i], ParentTreeNode); end; end; end; {——————————————————————} procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var pData: pRec; begin pData := Treeview1.Selected.Data; Memo1.Lines.Add(pData^.sCatalog); end; procedure TForm1.Button1Click(Sender: TObject); var oXml: TXMLDocument; begin oXml := TXMLDocument.Create(self); oXml.FileName := ‘_Treeview.xml’; oXml.Active:=true; CreateTreeview(oXml.ChildNodes.FindNode(’root’), Treeview1.Items.GetFirstNode); Treeview1.FullExpand; //节点全部展开 oXml.Free; end; end.
注意程序中 Treeview 的 TreeView1.Items.AddChildObject 方法,其最后一个参数用来保存该节点的相关数据,是一个指针类型的数据,使用时要格外小心。本例中,先定义一个记录类型,再定义一个指针指向它,然后作为 AddChildObject 的最后一个参数。记录类型可以保存节点的很多相关参数,本例中只用到了一个,实际使用时可以任意扩充。
相关文章推荐
- Delphi 中用 Xml 配置文档生成 Treeview:
- Delphi 中用 Xml 配置文档生成 Treeview
- Delphi 中用 Xml 配置文档生成 Treeview
- Delphi 中用 Xml 配置文档生成 Treeview
- Eclipse下jdom配置及用之生成、解析xml文档
- Unity 实现转策划Execl文档,并根据Xml配置文件生成代码
- JFinal生成表结构对应的接口xml文档
- C#操纵XML文档(主要是应用程序的配置文件)
- [Perl]利用XML::DOM生成XML文档
- 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)
- 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)
- 使用.NET 反射机制(Reflecttion)读取和保存Xml配置文档
- 利用 JAXB 通过 XML 模式生成 XML 文档
- 使用SAX方式生成XML文档
- 利用apktool将APK反编译,生成程序的图片、XML配置、语言资源等文件
- 生成XMl文档代码
- 四种生成和解析XML文档的方法详解
- 读XML动态生成配置类
- 用VB将WORD文档(或其他的二进制数据)生成xml文件并互相转换
- 用ASP生成XML数据文档