Команда ACTIVATE POPUP

Отображает меню на экране и активизирует его.

Синтаксис

ACTIVATE POPUP MenuName
	[AT nRow, nColumn]
	[BAR nMenuItemNumber]
	[NOWAIT]
	[REST]

Параметры
MenuName
Задает имя меню, которое предстоит активизировать.
AT nRow, nColumn
Задает позицию меню на экране или в окне, определенном пользователем. Указываются координаты (строка и столбец) левого верхнего угла меню. Заданная таким образом позиция отменяет позицию, заданную аргументом FROM в команде DEFINE POPUP.
BAR nMenuItemNumber
Задает элемент меню, который будет изображен выбранным при активизации меню. Например, если nMenuItemNumber равно 2, выбирается второй элемент. Если предложение BAR nMenuItemNumber опущено или если значение nMenuItemNumber превышает число элементов меню, будет выбран первый элемент.
NOWAIT
Указывает, что на этапе выполнения программа не станет ждать, пока пользователь выберет элемент из меню, а продолжит выполнение.
REST
Меню, созданное с помощью предложения PROMPT FIELD команды DEFINE POPUP, заполняется записями из некоторого поля. Когда это меню активизируется, его первый элемент изображается выбранным, даже если указатель записи в таблице, содержащей поле, установлен не на первой записи.
Задав REST, вы укажете, что элемент, выбираемый при активизации меню, соответствует установке указателя на текущую запись в таблице.

Комментарии
Команда ACTIVATE POPUP работает совместно с командой DEFINE POPUP, используемой для создания меню, и командой DEFINE BAR, используемой для создания элементов меню.

Пример

* Следующий пример использует ACTIVATE POPUP с ON PAD для
* активизации меню при выборе его заголовка. В начале строка текущего
* системного меню сохраняется в памяти с помощью SET SYSMENU SAVE,
* затем все заголовки системного меню удаляются с помощью SET
* SYSMENU TO.
* С помощью DEFINE PAD создаются два заголовка меню, а DEFINE POPUP
* используется для создания меню для каждого заголовка. DEFINE BAR
* используется для создания элементов меню для каждого меню. Если
* выбрать заголовок меню, ON PAD использует ACTIVATE POPUP для
* активизации соответствующего меню.
* При выборе из меню элемента меню выполняется процедура CHOICE.
* CHOICE выводит имя выбранного элемента и имя меню, содержащего
* элемент. Если из меню Card Info выбирается элемент Exit, то
* восстанавливается начальное системное меню Visual FoxPro.

*** Name this program ACTIPOP.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD convpad OF _MSYSMENU PROMPT '\<Conversions' COLOR SCHEME 3 ;
	KEY ALT+C, ''
DEFINE PAD cardpad OF _MSYSMENU PROMPT 'Card \<Info' COLOR SCHEME 3 ;
	KEY ALT+I, ''
ON PAD convpad OF _MSYSMENU ACTIVATE POPUP conversion
ON PAD cardpad OF _MSYSMENU ACTIVATE POPUP cardinfo
DEFINE POPUP conversion MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF conversion PROMPT 'Ar\<ea' KEY CTRL+E, '^E'
DEFINE BAR 2 OF conversion PROMPT '\<Length' ;
	KEY CTRL+L, '^L'
DEFINE BAR 3 OF conversion PROMPT 'Ma\<ss' ;
	KEY CTRL+S, '^S'
DEFINE BAR 4 OF conversion PROMPT 'Spee\<d' ;
	KEY CTRL+D, '^D'
DEFINE BAR 5 OF conversion PROMPT '\<Temperature' ;
	KEY CTRL+T, '^T'
DEFINE BAR 6 OF conversion PROMPT 'T\<ime' ;
	KEY CTRL+I, '^I'
DEFINE BAR 7 OF conversion PROMPT 'Volu\<me' ;
	KEY CTRL+M, '^M'
ON SELECTION POPUP conversion;
	DO choice IN actipop WITH PROMPT(), POPUP()
DEFINE POPUP cardinfo MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF cardinfo PROMPT '\<View Charges' ;
	KEY ALT+V, ''
DEFINE BAR 2 OF cardinfo PROMPT 'View \<Payments' ;
	KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Vie\<w Users' ;
	KEY ALT+W, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Charges' ;
	KEY ALT+C, ''
DEFINE BAR 6 OF cardinfo PROMPT '\-'
DEFINE BAR 7 OF cardinfo PROMPT 'E\<xit';
	KEY ALT+X, ''
ON SELECTION POPUP cardinfo;
DO choice IN actipop WITH PROMPT(),POPUP()

PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'You chose ' + mprompt + ;
	' from popup ' + mpopup NOWAIT
IF mprompt = 'Exit'
	SET SYSMENU TO DEFAULT
ENDIF

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 12.11.2002