Создает строку меню.
DEFINE MENU MenuBarName [BAR [AT LINE nRow]] [IN [WINDOW] WindowName | IN SCREEN] [FONT cFontName [, nFontSize [, nFontCharSet]]] [STYLE cFontStyle] [KEY KeyLabel] [MARK cMarkCharacter] [MESSAGE cMessageText] [NOMARGIN] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList] |
Параметры
- MenuBarName
-
Задает имя создаваемой строки меню. По этому имени можно ссылаться на данную строку меню в других командах и функциях.
- BAR [AT LINE nRow]
-
Создает строку меню, которая действует аналогично системной строке меню Visual FoxPro. Эта строка меню обладает следующими характеристиками:
-
Строка меню высотой в одну строку располагается по горизонтали вдоль основного окна Visual FoxPro или пользовательского окна, в котором она находится.
-
Размещение заголовков меню в строке меню контролируется автоматически.
-
Если общий размер заданных заголовков меню превышает размер экрана или окна, в котором расположена строка меню, строка меню отображается в режиме прокрутки.
Номер строки задается аргументом nRow.
-
- IN [WINDOW] WindowName
-
Помещает строку меню в пользовательское окно. Задайте имя окна, в котором вы намерены разместить строку меню, в качестве WindowName. Если вы опуститепредложение IN WINDOW, строка меню по умолчанию размещается в основном окне Visual FoxPro, если нет активных пользовательских окон. Если активное пользовательское окно существует, строка меню размещается в этом окне. Этот пункт поддерживается только в формах верхнего, уровня которые могут быть установлены свойством ShowWindow=2 или Desktop=.T.
- IN SCREEN
-
Принудительно помещает строку меню в основное окно Visual FoxPro.
- FONT cFontName[, nFontSize [, nFontCharSet]]
-
Задает шрифт, используемый по умолчанию во всех заголовках меню, содержащихся в строке меню. Вы можете отменить принимаемый по умолчанию шрифт для отдельного заголовка меню, воспользовавшись командой DEFINE PAD с предложением FONT.
cFontName задает имя шрифта, а nFontSize - его размер в пунктах. Вы можете определить языковой скрипт с nFontCharSet. Смотрите Функция GETFONT( ) для получения списка доступных языковых значений скрипта.
Например, следующая команда создает строку меню с заголовками меню, изображенными 12-пунктовым шрифтом Courier:
Copy Code
DEFINE MENU mnuExample FONT 'Courier', 12
Если в Visual FoxPro заданный вами шрифт отсутствует, его заменяет шрифт с похожими характеристиками. Если вы задали предложение FONT, опустив размер шрифта nFontSize, используется размер 10 пунктов.
Предложение FONT игнорируется для заголовков меню, добавленных в системное меню Visual FoxPro _MSYSMENU. Заметьте, что это системное меню Visual FoxPro используется в конструкторе меню.
- STYLE cFontStyle
-
Задает стиль шрифта, используемый по умолчанию для всех заголовков меню в строке меню. Вы можете отменить принимаемый по умолчанию стиль для отдельных заголовков меню, воспользовавшись командой DEFINE PAD с предложением STYLE.
Если предложение STYLE опущено, используется стиль Normal (нормальный). Если в Visual FoxPro заданный стиль шрифта отсутствует, его заменяет стиль с похожими характеристиками.
В качестве cFontStyle можно задавать следующие стили шрифтов:
Символ Стиль шрифта B
Bold (Полужирный)
I
Italic (Курсив)
N
Normal (Нормальный)
Q
Opaque (Непрозрачный)
-
Strikeout (Перечеркнутый)
T
Transparent (Прозрачный)
U
Underline (Подчеркнутый)
Можно задать комбинацию стилей, указав сразу несколько символов. Например, следующая команда задает полужирный курсив (Bold Italic):
Copy Code
DEFINE MENU mnuExample STYLE 'BI'
Предложение STYLE игнорируется для заголовков меню, добавленных в системное меню Visual FoxPro _MSYSMENU. Заметьте, что это системное меню Visual FoxPro используется в конструкторе меню.
- KEY KeyLabel
-
Задает клавишу доступа или комбинацию клавиш, используемую для активизации строки меню. Список доступных клавиш и комбинаций клавиш вместе с их названиями приведен в теме ON KEY LABEL Command.
Включение предложения KEY эквивалентно выдаче следующей команды:
Copy Code
ON KEY LABEL KeyLabel ACTIVATE MENU MenuName
Note
Если для заданного названия клавиши уже определена макрокоманда клавиатуры, она имеет приоритет и вы не сможете выбрать строку меню с помощью указанной клавиши или комбинации клавиш.
- MARK cMarkCharacter
-
Задает символ маркировки, который ставится слева от заголовка меню в строке меню. Предложение MARK позволяет заменять принятый по умолчанию символ маркировки на символ, определенный аргументом cMarkCharacter. Если cMarkCharacter содержит более одного символа, в качестве символа маркировки используется только первый из них.
В качестве символа маркировки по умолчанию используется галочка. Когда в Visual FoxPro строка меню представляет собой системную строку меню редложение MARK игнорируется и используется символ маркировки, принимаемый по умолчанию. Кроме того, предложение MARK игнорируется, если шрифт основного окна Visual FoxPro или пользовательского окна, в котором размещается строка меню, отличен от FoxFont.
Note
Задавая символ маркировки, вы не помечаете имена меню в строке меню; используйте для этого команду SET MARK OF.
Символы маркировки, заданные в команде DEFINE PAD, имеют более высокий приоритет, чем символы маркировки, заданные в предложении MARK команды DEFINE MENU. Команда SET MARK OF используется как переключатель, отображающий или убирающий символы маркировки, и позволяет задать символ маркировки для отдельного элемента меню или для всех элементов меню.
- MESSAGE cMessageText
-
Выдает сообщение при выделении заголовка меню. Сообщение выводится в графической строке состояния. Если отображение строки состояния отключено по команде SET STATUS BAR OFF, сообщение располагается в центре последней строки основного окна Visual FoxPro.
- NOMARGIN
-
Удаляет пробелы, которые по умолчанию ставятся слева и справа от каждого имени меню.
- COLOR SCHEME nSchemeNumber
-
Задает цвета для отдельной строки меню.
- COLOR ColorPairList
-
Задает цвета для отдельной строки меню. По умолчанию цвета элементов меню определяются цветовой схемой 2 текущего цветового набора.
Замечания
Используйте команду DEFINE MENU для создания строки меню в системе меню приложения. Чтобы создать отдельные заголовки меню (элементы строки меню), пользуйтесь командой DEFINE PAD. Чтобы определить, какие меню следует отображать под каждым из заголовков, воспользуйтесь командой ON PAD ... ACTIVATE. Чтобы создать меню для каждого заголовка, пользуйтесь командой DEFINE POPUP. Чтобы активизировать всю систему меню, пользуйтесь командой ACTIVATE MENU.
Если вы для создания меню используете Дизайнер меню и Shortcut меню, вы можете вообще обойтись без этих команд. Конструктор меню автоматически генерирует команды, описывающие меню. В конструкторе меню используется системное меню Visual FoxPro, которое вы можете модифицировать, добавляя свои элементы.
Подробнее о создании меню смотрите Создание системы меню.
Пример
В следующем примере команда 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 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 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 |
Смотрите также
Справочное руководство
Команда ACTIVATE MENUФункция CNTPAD( )
Команда CREATE MENU
Команда DEACTIVATE MENU
Команда DEFINE PAD
Функция GETPAD( )
Команда HIDE MENU
Функция MRKPAD( )
Команда ON PAD
Команда ON SELECTION PAD
Функция PRMPAD( )
Команда RELEASE MENUS
Команда RELEASE PAD
Команда SET MARK OF
Команда SET SYSMENU
Команда SHOW MENU
Прочие ресурсы
Команды (Visual FoxPro)Справочное руководство по языку (Visual FoxPro)