Share via


Agregar elementos de menú en tiempo de ejecución

Archivo: ...\Samples\Solution\Menus\Fillmenu.scx

Este ejemplo ilustra la forma de agregar elementos de menú a un menú en tiempo de ejecución.

En este ejemplo, la definición del menú se obtiene en un Diseñador de menús, con un indicador único y un submenú vacío llamado empty_pop.

El código que se incluye se ejecuta cuando un usuario elige cualquier elemento del menú:

PROCEDURE takeaction(cPrompt)
#DEFINE MSG_LOC "You chose " + cPrompt + "." 

IF cPrompt = "Release this menu"
   RELEASE PAD dynmenu of _MSYSMENU
ELSE
   WAIT WINDOW MSG_LOC TIMEOUT 1
ENDIF

El código asociado al evento Click de cmdRefresh en el formulario ejecuta el menú.

DO dynamic.mpr

Entonces, para cada elemento de la lista, el código define un elemento de menú con el indicador y el texto del mensaje.

FOR i = 1 TO THISFORM.lstMenu.ListCount
   DEFINE BAR i OF empty_pop PROMPT (ALLTRIM(THISFORM.lstMenu.List(i,1))) ;
      MESSAGE (THISFORM.lstMenu.List(i,2))
ENDFOR

También hay código que proporciona el indicador para permitir al usuario que libere el menú.

DEFINE BAR i + 1 OF empty_pop PROMPT "\-"
DEFINE BAR i + 2 OF empty_pop PROMPT "Release this menu" ;
   MESSAGE "Remove the Dynamic Items menu from the menu bar."

Vea también

Coordinar elementos de menú y botones de barra de herramientas | Ejemplos de soluciones