//快速初始化功能树 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: