Определяет команду, которая должна быть выполнена при выборе заголовка меню в меню типа Bar.

ON SELECTION MENU MenuBarName | ALL [Command]

Параметры

MenuBarName

Определяет имя меню типа bar, для которого задается команда, которая выполняется при выборе пункта данного меню. Вы можете указать имя пользовательского меню, созданного командой DEFINE MENU или системное меню Visual FoxPro,  имя которого _MSYSMENU.
ALL

Указывает, что указанная команда выполняется при выборе любого пункта меню.
Command

Определяет команду, которая должна быть выполнена при выборе пункта менню. Используйте ON SELECTION MENU без указания параметра command для очистки закрепления к соответствующему меню.

Комментарии

Когда Вы создаете и активируете меню, разместите команду ON SELECTION MENU между командами DEFINE MENU и ACTIVATE MENU.

Для выполнения команды при выборе конкретного пункта меню используйте команду ON SELECTION PAD, которая имеет приоритет над рассматриваемой командой ON SELECTION MENU. Для  активизации соответствующего заголовка меню используйте команду ON PAD .

Использование команды ON SELECTION MENU без параметра command очищает закрепление указанного меню к конкретной команде.

Пример

В рассматриваемом примере команда ON SELECTION MENU используется для выполнения пользовательской процедуры при выборе системного меню Visual FoxPro .

Текущее системное меню предварительно сохраняется в памяти следующей командой  SET SYSMENU SAVE,  все заголовки системного меню очищаются командой SET SYSMENU TO.

Команда DEFINE PAD создает несколько заголовков меню. Когда Вы выбираете один из заголовков меню, то выполняется пользовательская процедура, указанная в команде ON SELECTION MENU. Указанная процедура отображает выбранный Вами заголовок меню. Если Вы выбираете заголовок меню  "Exit" , то восстанавливается сохраненное ранее системное меню Visual FoxPro.

  Копировать код
*** Name this program ONMENU.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD padSys OF _MSYSMENU PROMPT '\<System' COLOR SCHEME 3 ;
KEY ALT+S, ''
DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Edit' COLOR SCHEME 3 ;
KEY ALT+E, ''
DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Record' COLOR SCHEME 3 ;
KEY ALT+R, ''
DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Window' COLOR SCHEME 3 ;
KEY ALT+W, ''
DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<ports' COLOR SCHEME 3 KEY ALT+P, ''
DEFINE PAD padExit OF _MSYSMENU PROMPT 'E\<xit' COLOR SCHEME 3 ;
KEY ALT+X, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN onmenu WITH PAD( ), MENU( )
PROCEDURE choice
PARAMETER gcPad, gcMenu
WAIT WINDOW 'You chose ' + gcPad + ;
' from menu ' + gcMenu NOWAIT
IF gcPad = 'PADEXIT'
SET SYSMENU TO DEFAULT
ENDIF

См. также