Создает заголовок меню в пользовательской строке меню или в системной строке меню Visual FoxPro.
DEFINE PAD MenuTitle1 OF MenuBarName PROMPT cMenuTitleText [AT nRow, nColumn] [BEFORE MenuName2 | AFTER MenuName3] [NEGOTIATE cContainerPosition [, cObjectPosition]] [FONT cFontName [, nFontSize [, nFontCharSet]]] [STYLE cFontStyle] [KEY KeyLabel [, cKeyText]] [MARK cMarkCharacter] [SKIP [FOR lExpression]] [MESSAGE cMessageText] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList] |
Параметры
- MenuTitle1
- Задает создаваемый заголовок меню. По этому имени вы сможете ссылаться на данный заголовок меню в других командах и функциях.
- OF MenuBarName
- Задает имя строки меню, в которой размещается заголовок меню.
- PROMPT cMenuTitleText
- Задает текст заголовка меню. Вы можете создать для заголовка меню клавишу доступа, поставив перед нужным символом обратную косую черту со знаком "меньше" (\<). В следующем примере пользователь, нажав клавишу I, сможет выбрать команду Invoices из меню Receive, а нажатием клавиши Q он выберет команду Inquiry из того же меню:
Копировать код
DEFINE MENU mnuReceive DEFINE PAD padInvoice OF mnureceive PROMPT "\<Invoices" DEFINE PAD padInquire OF mnureceive PROMPT "In\<quiry" ACTIVATE MENU mnuReceive
- AT nRow, nColumn
- Указывает, в каком месте строки меню должен стоять заголовок меню. nRow, nColumn представляют собой координаты левой стороны заголовка меню в основном окне Visual FoxPro или в пользовательском окне. Если опустить предложение AT, левая сторона первого заголовка меню будет находиться в строке 0 основного окна Visual FoxPro или пользовательского окна. Следующий заголовок меню будет вставлен справа от первого имени в строке 0 и т.д.
Замечание:
Предложение AT нельзя использовать для задания местоположения заголовков меню в строках меню, созданных с помощью предложения BAR по команде DEFINE MENU.
- BEFORE MenuName2
- Вставляет заголовок меню в строку меню слева от заголовка меню, заданного именем MenuName2. Порядок доступа к заголовкам меню с клавиатуры определяется их расположением в строке меню.
- AFTER MenuName3
- Вставляет заголовок меню в строку меню справа от заголовка меню, заданного именем MenuName3. Порядок доступа к заголовкам меню с клавиатуры определяется их расположением в строке меню. Предварительно нужно создать заголовок меню, указываемый в предложении BEFORE или AFTER. Если этого не сделать, местоположение данного заголовка меню в строке меню будет определяться временем его создания или позицией, заданной в предложении AT. Для строк меню, созданных без определения порядока следования BEFORE или AFTER к заголовкам меню обращаются с клавиатуры. Местоположение заголовка меню определено местоположением, указанным в предложением AT. Выполните два следующих примера программ и обратите внимание на различия в размещении заголовков меню и в порядке доступа к ним, в зависимости от использования предложения AT при определении этих заголовков меню:
Копировать код
*** Program Example 1 without ATs *** DEFINE MENU mnuBefAft DEFINE PAD padOne OF mnuBefAft PROMPT '1111' DEFINE PAD padTwo OF mnuBefAft PROMPT '2222' DEFINE PAD padThree OF mnuBefAft PROMPT '3333' DEFINE PAD padFour OF mnuBefAft PROMPT '4444' BEFORE padTwo ACTIVATE MENU mnuBefAft *** Program Example 2 with ATs *** DEFINE MENU mnuBefAft DEFINE PAD padOne OF mnuBefAft PROMPT '1111' AT 1,5 DEFINE PAD padTwo OF mnuBefAft PROMPT '2222' AT 1,15 DEFINE PAD padThree OF mnuBefAft PROMPT '3333' AT 1,25 DEFINE PAD padFour OF mnuBefAft PROMPT '4444' BEFORE padTwo AT 1,35 WAIT WINDOW 'Press ESC to erase menu' NOWAIT ACTIVATE MENU mnuBefAft
- NEGOTIATE cContainerPosition[, cObjectPosition]
- cContainerPosition Задает положение заголовка меню в строке меню Visual FoxPro, когда осуществляется визуальное редактирование OLE для элемента управления ActiveX, содержавшегося в форме Visual FoxPro. 'Параметры настройки для cContainerPosition are:
Параметр Описание NONE
заголовок меню не отображать.
LEFT
заголовок меню поместить слева от Группы File.
MIDDLE
заголовок меню поместить слева от Контейнерной Группы, после меню Edit .
RIGHT
заголовок меню поместить слева от Группы Window.
Параметр Описание NONE
заголовок меню не отображать.
LEFT
заголовок меню поместить слева от Группы File.
MIDDLE
заголовок меню поместить слева от Контейнерной Группы, после меню Edit .
RIGHT
заголовок меню поместить слева от Группы Window.
- FONT cFontName[, nFontSize [, nFontCharSet]]
- Задает шрифт для заголовка меню. cFontName задает имя шрифта, а nFontSize его размер в пунктах. Вы можете определить сценарий языка для nFontCharSet. См. Функция GETFONT( ) для списка доступных значений сценария языка. Например, следующая команда создает заголовок меню с помощью 12-пунктового шрифта Courier:
Копировать код
DEFINE PAD padPageAccts OF mnuReceive FONT 'Courier', 12
- STYLE cFontStyle
- Задает стиль шрифта для заголовка меню. Если предложение STYLE опущено или начертание шрифта, которое Вы определяете, не доступно, используется стиль Normal (нормальный). В качестве cFontStyle можно задавать следующие стили шрифтов:
Символ Стиль шрифта B
Bold (Полужирный)
I
Italic (Курсив)
N
Normal (Нормальный)
Q
Opaque (Непрозрачный)
-
Strikeout (Перечеркнутый)
T
Transparent (Прозрачный)
U
Underline (Подчеркнутый)
Копировать код
DEFINE PAD padPageAccts OF mnuReceive STYLE 'BI'
- KEY KeyLabel[, cKeyText]
- Задает клавишу доступа или комбинацию клавиш для заголовка меню. Список доступных клавиш и комбинаций клавиш вместе с их названиями см. в теме ON KEY LABEL.
Замечание:
Если для заданного названия клавиши уже определена макрокоманда клавиатуры, она имеет приоритет и вы не сможете выбрать заголовок меню с помощью указанной клавиши или комбинации клавиш.
- MARK cMarkCharacter
- Задает символ маркировки, который ставится левее заголовка меню. Предложение MARK позволяет заменять принятый по умолчанию символ маркировки на символ, определенный аргументом cMarkCharacter. Если cMarkCharacter содержит более одного символа, в качестве символа маркировки используется только первый из них. В качестве символа маркировки в FoxPro для MS-DOS по умолчанию используется ромб, а в Visual FoxPro, FoxPro для Windows и FoxPro для Macintosh галочка. Когда в Visual FoxPro, FoxPro для Windows и FoxPro для Macintosh строка меню, содержащая данный заголовок меню, представляет собой системную строку меню Visual FoxPro, предложение MARK игнорируется и используется символ маркировки, принимаемый по умолчанию. Кроме того, предложение MARK игнорируется, если шрифт основного окна Visual FoxPro или пользовательского окна, в котором размещается строка меню с данным заголовком меню, отличен от FoxFont. Символы маркировки, заданные в команде DEFINE PAD, имеют более высокий приоритет по сравнению с символами маркировки, заданными в предложении MARK команды DEFINE MENU. Команда SET MARK OF используется как переключатель, отображающий или убирающий символы маркировки, и позволяет задать символ маркировки для отдельного заголовка меню или для всех заголовков меню.
Замечание
Задавая символ маркировки, вы не помечаете заголовок меню; для этого следует пользоваться командой SET MARK OF.
- SKIP [FOR lExpression]
- Задает условие доступности заголовка меню: если выражение lExpression имеет значение "истина" (.T.), заголовок меню недоступен, и пользователь не может выбирать его, а если выражение имеет значение "ложь" (.F.), элемент меню доступен. Вы также можете сделать элемент меню недоступным, поставив перед текстом заголовка меню обратную косую черту (\). Например:
Копировать код
DEFINE PAD padPageAccts OF mnuReceive PROMPT '\Age Accounts'
padPageAccts
будет изображен в тусклых тонах, указывающих на то, что пользоватейь не может его выбрать. Недоступный заголовок меню можно отобразить, но нельзя выделить. Впрочем, соответствующее ему сообщение, определенное предложением MESSAGE, появится на экране.
- MESSAGE cMessageText
- Выдает сообщение при выделении заголовка меню. Сообщение выводится в графической строке состояния. Если отображение строки состояния отключено по команде SET STATUS BAR OFF, сообщение располагается в центре последней строки основного окна Visual FoxPro.
- COLOR SCHEME nSchemeNumber
- Задает цвета для отдельного заголовка меню, отменяя цвета, принятые по умолчанию или заданные командой DEFINE MENU.
- COLOR ColorPairList
- Задает цвета для отдельного заголовка меню, отменяя цвета, принятые по умолчанию или заданные с помощью команды DEFINE MENU. По умолчанию цвета заголовков меню в строках меню определяются цветовой схемой 2 текущего цветового набора.
Комментарии
Каждый заголовок меню, вставляемый в строку меню, должен быть создан с помощью отдельной команды DEFINE PAD. Строка меню должна быть определена с помощью команды DEFINE MENU до того, как вы начнете помещать в нее заголовки меню, и имя этой строки меню следует указать в команде DEFINE PAD.
Если вы для создания меню используете конструктор меню, вы можете вообще обойтись без этих команд. Конструктор меню автоматически генерирует команды, описывающие меню. В конструкторе меню используется системное меню Visual FoxPro, которое вы можете модифицировать, добавляя свои элементы. Подробнее о работе в конструкторе меню см. тему Создание системы меню и главу 12 "Конструирование меню" Руководства разработчика..
Пример
В следующем примере команда DEFINE PAD используется для размещения заголовков меню в системной строке меню Visual FoxPro. Сначала текущая системная строка меню сохраняется в памяти с помощью команды SET SYSMENU SAVE, а затем все системные заголовки меню удаляются командой SET SYSMENU TO.
С помощью команды DEFINE PAD создаются заголовки системных меню. Когда выбирается заголовок меню, выполняется процедура CHOICE. Она отображает имя выбранного заголовка меню и имя строки меню, а также устанавливает или сбрасывает символ маркировки для заголовков меню. Если выбрать заголовок меню Exit, восстанавливается первоначальная система меню Visual FoxPro.
![]() | |
---|---|
*** Name this program DEFINPAD.PRG *** CLEAR SET TALK OFF SET SYSMENU SAVE SET SYSMENU TO PUBLIC markpad markpad = .T. DEFINE PAD syspad OF _MSYSMENU PROMPT '\<System' COLOR SCHEME 3 ; KEY ALT+S, '' DEFINE PAD editpad OF _MSYSMENU PROMPT '\<Edit' COLOR SCHEME 3 ; KEY ALT+E, '' DEFINE PAD recordpad OF _MSYSMENU PROMPT '\<Record' COLOR SCHEME 3 KEY ALT+R, '' DEFINE PAD windowpad OF _MSYSMENU PROMPT '\<Window' COLOR SCHEME 3 ; KEY ALT+W, '' DEFINE PAD reportpad OF _MSYSMENU PROMPT 'Re\<ports' COLOR SCHEME 3 ; KEY ALT+P, '' DEFINE PAD exitpad OF _MSYSMENU PROMPT 'E\<xit' COLOR SCHEME 3 ; KEY ALT+X, '' ON SELECTION MENU _MSYSMENU ; DO choice IN definpad WITH PAD( ), MENU( ) PROCEDURE choice PARAMETER mpad, mmenu WAIT WINDOW 'You chose ' + mpad + ; ' from menu ' + mmenu NOWAIT SET MARK OF PAD (mpad) OF _MSYSMENU TO ; ! MRKPAD('_MSYSMENU', mpad) markpad = ! markpad IF mpad = 'EXITPAD' SET SYSMENU TO DEFAULT ENDIF |
См.также
Другие ресурсы
Команда ACTIVATE MENUКоманда CREATE MENU
Команда DEACTIVATE MENU
Команда DEFINE MENU
Функция GETPAD( )
Команда HIDE MENU
Функция MRKPAD( )
Команда ON PAD
Команда ON SELECTION PAD
Функция PRMPAD( )
Команда RELEASE PAD
Команда SET MARK OF
Команда SET MESSAGE
Команда SET SYSMENU
Команда SHOW MENU
Команды
Language Reference