Creating and Using a Multi-Level Popup Menu
Description
This topic refers to the AlphaSports sample database provided with Alpha Anywhere.
The most interesting aspect of Button9 is the menu of choices that appears with the OnPush event. This button runs the customer_report script, which produces this effect.
The customer_report Script
The customer_report script displays the following menus. The following Xdialog and Xbasic code generate the menus and respond to the operator's selection. First use Xdialog code to define and display a menu structure.
menu = <<%str% ' All Customers does not have child menu items All Customers ' Selected Customers has five child menu items Selected Customers|Select by Last Name Selected Customers|Select by City Selected Customers|Select by State Selected Customers|- ' separation bar Selected Customers|User Defined Query %str% ' Display the menu result = ui_popup_menu(menu)
Define the action if the menu item is clicked.
if result = "All customers" then preview the Customer List" report report.preview("Customer List") else if result = "Select by Last Name" then ' play the cust_rep_for_lastname script script_play("cust_rep_for_lastname") else if result = "Select by City" then ' play the cust_rep_for_city script script_play("cust_rep_for_city") else if result = "Select by State" then ' play the cust_rep_for_state script script_play("cust_rep_for_state") else if result = "User Defined Query" then ' display the CustQueryReport form form.view("CustQueryReport") end if
Xbasic and Xdialog Code Run by the customer_report Script
Another example of code that generates the menus and responds to the operator's selection.
menu = <<%str% All Customers Selected Customers|Select by Last Name Selected Customers|Select by City Selected Customers|Select by State Selected Customers|- Selected Customers|User Defined Query %str% result = ui_popup_menu(menu) if result = "All customers" then report.preview("Customer List") else if result = "Select by Last Name" then script_play("cust_rep_for_lastname") else if result = "Select by City" then script_play("cust_rep_for_city") else if result = "Select by State" then script_play("cust_rep_for_state") else if result = "User Defined Query" then form.view("CustQueryReport") end if
An Explanation of the Code
The first line starts a string definition and assigns it to a variable named menu.
menu = <<%str%
This line adds the menu entry: "All Customers".
All Customers
The next three lines add the menu entry "Selected Customers", with three child menu items: "Select by Last Name", "Select by City", and "Select by State".
Selected Customers|Select by Last Name Selected Customers|Select by City Selected Customers|Select by State
This line puts a separation bar between the third and fourth child menu entries.
Selected Customers|-
This line adds "User Defined Query" as a fourth child menu item.
Selected Customers|User Defined Query
This line terminates the string definition. Please refer to <<%DELIMITER% ? %DELIMITER% for more information.
%str%
Finally, we display the menu.
result = ui_popup_menu(menu)
This set of lines defines the action to take if a menu item is clicked.
if result = "All customers" then report.preview("Customer List") else if result = "Select by Last Name" then script_play("cust_rep_for_lastname") else if result = "Select by City" then script_play("cust_rep_for_city") else if result = "Select by State" then script_play("cust_rep_for_state") else if result = "User Defined Query" then form.view("CustQueryReport") end if
See Also