怎样用dephi 做树形菜单啊?

解决方案 »

  1.   

    一个将下拉菜单转换成树状菜单的函数procedure MenuToTreeView(AMenu:TMenuItem;TreeView:TTreeView);
      procedure AddItems(Parent: TMenuItem; TreeNode: TTreeNode);
      var
        i: integer;
        Node: TTreeNode;
      begin
        for i := 0 to Parent.Count-1 do
        begin
          if Parent[i].Action<>nil then
            if (TAction(Parent[i].Action).Visible=False) or
               (TAction(Parent[i].Action).Enabled=False) then continue;      Node := TreeView.Items.AddChild(TreeNode, Parent[i].Caption);
          Node.Data := Parent[i];      if AMenu = Parent[i] then
            Node.Selected := true;
          if Parent[i].Count > 0 then
          begin
            AddItems(Parent[i], Node);  //递归
          end;
        end;
      end;
    begin
      TreeView.Items.BeginUpdate;
      try
        TreeView.Items.Clear;    AddItems(AMenu, nil);
      finally
        TreeView.Items.EndUpdate;
      end;
      TreeView.FullExpand;
    end;
      

  2.   

    盒子有一个菜单转treeview的代码,看看就知道了,其实很简单。