Новости



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

Команда DEFINE BAR

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

Создает элемент в меню, определенном с помощью команды DEFINE POPUP.

Синтаксис

DEFINE BAR nMenuItemNumber1 | SystemItemName
OF MenuName PROMPT cMenuItemText
[BEFORE nMenuItemNumber2 | AFTER nMenuItemNumber3]
[FONT cFontName [, nFontSize]]
[STYLE cFontStyle]
[KEY KeyLabel [, cKeyText]]
[MARK cMarkCharacter]
[MESSAGE cMessageText]
[SKIP [FOR lExpression]]
[COLOR SCHEME nSchemeNumber
| COLOR ColorPairList]

Параметры

nMenuItemNumber1

Задает номер элемента меню. По этому номеру на данный элемент меню можно ссы аться в других командах и функциях.

SystemItemName

Задает элемент системного меню Visual FoxPro. Например, чтобы получить доступ к элементу меню Print, выдайте следующую команду:

DEFINE BAR _MFI_PRINT OF popMyPopup PROMPT "Print..."

Не все элементы системных меню Visual FoxPro являются доступными. Получить список имен доступных системных меню Visual FoxPro можно с помощью функции SYS(2013).

OF MenuName

Задает имя меню, в которое будут включены элементы меню.

PROMPT cMenuItemText

Задает текст названия элемента меню.

Вы можете создать строку-разделитель, задав в качестве cMenuItemText обратную косую черту с дефисом (\-). Строка-разделитель применяется для отде ения друг от друга различных групп элементов в меню. Например, если включить в определение меню приведенную ниже команду, то она создаст между третьим и пятым элементами меню строку-разделитель:

DEFINE BAR 4 OF popMyPopup PROMPT '\-'

Вы можете создать для элемента меню клавишу доступа, поставив перед нужным символом обратную косую черту со знаком "меньше" (\<). Например:

DEFINE POPUP popReceive

DEFINE BAR 1 OF popReceive PROMPT '\<Invoices'

DEFINE BAR 2 OF popReceive PROMPT 'In\<quiry'

ACTIVATE POPUP popReceive

Нажав клавишу I, пользователь сможет выбрать команду Invoices из меню Receive; нажав клавишу Q, он выберет команду Inquiry из того же меню.

BEFORE nMenuItemNumber2

Помещает данный элемент меню перед элементом с номером nMenuItemNumber2.

AFTER nMenuItemNumber3

Помещает данный элемент меню после элемента с номером nMenuItemNumber3.

Замечание Чтобы опции BEFORE и AFTER действовали, необходимо при создании меню с помощью команды DEFINE POPUP включить предложение RELATIVE.

В предложениях BEFORE и AFTER также можно задавать значения _MFIRST и _MLAST. Если в предложении BEFORE задано _MFIRST, данный элемент будет первым элементом в меню. Если _MFIRST задано в предложении AFTER, данный элемент будет вторым в меню. Если в предложении AFTER задано значение _MLAST, данный элемент будет последним элементом меню. Если _MLAST задано в предложении BEFORE, данный элемент будет предпоследним в меню.

Меню, создаваемые по команде DEFINE POPUP RELATIVE, не резервируют место для еопределенных элементов меню. Например, если вы определили в меню элементы 1, 2, 4 и 5, место для элемента 3 не резервируется. Вы можете вставить элемент 3 позднее; меню соответствующим образом расширится.

Выполните программы, приведенные ниже в качестве примеров, и обратите внимание на различия в порядке и местоположении элементов каждого из меню:

*** 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,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 popRelatNo

FONT cFontName [, nFontSize]

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

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

DEFINE BAR 1 OF popReceive PROMPT '\<Invoices' FONT 'Courier', 12

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

STYLE cFontStyle

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

Задает стиль шрифта для элемента меню. Если предложение 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 BAR 1 OF popReceive PROMPT '\<Invoices' STYLE 'BI'

KEY KeyLabel [, cKeyText]

Задает клавишу доступа или комбинацию клавиш для элемента меню. Чтобы выбрать такой элемент меню, необязательно активизировать само меню, в отличие от ситуации, когда вы назначаете клавишу доступа с помощью обратной косой черты и знака "меньше" (\<). Список доступных клавиш и комбинаций клавиш вместе с их назва иями см. в теме ON KEY LABEL.

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

