Creating menu bar/items at runtime

Is it possible to create a standard menu bar at the top of the form at runtime and then add menu items to it? If not, is it possible to extend an existing menu bar, also at runtime?
Who is Participating?

Improve company productivity with a Business Account.Sign Up

avitalkConnect With a Mentor Commented:
you can't "create" it.
what you need to do is use a control array.

in design time you define one father menu item - mnuItemF.
and then one son - mnuItem
and you give it Index = 0.
you can also use the Visible property as you if you don't want it to be seen.

so at first you have only one menu item.

during run time you can add as many items as you like by:

For i = 1 To iItemNumber
   Load mnuItem(i)
   mnuItem(i).Caption = "Item" & i

also - when you load new controls during run time, they are not visible.
so you'll have to do something like this:

For i = mnuItem.LBound To mnuItem.uBound
    mnuItem(i).Visible = True

hope this helps,
mi5Author Commented:
How do I set which son menu items go under which father items?
after you define any menu item you can define sons for it.
son items are define the same way as the father menu, they should be under the father menu in the menu definition window, and you should use the buttons with Left / Right arrows to indicate the

select the son menu item and press the button with the Right Arrow.  that will add 4 points to the son. and that indicates the hierarchy.

for more information try this link:
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

mi5Author Commented:
I meant at run time. It is possible to create father menu items at run time - how do I place son items underneath them?
I don't think you can do that.
you can add controls to an already existing control array but you can't define a totally new control.

may i ask - why is the solution of control array not good for you ?

mi5Author Commented:
No - they're all in the same control array. If I create new instances of the control array (the son menuItem), how do I move that menu item so it is a sub-menu of a father menuItem (also created from the same array)?
mi5Author Commented:
Adjusted points from 50 to 60
mi5Author Commented:
In fact - don't worry about it. I've found another way round the problem. Thanks for your help.
hmmm, I don't mind helping :-)

let's see if i understand you correctly, you have a father menu item, and the items you want to add during run time are his sons ?

if so then all you need to do is define one son item in design time.  give it an index = 0, and that's the start of the control array.

during run time when you load new menu items to that array, they are automatically, sons of the same father menu, because that's how menu arrays behave.  if you load more items to the array they all stay in the same level.
was that the issue ?

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.