Новости



Visual FoxPro 9 позволяет создавать ещё более производительные приложения баз данных.
Двадцатиление FoxPro! Microsoft принимает поздравления.
Visual FoxPro Toolkit for .NET - более 225 функций VFP 7.0, для языков .NET (подробнее)

Команда DEFINE POPUP

См. также Пример

Создает меню.

Синтаксис

DEFINE POPUP MenuName
[FROM nRow1, nColumn1]
[TO nRow2, nColumn2]
[IN [WINDOW] WindowName | IN SCREEN]
[FONT cFontName [, nFontSize]]
[STYLE cFontStyle]
[FOOTER cFooterText]
[KEY KeyLabel]
[MARGIN]
[MARK cMarkCharacter]
[MESSAGE cMessageText]
[MOVER]
[MULTISELECT]
[PROMPT FIELD FieldName | PROMPT FILES [LIKE FileSkeleton]
| PROMPT STRUCTURE]
[RELATIVE]
[SCROLL]
[SHADOW]
[TITLE cMenuTitleText]
[COLOR SCHEME nSchemeNumber
| COLOR ColorPairList]

Параметры

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]

Допустимо только в Visual FoxPro.

Задает шрифт, используемый в меню по умолчанию. Вы можете отменить принимаемый по умолчанию шрифт для отдельного элемента меню, воспользовавшись командой DEFINE BAR с предложением FONT.

cFontName задает имя шрифта, а nFontSize fox90001.gif его размер в пунктах. Например, следующая команда создает меню с элементами, изображенными 12-пунктовым шрифтом Courier:

DEFINE MENU popMyPopup FONT 'Courier', 12

Если вы задали предложение FONT, опустив размер шрифта nFontSize, используется размер 10 пунктов. Если в Visual FoxPro заданный шрифт отсутствует, его заменяет шрифт с похожими характеристиками.

STYLE cFontStyle

Допустимо только в Visual FoxPro и в предыдущих версиях FoxPro для Windows.

Задает стиль шрифта, используемый в меню по умолчанию. Вы можете отменить при имаемый по умолчанию стиль для отдельных элементов меню командой DEFINE BAR с п едложением STYLE.

Если предложение STYLE опущено, используется стиль Normal (нормальный). Если в Visual FoxPro заданный стиль шрифта отсутствует, его заменяет стиль с похожими характеристиками.

В качестве cFontStyle можно задавать следующие стили шрифтов:

Символ
Стиль шрифта
B
Bold (Полужирный)
I
Italic (Курсив)
N
Normal (Нормальный)
O
Outline (Контурный)
Q
Opaque (Непрозрачный)
S
Shadow (Затененный)
-
Strikeout (Перечеркнутый)
T
Transparent (Прозрачный)
U
Underline (Подчеркнутый)

Можно задать комбинацию стилей, указав сразу несколько символов. Например, сле ующая команда задает полужирный курсив (Bold Italic):

DEFINE MENU popMyPopup STYLE 'BI'

FOOTER cFooterText

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

KEY KeyLabel

Задает для меню клавишу доступа или комбинацию клавиш. Список доступных клавиш и комбинаций клавиш вместе с их названиями приведен в теме ON KEY LABEL. Задание предложения KEY эквивалентно выдаче следующей команды:

ON KEY LABEL KeyLabel ACTIVATE POPUP MenuName

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

MARGIN

Оставляет дополнительные интервалы слева и справа от каждого элемента меню. В таких интервалах отображаются символы маркировки (слева от элементов меню) и ст елки, указывающие на наличие ниспадающих подменю (справа от элементов меню). Если опустить MARGIN, символ маркировки будет отображен поверх первого символа имени элемента меню, а стрелка, обозначающая иерархические меню, будут отоб ажаться поверх последнего символа имени.

MARK cMarkCharacter

Задает символ, который ставится слева от элемента меню. В качестве символа ма кировки в FoxPro для MS-DOS по умолчанию используется ромб, а в Visual FoxPro, FoxPro для Windows и FoxPro для Macintosh fox90001.gif галочка.

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

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

Замечание Задавая символ маркировки, вы не помечаете элемент меню; используйте для того команду SET MARK OF.

Предложение MARK устанавливает символ маркировки для всех элементов меню. Символы маркировки, заданные в команде DEFINE BAR, имеют более высокий приоритет по сравнению с символами маркировки, заданными в предложении MARK команды DEFINE POPUP. Команда SET MARK OF используется как переключатель, отображающий или уби ающий символы маркировки, и позволяет задать символ маркировки для отдельного лемента меню или для всех элементов меню.

MESSAGE cMessageText

Выдает сообщение при выделении элемента меню. В FoxPro для MS-DOS сообщение cMessageText по умолчанию размещается в центре последней строки основного окна FoxPro; по ожение сообщения можно изменить с помощью команды SET MESSAGE.

В Visual FoxPro, FoxPro для Windows и FoxPro для Macintosh сообщение выводится в графической строке состояния. Если действует установка SET STATUS ON, вк ючающая отображение строки состояния в символьном режиме, сообщение располагается в центре последней строки основного окна Visual FoxPro.

MOVER

Ставит слева от выделенного элемента меню в кнопке перемещения двунаправленную стрелку (fox00144.gif). Перемещая эту стрелку мышью, вы можете переставить данный элемент на другую позицию в меню. Чтобы определить, в каком месте меню позиционируется тот или и ой элемент, можно воспользоваться функцией GETBAR( ).

