|
READ MENU BAR ТО <nep.l>, <пер.2> [SAVE]
Назначение опций:
<пер.1> — целочисленная переменная, в которую записывается номер выбранного пункта главного меню.
<пер.2> — целочисленная переменная, в которую записывается номер выбранного пункта вспомогательного меню.
SAVE — сохраняет на экране образ меню, после выхода из него. В этом случае удалить с экрана образ меню можно только командой CLEAR.
При нажатии клавиши Esc обе переменные <пер.1> и <пер.2> получают значение 0 (ноль).
При создании двухуровневого FOX-меню команды следует располагать в следующем порядке:
а) Описываются и заполняются данными массивы главного и всех вспомогательных меню.
б) Описывается главное меню командой MENU BAR...
в) Описываются все вспомогательные меню с помощью комавд MENU...
г) В нужных местах программы указываются команды READ MENU BAR... для активации всей конструкции меню.
д) После каждой команды READ MENU BAR... пишется обработчик выбора пункта меню, как правило, с помощью оператора DO CASE... ENDCASE.
8.2. МЕНЮ ТИПА dBASE
При создании и эксплуатации данного меню должны быть предусмотрены следующие элементы:
• определение меню — описывается содержание меню, клавиши быстрого доступа, форма и реакции меню. Меню типа dBASE определяется один раз;
• активация меню — команды (клавиши быстрого доступа) активации выводят меню на экран и делают его чувствительным к выбору пользователя;
• деактивация меню — меню удаляется с экрана, но остается в оперативной памяти, и впоследствии может быть предъявлено на экран;
• удаление меню — меню удаляется из оперативной памяти. Для нового использования меню его надо заново определять.
Меню типа dBASE бывает двух видов: вертикальное (POPUP) и горизонтальное (BAR). Эти два вида меню могут использоваться как совместно, так и по отдельности. Допускается создание иерархических меню любой сложности.
8.2.1. Вертикальное POPUP-меню
Меню предъявляется на экран в указанном месте в виде прямоугольной области заданного размера. В качестве пунктов меню можно задать либо имена файлов из указанного каталога, либо структуру табличного файла, либо произвольные строки.
8.2.1.1. Команда определения меню
DEFINE POPLP <имяменю>
[FROM <Y1,XI> J I ТО <Y2,X2>]
[IN [WINDOW] <нмнокиа> | IN SCREEN]
[FOOTER <выр.С1>]
[KEY <имяклавишн>]
[ MARGIN ]
[ MARK <выр.С2> ]
[ MESSAGE <выр.СЗ> ]
[MOVER]
[ MULTI ]
[PROMPT FIELD <выр.>] | [PROMPT FILES LIKE <шаблон>]]
| [ PROMPT STRUCTURE 1
[SCROLL] [ SHADOW ]
[ TITLE <выр.С4> 1
[ COLOR <сннсок пар цветов> | СО! OR SCHEME <ewp.N> J
Назначение опций:
<нмя меню> — содержит имя создаваемого меню. Программист задает имя меню буквами латинского апфавита.
FROM <Y1,X1> ТО <Y2, Х2> — определяет положение и размер меню на экране. <Y1,X1> задает координаты левого верхнего угла меню (номер строки и номер столбца соответственно). <Y2, Х2> задаст координаты правого нижнего угла меню (номер строки и номер столбца соответственно). Если <Y2, Х2> не указаны. то ширина меню определяется размером максимального имени пункта меню, а длина меню — либо количеством пунктов меню, либо — весь экран. Если <YL, XI> не указаны, то правый верхний угол меню помещается либо в левый верхний угол экрана (координаты 0, 0), либо под соответствующим пунктом вызвавшего (старшего) меню.
IN [WINDOW] <нмяокна> — определяет имя окна, внутри которого будет открыто создаваемое меню.
IN SCREEN — создаваемое меню будет открыто на экране. FOOTER <выр.С1> — название (заголовок) меню пишется в центре нижней области меню.
KEY <нмя клавиши> — указывается имя клавиши, которая будет вызывать меню.
MARGIN — задает по одному пробелу слева и справа от имени пункта меню В этих пробелах, в случае необходимости, будут располагаться специальные символы: слева — символ множественного отбора пунктов меню, справа — символ наличия подчиненного (младшего) меню.
MARK <выр.С2> — устанавливает тип (вид) символа множественного отбора пунктов меню. По умолчанию принят символ ♦, код которого по таблице ASCII — 4.
MESSAGE <выр.СЗ> — дополнительное сообщение (комментарий), которое выводится либо в последнюю строку экрана, либо в строку, которая задана командой SET MESSAGE.
MOVER — предоставляет возможность перемешать на экране пункты меню внутри области меню с помощью мыши.
MULTI — устанавливает режим множественного отбора пунктов меню. Множественный отбор выполняется при зажатой клавише Shift. Этот режим не работает, если используется одна из опций PROMPT FIELDS | PROMPT FILES | PROMPT STRUCTURE. PROMPT FIELD <выр> — пунктами меню будут значения поля (или полей), указанного в <выр.>. Если в <выр> надоуказатьнс- сколько полей, то их имена перечисляются через знак «+» (плюс). Имена полей можно указывать как из активной таблицы, гак и из пассивных таблиц. Если значения полей имеют разный тип, то в <выр.> допускается использование функций, с целью приведения значений полей к одному типу, как правило, символьному. При использовании этой опции нет возможности организовать множе- ствсшшй отбор пунктов меню. Если необходимо организовать множественный отбор, то процедуру множественного отбора надо программировать отдельно (см. примеры в конце раздела).
PROMPT FILES LIKE <шаблон> — задает в качестве пунктов меню имена файлов из текущего каталога. С помощью <шаблона> можно ограничить количество имен файлов. PROMPT STRUCTURE — задаст в качестве пунктов меню структуру активной таблицы.
SCROLL — автоматически подключает полосу прокрутки, если пункты меню не умещаются в отведенной области.
SHADOW — обрамляет область меню «тенью».
TITLE <выр.С4> — заголовок меню пишется в центре верхней области меню.
COLOR <список пар пветов> | COLOR SCHEME <выр.М> — устанавливает цвет элементов меню либо указанием конкретной пары цветов (цвет фона и цвет букв), либо указывается номер схемы. По умолчанию установлена схема 2.
8.2.1.2. Команда описания пункта меню
DEFINE BAR <eup.Nl> OF <имя POPUP мсию> PROMPT <»ыр.С1> [ KEY <имя клавиши> [, <выр.С2> ] ]
[ BEFORF <Bup.N2> | AFTER <Bup.N3> ]
[ MARK <выр.СЗ> ]
[MESSAGE <выр.С4>]
[ SKIP [ FOR <Bup.L> ] 1
[ COLOR <список пар цвстов> | COLOR SCHEME <Bbip.N4> ]
Команда задает название пункту меню, закрепляет за пунктом меню клавишу быстрого выбора и управляет активностью пункта меню. Назначение опций:
<выр.1\1> — задаст номер описываемого пункта меню.
<имя POPUP меию> — определяет, какому меню принадлежит описываемый пункт.
<выр.С1> — определяет название описываемого пункта меню.
KEY <иля клавиши>, <выр.С2> — назначает клавишу быстрого выбора пункта меню и комментарий (<выр.С2>) к пункту меню.
BEFORE <Bbip.N2> — назначает порядок вывода на экран пунктов меню по возрастанию их номеров, начиная с номера <BUp.N2>.
AFTER <Bbip.N3> — назначает порядок вывода на экран пунктов меню по убыванию их номеров, начиная с номера <Bbip.N3>. MARK <выр.СЗ> — устанавливает тип (вид) символа множественного отбора пункта меню. По умолчанию принят символ ♦, код которого по таблице ASCII — 4. Если символ множественного отбора определен в команде DEFINE РО PUP, то здесь производится переопределение символа множественного отбора.
MESSAGE <выр.С4> —дополнительное сообщение (комментарий), которое выводится либо в последнюю строку экрана, либо в строку, которая задана командой SETT MESSAGE.
SKIP FOR <выр.Е> — делает пункт меню недоступным для выбора пользователя. Если указан параметр FOR <выр.1>, то пункт мешо будет доступен для выбора при истинности логического условия <выр.Ь>.
COLOR <список пар цветов> | COLOR SCHEME <выр.М> —
устанавливает цвет элементов меню либо указанием конкретной пары цветов (цвет фона и цвет букв), либо указанием номера схемы. По умолчанию установлена схема 2.
8.2.1.3. Команда определения реакции на вызов меню ON SELECTION POPUP <нмя POPUP меню> | ALL [ <комавда> I
к |
При выборе указанного <имя POPUP мсню> меню, после нажатия клавиши Enter, выполняется (<команда> ], если она
определена. Если указана опция ALL, то указанная [ <коман- да> | выполняется для всех POPUP-меню. В параметре [ <команда> ] может быть указана любая команда, но чаще всего используется команда DO, которая вызывает на выполнение процедуру, созданную пользователем. Команда, указанная в параметре [ <команла> ], является общей для всего POPUP-меню. По окончании выполнения процедуры (или команды) управление опять передается POPUP-меню, при условии, что внутри процедуры не было команды DEACTIVATE POPUP. Далее можно выбрать любой пункт меню.
8.2.1.4. Команда определения реакции на вызов пункта меню
ON SELECTION BAR <Bwp.N> OF <нчя РОРиР-меню> [<команда>]
При выборе пункта меню с номером <выр.1Ч> изменю <имя POPUP мсию>, выполняется команда, определенная в [<ко- манда>]. Команда ON SELECTION BAR... пишется после команды DEFINE POPUP..., но до команды ACTIVATE POPUP... Если команда ON SELECTION BAR используется без параметра [<комакда>], то отменяется ранее сделанное закрепление.
8.2.1.5. Комацда закрепления подчиненного (младшего) меню
ON BAR <выр.1Ч> OF <имя РОР1/Р-менк>>
[ ACTIVATE POPUP <имя POPUP меню 2> |
ACTIVATE MENU <имя BAR меию> ]
Команда назначает вызов подчиненного (младшего) меню, закрепленного за пунктом <Bbip.N> меню <имя POPUP- меню>. Подчиненное (младшее) меню может быть как вертикальным ACTIVATE POPUP <имя POPUP-меню 2>, так и горизонтальным (ACTIVATE MENU <имя ВАИ-меню>).
Использование команды ON BAR без опции отменяет закрепление подчиненного меню. Если за пунктом текущего меню закреплен вызов подчиненного меню, то справа от названия пункта текущего меню автоматически устанавливается символ ►, место для которого надо предусмотреть с помощью опции MARGIN команды DEFINE POPUP...
8.2.1.6. Команда активации меню
ACTIVATE POPUP <имя POPUP мсшо>[АТ Y,X)
[ BAR <выр.1Ч> ]
[NOWAIT]
[REST]
Команда предъяшшет меню на экран и делает его доступным для выбора пользователя. Назначение опций:
AT Y, X — переопределяет координаты экрана (окна), куда помешается первый верхний угол меню. Эта опция имеет приоритет перед определением положения меню в команде DEFINE POPUP...
BAR <BbJp.N> — определяет номер текущего (активного) пункта меню, после вывода всего меню на экран.
NOWAIT — разрешает дальнейшее выполнение программы, не дожидаясь закрытия меню.
REST — определяет текущим пунктом меню текущую строку активной таблицы. По умолчанию это первая строка активной таблицы. Эта опция имеет смысл только в том случае, если в команде DEFINE POPUP указана опция PROMPT FIELD.
Для этих же целей предусмотрена и вторая команда:
SHOW POPUP <список имен POPUP Meiuo>]|ALL [SAVE]
Команда предъявляет на экран либо меню указанные в <спи- скс имен РОРиР-мсню>, либо все меню (ALL) Если указана опция SAVE, то после закрытия меню их образ остается на экране.
8.2.1.7. Команда деактивации меню
DEACTIVATE POPUP
Команда удаляет меню с экрана, но сохраняет его в оперативной памяти. Этот же результат получается при нажатии клавиши Esc или при переходе к другому POPUP-меню.
В любом случае управление передается следующей команде по ходу программы.
Если обработчиком выбранного пункта меню является специальная процедура, то последней выполняемой командой может быть:
• последняя команда процедуры;
• команда RETURN;
• команда DEACTIVATE POPUP.
Если вместо выбора пункта меню нажата клавиша Esc, то обращение к процедуре не производится.
8.2.1.8. Удаление всех POPUP-меню
CLEAR POPUPS
Команда удаляет с экрана и из оперативной памяти все POPUP-меню.
8.2.1.9. Удаление указанных POPUP-меню
RELEASE POPUPS [Cciihcok имен POPUP мсню> [ EXTENDED J]
Команда удаляет с экрана и из оперативной памяти меню, перечисленные в <списке имен РОРиР-меню>. Если указана опция EXTENDED, то удаляются не только все перечисленные меню, но и все подчиненные меню. Если опция Ссписок имен РОРиР-меню> не указана, то удаляются все POPUP-меню.
8.2.1.10. Удаление пунш меню
RELEASE [ BAR Ссписок имен пунктов РОРиР-меню> | ALL ] OF С нм я РОРиР-меню>
Команда удаляет с экрана и из оперативной памяти либо указанные, либо все пункты POPUP-меню. Имя меню задается в опции OF Симя РОРиР-меню>.
8.2.1.11. Удаление меню с экрана
HIDE POPUP Ссписок имен POPUP-Memo> |.ALL [ SAVE J
Команда удаляет с экрана либо перечисленные в Сспискс имен РОРиР-меню>, либо все (ALL) POPUP-меню, но сохраняет их в оперативной памяти. Эта команда идентична команде
DEACTIVATE POPUP. Опция SAVE сохраняет на экране образ меню, хотя само меню с экрана удалено.
8.2.1.12. Перемещение меню по экрану
MOVE POPUP <имя РОРиР-ченю> ТО Y, X | BY <выр.М1>, <Bbip.N2>
Команда перемешает активное POPUP-меню в новое положение на экране. Новое положение задается либо абсолютными координатами (Y, X), либо относительными координатами (<выр.Ы1>, <Ubip.N2>).
Для работы с вертикальным POPUP-меню предусмотрены следующие функции:
BAR0 — фиксация выбора пункта меню. Функция возвращает номер выбранного пользователем пункта меню. Если никакое меню не выбрано (нажата клавиша Esc), то функция возвращает 0 (ноль). Номера пунктам меню присваиваются в команде DEFINE BAR...
POPUPO — получение имени активного POPUP-меню. Функция возвращает строчными (большими) буквами имя активного POPUP-меню.
PROMPT0 — получение названия (имени) пункта меню. Функция возвращает название (имя) пункта меню. Если в команде DEFINE POPUP была указана опция:
• PROMPT FIELD, то возвращается содержимое поля из текущей записи активной таблицы.
• PROMPT FILE, то возвращается полное имя файла;
• PROMPT STRUCTURE, то возвращается имя выбранного поля.
Если никакое меню не выбрано (нажата клавиша Esc), то возвращается пустая строка.
CNTBAR([ <имя РОРиР-меню> ]) — определение количества пунктов меню. Функция возвращает количество пунктов указанного POPUP-меню. Если параметр <имя РОРиР-меню> опущен, то функция возвращает количество пунктов активного меню.
MRKBAR(<iimh РОРиР-меню>, <выр. N>) — определение активного пункта меню. Функция возвращает логическое значение «истина» (.Т.), если пункт меню с номером <выр. N> является активным. В противном случае возвращается логическое значение «ложь» (.F.). Функция полезна при организации множественного отбора пунктов меню.
8.2.2. Горизонтальное BAR-меню
Как правило, горизонтальное меню располагается в первой строке экрана и на его основе строится главное меню программы. В общем случае горизонтальное меню может располагаться в любой строке экрана и даже замешать главное меню FoxPro.
Для создания горизонтального меню предусмотрены следующие команды.
8.2.2.1. Определение горизонтального меню
DEFINE \1ENU <имямсию>
(BAR [ AT LINE <выр.М> ] 1
JIN [WINDOW] <имяокна> | IN SCREEN]
[ KEY <имя клавнпт> [, <выр.С1>[ ]
[ MARK <выр.С2> ]
[MESSAGE <выр.СЗ>]
[ NOMARC IN ]
[ COLOR <снисок пар цвстов> | COLOR SCHEME <Bbip.N> 1
Назначение опций:
BAR — автоматически подключает полосу прокрутки, если строка меню не умещается на экране.
AT LINE <выр.Ы1> — задает номер строки экрана дтя вывода горизонтального меню.
IN [WINDOW] <ичяокна> — размещает описываемое горизонтальное меню в указанном окне.
IN SCREEN — размешает описываемое горизонтальное меню на экране.
KEY <имя клавиши> [, <выр.С1>] — назначает клавишу (или комбинацию клавиш) для активации горизонтального меню. При установке курсора на пункт меню выводится дополнительное сообщение <выр. С1> в строку состояния.
МАКК <выр.С2> — определяет символ множественного отбора пунктов меню.
MESSAGE <выр.СЗ> — выводит комментарий к выбранному пункту меню либо в строку состояния, либо в заранее указанную с помощью команды SET MESSAGE ТО... строку.
NOMARGIN — удаляет пробелы слева и справа от имени пунктов меню.
COLOR <список пар цветов> | COLOR SCHEME <Bbip.N> — определяет цвет фона и нвет букв пунктов меню.
8.2.2.2. Описание пунш горизонтального меню
DEFINE PAD <имя пункта меню> OF <имя BAR-4emo> PROMPT <выр.С1>
[ AT Y, X1
[ BEFORE <имя пункта мсшо> | AFTER <нмя пункта меыю> ]
[ KEY <имя клавишн> [, <выр. С2> ] ]
I MARK <выр.СЗ> 1 [ SKIP [ FOR <выр.1> ] |
[ MESSAGE <выр.С4> ]
[COLOR <список пар цветов> | COLOR SCHEME <eup.N> ]
Назначение опций:
<имя пункта меню> — определяет имя пункта меню. Имя пункта меню пишется буквами латинского алфавита. На имя пункта меню производятся ссылки при программном обращении к пункту' меню.
<имя BAR меню> — имя горизонтального меню, которому принадлежит описываемый пункт меню.
PROMPT <выр.С1> — определяет название пункта меню, которое выводится на экран.
AT Y,X — переопределяет расположение пункта меню на экране.
BEFORE <имя пункта меню> — задает порядок обхода пунктов меню по возрастанию, начиная с пункта <ичя пункта мсню>.
AFTER <имя пункта меню> — задает порядок обхода пунктов меню по убыванию, начиная с пункта <имя пункта меню>.
L |
KEY <имя клавиши> [, <выр. С2> 1 — назначает клавишу (или комбинацию клавиш) для активации пункта меню. При установ
ке курсора на пункт меню выводится дополнительное сообщение <выр. С2> в строку состояния.
MARK <выр.СЗ> — переопределяет символ множественного отбора пунктов меню.
SKIP [ FOR <выр.1> ] — делает пункт меню недоступным для выбора пользователя. Если указан параметр FOR <выр.Ь>, то пункт меню будет доступен для выбора при истинности логического условия <выр.Ь>.
MESSAGE <выр.С4> — выводит на экран дополнительное сообщение <выр.С4>.
COLOR <СШ1С0К пар цветов> | COLOR SCHEME <выр.ГМ> — определяет цвет фона и цвет букв пункта меню.
8.2.2.3. Команда активации меню
ACTIVATE MENU <имя BAR-MeuK>>
[ NOWAIT)
[ PAD <нчя пункта меню> ]
Команда выводит на экран горизонтальное меню и делает его доступным дтя выбора пользователя. Активация меню производится в любом месте программы, но после описания меню. Назначение опций:
NOWAIT — разрешает выполнение программы, не дожидаясь закрытия меню.
PAD <имя пункта меню> — определяет, какой пункт меню будет активен, после предьяатения меню на экран, то есть задает выбор по умолчанию.
Для этих же целей предусмотрена и вторая команда:
SHOW MENU <списокимси BAR-Meino> |ALL [PAD <имя пункта меню> ]
[SAVE)
Назначение опций:
PAD <имя пункта меню> — определяет, какой пункт меню будет активен, после предъявления меню на экран, то есть задает выбор по умолчанию.
SAVE — сохраняет на экране образ меню после его закрытия.
8.2.2.4. Реакция на вызов горизонтального меню
ON SELECTION MENU <ичя BAR-Me»im> [ <комацца>}
Команда определяет реакцию на вызов меню, то есть ставит на выполнение общую для всего меню команду или процедуру, которая определена в параметре <команда>. Если параметр <команда> опущен, то отменяется ранее назначенная <комаша>.
8.2.2.5. Реакция на выбор пункта меню
ON SELECTION PAD <имя пункта чсню> ОЕ <имя BAR-mciuo> [ <команда> J
Команда определяет для конкретного пункта меню <имя путпета меню>, принадлежащего меню <имя ВАЛ-меню>. команду или процедуру, которая определена в параметре <коман- да>, и ставит ее на выполнение.
8.2.2.6. Назначение подчиненного (младшего) меню
ON PAD <имя пункта меню> OF <имя ВАН-меню>
[ ACTIVATE POPUP <имя ГОРиР-меяю> |
ACTIVATE MENU <имя BAR-Meino> ]
Команда назначает путнету меню <имя пункта меню>, принадлежащего меню OF <имя ВАК-меню>, подчиненное меню: либо вертикальное (ACTIVATE POPUP <и.мя РОРиР-мсню>), либо горизонтальное (ACTIVATE MENU <имя BAR-MeHio>).
Вместо этой команды можно использовать команду ON SELECTION PAD но при этом подчиненное меню будет выводиться на экран при выполнении двух условий: курсор должен быть установлен на пункте горизонтального меню и должна быть нажата либо клавиша Enter, либо клавиша SpaceBar.
Для удаления связи по вызову подчиненного меню надо подать команду ON PAD без опций.
8.2.2J. Деактивация горизонтального меню
DEACTIVATE MENUS
Команда удаляет с экрана горизонтальное меню, но сохраняет его в оперативной памяти, и передает управление следующей команде программы.
8.2.2.8. Удаление всех горизонтальных меню CLEAR MENUS
Команда удаляет все меню с экрана и из оперативной памяти.
8.2.2.8. Удаление горизонтального меню
RELEASE MENUS I < список нмси BAR-mchio> [ EXTENDED J ]
Команда удаляет с экрана и из оперативной памяти перечисленные в <списке имен ВАЯ-меню> меню. Если указана опция EXTENDED, то одновременно удаляются и все подчиненные меню.
8.2.2.Э. Удаление пункта горизонтального меню
RELEASE PAD <имя пункта ченю> | ALL OF <нмя BAR-mcjdo>
Команда удаляет с экрана и из оперативной памяти указанный в <имени пункта мсню> пункт либо все (ALL) пункты меню из горизонтального меню, заданного в <имсни ВАИ-менюХ
8.2.2.10. Деактивация горизонтального меню
HIDE MENU <спнсок имев BAR-mchkj> | ALL [ SAVE J
Команда удаляет с экрана, но оставляет в оперативной памяти, либо указанные в <спискеимсн ВАК-меню> меню, либо все (ALL) меню. Если указана опция SAVE, то на экране остается образ удаленных меню.
Для работы с горизонтальным меню предусмотрены следующие функции.
MENUO — определение имена активного BAR-меню. Функция возвращает имя активного горизонтального меню.
PAD0 — определение имени выбранного пункта меню. Функция возвращает имя выбранного пользователем пункта меню. CNTPAD(<имя BAR-MeHK>>) — определение количества пунктов горизонтального меню. Функция возвращает количество пунктов указанного горизонтального меню.
MRKPAD(<имя BAR-Memo>, <ичя пупкта>) — определение имени выбранного (активного) пункта меню. Функция возвращает логическое значение «истина» (.Т.), если пункт, указанный в <имя пункта> из меню <имя BAR-mchk>>, выбран пользователем (активный пункт). В противном случае возвращается логическое значение «ложь» (.F.).
При создании двухуровневого меню надо выполнить следующие действия:
а) Описать главное горизонтальное меню командой DEFINE MENU...
б) Описать каждый пункт горизонтального меню командами DEFINE PAD...
в) Описать реакции на выбор пунктов (командами ON SELECTION PAD...) главного горизонтального меню, т. е. общую команду, выполняемую при выборе пункта меню.
г) Установить взаимосвязи между пунктами главного горизонтального меню и вызываемыми подчиненными меню с помощью команд ON PAD...
д) Далее описываются сами подчиненные меню: либо вертикальные — с помощью команд: DEFINE POPUP... и при необходимости с описанием каждого пункта меню, либо горизонтальные — с помощью команд DEFINE MENU... с описанием каждого пункта меню.
е) Активация всей конструкции меню командой ACTIVATE MENU... и деактивация меню командой DEACTIVATE MENU...
ж) Анализ выбора пользователя производится с помощью функций BAR(), POPUPO, PROMPTO, MENUO, PAD() и т. д.
Для создания динамических меню и управления отображением меню на экране можно использовать следующие команды:
SET SKIP OF MENU <имя горизонтального меню> <выр.1>
SET SKIP OF PAD <нчя пункта горизонтального меню> OF <нчя горизонтального менк>> <выр.Ь>
SET SKIP OF POPUP <нмя контекстного (всплывающего)меню> <выр.1>
SET SKIP OF BAR <Bup.N> | <имя пункта > OF <имя контекстного (всплывающего) мсюо> <выр.Ь>
Если логическое выражение <выр.Ц> истинно, то все меню (или пункт меню) доступно для выбора. В противном случае меню не доступно. В последней команде пункт меню можно задать либо его порядковым номером <Bbip.N>, либо его именем <имя пункта >. Контекстным меню называется вертикальное POPUP- меню, которое предъявляется в любом месте экрана, как правило, с помощью щелчка правой кнопкой мыши.
8.3. КЛАВИШНОЕ МЕНЮ
В отличие от светового меню, клавишное меню не имеет в своем составе каких-либо элементов управления расположенных на экране. Клавишное меню представляет собой набор одно- или двухклавишных команд. Иногда в последней строке экране размещают подсказку о назначении команд клавишного меню. Юга- вишнос меню предназначено для реализации простых и часто повторяющихся операций по обработке данных.
Команды клавишного меню устанавливают связь между программой и прерываниями от нажатия клавиш или для обработки возникших во время работы программы ошибок. Для создания клавишного меню используются следующие команды.
8.3.1. Фиксация возникновения ошибки во время выполнения программы
ON ERROR [<комаича>)
Команда осуществляет переход к выполнению <команды> при возникновении любой ошибки при выполнении программы.
8.3.2. Фиксация ошибок ввода
ON READERROR [<команда>]
При обнаружении ошибки ввода ставится на выполнение <команда>. Ошибка ввода возникает при вводе данных не соответствующего типа, при нарушении границ допустимых значений данных или при нарушении логических условий.
8.3.3. Фиксация нажатия клавиши Esc
ON ESCAPE [<комаыда>]
После нажатия клавиши Esc ставится на выполнение команда. указанная в параметре <команда>. Если ранее по тексту программы была установлена команда SET ESCAPE OFF, то команда ON ESCAPE... не выполняется.
8.3.4. Фиксация нажатия любой клавиши
ON KEY [<комаеда>]
После нажатия любой клавиши выполняется команда, указанная в параметре <команда>. Эта команда работает во всех режимах, кроме режима редактирования.
8.3.5. Фиксация нажатия клавиши с указанным кодом
ON KEY = <Bup.N> [<команда>]
После нажатия клавиши с кодом <выр.М> ставится на выполнение команда, указанная в параметре <команда>.
8.3.6. Фиксация нажатия клавиши с указанным именем
ON KEY [LABEL <имя клавнши>] [<команда>]
После нажатия клавиши с именем <имя клавиши> ставится на выполнение команда, указанная в параметре <командах Имя клавиши задается как строчными, так и прописными буквами. Клавиши, описанные этой командой, остаются активными во всех режимах работы. Нажатие такой клавиши в любой момент времени и в любом месте программы влечет за собой немедленное выполнение предусмотренной в параметре <команда> процедуры или команды. Поэтому при выполнении длительных вычислительных операций необходимо предусмотреть отмену команд ON KEY LABEL... и ON KEY =... теми же командами, но без опций или командой PUSH KEY CLEAR.
В командах ON KEY = и ON KEY LABEL... можно указать почти все клавиши и комбинации клавиш. В программе допускается использование только одной активной команды ON KEY =..., в то время как активных команд ON KEY LABEL...может быть несколько.
L |
Все ON-команды, кроме команды ON KEY LABEL..., работают до тех пор, пока не будет обнаружена следующая такая же
команда. Дня отмены действия любой О IS-команды надо подать ту же команду, но без опции.
Команды, фиксирующие возникновение ошибки, предназначены для подавления системных сообщений и выхода из аварийной ситуации с наименьшими потерями.
Чаше всего клавишные меню используются в режимах редактирования: BROWSE, EDIT, CHANGE и READ.
8.3.7. Сохранение клавишных назначений в оперативной памяти
PUSH KEY [CLEAR]
Команда сохраняет все сделаные назначения командами ON KEY LABEL... в специальной области оперативной памяти, которая называется стеком. Если указана опция CLEAR, то дополнительно прекращается действие клавишнььч назначений в работающей программе. При последовательном вызове команды PUSH KEY... в стек будет записано несколько отдельных групп клавишных назначений. Извлекаться из стека группы назначений будут в обратном порядке.
Дата добавления: 2015-09-29; просмотров: 19 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |