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

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:

  CopyCode imageCopy 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):

  CopyCode imageCopy Code
DEFINE MENU mnuExample STYLE 'BI'

Предложение STYLE игнорируется для заголовков меню, добавленных в системное меню Visual FoxPro _MSYSMENU. Заметьте, что это системное меню Visual FoxPro используется в конструкторе меню.

KEY KeyLabel

Задает клавишу доступа или комбинацию клавиш, используемую для активизации строки меню. Список доступных клавиш и комбинаций клавиш вместе с их названиями приведен в теме ON KEY LABEL Command.

Включение предложения KEY эквивалентно выдаче следующей команды:

  CopyCode imageCopy Code
ON KEY LABEL KeyLabel ACTIVATE MENU MenuName
NoteNote

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

MARK cMarkCharacter

Задает символ маркировки, который ставится слева от заголовка меню в строке меню. Предложение MARK позволяет заменять принятый по умолчанию символ маркировки на символ, определенный аргументом cMarkCharacter. Если cMarkCharacter содержит более одного символа, в качестве символа маркировки используется только первый из них.

В качестве символа маркировки по умолчанию используется галочка. Когда в Visual FoxPro строка меню представляет собой системную строку меню редложение MARK игнорируется и используется символ маркировки, принимаемый по умолчанию. Кроме того, предложение MARK игнорируется, если шрифт основного окна Visual FoxPro или пользовательского окна, в котором размещается строка меню, отличен от FoxFont.

NoteNote

Задавая символ маркировки, вы не помечаете имена меню в строке меню; используйте для этого команду 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 текущего цветового набора.

Expand imageЗамечания

Используйте команду DEFINE MENU для создания строки меню в системе меню приложения. Чтобы создать отдельные заголовки меню (элементы строки меню), пользуйтесь командой DEFINE PAD. Чтобы определить, какие меню следует отображать под каждым из заголовков, воспользуйтесь командой ON PAD ... ACTIVATE. Чтобы создать меню для каждого заголовка, пользуйтесь командой DEFINE POPUP. Чтобы активизировать всю систему меню, пользуйтесь командой ACTIVATE MENU.

Если вы для создания меню используете Дизайнер меню и Shortcut меню, вы можете вообще обойтись без этих команд. Конструктор меню автоматически генерирует команды, описывающие меню. В конструкторе меню используется системное меню Visual FoxPro, которое вы можете модифицировать, добавляя свои элементы.

Подробнее о создании меню смотрите Создание системы меню.

Expand imageПример

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

DEFINE MENU создает строку меню, а команда DEFINE PAD создает два заголовка меню. Команда DEFINE POPUP создает меню для каждого из этих заголовков меню. DEFINE BAR создает элементы в каждом меню. Когда выбирается заголовок меню, команда ON PAD с помощью ACTIVATE POPUP активизирует соответствующее меню. ACTIVATE MENU отображает и активизирует строку меню.

Когда выбирается элемент в меню, выполняется процедура CHOICE. Она отображает имя выбранного элемента и имя содержащего его меню.

  CopyCode imageCopy Code
*** 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

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