Delphi 快速初始化功能树(cxTreeView)

//快速初始化功能树
procedure InitTree;
var
  doc: IXMLDOMDocument;
  Node, ChildNode: IXMLDOMNode;
  NodeList: IXMLDOMNodeList;
  i, Index: Integer;
  id,mc,parentid,level: string; 
  List: TStringList;
  TreeNode: TTreeNode;
begin
  if not FileExists(applicationDir + ‘Menu.xml‘) then
  begin
    MsgBox(‘请确认文件Menu.xml是否存在!‘);
    Exit;
  end;  
  cxTreeView.Items.BeginUpdate;
  try
    cxTreeView.Items.Clear;
    List := TStringList.Create;
    doc := CoDOMDocument.Create;
    try
      List.Sorted := True;

doc.load(applicationDir + Menu.xml‘);

NodeList := doc.selectNodes(‘CKTS/SC/item‘);
      for i := 0 to NodeList.Length - 1 do
      begin
        Node := NodeList.Item[i].Attributes.getNamedItem(‘id‘);
        if Node = nil then Break;
        id:= Node.text;

Node := NodeList.Item[i].Attributes.getNamedItem(‘mc‘);
        if Node = nil then Break;
        mc:= Node.text;

Node := NodeList.Item[i].Attributes.getNamedItem(‘parentid‘);
        if Node = nil then Break;
        parentid:= Node.text;

//Node := NodeList.Item[i].Attributes.getNamedItem(‘level‘);
        //if Node = nil then Break;
        //level:= Node.text;

if StrToInt(parentid) = 0 then { ParentID=0,顶层节点 }
          TreeNode := cxTreeView.Items.AddChild(nil, mc)
        else
        begin
          Index := List.IndexOf(parentid);
          TreeNode := cxTreeView.Items.AddChild(TTreeNode(List.Objects[Index]),  mc);
          TreeNode.ImageIndex:= 0;
        end;
        List.AddObject(id, TreeNode);
      end;
    finally
      FreeAndNil(List);
      doc := nil;
    end;
    cxTreeView.TopItem.Expand(True);
  finally
    cxTreeView.Items.EndUpdate;
  end;
end;

附 Menu.xml:

<?xml version="1.0" encoding="GBK"?>
<CKTS name="XXX业务清单" version="1.0">
 <SC>
  <item id=‘1‘ parentid=‘0‘ level="1" mc="aa"></item>
  <item id=‘2‘ parentid=‘1‘ level="2" mc="ba"></item>
  <item id=‘3‘ parentid=‘1‘ level="2" mc="bb"></item>
  <item id=‘4‘ parentid=‘1‘ level="2" mc="bc"></item>
  <item id=‘5‘ parentid=‘1‘ level="2" mc="bd"></item>
  <item id=‘6‘ parentid=‘1‘ level="2" mc="be"></item>
  <item id=‘7‘ parentid=‘2‘ level="3" mc="ca"></item>
  <item id=‘8‘ parentid=‘2‘ level="3" mc="cb"></item>
  <item id=‘9‘ parentid=‘2‘ level="3" mc="cc"></item>
  <item id=‘10‘ parentid=‘3‘ level="3" mc="cd"></item>
  <item id=‘11‘ parentid=‘3‘ level="3" mc="ce"></item>
  <item id=‘12‘ parentid=‘3‘ level="3" mc="cf"></item>
  <item id=‘13‘ parentid=‘3‘ level="3" mc="cg"></item>
  <item id=‘14‘ parentid=‘3‘ level="3" mc="ch"></item>
  <item id=‘15‘ parentid=‘4‘ level="3" mc="ci"></item>
  <item id=‘16‘ parentid=‘4‘ level="3" mc="cj"></item>
  <item id=‘17‘ parentid=‘4‘ level="3" mc="ck"></item>
  <item id=‘18‘ parentid=‘4‘ level="3" mc="cl"></item>
  <item id=‘19‘ parentid=‘5‘ level="3" mc="cm"></item>
  <item id=‘20‘ parentid=‘5‘ level="3" mc="cn"></item> 
        <item id=‘21‘ parentid=‘5‘ level="3" mc="co"></item>
  <item id=‘22‘ parentid=‘6‘ level="3" mc="cp"></item>
  <item id=‘23‘ parentid=‘6‘ level="3" mc="cq"></item>
  <item id=‘24‘ parentid=‘6‘ level="3" mc="cr"></item>
  <item id=‘25‘ parentid=‘6‘ level="3" mc="cs"></item>
 </SC>
</CKTS>

时间: 2024-10-21 23:52:30

Delphi 快速初始化功能树(cxTreeView)的相关文章

如何用rflask快速初始化Flask Restful项目

如何用rflask快速初始化Flask Restful项目 说明 多啰嗦两句 我们在创建flask项目的时候,使用pycharm创建出来的项目比较简陋,而且随着项目的功能完善,项目目录结构会比较多,多个项目结构又不统一,熟悉项目需花费时间比较多,项目发布配置又需要自己重新写一套.本文章是针对Flask Restful Api项目进行的快速初始化,对于没有前后端分离的Flask项目也可作为参考. 安装rflask pip安装: pip install rflask 下载源码安装: 源码地址:htt

