Создает элемент в меню, определенном с помощью команды DEFINE POPUP.
DEFINE BAR nMenuItemNumber1 | SystemItemName OF MenuName PROMPT cMenuItemText [PICTURE cFileName] [PICTRES cMenubarName] [BEFORE nMenuItemNumber2 | AFTER nMenuItemNumber3] [FONT cFontName [, nFontSize [, nFontCharSet]]] [STYLE cFontStyle] [KEY KeyLabel [, cKeyText]] [MARK cMarkCharacter] [MESSAGE cMessageText] [SKIP [FOR lExpression]] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList] [MRU] [INVERT] |
Параметры
- nMenuItemNumber1
- Задает номер элемента меню. По этому номеру на данный элемент меню можно ссылаться в других командах и функциях.
- SystemItemName
- Задает номер элемента меню. По этому номеру на данный элемент меню можно ссылаться в других командах и функциях. Например, чтобы обеспечить доступ к пункту меню Print, выполните следующее:
Копировать код
DEFINE BAR _MFI_PRINT OF popMyPopup PROMPT "Print..."
- OF MenuName
- Задает имя меню, в которое будут включены элементы меню..
- PROMPT cMenuItemText
- Задает текст названия элемента меню. Вы можете создать строку-разделитель, задав в качестве cMenuItemText обратную косую черту с дефисом (\-). Строка-разделитель применяется для отделения друг от друга различных групп элементов в меню. Например, если включить в определение меню приведенную ниже команду, то она создаст между третьим и пятым элементами меню строку-разделитель:
Копировать код
DEFINE BAR 4 OF popMyPopup PROMPT '\-'
Копировать код
DEFINE BAR 4 OF popMyPopup PROMPT '\|Start a new column'
Копировать код
DEFINE POPUP popReceive DEFINE BAR 1 OF popReceive PROMPT '\<Invoices' DEFINE BAR 2 OF popReceive PROMPT 'In\<quiry' ACTIVATE POPUP popReceive
- PICTURE cPictureName
- Дает Вам возможность использовать существующее изображение со строкой меню. Вы можете определить cPictureName как относительный путь.
- PICTRES cMenubarName
- Определяет имя пункта системного меню как ресурс для меню. Если cPictureName = " ", тогда содержание поля Resname .mnx структуры таблицы обработано, поскольку имя файла для использования в DEFINE BAR...PICTURE. Эти функциональные возможности были введены в Visual FoxPro 7.0.
Замечание:
Чтобы функционировало должным образом, Вы должны включить предложение MARGIN в соответствующую команду DEFINE POPUP для предложений PICTURE ИЛИ PICTRES.
- BEFORE nMenuItemNumber2
- Помещает данный элемент меню перед элементом с номером nMenuItemNumber2.
- AFTER nMenuItemNumber3
- Помещает данный элемент меню после элемента с номером nMenuItemNumber3.
Замечание :
Чтобы опции BEFORE и AFTER действовали, необходимо при создании меню с помощью команды DEFINE POPUP включить предложение RELATIVE. Копировать код
* DEFINE POPUP... relative example DEFINE POPUP popRelatYes RELATIVE FROM 1,1 DEFINE BAR 4 OF popRelatYes PROMPT '4444' DEFINE BAR 3 OF popRelatYes PROMPT '3333' DEFINE BAR 2 OF popRelatYes PROMPT '2222' DEFINE BAR 1 OF popRelatYes PROMPT '1111' DEFINE BAR 6 OF popRelatYes PROMPT '6666' BEFORE 4 * DEFINE POPUP... non-relative example DEFINE POPUP popRelatNo FROM 1,10 DEFINE BAR 4 OF popRelatNo PROMPT '4444' DEFINE BAR 3 OF popRelatNo PROMPT '3333' DEFINE BAR 2 OF popRelatNo PROMPT '2222' DEFINE BAR 1 OF popRelatNo PROMPT '1111' DEFINE BAR 6 OF popRelatNo PROMPT '6666' ACTIVATE POPUP popRelatYes NOWAIT && Display "relative" poup ACTIVATE POPUP popRelatNo && Display "non-relative" popup
- FONT cFontName[, nFontSize [, nFontCharSet]]
- Задает шрифт для элемента меню. cFontName задает имя шрифта, а nFontSize его размер в пунктах. Вы можете определить сценарий языка с nFontCharSet. Функцию GETFONT( ) для списка доступных значений сценария языка. Например, следующая команда создает элемент меню с помощью 12-пунктового шрифта Courier:
Копировать код
DEFINE BAR 1 OF popReceive PROMPT '\<Invoices' FONT 'Courier', 12
- STYLE cFontStyle
- Задает стиль шрифта для элемента меню. Если предложение STYLE опущено, используется стиль Normal (нормальный). Если в Visual FoxPro заданный стиль шрифта отсутствует, его заменяет стиль Normal (нормальный). В качестве cFontStyle можно задавать следующие стили шрифтов:
Символ Стиль шрифта B
Bold (Полужирный)
I
Italic (Курсив)
N
Normal (Нормальный)
Q
Opaque (Непрозрачный)
–
Strikeout (Перечеркнутый)
T
Transparent (Прозрачный)
U
Underline (Подчеркнутый)
Копировать код
DEFINE BAR 1 OF popReceive PROMPT '\<Invoices' 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.
Замечание :
Задавая символ маркировки, вы не помечаете элемент меню. Используйте для этого команду SET MARK OF.
- MESSAGE cMessageText
- Выдает сообщение при выборе элемента меню. Сообщение выводится в графической строке состояния. Если отображение строки состояния отключено по команде SET STATUS BAR OFF, сообщение располагается в центре последней строки главного окна Visual FoxPro.
- SKIP [FOR lExpression]
- Задает условие доступности элемента меню: если выражение lExpression имеет значение "истина" (.T.), элемент меню недоступен и пользователь не может выбирать его, а если выражение имеет значение "ложь" (.F.), элемент меню доступен. Недоступный элемент меню отображается определенными для данного состояния цветами. Вы также можете сделать элемент недоступным, поставив перед его названием обратную косую черту (\). Например:
Копировать код
DEFINE BAR 1 OF popReceive PROMPT '\Invoices'
- COLOR SCHEME nSchemeNumber
- Задает цвета для отдельного элемента меню, отменяя цвета, принятые по умолчанию или заданные с помощью команды DEFINE POPUP.
- COLOR ColorPairList
- Задает цвета для отдельного элемента меню, отменяя цвета, принятые по умолчанию или заданные с помощью команды DEFINE POPUP. Вы можете задать цвета для всех элементов меню, символов маркировки и сообщений. По умолчанию цвета элементов меню определяются цветовой схемой 2 текущего цветового набора.
- MRU
- Определяет для изображения меню вертикальные двойные угловые скобки, указывающие Последний раз Используемое меню. Вы должны обеспечить сценарий, который динамически обрабатывает меню и добавляет любые новые строки меню. Для меню, вызванных с ключевым словом MRU, Visual FoxPro налагает 1-2 секунды задержки перед вызовом команды ON SELECTION BAR. Пользователь может нажать на строку меню, чтобы немедленно вызвать команду ON SELECTION BAR. Если Вы используете ключевое слово MRU, Visual FoxPro игнорирует PROMPT и другие ключевые слова, связанные с данный пунктом.
Копировать код
DEFINE BAR 4 OF popMyPopup MRU
- INVERT
- Определяет отображение меню с эффектом инверсии цветов.
Копировать код
DEFINE BAR 4 OF popMyPopup PROMPT '\|Start a new column' ; PICTRES _med_copy INVERT
Комментарии
Команда DEFINE BAR используется совместно с командой DEFINE POPUP для создания меню. Меню создается и получает имя с помощью команды DEFINE POPUP. Чтобы поместить элементы в меню, нужно выдать серию команд DEFINE BAR.
Если вы для создания меню используете конструктор меню, вы можете вообще обойтись без этих команд. Конструктор меню автоматически генерирует команды, описывающие меню. В конструкторе меню используется системное меню Visual FoxPro, которое вы можете модифицировать, добавляя свои элементы. Подробнее о создании меню см. тему Создание Меню и Панелей инструментов..
Вы также можете создать меню, содержащее записи или поля из таблицы или список имеющихся на диске файлов. Подробнее см. описание предложений PROMPT FIELD, PROMPT STRUCTURE и PROMPT FILES команды DEFINE POPUP..
Чтобы создать для некоторого элемента меню ниспадающее подменю, воспользуйтесь командой ON BAR.
Example
В следующем примере команда DEFINE BAR используется для создания элементов в меню. Сначала текущая системная строка меню сохраняется в памяти с помощью команды SET SYSMENU SAVE, а затем все заголовки системных меню удаляются по команде SET SYSMENU TO.
С помощью команды DEFINE PAD создаются два новых заголовка системных меню, а команда DEFINE POPUP создает раскрывающееся меню для каждого из этих заголовков. DEFINE BAR используется для создания элементов в каждом из меню. Когда выбирается заголовок меню, команда ON PAD с помощью ACTIVATE POPUP активизирует соответствующее меню.
Когда в меню выбирается элемент, команда ON SELECTION POPUP с помощью функций PROMPT( ) и POPUP( ) передает номер элемента и имя меню процедуре CHOICE. Она отображает текст для выбранного элемента и имя содержащего его меню. Если в меню Card Info выбран* элемент Exit, восстанавливается первоначальная система меню Visual FoxPro.
![]() | |
---|---|
*** Name this program DEFINBAR.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 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 definbar 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 ' DEFINE BAR 6 OF cardinfo PROMPT '\-' DEFINE BAR 7 OF cardinfo PROMPT 'E\<xit ' ON SELECTION POPUP cardinfo; DO choice IN definbar 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 |
Смотреть также
Другие ресурсы
Команда ACTIVATE POPUPКоманда DEACTIVATE POPUP
Команда DEFINE POPUP
Команда HIDE POPUP
Команда RELEASE BAR
Команда SET MESSAGE
Команда SHOW POPUP
Команды
Language Reference