Hi fellow programmers, As a effort to give back to the community for its help to me, I thought I should share a piece of code that can be very helpful.
I found that I could not use a hierarchical list as a ‘choice list’ in a listbox’s column. when clicked, only the top-level items show. So I decided I needed to create a hierarchical menu from a list that could be used within an OBJECT SCRIPT. So here it is: // ListToMenu(ListRef) --> menuRef // caller must delete the menuRef after use // NOTE: THIS IS CALLED RECURSIVELY FOR HANDLING CHILD LISTS **** C_LONGINT($1) C_TEXT($0) $last:=Count list items($1) // the number of items in the list $menuRef:=Create menu // we need to do this at the beginning as we will be appending items to it. For ($i;1;$last) GET LIST ITEM($1;$i;$itemRef;$itemText;$subList;$expanded) If ($subList>0) // there is a sublist? $subMenu:=ListToMenu ($subList) APPEND MENU ITEM($menuRef;$itemText;$subMenu;*) Else APPEND MENU ITEM($menuRef;$itemText;*) SET MENU ITEM PARAMETER($menuRef;$i;$itemText) // so that the TEXT of the name is returned when used with Dynamic pop up menu( ) End if End for $0:=$menuRef In my case, I call it within an object script. Since the listbox source is a collection, you will notice the object notation near the end of the script. Adjust as needed. // SCRIPT FOR COLUMN IN THE LISTBOX. The object name of the column is “itemAction”. for some reason, I could not seem to get that programmatically so that kind of bugged me as I like doing code that is less dependent. But I decided just to give the name of the object at the beginning of the script: $myObjName. // the list has been set as the ‘choice list’ for this column, hence the call to OBJECT Get list reference( ). Basically, you just need $theList to be the list you want to use as the basis for the popup menu $myObjName:="itemAction" If (Form event=On Clicked) $lbPtr:=OBJECT Get pointer(Object with focus) LISTBOX GET CELL POSITION($lbPtr->;$col;$row) // the column & row that was clicked on $theList:=OBJECT Get list reference(*;$myObjName;Choice list) $menu:=ListToMenu ($theList) $answer:=Dynamic pop up menu($menu) Form.col_Items[$row-1].action:=$answer REDRAW($lbPtr->) End if — hopefully someone else finds this useful; regards, Chris Belanger Innovative Solutions ********************************************************************** 4D Internet Users Group (4D iNUG) Archive: http://lists.4d.com/archives.html Options: https://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **********************************************************************