C数组&amp;结构体&amp;联合体快速初始化

背景 C89标准规定初始化语句的元素以固定顺序出现,该顺序即待初始化数组或结构体元素的定义顺序. C99标准新增指定初始化(Designated Initializer),即可按照任意顺序对数组某些元素或结构体某些成员进行选择性初始化,只需指明它们所对应的数组下标或结构体成员名.GNU C将其作为C89模式的扩展. 借助指定初始化特性,可实现数组或结构体元素的快速初始化. 1 数组初始化 在数组初始化列表中使用"[index常量表达式]=value"形式可对index所指定的某个元素进

sharepoint 2016 学习系列篇(16)-自定义列表应用篇-(5)列表的快速编辑功能

平时我们都是通过新增按钮进行添加数据,其实还有一种更加方便使用,而且快捷的方式录入数据,就是列表的快速编辑功能,这里我们来演示下,这个功能的好用之处. 打开前面创建好的用户信息表,点击快速编辑(edit)按钮, 进入快速编辑模式,然后选中一行数据,当然如果有多行数据,也可以选择多行,接下来用键盘快捷键Ctrl+C进行复制 会弹出一个提示框,点击允许访问 选中列表的空白行 用快捷键Ctrl+V进行粘贴. 我们发现,数据已经新增进去了,这里还可以对每个单元格进行修改,和Excel的操作方式很相识,录

Win8增加了快速启动功能......

(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期 2014-05-11) Win8增加了快速启动功能,能让计算机尽快的启动进入Windows界面.win8的这种快速启动功能只会在“关机”后再开机时起作用,对于直接选择“重启”不起作用.默认情况下,在 Windows 中快速启动处于启用状态. 这种设置还会造成一个问题,就是部分笔记本无法正常关机,点击关机后只是锁定了屏幕. 关闭方法: 控制面板 硬件和声音 电源选项 选择电源按钮的功能(左侧列表) 更改当前不可用的设置 关机设置 启

怎么关闭win10快速访问功能?关闭Windows10系统快速访问方法

Windows10系统的"快速访问"功能很容易泄露电脑中的隐私,用什么方法可以让这个功能消失,避免电脑的个人隐私泄露呢?修改Windows10系统的注册表值取消"快速访问"泄露隐私的方法. 下面就让小编个大家说说这个Windows10系统快速访问功能容易泄露隐私的解决方案.注册表路径:HKEY_CLASSES_ROOT\CLSID\{679f85cb-0220-4080-b29b-5540cc05aab6}\ShellFolder1.快捷键win+R打开运行,输入:

在WPF中让ListBox和ComboBox的快速检索功能失效

问题来源: 自定义一个ComboBox,用来显示日期.后台数据使用的是DateTime,经过Converter转化成“2015年01月01日”样子的成字符串用于显示. 但是,在实际使用中,不停的按下“[”键,光标会从以一个元素一下一下的向下移动. 经过调查,这是ComboBox的“快速检索”功能在作祟. 关于快速检索: WPF中ListBox和ComboBox有一个“快速检索”的功能. 比如在ListBox里,按下“a”键,光标会定位到第一个首字母为“a”的Item上. ComboBox也是一样

EasyUI的功能树之异步树

最近几个项目都用到了EasyUI这个Jquery框架,目前感觉起来还是很好使的,展示效果很好,帮助文档什么的资料很多,而且互联网上Easy粉很多,大多数拥护和喜爱EasyUI的粉丝们都愿意在网络平台互相分享学习成果,甚至有专门的社区来讨论使用情况,网址是http://bbs.jeasyuicn.com/,里面的资源模块里有很多都是免费的学习资料,包括视频文档项目源码等,建议初学者去看视频,然后研究一下这个网站(sypro)的实现http://sshe.jeasyuicn.com/,甚至有视频教程

Delphi 的绘图功能[10] - TFONT 类

Delphi 的绘图功能[10] - TFONT 类 //TFont 类的常用属性: {Name: 字体名称} {Color: 颜色} {Size.Height: 字号与字体高度, 都可以设定字体大小} {Style: 字体样式; 是个集合值, 是下面可选值或它们的组合:}fsBoldfsItalicfsUnderlinefsStrikeOut {Pitch: 是字间距相关的, 有三个枚举值可选(不过我没测试出效果):}fpDefaultfpVariablefpFixed {Charset: 字

IIS8.0 配置应用程序初始化功能

IIS进程回收后,第一次访问会超级慢,这对于用户是不能接受的,怎么解决这个问题? 我们不能设置IIS不回收进程,因为这样可能会导致IIS内存泄漏.有效的方法时,尽量在业务空闲时间回收进程,回收后立刻预加载程序,尽量不让客户命中进程回收的第一次访问. IIS8应用程序安装.配置如下: IIS7.5参考:http://www.cnblogs.com/50614090/p/8808433.html 一.安装IIS应用程序初始化功能 二.配置 1.设置应用程序池的启动模式 2.启用站点的预加载 3.设置