2.3.6. Организация системы меню

К оглавлению1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 

 

Чтобы организовать в dBASE систему меню, сначала надо определить его отдельные компоненты - меню вертикального и горизонтального типа. Для этого используются специальные команды, начинающиеся словом DEFINE - определить. Определение горизонтального меню выполняется командой

 

DEFINE MENU <имя меню> [MESSAGE <выр.С>]

 

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

 

DEFINE PAD <имя позиции>

OF <имя меню> PROMPT <выр.С>

[AT <строка>,<колонка>] [MESSAGE <выр.С>]

 

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

 

DEFINE POPUP <имя меню>

FROM <строка 1>,<колонка 1>

[ТО <строка 2>,<колонка 2>]

[PROMPT FIELD <имя поля>]

/PROMPT FILES [LIKE <шаблон>]

/PROMPT STRUCTURE]

[MESSAGE <выр.С>]

 

которая устанавливает его имя (записывается по тем же правилам, что и для горизонтального меню) и координаты окна меню на экране. Опции FROM и ТО определяют координаты левого верхнего и правого нижнего углов окна меню.

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

 

DEFINE BAR <номер строки> OF <имя меню>

PROMPT <выр.С>

[MESSAGE <выр.С>]

[SKIP [FOR <условие>]]

 

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

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

 

ON SELECTION PAD <имя позиции горизонтального меню>

OF <имя горизонтального меню> [<команда>]

 

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

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

 

ON SELECTION POPUP <имя позиции вертикального меню>/ALL [<команда>]

 

которая выполняет заданную команду или процедуру при выборе позиции вертикального меню.

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

 

DO         CASE

CASE <условие>

<команды>

[CASE <условие>]

<команды>

[OTHERWISE]

<команды>

ENDCASE

 

Можно формировать вложенные структуры этой команды, т.е. внутри команды после ключевого слова CASE помещать другую команду DO CASE, а также любые другие команды ветвления и выполнения циклов, например IF...ENDIF, DO WHILE...ENDDO и др.

Пример.

DO         CASE

CASEVal> 1000

<команды>

CASEVal> 100

<команды>

CASEVal>10

<команды>

OTHERWISE

<команды>

ENDCASE

 

Если требуется разветвить процесс только на два направления, можно использовать команду

 

IF <условие> <команды> [ELSE] <команды> ENDIF

 

При реализации операций, назначаемых позициям меню, нередко требуется организовать циклы повторяющихся действий, например организовать обработку файла БД и др. Это можно сделать с помощью ряда команд и их комбинаций. Одной из таких является команда

 

DO WHILE                   <условие>

<команды>

[EXIT]

<команды>

[LOOP]

<команды>

ENDDO

 

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

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

 

ACTIVATE MENU <имя меню> [PAD <имя позиции>]

 

и

 

ACTIVATE POPUP <имя меню>

 

которые вызывают на экран предварительно определенные меню.

 

 

Чтобы организовать в dBASE систему меню, сначала надо определить его отдельные компоненты - меню вертикального и горизонтального типа. Для этого используются специальные команды, начинающиеся словом DEFINE - определить. Определение горизонтального меню выполняется командой

 

DEFINE MENU <имя меню> [MESSAGE <выр.С>]

 

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

 

DEFINE PAD <имя позиции>

OF <имя меню> PROMPT <выр.С>

[AT <строка>,<колонка>] [MESSAGE <выр.С>]

 

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

 

DEFINE POPUP <имя меню>

FROM <строка 1>,<колонка 1>

[ТО <строка 2>,<колонка 2>]

[PROMPT FIELD <имя поля>]

/PROMPT FILES [LIKE <шаблон>]

/PROMPT STRUCTURE]

[MESSAGE <выр.С>]

 

которая устанавливает его имя (записывается по тем же правилам, что и для горизонтального меню) и координаты окна меню на экране. Опции FROM и ТО определяют координаты левого верхнего и правого нижнего углов окна меню.

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

 

DEFINE BAR <номер строки> OF <имя меню>

PROMPT <выр.С>

[MESSAGE <выр.С>]

[SKIP [FOR <условие>]]

 

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

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

 

ON SELECTION PAD <имя позиции горизонтального меню>

OF <имя горизонтального меню> [<команда>]

 

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

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

 

ON SELECTION POPUP <имя позиции вертикального меню>/ALL [<команда>]

 

которая выполняет заданную команду или процедуру при выборе позиции вертикального меню.

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

 

DO         CASE

CASE <условие>

<команды>

[CASE <условие>]

<команды>

[OTHERWISE]

<команды>

ENDCASE

 

Можно формировать вложенные структуры этой команды, т.е. внутри команды после ключевого слова CASE помещать другую команду DO CASE, а также любые другие команды ветвления и выполнения циклов, например IF...ENDIF, DO WHILE...ENDDO и др.

Пример.

DO         CASE

CASEVal> 1000

<команды>

CASEVal> 100

<команды>

CASEVal>10

<команды>

OTHERWISE

<команды>

ENDCASE

 

Если требуется разветвить процесс только на два направления, можно использовать команду

 

IF <условие> <команды> [ELSE] <команды> ENDIF

 

При реализации операций, назначаемых позициям меню, нередко требуется организовать циклы повторяющихся действий, например организовать обработку файла БД и др. Это можно сделать с помощью ряда команд и их комбинаций. Одной из таких является команда

 

DO WHILE                   <условие>

<команды>

[EXIT]

<команды>

[LOOP]

<команды>

ENDDO

 

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

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

 

ACTIVATE MENU <имя меню> [PAD <имя позиции>]

 

и

 

ACTIVATE POPUP <имя меню>

 

которые вызывают на экран предварительно определенные меню.