Dynamic card creation navigation menu
This lesson demonstrates how to dynamically update a navigation menu as cards are created.
The menuPick message
The menuPick message is sent when the user chooses a menu item from the menu. Remember that in LiveCode, menus are usually implemented as buttons: the button's style and menuMode properties control how it is displayed, and the button's text property is used as the list of menu items. When the user chooses an item from the menu, the menuPick message is sent to the button, triggering this handler.
Setting up the menu
The menu is initially set up to contain menu items for going to the previous or next cards, and for creating a new card, with appropriate separators. Once you have set up the menu, creating a card automatically adds the new card's name to the menu. In this example, the initial text of the menu button, which you can enter in the button's properties pane, looks like this:
As new cards are created, the list of students will be placed at the end of the menu, after the last "(-" separator line.
The menuPick handler
The menuPick handler does different things depending on the menu item. If the user chooses "Previous Student" or "Next Student", the handler simply goes to the previous or next card.
If the user chooses "New Student", the handler requests the student's name, then creates a card with that name, and adds the new card's name to the end of the menu (after the separator line). When a user chooses one of the card names, the handler goes to that card.
The default keyword is useful here because we don't know the wording of all the menu items when writing the handler. Using a switch statement, we can set up a case for each of the menu items we know about, "Previous Student", "Next Student", and "New Student", and write a default case to handle all other possibilities in a generic way.
The menuPick handler code
on menuPick pItem switch pItem case "Previous Student" go previous card break case "Next Student" go next card break case "New Student" ## create a new card and put its name in the menu: ask "Please enter the student's name:" if it is empty then exit menuPick end if lock screen go last card ## so the new student is placed at the end create card it ## card's name is student name entered above put return & it after me ## add name to bottom of menu unlock screen default ## if none of the previous cases apply, it's a card: if there is a card pItem then go card pItem else beep end if end switch end menuPick