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

2.4.20. Организация меню

2.4.20.1. Общий порядок создания и использования меню

В общем случае для создания меню и работы с ним необходимо предусмотреть следующие элементы:

  1. Определение меню. Определение меню может быть сделано один раз в начале программы и далее только использоваться.

  2. Активизация меню. Команды/клавиши активизации выводят меню на экран и делают его чувствительным к выбору пользователя.

  3. Деактивизация меню удаляет его с экрана, сохраняя в памяти для следующего возможного использования.

  4. Удаление меню. Это действие очищает память от определения меню, и более оно не может быть использовано без нового определения.

Меню имеет два типа элементарных меню: вертикальное (“всплывающее“, или Popup-меню) и горизонтальное (Bar-меню).

На их основе можно строить иерархические меню практически любой вложенности.

Основные термины

Bar-меню - это обычно горизонтальное меню (Bar - по-английски “линей­ка”). Такое меню имеет имя и состоит из конкретных элементов, пунктов, которые будем называть Pad-пунктами. Каждый Pad-пункт также имеет имя и видимую на экране строку-приглашение.

Popup-меню - это прямоугольное меню, строки-элементы которого будем называть Bar-пунктами (Bar‑строками). Popup-меню имеет имя, а его видимое содер­жа­ние на экране (Ваr-строки) будет зависеть от типа Popup-меню. Bar и Popup - меню могут использоваться отдельно и совместно.

Рассмотрим некоторые общие для них опции, с тем чтобы не останавливаться на них дальше:

Message <ВырC> - возможное дополнительное сообщение к меню, воз­ни­каю­щее в центре нижней строки, или в строке, указанной командой Set Message.

Key <имя клавиши>[,<ВырC>] - указывает <имя клавиши>, которая может быть использована для вызова меню (клавиша прямого вызова) и ее изображения в виде значения <вырС>.

Mark <ВырC> - устанавливает символ, который будет показан слева от выбранного пункта меню. По умолчанию это ромб (ASCII-код 4).

Skip [For <ВырL>] - пункт меню показывается на экране приглушенным цветом, и его выбор невозможен. Пункт меню будет доступен только при <BырL>=.F..

Nowait - эта опция может включаться в команды активизации меню. Меню, активизированное таким образом, не останавливает выполнения программы, которое продолжается со следующей команды. Использование этой возможности целесообразно, если ниже имеются объекты, создающие состояние ожидания, например Browse-окна. Обычно такое меню создается для их “обслуживания”.

2.4.20.2. Вертикальное Popup-меню

Определение меню.

Define Popup <рорuр-меню> [Shortcut]

[From <Y1>,<X1>] [To <Y2>,<X2>]

[Prompt {Field <Выр> | Files [Like <маска>] | Structure}]

[Footer <ВырC1>] [Key <имя клавиши>]

[Margin] [Mark <ВырC2>]

[Multi] [Message <ВырC3>]

[Scroll] [Title <ВырC4>] Здесь:

<Рорuр-меню> - имя Popup-меню.

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

From <Y1,X1> То <Y2,X2> - координаты левого верхнего и правого нижнего углов Popup-меню на экране. Если параметры Y2, Х2 не заданы, то ширина меню будет определена по максимальному элементу, а высота - во весь экран или по числу элементов меню (если их меньше). Если отсутствуют первые координаты меню, то Y1=0 и Х1=0, или же оно располагается непосредственно под соответствующим PAD-пунктом более старшего BAR-меню (если есть).

Prompt Field <Выр> - элементами меню будут записи из открытой таблицы, содержащие заданное поле-выражение.

Prompt Files [Like <маска>] - элементами будут названия файлов, возможно, ограниченные <маской>.

Prompt Structure - в качестве элементов меню будет предъявлена структура открытой таблицы.

Footer <ВырС1> и Title <ВырС4> - подножие и заголовок меню, располагаемые в центре нижней и верхней границ области меню.

Multi - устанавливает режим множественного отбора из меню.

Margin - устанавливает пробелы справа и слева от приглашений меню.

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

