最近在做一个功能时需要把作为主菜单用的dxbarmanager遍历成treeview。由于对dxbarmanager这东西的结构不是很熟悉琢磨了很久。后来终于搞定了在此留个笔记。
procedure
TForm1.DxMenuToTreeview(vDxMenu: TdxBarManager;
vTreeview: TRzCheckTree);
procedure pDxMenuToTreeview(vItemLinks: TdxBarItemLinks;vTreenode: TTreeNode);
var
Count : integer;
Mynode : TTreeNode;
MysubItem : TdxBarSubItem;
begin
for Count : = 0 To vItemLinks.Count - 1 do
begin
MysubItem : = TdxBarSubItem(vItemLinks[Count].Item);
Mynode : = vTreeview.Items.AddChildObject(vTreenode, vItemLinks[count].Caption,MysubItem);
if MysubItem.ItemLinks <> nil then
pDxMenuToTreeview(MysubItem.ItemLinks,Mynode);
end
end ;
begin
pDxMenuToTreeview(vDxMenu.Bars[ 0 ].ItemLinks,vTreeview.TopItem);
end ;
vTreeview: TRzCheckTree);
procedure pDxMenuToTreeview(vItemLinks: TdxBarItemLinks;vTreenode: TTreeNode);
var
Count : integer;
Mynode : TTreeNode;
MysubItem : TdxBarSubItem;
begin
for Count : = 0 To vItemLinks.Count - 1 do
begin
MysubItem : = TdxBarSubItem(vItemLinks[Count].Item);
Mynode : = vTreeview.Items.AddChildObject(vTreenode, vItemLinks[count].Caption,MysubItem);
if MysubItem.ItemLinks <> nil then
pDxMenuToTreeview(MysubItem.ItemLinks,Mynode);
end
end ;
begin
pDxMenuToTreeview(vDxMenu.Bars[ 0 ].ItemLinks,vTreeview.TopItem);
end ;