Команда DEFINE MENU

Создает строку меню.

Синтаксис:

DEFINE MENU MenuBarName
	[BAR [AT LINE nRow]]
	[IN [WINDOW] WindowName | IN SCREEN]
	[FONT cFontName [, nFontSize]]
	[STYLE cFontStyle]
	[KEY KeyLabel]
	[MARK cMarkCharacter]
	[MESSAGE cMessageText]
	[NOMARGIN]
	[COLOR SCHEME nSchemeNumber
	| COLOR ColorPairList]

Параметры:
MenuBarName
Задает имя создаваемой строки меню. По этому имени можно ссылаться на данную строку меню в других командах и функциях.
BAR [AT LINE nRow]
Создает строку меню, которая действует аналогично системной строке меню Visual FoxPro. Эта строка меню обладает следующими характеристиками:
Строка меню высотой в одну строку располагается по горизонтали вдоль основного окна Visual FoxPro или пользовательского окна, в котором она находится.
Размещение заголовков меню в строке меню контролируется автоматически.
Если общий размер заданных заголовков меню превышает размер экрана или окна, в котором расположена строка меню, строка меню отображается в режиме прокрутки.
Вы можете задать строку, в которой следует разместить меню, с помощью предложения AT LINE. Предложение AT LINE игнорируется в Visual FoxPro и FoxPro для Windows. Номер строки задается аргументом nRow.
IN [WINDOW] WindowName
Помещает строку меню в пользовательское окно. Задайте имя окна, в котором вы намерены разместить строку меню, в качестве WindowName. Когда предложение IN WINDOW опущено, строка меню по умолчанию размещается в основном окне Visual FoxPro, если нет активных пользовательских окон. Если активное пользовательское окно существует, строка меню размещается в этом окне.
IN SCREEN
Принудительно помещает строку меню в основное окно Visual FoxPro.
FONT cFontName [, nFontSize]
Допустимо только в Visual FoxPro.
Задает шрифт, используемый по умолчанию во всех заголовках меню, содержащихся в строке меню. Вы можете отменить принимаемый по умолчанию шрифт для отдельного заголовка меню, воспользовавшись командой DEFINE PAD с предложением FONT.
cFontName задает имя шрифта, а nFontSize его размер в пунктах. Например, следующая команда создает строку меню с заголовками меню, изображенными 12-пунктовым шрифтом Courier:

DEFINE MENU mnuExample FONT 'Courier', 12

Если вы задали предложение FONT, опустив размер шрифта nFontSize, используется размер 10 пунктов. Если в Visual FoxPro заданный вами шрифт отсутствует, его заменяет шрифт с похожими характеристиками.
Предложение FONT игнорируется для заголовков меню, добавленных в системное меню Visual FoxPro _MSYSMENU. Заметьте, что это системное меню Visual FoxPro используется в конструкторе меню.
STYLE cFontStyle
Допустимо только в Visual FoxPro.
Задает стиль шрифта, используемый по умолчанию для всех заголовков меню в строке меню. Вы можете отменить принимаемый по умолчанию стиль для отдельных заголовков меню, воспользовавшись командой DEFINE PAD с предложением STYLE.
Если предложение STYLE опущено, используется стиль Normal (нормальный). Если в Visual FoxPro заданный стиль шрифта отсутствует, его заменяет стиль с похожими характеристиками.
В качестве cFontStyle можно задавать следующие стили шрифтов:

Символ	Стиль шрифта
B	Bold (Полужирный)
I	Italic (Курсив)
N	Normal (Нормальный)
O	Outline (Контурный)
Q	Opaque (Непрозрачный)
S	Shadow (Затененный)
-	Strikeout (Перечеркнутый)
T	Transparent (Прозрачный)
U	Underline (Подчеркнутый)

Можно задать комбинацию стилей, указав сразу несколько символов. Например, следующая команда задает полужирный курсив (Bold Italic):

DEFINE MENU mnuExample STYLE 'BI'

Предложение STYLE игнорируется для заголовков меню, добавленных в системное меню Visual FoxPro _MSYSMENU. Заметьте, что это системное меню Visual FoxPro используется в конструкторе меню.
KEY KeyLabel
Задает клавишу доступа или комбинацию клавиш, используемую для активизации строки меню. Список доступных клавиш и комбинаций клавиш вместе с их названиями приведен в теме ON KEY LABEL. Задание предложения KEY эквивалентно выдаче следующей команды:

ON KEY LABEL KeyLabel ACTIVATE MENU MenuName  