Задав cKeyText, вы можете заменить название клавиши собственным текстом. Например, если за ать KEY Ctrl+B, то в меню справа от имени данного элемента будет стоять текст Ctrl+B. Если задать KEY Ctrl+B, "^B", то в меню будет стоять ^B. Чтобы отменить отображение названия клавиши, задайте в качестве cKeyText пустую строку.

MARK cMarkCharacter

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

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

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

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

Символы маркировки, заданные в команде 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 BAR OFF, сообщение располагается в центре последней строки главного окна Visual FoxPro.

SKIP [FOR lExpression]

Задает условие доступности элемента меню: если выражение lExpression имеет значение "истина" (.T.), элемент меню недоступен и пользователь не может выбирать его, а если выражение имеет значение "ложь" (.F.), элемент меню оступен. Недоступный элемент меню отображается определенными для данного состояния цветами.

Вы также можете сделать элемент недоступным, поставив перед его названием об атную косую черту (\). Например:

DEFINE BAR 1 OF popReceive PROMPT '\Invoices'

В Visual FoxPro, FoxPro для Windows и FoxPro для MS-DOS нельзя выделить элеме т меню, сделанный недоступным с помощью предложения SKIP или символа \. В FoxPro для Macintosh недоступный элемент меню можно выделить, но нельзя выбрать. При выделении недоступного элемента меню на экране появляется соответствующее ему сообщение.

В FoxPro для Windows меню, созданные с использованием выражений SKIP FOR, могут неадекватно функционировать, когда активно средство проверки орфографии или п ограмма-мастер.

Выражения SKIP FOR обычно зависят от значений определенных переменных (перемен ых пропуска), но эти переменные невидимы для ваших меню при работе программы п оверки орфографии или программ-мастеров. В код инициализации этих приложений (соответственно SPELLCHK.APP и GENGRAPH.APP) специально включена команда PRIVATE ALL. В результате этого переменные пропуска будут скрыты от пользовательских меню и при выборе такого меню будет возникать сообщение об ошибке.

Чтобы исправить подобную ситуацию, в начало приложений проверки орфографии и п ограмм-мастеров вставляется следующий код:

IF TYPE("_memvarmask") = "C" and !EMPTY(_memvarmask)

PRIVATE ALL EXCEPT &_memvarmask

ELSE

PRIVATE ALL

ENDIF

Предположим, вам необходимо пропустить некоторый элемент меню, когда перемен ая памяти "skipvar" имеет значение "истина". Чтобы воспользоваться переменной _MEMVARMASK, в код настройки вашего меню нужно включить следующие строки:

PUBLIC _memvarmask

_memvarmask = "skipvar"

STORE .T. TO skipvar && Skip initially.

Чтобы создать набор переменных пропуска, включите в код настройки меню сле ующие строки:

PUBLIC _memvarmask

_memvarmask = "skip*"

STORE .T. TO skipthis, skipthat && Skip initially.

При запуске программы проверки орфографии и программы-мастера они не будут скр вать переменные в выражениях SKIP FOR, что позволит избежать появления сообще ий об ошибках.

Следует отметить, что _MEMVARMASK не является системной переменной памяти.

COLOR SCHEME nSchemeNumber

Задает цвета для отдельного элемента меню, отменяя цвета, принятые по умолча ию или заданные с помощью команды DEFINE POPUP. В FoxPro для MS-DOS можно задать цвета для всех элементов меню, символов маркировки и сообщений.

COLOR ColorPairList

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

По умолчанию цвета элементов меню определяются цветовой схемой 2 текущего цветового набора.

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

Комментарии

Команда DEFINE BAR используется совместно с командой DEFINE POPUP для создания меню. Меню создается и получает имя с помощью команды DEFINE POPUP. Чтобы поместить элементы в меню, нужно выдать серию команд DEFINE BAR.

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

Вы также можете создать меню, содержащее записи или поля из таблицы или список имеющихся на диске файлов. Подробнее см. описание предложений PROMPT FIELD, PROMPT STRUCTURE и PROMPT FILES команды DEFINE POPUP.

Чтобы создать для некоторого элемента меню ниспадающее подменю, воспользуйтесь командой ON BAR.



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

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

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

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

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