Создает меню.
DEFINE POPUP MenuName [FROM nRow1, nColumn1] [TO nRow2, nColumn2] |
Параметры
- MenuName
- Определяет имя меню для создания.
- FROM nRow1 , nColumn1 TO nRow2 , nColumn2
- Определяет местоположение меню. nRow1 , nColumn1 определяют координаты для левого верхнего угла меню. Если Вы опускаете предложение FROM, Visual FoxPro размещает левый верхний угол меню в первой строке и первом столбце главного окна Visual FoxPro или пользовательского окна. Чтобы создавать меню с определенным размером, Вы можете также включить TO nRow2 , nColumn2 для задания местоположения нижнего правого угла меню. Если Вы включаете FROM nRow1 , nColumn1 и опускаете TO nRow2 , nColumn2 , Visual FoxPro автоматически устанавливает размеры меню. Меню имеет ширину самого длинного его пункта (если пункты создаются командой DEFINE BAR) и длину, необходимую для отображения всех его пунктов. Длина меню ограничена размером главного окна Visual FoxPro или пользовательского окна, в котором помещено меню. Если меню не имеет достаточных размеров для размещения всех пунктов, то появляется полоса прокрутки так, чтобы Вы смогли просматривать пункты меню.
- IN [WINDOW] WindowName
- Размещает меню в определяемое пользователем окно, которое Вы задаете опцией WindowName . Если Вы опускаете это предложение, меню помещается в главное окно Visual FoxPro по умолчанию, если нет активного пользовательского окна. Если есть активное пользовательское окно, то меню помещается в активное окно.
- IN SCREEN
- Явно помещает меню в главное окно Visual FoxPro.
- FONT cFontName [, nFontSize [, nFontCharSet ]]
- Определяет заданный по умолчанию шрифт для меню. Вы можете отменить заданный по умолчанию шрифт для индивидуального пункта меню включением предложения FONT в команде DEFINE BAR. cFontName определяет имя шрифта, и nFontSize определяет размер шрифта. Вы можете определить начертание языка через nFontCharSet . См. GETFONT () Функциядля получения списка доступных значений начертания языка. Например, следующая команда создает меню со шрифтом Courier 12 пунктов:
Скопировать код
DEFINE POPUP popMyPopup FONT 'Courier', 12
- STYLE cFontStyle
- Определяет заданный по умолчанию стиль шрифта для меню. Вы можете отменить заданный по умолчанию стиль для индивидуального пункта меню, включением предложения FONT в команде DEFINE BAR. Если Вы опускаете предложение STYLE, или если стиль шрифта, который Вы определяете недоступен, используется шрифт Normal. Стили шрифтов, которые Вы можете определить с помощью cFontStyle перечислены в следующей таблице:
Character Font style B
Bold
I
Italic
N
Normal
Q
Opaque
-
Strikeout
T
Transparent
U
Underline
Скопировать код
DEFINE MENU popMyPopup STYLE 'BI'
- FOOTER cFooterText
- Создает нижний колонтитул с текстом, указанным cFooterText , центрированным в нижнем бордюре меню.
- KEY KeyLabel
- Определяет клавишу доступа или комбинацию клавиш для меню. Для списка доступных клавиш и комбинаций и их наименований, см. ON KEY LABEL . Включение KEY эквивалентно применению следующей команды:
Скопировать код
ON KEY LABEL KeyLabel ACTIVATE POPUP MenuName
Обратите внимание:
Если тем же самым наименованием клавиш уже определен клавиатурный макрос, то клавиатурный макрос имеет приоритет, и меню не может быть активизировано указанной клавишей или комбинацией.
- MARGIN
- Вставляет дополнительный пробел слева и справа от каждого пункта меню. Символы метки отображаются слева от пункта, а стрелки, указывающие, что доступны дополнительные каскадные подменю, отображаются справа от пунктов меню. Если Вы опускаете MARGIN, символы метки вставляются вместо первого символа в имени пункта меню; стрелки иерархии вставляются вместо последнего символа пунктов меню.
Обратите внимание:
Вы должны включить это предложение, если Вы хотите использовать в DEFINE BAR ... предложения PICTURE ИЛИ PICTRES.
- MARK cMarkCharacter
- Определяет символ, который появляется слева от пункта меню. Заданный по умолчанию символ метки - галочка. Предложение MARK игнорируется, и заданный по умолчанию символ метки используется, если меню интегрировано в системное меню Visual FoxPro. Также, предложение MARK игнорируется, если FoxFont - не является шрифтом главного окна FoxPro или пользовательского окна, в котором находится меню. MARK может быть включено, чтобы изменить заданный по умолчанию символ метки на символ, указанный cMarkCharacter . Если cMarkCharacter включает более одного символа, то используется только первый символ как символ метки.
Обратите внимание:
Определение символа метки не отмечает пункт меню. Используйте SET MARK OF, чтобы отметить пункт меню.
- MESSAGE cMessageText
- Выводит сообщение, когда Вы выбираете пункт меню. Сообщение помещается в графической статусной строке. Если включена символьная статустная строка с помощью SET STATUS ON, то сообщение центрируется в последней строке главного окна Visual FoxPro.
- MOVER
- Размещает двунаправленную стрелку
в блоке ползунка слева от выбранного пункта меню. Вы можете перетащить двунаправленную стрелку, чтобы переместить пункт в другую позицию в пределах меню. GETBAR( ) может использоваться, чтобы определить, в какой позиции установлен каждый пункт меню. Вы не можете перестроить пункты меню, созданным предложением PROMPT.
- MULTISELECT
- Позволяет пользователю выбирать несколько пунктов меню одновременно. Когда пользователь выбирает пункт меню, слева от пункта появляется символ метки. Вы не можете делать множественный выбор из меню, созданного предложением PROMPT. MRKBAR( ) может использоваться, чтобы определить, какие пункты меню выбраны. Если Вы включаете MULTISELECT в DEFINE POPUP, Вы можете включить MARGIN, чтобы резервировать пробел в каждом пункте для символа метки. В следующем примере создается меню
popFruits
. MULTISELECT включен, чтобы создать меню, которое разрешает множественным выбор пунктов. Каждый из этих четырех пунктов имеет разный символ метки. Когда пользователь выбирает пункты меню, пункты помечаются и процедураyourchoice
отображает выбранные пункты.Скопировать код
CLEAR
ACTIVATE SCREEN
DEFINE POPUP popFruits FROM 5,5 ;
MULTISELECT MARGIN && Create multi-choice menu
DEFINE BAR 1 OF popFruits ;
PROMPT '\<Apples' MARK CHR(3) && First item
DEFINE BAR 2 OF popFruits ;
PROMPT '\<Bananas' MARK CHR(4) && Second item
DEFINE BAR 3 OF popFruits ;
PROMPT '\<Grapes' MARK CHR(5) && Third item
DEFINE BAR 4 OF popFruits ;
PROMPT '\<Lemons' MARK CHR(6) && Fourth item
@ 12,5 SAY 'Your choices:'
ON SELECTION POPUP popFruits DO yourchoice && Choice routine
ACTIVATE POPUP popFruits
PROCEDURE yourchoice && Executed when choice is made
@ 13,5 CLEAR
FOR gnCount = 1 TO CNTBAR('popFruits') && Loop for # of items
IF MRKBAR('popFruits', gnCount) = .T. && Option is marked,
? PRMBAR('popFruits', gnCount) AT 5 && display caption
ENDIF
NEXT
- PROMPT FIELD FieldName
- Определяет имя поля открытой таблицы, записи которой становятся пунктами меню. Меню содержит пункт для каждой записи в таблице. Когда меню активизировано, то текущей, становится рабочая область этой таблицы.
Совет:
Вы можете использовать в своих интересах Оптимизацию Запросов Rushmore при установке фильтра по полю, указанному в PROMPT FIELD. Для подробной информации относительно Rushmore QueryOptimization, см. SET OPTIMIZE и Использование оптимизации Rushmore Query Optimization для ускорения доступа к данным в разделе Оптимизация Приложений .
- PROMPT FILES [LIKE FileSkeleton ]
- Создает меню, которое выводит имена файлов, доступных в текущем каталоге. LIKE FileSkeleton позволяет Вам определять файлы, которые отображены в меню, используя подстановочные знаки. Например, чтобы создать меню, которое выводит имена таблиц в заданном по умолчанию диске и каталоге, примените следующую команду:
Скопировать код
PROMPT FILES LIKE *.DBF
Скопировать код
PROMPT FILES LIKE C:\PROGRAMS\*.PRG
- PROMPT STRUCTURE
- Выводит имена полей текущей таблици в меню согласно структуре полей таблицы. Когда меню активизируется, рабочая область таблицы становится текущей.
- RELATIVE
- Определяет порядок, в котором размещаются пункты меню. Если Вы создаете меню без предложения RELATIVE, пункт меню установливается в порядке, заданным номером строки пункта. Пробел в меню резервируется за пунктом, который не был определен. Например, если первые и третьи пункты определены, и меню активируется, то в меню помещается пустая строка, зарезервированная за вторым пунктом. Если Вы создаете меню с применением RELATIVE, пункты меню появляются в порядке, в котором они были определены. Пробел в меню не резервируется за пунктами, которые не были определены. Определение меню с использвоанием RELATIVE также позволяет Вам использовать предложения BEFORE И AFTER в DEFINE BAR, чтобы позиционировать пункты меню относительно других пунктов. Если меню создано без RELATIVE, применение BEFORE или AFTER в DEFINE BAR генерирует ошибку. Выполните следующие два програмных примера и сравните размещение пунктов каждого меню.
Скопировать код
*** 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
ACTIVATE POPUP popRelatYes
*** NON-RELATIVE Example ***
DEFINE POPUP popRelatNo FROM 1,1
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 popRelatNo
- SCROLL
- Размещает полосу прокрутки справа от меню. Полоса прокрутки отображается в том случае, когда количество пунктов больше чем может уместиться в меню, или если меню слишком длинное, чтобы уместиться в главном окне Visual FoxPro или пользовательском окне, в котором оно размещается.
- SHORTCUT
- Создает подручное меню. Подручное меню обычно появляется, когда по строке выбора, инструментальной панели, или кнопке панели задач щелкают правой кнопкой мыши. Подручное меню выводит команды, которые имеют отношение к области экрана, в которой произошел щелчок правой кнопки мыши. Вы можете включить MROW( ) и MCOL( ) в предложении FROM, чтобы активизировать всплывающее меню в местоположении щелчка.
- TITLE cMenuTitleText
- Отображает заголовок в центре верхнего бордюра меню. cTitleText определяет заголовок меню.
- RTLJUSTIFY
- Определяет, что текст во всплывающем меню выровнен в направлении справа налево. Предложение RTLJUSTIFY предназначено для использования со шрифтами, которые поддерживают двунаправленное выравнивание. примените SET SYSMENU TO LTRJUSTIFY, чтобы возвратить систему меню к значению по умолчанию для выравнивания слева направо. Эта опция доступна только когда Windows конфигурирована для локализации Middle-Eastern.
- COLOR SCHEME nSchemeNumber
- Определяет цвета для всех элементов меню. По умолчанию, цвета меню, созданных DEFINE POPUP управляются цветовой схемой 2.
- COLOR ColorPairList
- Определяет цвета для всех элементов меню.
Замечания
Для размещения набора пунктов меню, которые Вы определяете, используйте последовательность команд DEFINE BAR. Для размещения записей, файлов, или полей в меню, используйте опции PROMPT FIELD, PROMPT FILES, или PROMPT STRUCTURE команды DEFINE POPUP.
Когда меню отображено и активизировано функцией ACTIVATE POPUP, Вы можете выбирать один из пунктов меню. В зависимости от выбранного пункта, может быть выполнена процедура, или может быть отображено и активировано другое меню. Меню, которое выводит другое меню при выборе пункта, называется каскадным подменю. Для подробной информации относительно создания подменю, см. ON BAR .
Если Вы используете Menu Designerчтобы создавать ваше меню, Вам, вероятно, не придется использовать эти команды вообще. Дизайнер Меню автоматически создает команды для вашего меню. Дизайнер Меню использует системное меню Visual FoxPro, которое Вы можете изменить, добавляя ваши собственные пункты меню.
Для подробной информации относительно создания меню, см. Создание Системы Меню .
Пример
Следующий пример использует DEFINE POPUP, чтобы создать меню, которые активируются при выборе заголовка меню в строке меню. Текущая полоса системного меню сначала сохраняется в памяти командой SET SYSMENU SAVE и затем все заголовки системного меню удаляются командой SET SYSMENU TO.
Создаются два новых заголовка системного меню командой DEFINE PAD, а DEFINE POPUP создает выпадающее меню для каждого заголовка меню. DEFINE BAR создает пункты каждого меню. Когда заголовок меню выбран, ON PAD использует команду ACTIVATE POPUP, чтобы активизировать соответствующее меню.
Когда пункт менюв выбран, ON SELECTION POPUP использует PROMPT( ) и POPUP( ), чтобы передать номер пункта и имя меню в процедуру CHOICE. CHOICE отображает текст выбранного пункта и имя меню, содержащее этот пункт. Если пункт Exit выбран из меню Card Info, то первоначальное системное меню Visual FoxPro восстановливается.
![]() | |
---|---|
*** Name this program DEFINPOP.PRG *** |
См. Также
Другие Ресурсы
ACTIVATE POPUP КомандаCNTBAR( ) Функция
CREATE MENU Команда
DEFINE BAR Команда
GETBAR( ) Функция
HIDE POPUP Команда
MOVE POPUP Команда
MRKBAR( ) Функция
ON SELECTION BAR Команда
POPUP( ) Функция
PRMBAR( ) Функция
PROMPT( ) Функция
RELEASE POPUPS Команда
SET MARK OF Команда
SET MESSAGE Команда
SIZE POPUP Команда
SHOW POPUP Команда
Команды
Справочник Языка