Замечание. Если для заданного названия клавиши уже определена макрокоманда клавиатуры, она имеет приоритет и вы не сможете выбрать строку меню с помощью указанной клавиши или комбинации клавиш.
MARK cMarkCharacter
Задает символ маркировки, который ставится слева от заголовка меню в строке меню. Предложение MARK позволяет заменять принятый по умолчанию символ маркировки на символ, определенный аргументом cMarkCharacter. Если cMarkCharacter содержит более одного символа, в качестве символа маркировки используется только первый из них.
В качестве символа маркировки в Visual FoxPro, FoxPro для Windows и FoxPro для Macintosh по умолчанию используется галочка, а в FoxPro для MS-DOS ромб.
Когда в Visual FoxPro, FoxPro для Windows и FoxPro для Macintosh строка меню представляет собой системную строку меню Visual FoxPro, предложение MARK игнорируется и используется символ маркировки, принимаемый по умолчанию. Кроме того, предложение MARK игнорируется, если шрифт основного окна Visual FoxPro или пользовательского окна, в котором размещается строка меню, отличен от FoxFont.
Замечание. Задавая символ маркировки, вы не помечаете имена меню в строке меню; используйте для этого команду SET MARK OF.
Символы маркировки, заданные в команде DEFINE PAD, имеют более высокий приоритет, чем символы маркировки, заданные в предложении MARK команды DEFINE MENU. Команда SET MARK OF используется как переключатель, отображающий или убирающий символы маркировки, и позволяет задать символ маркировки для отдельного элемента меню или для всех элементов меню.
MESSAGE cMessageText
Выдает сообщение при выделении заголовка меню. В FoxPro для MS-DOS сообщение cMessageText по умолчанию размещается в центре последней строки основного окна FoxPro; расположение сообщения можно изменить с помощью команды SET MESSAGE.
В Visual FoxPro, FoxPro для Windows и FoxPro для Macintosh сообщение выводится в графической строке состояния. Если отображение строки состояния отключено по команде SET STATUS BAR OFF, сообщение располагается в центре последней строки основного окна Visual FoxPro.
NOMARGIN
Удаляет пробелы, которые по умолчанию ставятся слева и справа от каждого имени меню.
COLOR SCHEME nSchemeNumber
Задает цвета для отдельной строки меню. В FoxPro для MS-DOS можно задать цвета для всех элементов меню, символов маркировки и сообщений.
COLOR ColorPairList
Задает цвета для отдельной строки меню. В FoxPro для MS-DOS можно задать цвета для всех элементов меню, символов маркировки и сообщений.
По умолчанию цвета элементов меню определяются цветовой схемой 2 текущего цветового набора.
Подробнее о цветовых схемах и цветовых парах см. тему Использование цветов.

Комментарии:
Используйте команду DEFINE MENU для создания строки меню в системе меню приложения. Чтобы создать отдельные заголовки меню (элементы строки меню), пользуйтесь командой DEFINE PAD. Чтобы определить, какие меню следует отображать под каждым из заголовков, воспользуйтесь командой ON PAD ... ACTIVATE. Чтобы создать меню для каждого заголовка, пользуйтесь командой DEFINE POPUP. Чтобы активизировать всю систему меню, пользуйтесь командой ACTIVATE MENU.
Если вы для создания меню используете конструктор меню, вы можете вообще обойтись без этих команд. Конструктор меню автоматически генерирует команды, описывающие меню. В конструкторе меню используется системное меню Visual FoxPro, которое вы можете модифицировать, добавляя свои элементы. Подробнее о создании меню см. тему Создание системы меню и главу 12 "Конструирование меню" Руководства разработчика.

Пример:

* В следующем примере команда DEFINE MENU используется для создания
* пользовательской системы меню. Сначала текущая системная строка
* меню сохраняется в памяти с помощью команды SET SYSMENU SAVE, а
* затем заголовки системных меню удаляются командой SET SYSMENU TO.
* DEFINE MENU создает строку меню, а команда DEFINE PAD создает два
* заголовка меню. Команда DEFINE POPUP создает меню для каждого из
* этих заголовков меню. DEFINE BAR создает элементы в каждом меню.
* Когда выбирается заголовок меню, команда ON PAD с помощью
* ACTIVATE POPUP активизирует соответствующее меню. ACTIVATE MENU
* отображает и активизирует строку меню.
* Когда выбирается элемент в меню, выполняется процедура CHOICE. Она
* отображает имя выбранного элемента и имя содержащего его меню.
*** Name this program DEFIMENU.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
ON KEY LABEL ESC KEYBOARD CHR(13)
DEFINE MENU example BAR AT LINE 1
DEFINE PAD convpad OF example PROMPT '\<Conversions' COLOR SCHEME 3 ;
	KEY ALT+C, ''
DEFINE PAD cardpad OF example PROMPT 'Card \<Info' COLOR SCHEME 3 ;
	KEY ALT+I, ''
ON PAD convpad OF example ACTIVATE POPUP conversion
ON PAD cardpad OF example 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 defimenu 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 '
ON SELECTION POPUP cardinfo;
	DO choice IN defimenu WITH PROMPT( ), POPUP( )

ACTIVATE MENU example
DEACTIVATE MENU example
RELEASE MENU example EXTENDED
SET SYSMENU TO DEFAULT
ON KEY LABEL ESC
PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'You chose ' + mprompt + ;
 	' from popup ' + mpopup NOWAIT

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