Creating the topmenu dynamically

Topmenus can be created at runtime by creating the corresponding XML representation in the AUI tree.

This example shows how to create a topmenu in all forms by using the default initialization function and the om.DomNode class:
CALL ui.Form.setDefaultInitializer("myinit")
OPEN FORM f1 FROM "form1"
DISPLAY FORM f1
...
FUNCTION myinit(form)
  DEFINE form ui.Form 
  DEFINE f om.DomNode 
  LET f = form.getNode()
  ...
END FUNCTION
After getting the DOM node of the form, create a node with the "TopMenu" tag name:
DEFINE tm om.DomNode 
LET tm = f.createChild("TopMenu")
For each Topmenu group, create a subnode with the "TopMenuGroup" tag name and set the attributes to define the group:
DEFINE tmg om.DomNode 
LET tmg = tm.createChild("TopMenuGroup")
CALL tmg.setAttribute("text","Reports")
For each Topmenu option, create a sub-node in a group node with the "TopMenuCommand" tag name and set the attributes to define the option:
DEFINE tmi om.DomNode 
LET tmi = tmg.createChild("TopMenuCommand")
CALL tmi.setAttribute("name","report")
CALL tmi.setAttribute("text","Order report")
CALL tmi.setAttribute("comment","Orders entered today")
CALL tmi.setAttribute("image","smiley")
If needed, you can create a "TopMenuSeparator" node inside a group, to separate menu options:
DEFINE tms om.DomNode 
LET tms = tmg.createChild("TopMenuSeparator")