Следующая команда описывает Bar-пункты Popup-меню, которая используется после команды Define Popup.

Define Bar <ВырN1> Of <Рорuр-меню> Prompt <ВырС1>

[Key <имя клавиши> [,<ВырС2>]] [Mark <ВырС3>]

[Мessage <ВырС4>] [Skip [For <ВырL>]]

Здесь:

Define Bar <BыpN1> - номер описываемого в команде Bar-пункта меню.

Of <Рорuр-Меню> - имя Popup-меню, которому принадлежит этот пункт.

Prompt <ВырC1> - содержание Bar-пункта на экране.

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

Следующие команды указывают, что произойдет, если выбор в меню сделан.

On Selection Popup <Popup-меню>/All <команда>

Здесь задается имя Popup-меню, выбор из которого фиксируется, а также <команда>, которая выполняется при нажатии клавиши Enter; обычно это команда Do, вызывающая процедуру. Такая процедура после своего завершения снова возвращает управление на Popup-меню, если, конечно, в ней не встретилась команда Deactivate Popup, которая обеспечит выход из Popup-меню на команду, следующую за командой Activate Popup.

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

Следующие команды при необходимости позволяют назначить пунктам Popup-меню индивидуальные реакции (команды, процедуры, другие меню).

On Selection Bar <BырN> Of <Рорuр-меню> <команда>

Назначает <команду> (обычно вызов процедуры) на пункт под номером <ВырN> из названного <Рорuр-меню>. Назначение должно быть сделано после определения <Рорuр-меню>, но до его активизации. Использование команд без параметра <команда> отменяет закрепление.

On Bar <ВырN> Of <рорuр-меню1>

[Activate Popup <рорuр- меню2>/Асtivаtе Menu <ваr-меню>]

Эта команда назначает вызов другого Popup/Bar-меню. Использование команды без параметра (вызова) отменяет закрепление.

Активизация меню

Activate Popup <вертикальное меню> [At <ряд>, <колонка>]

[Bar <ВырN>] [Nowait] [Rest]

<вертикальное меню> - имя активизируемого вертикального меню.

At <ряд>, <колонка> - определяет координаты экрана или окна для вывода активизируемого вертикального меню. Координаты, заданные в этой ко­ман­де, имеют преимущество над координатами, указанными во фразе From команды Define Popup.

Bar <ВырN> - определяет номер текущей опции вертикального меню при его выводе.

Rest - устанавливает начальную опцию вертикального меню в соот­ветствии с текущим положением указателя записи в таблице.

Функции выбора из меню

Bar( ) - возвращает номер опции, выбранной из вертикального меню или ноль, если нет активного вертикального меню или если была нажата клавиша Esc.

Popup( ) - возвращает прописными буквами имя активного вертикального меню.

Prompt( ) - возвращает текст опции, выбранной из активного верти­каль­но­го или горизонтального меню.

Cntbar(<ВырС>) - число строк в меню.

Mrkbar(<ВырС>, <ВырN>) - возвращает логическую истину, если опция вертикального меню помечена.

<ВырC> - имя вертикального меню, <ВырN> - номер проверяемой опции.

Отключение меню

Deactivate Popup - активное вертикальное меню деактивизируется и уда­ля­ет­ся с экрана, но не из памяти. В каждый момент времени может быть ак­тивным только одно вертикальное меню, поэтому нет необхо­ди­­мости указывать в команде имя меню. Меню может быть акти­ви­зировано вновь с помощью команды Activate Popup с указанием имени меню.

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

Release Popups [<список Рорuр-меню> [Extended]] - удаляет пере­чис­лен­ные деактивизированные меню с экрана и из памяти. Если список опущен, то удаляются все меню. Параметр Extended вызовет удаление не только перечисленных Popup-меню, но и всех подчиненных им вспомогательных меню.

Release Bar <BырN>/All Of <Рорuр-меню> - команда удаляет перечис­лен­­ные Bar-пункты из Popup-меню. Можно удалить все Bar-пункты (All).

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