Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-03-15.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
12.65 Mб
Скачать

2.4.20.3. Горизонтальное Bar-меню

Define Menu <имя меню> [Bar [At Line <ВырN1>]]

[Key <метка клавиши>] [Mark <ВырC1>] [Message <ВырC2>]

Вar [At Line <ВырN1>] - создается горизонтальное меню, аналогич­ное системному горизонтальному меню. Строка экрана или окна, где раз­­мещается горизонтальное меню, задается опцией At Line команды Bar.

<ВырN1> - номер строки, где будет высвечиваться горизонтальное меню.

Каждый Pad-пункт горизонтального меню описывается командой:

Define Pad <имя Pad-элемента меню> Of <имя Ваr-меню>

Prompt <ВырC1> [At<Y,X>] [Message <ВырC2>][Mark<ВырC3>]

[Key <имя клавиши>[,<ВырC4>]] [Skip [For <BырL>]]

Команда дает имя Раd-элементу меню, указывает на его принадлежность какому-то Bar-меню, определяет его отображение (ВырС1) и место (Y,X) на экране. Если параметр At опущен, все Pad-эле­мен­ты меню будут располагаться в нулевой строке экрана слева направо.

Системное меню имеет имя “_Msysmenu”. Это меню имеет сле­дую­щие особенности:

  1. Оно постоянно находится на месте меню FoxPro и убирается командой Set Sysmenu To Default, которая восстанавливает меню FoxPro. Поэтому следует предусмотреть пункт меню с этой командой для окон­ча­ния работы с таким меню.

  2. При окончании работы выбранного пункта меню вновь появ­ля­ет­ся, но без фиксации ранее выбранного пункта, что не очень удобно.

  3. При перемещении мышки подменю автоматически раскрываются, а пункты выделяются, что ускоряет работу с меню.

  4. Можно вызывать из меню несколько пунктов, загружая и выпол­няя одновременно несколько программ.

  5. Все новшества Windows по работе с меню немедленно проявятся при работе с этим меню.

  6. Только меню такого типа и типа Shortcut формируются генерато­ром меню FoxPro. Если пользователя это не устраивает, то приходится корректировать исходный текст сгенерированной программы.

Определение реакций меню

Следующая команда при любом выборе из Bar-меню реализует указанную <команду>: On Selection Menu <Ваr-меню> [<команда>]

Если параметр <команда> опущен, то назначение отменяется.

Команда On Selection Pad <Pad-пункт> Of <Ваr-меню> [<команда>] позволяет делать индивидуальные назначения команд на каждый <Pad-пункт> из <Ваr-меню>. Обычно это <команды> Do.

Команда On Pad назначает на <Раd-пункт меню> из главного горизонтального <Ваr-меню> дополнительное меню следующего уровня <Рорuр-меню>/<Ваr-меню>:

On Pad <Pad-Пункт> Of <Ваr-Меню>

[Activate Popup <Рорuр-Меню> /Activate Menu <Ваr-меню1>]

Теперь, если вы выбираете пункт из горизонтального Bar-меню, будет автоматически отображаться и соответствующее вспомогательное Popup/Bar-меню. Такое меню должно быть определено ранее командой Define Popup/Menu.

Вместо команды On Pad можно использовать и команду On Selection Pad, но при этом вспомогательное Popup-меню будет появляться не автоматически, а при нажатии клавиши Enter/Space.

Для передачи в процедуры параметров могут использоваться следующие функции:

Menu( ) - возвращает имя активного Bar-меню;

Pad( ) - возвращает имя Pad-пункта, выбранного в Bar-меню;

Prompt( ) - возвращает строку-приглашение, содержащуюся в Pad-элементе, выбранном в Bar-меню;

Mrkpad<Bar-меню>,<Pad-пункт> - возвращает значение .Т., если <Раd-элемент> в <Ваr-меню> помечен, и .F. - если нет.

Следующие команды деактивизируют/удаляют меню

Deactivate Menu - удаление активного Bar-меню с экрана (но не из памяти), переход на команду, следующую за Activate Menu.

Release Menus <Список Ваr-Меню> [Extended]] - удаление всех или перечисленных неактивных Bar-меню с экрана и из памяти, включая и все подчиненные меню (если указана опция Extended).

Clear Menus - удаление неактивных меню с экрана и из памяти.

Release Pad <Pad-пyнкт>/All Of <имя Ваr-меню> - удаляет ука­зан­ный Pad-пункт Bar-меню из памяти и с экрана/окна. Можно удалить (All) и все Pad-пункты меню (кроме системного меню). Включение опции Extended удаляет также и все подчиненные меню следующего уровня.

Hide Menu <список Bar-Меню>/All [Save] - удаляет указанные или все (All) горизонтальные меню с экрана/окна, но не из памяти. Такое меню может быть восстановлено с помощью команд Activate/Show Menu. Образ меню остается на экране, если указана опция Save. Очистить экран можно командой Clear.

Любое меню можно покинуть, нажав клавишу Escape или ис­поль­зовав команду Deactivate. В этих случаях управление передается на команду, следующей за командой Activate. Команда Deactivate прекращает процедуру, в которой она находится.