Новости



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

Команда DEFINE PAD

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

Создает заголовок меню в пользовательской строке меню или в системной строке меню Visual FoxPro.

Синтаксис

DEFINE PAD MenuTitle1 OF MenuBarName PROMPT cMenuTitleText
[AT nRow, nColumn]
[BEFORE MenuName2 | AFTER MenuName3]
[NEGOTIATE LEFT | NEGOTIATE MIDDLE | NEGOTIATE RIGHT]
[FONT cFontName [, nFontSize]]
[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.

Если строка меню создана с помощью предложения BAR, то предложения 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 LEFT | NEGOTIATE MIDDLE | NEGOTIATE RIGHT

Задает положение заголовка меню в строке меню Visual FoxPro, когда осуществ яется визуальное редактирование OLE.

NEGOTIATE LEFT указывает, что заголовок меню помещается слева от File Group.

NEGOTIATE MIDDLE указывает, что заголовок меню помещается слева от Container Group после меню Edit.

NEGOTIATE RIGHT указывает, что заголовок меню помещается слева от Window Group.

Если предложение NEGOTIATE опущено, заголовок меню во время визуального ре актирования OLE убирается из строки меню.

FONT cFontName [, nFontSize]

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

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

DEFINE PAD padPageAccts OF mnuReceive FONT 'Courier', 12

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

Предложение FONT игнорируется для заголовков меню, добавленных в системное ме ю Visual FoxPro _MSYSMENU. Заметьте, что это системное меню 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 PAD padPageAccts OF mnuReceive STYLE 'BI'

Предложение STYLE игнорируется для заголовков меню, добавленных в системное ме ю Visual FoxPro _MSYSMENU. Заметьте, что это системное меню Visual FoxPro испо ьзуется в конструкторе меню.

KEY KeyLabel [, cKeyText]

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

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

В строках меню, созданных без участия предложения BAR, название клавиши ставится правее заголовка меню. В строках меню, созданных с помощью предложения BAR, и в системной строке меню Visual FoxPro названия клавиш для заголовков меню не отображаются.

Задав cKeyText, вы можете заменить название клавиши собственным текстом. Например, если за ать KEY ALT+B, то справа от заголовка меню будет стоять текст ALT+B. Если задать KEY ALT+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.

Символы маркировки, заданные в команде 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 будет изображен в тусклых тонах, указывающих на то, что пользоватейь не может его выбрать.

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

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

В 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 не является системной переменной памяти.

MESSAGE cMessageText

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

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

COLOR SCHEME nSchemeNumber

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

COLOR ColorPairList

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

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

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

Комментарии

Каждый заголовок меню, вставляемый в строку меню, должен быть создан с помощью отдельной команды DEFINE PAD. Строка меню должна быть определена с помощью команды DEFINE MENU до того, как вы начнете помещать в нее заголовки меню, и имя той строки меню следует указать в команде DEFINE PAD.

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

Замечание В FoxPro для Macintosh не следует вставлять в строку меню больше заголовков меню, чем помещается вдоль экрана. Вы можете формировать заголовки меню правее заголовка Balloon Help, но все они будут недоступны.



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

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

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

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

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