Нельзя переупорядочивать элементы меню, созданные с помощью предложения PROMPT.

MULTISELECT

Разрешает пользователю выделять сразу несколько элементов меню. Когда по ьзователь выбирает элемент меню, слева от этого элемента ставится символ маркировки.

В меню, созданном с помощью предложения PROMPT, нельзя выделять сразу по неско ьку элементов.

Чтобы определить, какие элементы меню выбраны, можно воспользоваться функцией MRKBAR( ).

Если вы задали в команде DEFINE POPUP ключевое слово MULTISELECT, то с помощью опции MARGIN вы можете зарезервировать место для символа маркировки возле каж ого элемента меню.

В следующем примере создается меню popFruits. Используется опция MULTISELECT, чтобы в меню можно было выбирать несколько э ементов.

У каждого из четырех элементов меню свой символ маркировки. Когда пользователь выбирает в меню элементы, они помечаются и выводятся на экран специальной прог аммой yourchoice.

CLEAR

IF NOT _DOS

MODIFY WINDOW SCREEN FONT 'foxfont', 12

ENDIF

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 см. тему SET OPTIMIZE и главу 17 "Оптимизация приложений" Руководства разработчика.

В качестве FieldName можно задать несколько имен полей, соединив их знаком сложения (+). FieldName также может быть именем поля в таблице, открытой в другой рабочей области, и и пользовательской функцией.

В стандартной (16-разрядной) версии FoxPro для MS-DOS максимальное количество лементов, которое можно включить в меню с помощью предложения PROMPT FIELD, авно 32767. Если в таблице больше записей, FoxPro выдаст сообщение об ошибке. В асширенной (32-разрядной) версии FoxPro для MS-DOS, а также в Visual FoxPro, FoxPro для Windows и FoxPro для Macintosh число элементов, которые можно вк ючить в меню с помощью предложения PROMPT FIELD, не ограничено.

PROMPT FILES [LIKE FileSkeleton]

Создает меню, в котором отображаются имена файлов текущего каталога.

Аргумент LIKE FileSkeleton позволяет ограничить диапазон отображаемых в меню файлов, используя символы подстановки. Например, чтобы создать меню, в котором отображались бы имена таб иц диска и каталога, принимаемых по умолчанию, выдайте следующую команду:

PROMPT FILES LIKE *.DBF

Можно создать меню, содержащее имена файлов с других дисков и из других ката огов; для этого нужно задать спецификацию диска и/или спецификацию каталога. Нап имер, чтобы создать меню, состоящее из файлов программ в каталоге PROGRAMS на иске C, выдайте следующую команду:

PROMPT FILES LIKE C:\PROGRAMS\*.PRG

PROMPT STRUCTURE

Отображает в меню имена полей текущей таблицы в соответствии с их структурой. При активизации меню рабочая область таблицы становится выбранной.

RELATIVE

Задает порядок размещения элементов в меню. Если меню создано без участия пред ожения RELATIVE, элементы в меню располагаются в соответствии с номерами их ст ок. Для неопределенных элементов в меню резервируется место. Например, если оп еделить в меню первый и третий элементы, а затем активизировать его, в меню бу ет вставлена пустая строка, зарезервированная для второго элемента.

Если вы создаете меню с предложением RELATIVE, элементы будут появляться в том меню в порядке их определения. Для неопределенных элементов в таких меню место не резервируется.

Если меню определено с опцией RELATIVE, это позволит воспользоваться предложе иями BEFORE и AFTER в команде DEFINE BAR для позиционирования элементов в меню относительно других элементов. Если меню создано без опции RELATIVE, то включе ие в команду DEFINE BAR предложения BEFORE или AFTER вызовет ошибку.

Выполните следующие два примера программ и сравните порядок размещения элеме тов в каждом меню.

*** 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 или по ьзовательском окне.

SHADOW

Допустимо только в FoxPro для MS-DOS.

Делает затенение позади меню. Чтобы отобразить или убрать затенение меню, мож о использовать команду SET SHADOWS. Подробнее об этом см. тему SET SHADOWS.

TITLE cMenuTitleText

Отображает заголовок в центре верхней границы меню. cTitleText задает текст заголовка меню.

COLOR SCHEME nSchemeNumber

Задает цвета для всех элементов меню. По умолчанию цвета меню, создаваемого с помощью команды DEFINE POPUP, контролируются цветовой схемой 2.

COLOR ColorPairList

Задает цвета для всех элементов меню.

Подробнее о цветовых схемах и цветовых парах см. тему Использование цветов.

Комментарии

Чтобы задать положение группы элементов меню, используйте несколько команд DEFINE BAR. Для вставки в меню записей, файлов или полей пользуйтесь опциями PROMPT FIELD, PROMPT FILES и PROMPT STRUCTURE команды DEFINE POPUP.

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

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



Новое на сайте

  • Обновлен портфель программиста

    Добавлены: Установка HTML Help (Создание справочной системы), Imagedit.zip - Графический редактор ( ico и bmp), Библиотека локализации HTML Help (Русский)
  • Новые примеры программ

    Установка библиотек, Игровая программа "Охота на лис", Установка библиотек "Охота на лис", plastic -"Платежки", Библиотеки (на FPD26), platan -"Платежки" (на Clipper 5.2)
  • Обновленна справка

    Подсказки, технология программирования и использование Visual FoxPro. Команды, функции, операторы, объекты, свойства, события и методы.