Файл: ...\Samples\Solution\Menus\Fillmenu.scx

Этот пример демонстрирует добавление пунктов в меню во время выполнения программы.

Меню в этом примере создано в Конструкторе Меню и содержит единственную подсказку и пустое подменю с именем empty_pop.

Следующий код выполняется, когда пользователь выбирает любой пункт в меню.

  CopyCode imageСкопировать код
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

Код, помещенный в событии Click кнопки cmdRefresh на форме, запускает меню.

  CopyCode imageСкопировать код
DO dynamic.mpr

Затем для каждого элемента в списке определяется соответствующий пункт меню с подсказкой и текстом сообщения.

  CopyCode imageСкопировать код
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
Есть также код, добавляющий пункт в меню с подсказкой, чтобы дать возможность пользователю удалить меню.
  CopyCode imageСкопировать код
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."

Смотрите также