VLWeb SP2 Iterate PRIM_MD.Menu MenuItems

This Q&A forum allows users to post and respond to "How Do I Do ....." questions. Please do not use to report (suspected) errors - you must use your regional help desk for this. The information contained in this forum has not been validated by LANSA and, as such, LANSA cannot guarantee the accuracy of the information.
Post Reply
jyoung
Posts: 694
Joined: Thu Jan 21, 2016 6:43 am
Location: Oklahoma City, OK USA

VLWeb SP2 Iterate PRIM_MD.Menu MenuItems

Post by jyoung »

Is there anyway to iterate through a PRIM_MD.Menu's Menu Items?

I have a menu structure like this

Code: Select all

define_com class(#PRIM_MD.Menu) name(#Menu) DisplayPosition(2) Height(400) Parent(#Appdrawer) TabPosition(2) Width(200) Top(150)
define_com class(#PRIM_MD.MenuItem) name(#ParentItem) Caption('ITEMS 1') DisplayPosition(1) Height(50) Left(0) Parent(#Menu) TabPosition(1) Top(0) Width(200)
define_com class(#PRIM_MD.MenuItem) name(#MenuItem) Caption('ITEM 1') DisplayPosition(2) Height(50) Icon('view_quilt') Left(0) Parent(#Menu) ParentItem(#ParentItem) TabPosition(2) Top(50) Width(200) View(#HAVItem1_1)
define_com class(#PRIM_MD.MenuItem) name(#MenuItem1) Caption('ITEM 2') DisplayPosition(3) Height(50) Icon('view_quilt') Left(0) Parent(#Menu) ParentItem(#ParentItem) TabPosition(3) Top(100) Width(200)
define_com class(#PRIM_MD.MenuItem) name(#MenuItem2) Caption('ITEM 3') DisplayPosition(4) Height(50) Icon('view_quilt') Left(0) Parent(#Menu) ParentItem(#ParentItem) TabPosition(4) Top(150) Width(200)
define_com class(#PRIM_MD.MenuItem) name(#ParentItem1) Caption('ITEMS 2') DisplayPosition(5) Height(50) Left(0) Parent(#Menu) TabPosition(5) Top(200) Width(200)
define_com class(#PRIM_MD.MenuItem) name(#MenuItem3) Caption('ITEM 1') DisplayPosition(6) Height(50) Icon('view_quilt') Left(0) Parent(#Menu) ParentItem(#ParentItem1) TabPosition(6) Top(250) Width(200)
define_com class(#PRIM_MD.MenuItem) name(#MenuItem4) Caption('ITEM 2') DisplayPosition(7) Height(50) Icon('view_quilt') Left(0) Parent(#Menu) ParentItem(#ParentItem1) TabPosition(7) Top(300) Width(200)
define_com class(#PRIM_MD.MenuItem) name(#MenuItem5) Caption('ITEM 3') DisplayPosition(8) Height(50) Icon('view_quilt') Left(0) Parent(#Menu) ParentItem(#ParentItem1) TabPosition(8) Top(350) Width(200)
define_com class(#PRIM_MD.MenuItem) name(#MenuItem6) Caption('ITEM 1') DisplayPosition(9) Height(50) Icon('view_quilt') Left(0) Parent(#Menu) TabPosition(9) Top(400) Width(200)
When a menu item is clicked, I change the drawstyle

Code: Select all

evtroutine handling(#Menu.Click) Origin(#pOrigin)
#pOrigin.ThemeDrawStyle := 'LightTitle'
endroutine
That means I need to remove the drawstyle from the other items.

I could add all the menu items to a collection, but I thought the PRIM_MD.Menu should have a way to iterate over its collection itself.
JamesDuignan
Posts: 85
Joined: Thu Nov 26, 2015 1:43 pm

Re: VLWeb SP2 Iterate PRIM_MD.Menu MenuItems

Post by JamesDuignan »

Hi Joe,

Having the menuitems iterated over the menu collection is a good idea.

Currently, the easiest way i can think to achieve this would be to iterate over the instances of MenuItems contained in the the Menu control, setting the theme draw styles as you go.

Code: Select all

Evtroutine Handling(#Menu.Click) Origin(#Orign)

For Each(#Item) In(#Menu.ComponentControls) Operation(*INSTANCE_OF #PRIM_MD.MenuItem)

#Item.ThemeDrawStyle := 'DarkTitle'

Continue If(#Item.name <> #Orign.name)

#Item.ThemeDrawStyle := 'LightTitle'

Endfor

Endroutine

Alternatively you could add all menuitem.clicks into a single event routine and set the theme draw style this way

Code: Select all

Evtroutine Handling(#MenuItem.Click #MenuItem1.Click #MenuItem2.Click #MenuItem3.Click #MenuItem4.Click #MenuItem5.Click #MenuItem6.Click #MenuItem7.Click) Origin(#Origin)

#MenuItem.ThemeDrawStyle #MenuItem1.ThemeDrawStyle #MenuItem2.ThemeDrawStyle #MenuItem3.ThemeDrawStyle #MenuItem4.ThemeDrawStyle #MenuItem5.ThemeDrawStyle #MenuItem6.ThemeDrawStyle #MenuItem7.ThemeDrawStyle := 'DarkTitle'

#Origin.ThemeDrawStyle := 'LightTitle'

Endroutine
Regards,
James
Post Reply