|
7.7.3. Цикл сканирования
Цикл сканирования организует просмотр записей текущей таблицы.
Формат команды:
SCAN
...
[ FOR <L1> ]
[ WHILE,L2>]
{NOOPTIMIZE ]
I LOOP 1 (EXIT)
ENDSCAN
Цикл сканирования работает аналогично циклу DO WHILE, но предназначен для работы с текущей таблицей. Назначение оп- 11 ий аналогичное. По умолчанию цикл сканирования выполняется для всех записей.
7.7.4. Команда выполнения
I «и нами М1НЧ1КЖ1 < л 1
Формат команды:
RUN <команда> |! <команда>
Эта команда позволяет выполнить команду DOS или любую внешнюю команду, которая используется с приглашением DOS и подается в окне Command.
7.8. КОМАНДЫ ВЕТВЛЕНИЯ АЛГОРИТМА
При реализации сложных алгоритмов обработки данных, выбора одного решения из многих возможных, используют различные команды ветвления алгоритма.
7.8.1. Команда ветвления алгоритма на два направления
Формат команды:
1F <выр. 1> <онератор 1> [ ELSE <оп«ратор 2> ] ENDIF
Если логическое выражение <выр. L> истинно, то выполняется <опсратор 1>. Если логическое выражение <выр. L> ложно, то выполняется <оператор 2>.
7.8.2. Команда ветвления алгоритма на много направлений
Формат команды:
DO CASE CASE <условие 1>
< оператор>
CASE <условие 2>
< оператор>
[ OTHERWISE
< оператор >
... |
ENDCASE
Количество блоков CASE <условис N> не ограничено. При работе команды DO CASE последовательно проверяются условия CASE <условие N> и выполняются все блоки, условия которых истинны. Поэтому’ для однозначной работы алгоритма необходимо, чтобы условия CASE <условие N> взаимно не перекрывались. Если все указанные условия ложны, то выполняется блок OTHFRWISE.
Варианты задания условий CASE <условис N>.
а. Точные условия.
Переменная условия точно равна какому-либо значению или точно не равна какому-либо значению
CASE Я ”= b или CASE а > b или C.ASE а < Ь
б. Диапазон значений.
Значение переменной условия задается диапазоном, включая границы диапазона.
CASE BETWEEN(ms, 01, 09)
в. Список значений.
Значение переменной условия задается списком. Элементы списка отделяются друг от друга запятой.
CASE INLIST(ms, ‘10’, ‘19’, ‘43’, ‘14’, ‘25*)
Для условия CASE <условие N> могут использоваться значения любого типа, но надо следить за правильностью использования типов данных в функциях.
7.8.3. Команда безусловного перехода
Формат команды:
СО | GOTO
(RECORD] <выр.М> | ТОР | ВОГТОМ [ IN <выр. \'2> | <псеадовим> ]
Команда переводит курсор внутри таблицы. Назначение опций:
I RECORD ] <выр. Nl> — переводит курсор на указанную запись.
ТОР — переводит курсор на первую запись.
BOTTOM — переводит курсор на последнюю запись.
IN <выр. N2> | <псевдоним> — задает номер рабочей области или пседоним рабочей области, в которой находится нужная таблица. По умолчанию имеется в виду активная таблица.
7.9. ПРИМЕРЫ
Пример 1. Простейшие команды вывода
? 15 * (10 + 10) && выводит в следующую
* строку экрана результат
* вычисления выражения 300
? 'Привет' PICTURE '@!' && выводит в следующую " строку экрана значение
* 'Привет' строчными буквами.
?? 'Visual FoxPro' && выводит в текущую строку
* экрана значение
* 'Visual FoxPro'
? DATE() FONT 'Courier',16 STYLE 'BI'
* выводит в следующую
* строку экрана текущую
* текущую дату шрифтом *
* типа Courier, размером 16
* пунктов и жирным курсивом.
? 'Использование функций для вывода значений '+;
'в несколько строк' FUNCTION 'V10' выводит в && следующую строку экрана значение && 'Использование функций для вывода значений в && несколько строк', причем вывод организован в
&& несколько строк и длина каждой строки не более
&& 10 символов и слова переносятся целиком.
Пример 2. Очистка экрана.
@ 5,0 CLEAR && очищает прямоугольную область
* экрана с координатами
* левого верхнего угла 5, 0 и
* координатами нижнего правого
* угла экрана.
@ 15,5 CLEAR ТО 20,40 && очищает прямоугольную
* область экрана с
&& координатами левого верхнего угла 15, 5 и && координатами правого нижнего угла 20, 40.
CLEAR && очищает весь экран.
Пример 3. Использование универсальной команды ввода- вывода для вывода значения в указанном формате. Ключ «С* означает КРЕДИТ
CLEAR
@ 2, 10 SAY 52.75 FUNCTION 'С$$'
Если число положительное, то на экране добавляется признак кредита CR. Если число отрицательное, то оно выводится на экран в денежном формате без признака кредита.
Пример 4. Использование универсальной команды ввода-вывода для задания шрифта при выводе значения выражения GET <выр.1>
@ 5, 2 SAY 'Пример задания шрифта' FONT 'Courier', 16 @7,2 SAY 'Пример задания стиля {начертания шрифта}' STYLE 'BI'
Пример 5. Использование универсальной команды ввода- вывода для задания контроля правильности вводимых значений в переменную. Значения должны быть в диапазоне от «Сумка* до «Якорь», причем первая буква обязательно прописная (большая).
CLEAR
STORE " "ТО mmm
@2,2 SAY 2*(5+5) FONT 'Times New Roman', 12 STYLE '31';
GET mmm SIZE 1,7 VALID (mrrm>'' Сумка''.AND. шик "Якорь");
ERROR "Введенное значение вышло за допустимый диапазон' '
READ
Введите значение «Вишня» и нажмите клавишу Enter. На экран будет выведено сообщение об ошибке. Введите значение, соответствующее установленному диапазону допустимых значений. Например — «Цапля*. Нажмите клавишу Enter. Программа закончит свою работу.
Аналогичного результата можно добиться, используя опцию RANGE.
CLEAR
STORE " "ТО гшп
9 2,2 SAY 2* (5 +5) PONT 'Times New Reman',12 STYLE 'BI'; GET rnrm SIZE 1,6 RANGE 'Сумка', 'Якорь' MESSAGE "Введите; значение''
READ
Опция MESSAGE выводит в строку состояния сообщение «Введите значение».
Пример 6. Использование универсальной команды ввода- вывода дтя создания модальных кнопок Ok и Cancel с помощью кодов упраатения выводом.
9 15, 2 && задает место на экране
* - 15 строка и 2 столбец.
SIZE 2,8 && задает размер кнопок
* 2 - высота, 8 — ширина.
STORE 1 ТО mmm
© 15, 2 GET mmm FUNCTION ** OK;Cancel' SIZE 2, 8 READ
Пример 7. Создание тех же кнопок, что и в примере 6, но описание кнопок выполнено с использованием переменной-
STORE 1 ТО mmm
STORE '* OK;Cancel' TO ttt
9 15,2 GET mmm FUNCTION ttt SIZE 2, 8
READ
Пример 8. Создание тех же кнопок, что и в примере 6, с использованием шаблона.
STORE 1 ТО mmm
@2,2 GET mmm PICTURE '@* OK;Cancel' SIZE 1. 8 READ
STORE 1 TO mmm
@ 20,2 GET mmm PICTURE '8*' + ' OK;Cancel' SIZE 1, 8 READ
Пример 9. Одновременное использование шаблона и кода управления выводом.
CLEAR
STORE 1 ТО mmm
8 15,2 GET mmm FUNCTION '*';
PICTURE ' OK;Cancel' SIZE 3, 12 READ
CLEAR
8 2,2 GET nn FUNCTION '* OK;Cancel' DEFAULT 1;
SIZE 2, 10, 1
© 2,16 GET nn FUNCTION '* OK;CanceI' DEFAULT 1;
SIZE 2, 10, 2 READ
STORE 1 TO nn
8 2,2 GET nn FUNCTION '* \<OK;\<CANCEL;WDISABLED'; COLOR,,,,,W+/B,R/B,,GR+/B,W/B
READ
Пример 10. Использование универсальной команды ввода- вывода для вставки рисунка.
CLEAR
STORE 1 ТО mmm
® 15,2 SAY «Е:\M_DOC\Tiger.bmp* BITMAP SIZE 18,80;
CENTER ISOMETRIC
READ
Предполагается, что графический файл существует и хранится в указанном месте.
Пр им ер И. Редактирование переменной, заданной универсальной командой ввода-вывода.
STORE 1 ТО mmm.
STORE SPACE(15) ТО varName CLEAR
@2,2 AY 'Введите название: ' GET varName @ 4, 2 GET nmm PICTURE '@*RV яблоки;Апельсины; Лкмочы;Груши,-Мандарины; Выход'; VALID GOREC()
READ CYCLE OBJECT 6
PROCEDURE gorec DO CASE
CASE mmm = 1
varName = «Яблоки» CASE mmm = 2
varName = «Апельсины» CASE nmm = 3
varName = «Лимоны» CASE mmm = 4
varName = «Груши»
CASE mmm = 5
varName = «Мандарины» CASE mmm = 6 Cancel
ENDCASE
@ 2, 2 SAY 'Введите название: ' GET varName SIZE 1, 12 RETURN
С помощью кнопок радиогруппы вводится желаемое значение. Для выхода из программы надо выбрать кнопку «Выход*. В этой программе использована внутренняя процедура gorec. Создание и работа с процедурами будут рассмотрены ниже.
.Пример 12. Команды для работы с одномерными массивами.
CLEAR
66 Открытие таблиц Fam |
USE E:\PRIMER\Fam.dbf
LOCATE FOR Fam.Key_fam *
SCATTER TO mas
? mas(l), mas(2)
12 66 Установка курсора
на 12 запись 66 Создание массива mas и помещение в него 12 записи 66 Вывод на экран
содержимого массива mas
GO * |
BOTTOM
SCATTER TO mas
? mas(l), mas(2) *
66 Установить курсор на последнюю запись 66 Создание массива mas и помещение в него последней записи
66 Вывод на экран содержимого массива mas
mas(1) = Key_fam + 1 *
mas(2) = «Некрасов»
ft
APPEND BLANK *
GATHER FROM mas * 66 Присвоение следующего порядкового номера 66 Значение следующей фамилии 66 Добавление пустой строки в конец таблицы Fam
66 Заполнение последней пустой строки таблицы Fam
BROWSE
Команда GATHER помещает значения элементов одномерного массива в текущую запись. Поэтому необходимо в конец таблицы Fam добавить пустую строку командой APPEND BLANK (после добавления пустая запись автоматически становится текущей), а потом применить команду GATHER.
Пример 13. Команды для работы с двумерными массивами.
CLEAR
USE E:\PRIMER\Fam.dbf && Открытие таблицы Fam
DIMENSION Temp(3,2)
COPY NEXT 3 TO ARRAY Temp DISPLAY MEMORY LIKE Temp GOTO BOTTOM Temp(1,1) = Key_fam + 1
Temp(2,1) = Key_fam + 2
Temp(3,1) = Key_fam + 3
Temp(1,2) = «Есенин»
Temp(2,2) = «Блок»
Temp(3,2) = «Северянин»
APPEND FROM ARRAY Temp BRCWSE
Команда APPEND FROM ARRAY добавляет новые записи в конец табличного файла, поэтому нет необходимости принудительно помещать в конец таблицы пустые записи. Однако двумерный массив-источник данных надо формировать заранее и следить за соответствием типов элементов массива типам соответствующих полей таблицы.
Пример 14. Вывод на экран списка имен полей текущей таблицы.
CLOSE ALL
USE E:\PRIKER\Author.dbf IN 4 ALIAS aut && Открытие таблицы Author ms = AFIELDS(Massiv, 4)
&& Определение количества полей текущей && таблицы и занесение имен полей таблицы в && массив Massiv. Таблица находится в четвертой && рабочей области
CLEAR
FOR nCount = 1 ТО ms
? Massiv(nCount,1), Massiv(nCount,2) AT 16,; Massiv(nCount,3) AT 20,
Massiv (nCount, 4) AT 28, Massiv (nCount, 5) A.T 40,;
Massiv (nCount, 6) AT 45,,-
Massiv(nCount,7) AT 55, Massiv(nCount,8) AT 65
ENDFOR
В программе предусмотрен вывод на экран восьми характеристик (из одиннадцати возможных) для каждого поля таблицы Author.
Пример 15. Поиск значения в массиве.
CLOSE ALL CLEAR
USE E:\PRIMER\Fam.dbf IN 5 ALIAS fan
&& Открытие таблицы Fam
SELE fam
COPY TO ARRAY Prom && Копирование в двумерный
* массив Pron первых 7
* строк из таблицы Fam
gnPos = ASCAN(Prom, 'Гоголь')
&& Поиск в таблице Fan
* значения 'Гоголь'
IF gnPos!= 0
? 'Номер найденного элемента = ', gnPos
* && Вывод на экран порядкового
* номера найденного элемента ENDIF
NunRec = ASUBSCRIFT(Prom, gnPos, 1)
* Отределени номера строки,
* в которой находится
* найденное значение.
? ''Номер записи = '', NumRec
DISPLAY RECORD NumRec && Вывод строки с найденным- {
* значением на экран.
Пример 16. Вставка элемента массива.
CLOSE ALL CLEAR
USE E:\PRIMER\Fam.dtof && Открытие таблицы Fam DIKENS-ON mmm(10,2), CCt(10,2)
COPY TO ARRAY mmm
FOR i = 1 TO 10 && С здание копии массива rrarm
ttt(i, 1) = mmm(i, 1) ttt(i, 2) = mmm(i, 2)
EKDFOR
= AINS(mmm, 5,1) && Вставка пустой строки
* выше пятой строки массиза
FOR i = 1 to 10 && Вывод на экран массива
* mmm и массива ttt
? ttt (i, 1) AT 1, ttt (i, 2) AT 12, mmm{i, 1)
AT 30, mmm(i, 2) AT 45 ENOFOR
* Массив ttt содержит записи до добавления пустой
* строки с номером пять.
Пример 17. Удаление элемента массива.
CLOSE ALL CLEAR
USE E:\PRlMER\Fam.dbf && Открытие таблицы Fart
DIMENSION mmm(10,2), ttt(10,2)
COPY TO ARRAY mmm
FOR i = 1 ТО 10 ttt(i, 1) = mmm(i, 1) tct (i, 2) = mmm(i, 2) ENDFOR
= ADEL(mnm, 5, 1)
FOR i = 1 to 10 * |
&& Удаление пятой строки из массива mmm && Вывод на экран массива mmm и массива ttt
? ttt (i, 1) AT 1, ttt(i, 2) AT 12, mmm(i, 1);
AT 30, 2) AT 45
ENDFOR
Пример 18. Просмотр оглаатения каталога.
SET DEFAULT TO E:\Primer *
nn = ADIR(mmm, '[1].dbf')
*
*
*
CLEAR
FOR i = 1 TO ПП *
? mmm(i, 1)
ENDFOR && Задание полного имени каталога && Создание массива mmm, определение типов файлов '*.dbf' и их количества nn
&& Вывод на экран имен отобранных файлов
Пример 19. Копирование элементов из одного массива в другой массив.
&& Открытие таблицы Fam &£t Описание двух двумерных массивов mmm и ttt && Копирование записей из таблицы Fam в массив mmm |
CLOSE ALL
USE E:\Prinier\Fam.dbf CLEAR
COPY * |
DIME mmm(10,2), ttt(10,2)
TO ARRAY mmm
= ACOPY(nmm, tu, 5, 6, 4)
&& Копирование из массива mmm в массив ttt DISPLAY MEMORY LIKE ttt && Вывод на экран массива ttt
В массив mmm копируются первые десять записей из таблицы Fam Функция ACOPY читает из массива mmm, начиная с пятого элемента (третья строка первый столбец), шесть элементов (третью, четвертую и пятую строки полностью) и помещает их в массив ttt, начиная с четвертого элемента (с третьей строки первого столбца).
Пример 20. Сортировка элементов двумерного массива mmm.
CLOSE ALL
USE E:\?rimer\Fam.dbf && Открытие таблицы Fam CLEAR
DIMS mmm(15,2) && Описание двумерного массива
COPY TO ARRAY mmm FIELDS Key_fam, Name_fam
&& Отсортировать в массиве mmm по значениям второго столбца первые восемь строк в порядке убывания && вывод на экран пустой && Вывод на экран отсортированного массива mmm |
FOR i=l TO 15 &&
*
*
? mmm(i.1), mmm(i,2) ZNDFOR
= ASORT(mirm, 2, 8, 1)
*
*
*
Вывод на экран не отсортированного массива mmm
Пример 21. Сохраните переменных в памяти компьютера. CLEAR А41 = 50 А42 = 'Hello'
В34 = 48 В55 = 'Москва'
SAVE ТО temp && сохраняет в файле с именем
* temp все переменные SAVE ТО abc ALL LIKE а* && сохраняет в файле с именем
* abc все переменные,
* имена которых начин-ются
* с бухвы а
SAVE ТО ttt ALL EXCEPT а* && сохраняет в файле с
* именем ttt все временные,
* имена которых начинаются
* с любой буквы, кроме а CLEAR MEMORY
Пр и м е р 22. Восстановление переменных в памяти компьютера.
CLEAR
g3 = '25/01/2000'
RESTORE FROM temp ADDITIVE DISPLAY MEMORY LIKE a*
DISPLAY MEMORY LIKE b*
DISPLAY MEMORY LIKE g*
Восстанатжвает в оперативной памяти переменные, с именами, отличными от имеющихся в оперативном памяти из файла temp, с сохранением в оперативной памяти уже имеющихся переменных с совпадающими именами.
Пример 23. Удаление переменных из оперативной памяти. CLEAR А41 = 50 А42 = 'Hello'
В34 = 48 В55 = 'Москва'
RELEASE | ALL | LIKE | b* |
DISPLAY | MEMORY | LIKE | a* |
DISPLAY | MEMORY | LIKE | b* |
DISPLAY | MEMORY | LIKE | g* |
7.10. КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Как задать продолжение команды на другой строке?
2. Как задать комментарий в тексте программы?
3. По каким правилам задаются имена переменных?
4. Как определяется тип переменной?
5. Какими командами описываются массивы?
6. Как определяется тип элементов массива?
7. Укажите два способа присвоения значений переменным и элементам массива
8. Укажите варианты способов хранения значений переменных и напишите команду для сохранения переменных.
9. Напишите команду по восстановлению ранее сохраненных значений переменных.
10. Укажите два варианта восстановления значений переменных.
11. Укажите варианты вывода значений переменных на экран.
12. Как удалить переменные из оперативной памяти?
13. Какие команды работают с одномерными массивами, а какие команды работают с двумерными массивами?
14. Укажите особенности работы команды SCATTER.
15. Укажите особенности работы команды GATHER
16. Укажите особенности работы команды COPY ТО ARRAY.
17. Укажите особенности работы команды APPEND FROM ARRAY.
18. Укажите назначение и особенности работы команд?и??.
19. Расскажите о назначении и особенностях работы универсальной команды ввода-вывода.
20. Укажите два способа обращения к элементам двумерного массива и напишите функции для пересчета координат элемента массива.
21. Расскажите о вариантах использования функции копирования элементов массива.
22. Что значит сортировать элементы одномерного и двумерного массивов?
23. Какая функция выполняет сортировку элементов одномерного массива и элементов двумерного массива?
24. Сравните принцип работы функции сортировки элементов массива и команды сортировки табличного файла.
25. Расскажите об особенностях функции добаатения новых элементов в одномерный массив и в двумерный массив.
26. Расскажите об особенностях функции удаления элементов одномерного массива и элементов двумерного массива.
27. Как получить сведения о структуре таблицы (и вывести их на экран)?
В базах данных меню является основным инструментом диалога. В FoxPro предусмотрены возможности для создания меню различных типов. Управление работой меню осуществляется либо мышью, либо с клавиатуры.
Световое меню — это набор пунктов (элементов) меню, один из которых является активным, то есть выделен цветом. Выбор пункта меню осуществляется либо щелчком мыши на пункте меню, либо с помощью клавиш-стрелок курсор устанавливается на нужный пункт меню и нажимается клавиша Enter. Отказ от выбора пункта мешо — нажатие клавиши Esc.
Вызванное световое меню накладывается, как правило, поверх прежнего изображения на экране. После удаления меню с экрана происходит автоматическое восстановление первоначального вида экрана. При работе с меню допускается использование клавишных команд, дублирующих выбор пункта мешо. Такие клавишные команды называются «горячими* клавишами. Если меню многоуровневое (три и более уровней), то использование «горячих» клавши становится эффективным средством работы с меню.
При работе прикладных программ, содержащих меню, на экран могут выводиться системные сообщения. Текст системных сообщений накладывается на элементы меню и впоследствии не удаляется. Для запрета вывода на экран системных сообщений используется команда SET TALK OFT.
По умолчанию системные сообщения выводятся на экран, то есть установлена команда SET TALK ON.
При работе со световым меню можно задать режим, когда при нажатии клавиши с первой буквой имени пункта меню этот пункт (команда) меню становится активным. Для задания этого режима используется команда SET CONFIRM OFF.
Бели устаноилена команда SETT CONFIRM ON, то после нажатия клавиши-буквы дополнительно надо нажать либо клавишу Enter, либо клавишу SpaccBar.
При работе конкретного приложения в разные моменты времени некоторые пункты меню могут быть не доступны для выбора и на экране выделены в полтона (бледно). Для того чтобы сделать пункт меню недоступным для выбора, надо перед именем пункта установить символ Д*. В вертикальных (POPUP) меню иногда необходимо одну группу пунктов отделить разделительной чертой от других пунктов меню, причем курсор на разделительной черте не фиксируется. Для этих целей вместо имени пункта меню надо указать сочетание двух символов «\-*.
В FoxPro предусмотрены две технологии построения меню: FOX-меню и dBASE-мсню.
Меню типа FOX активны только во время работы программы и являются частью про!раммы. При выборе пункта такие меню вырабатывают числовой код, который запоминается и анализируется с последующей выработкой реакции на выбор пункта меню. Как правило, анализ выбора пользователя осуществляется с помощью оператора DO CASE... ENDCASE. Из меню этого типа можно сделать единственный выбор. Чтобы организовать многократный выбор из меню, надо описание меню поместить внутрь цикла.
Меню типа dBASE после своего описания остается в оперативной памяти резидентно и может многократно вызываться на экран и удаляться с экрана. Меню может вызываться не только из конкретного приложения, но и из окна Command даже в том случае, если закрыта база данных и программный файл закончил свою работу. Для удаления меню из оперативной памяти предусмотрены специальные команды (см. п.п. 8.2.1.7—8.2.1.11). При своей работе меню вырабатывает не только числовые коды, которые фиксируют выбор пользователя, но и непосредственно вызывает процедуры и команды на выполнение. В качестве пунктов меню здесь можно использовать имена файлов и структуру базы Данных, а также организовать множественный выбор пунктов меню.
8.1. МЕНЮ ТИПА FOX
Меню nma FOX существует в трех вариантах. Максимальное количество пунктов меню — 128.
8.1.1. Меню произвольного типа. LIGHTBAR-меню
Меню этого типа помешается в оперативную память и выводится на экран для работы одной командой. Для создания меню предусмотрены следующие команды.
8.1.1.1. Команда описания пункта меню
@ У.Х PROMPT <выр.С1> [MESSAGE <выр.С2>]
Команда выводит в позицию Y, X экрана строку меню <выр.С1>. Опция MESSAGE предназначена для вывода в строку состояния (или заранее указанную строку) дополнительное сообщение <выр.С2>. Это сообщение выводится в момент размещения курсора на пункте меню. Если дополнительное сообщение надо вывести в определенную строку экрана, то перед этой командой надо указать команду SET MESSAGE..., формат которой описан ниже. Само меню состоит из набора команд @ Y,X PROMPT....количество которых не более 128.Таккакко- манды не связаны между собой, то пункты меню будут располагаться на экране произвольным образом (положение каждого пункта определяется координатами Y и X). Переход от одного пункта меню к другому осуществляется с помощью кланиш-стрелок. Порялок обхода определяется порядком описания пунктов меню. Активный пункт меню выделяется либо цветом, либо яркостью.
8.1.1.2. Команда фиксации выбора пользователя
\1ENU ТО <переменная>
Команда запоминает в <переменной> порядковый номер (по описанию в тексте программы) выбранного пункта меню. При нажатии клавиши Fsc (отказ от выбора пункта меню) в <пере- менную> заносится 0 (ноль). Команда SET MESSAGE ТО [ <выр.1Ч> [ LEFT | RIGHT | CENTER ] ] предназначена для указания номера строки экрана <Bbip.N>, в которую выводится дополнительное сообщение, и для указания места вывода внутри строки:
LEFT — дополнительное сообщение форматируется по левому краю строки.
RIGHT — дополнительное сообщение форматируется по правому краю строки.
CENTER — дополнительное сообщение форматируется по центру строки.
При использовании команды SET MESSAGE ТО... в команде @ Y,X PROMPT... обязательно должна быть указана опция MESSAGE.
Команда SET MESSAGE ТО без параметров выводит дополнительное сообщение в последнюю строку экрана. Эта команда работает как в FOX-меню, так и в dBASE-меню.
8.1.2. Вертикальное POPUP-меню
Для создания этого меню предусмотрены команды как для описания меню, так и для предъявления меню на экран. При необходимости линейка прокрутки подключается автоматически.
8.1.2.1. Команда создания и отображения меню на экране
@ Y,X MENU <массив>, <выр.М> [, <Bbip.N2> ] (TITLE dup.O (
Назначение опций:
<массив> — имя одномерного массива. Массив должен быть заранее описан. Элементы массива содержат названия пунктов меню. Максимальная длина названия пункта меню — 50 символов. <Bbip.Nl> — число пунктов меню (не более 128).
<Bbip.N2> — число одновременно предъявляемых на экран пунктов меню. По умолчанию отображается 17 пунктов меню.
TITLE <выр.О — заголовок меню, который отображается в верхней части меню.
8.1.2.2. Команда фиксации выбора пользователя
READ MENU ТО <персменная> [ SAVE J Назначение опций:
<переменная> — имя переменной целого типа, в которой фиксируется номер выбранного пользователем пункта меню. Если до подачи команды <персменной> бьпо присвоено значение, то после предъявления меню на экран указанный пункт меню будет активным (выделенным). В противном случае выделен будет первый пункт меню.
SAVE — сохраняет на экране образ меню после выхода из него. В этом случае удалить с экрана образ меню можно только командой CLEAR
Далее в программе производится анализ <переменной> в операторе DO CASE... ENDCASE.
8.1.3. Двухуровневое PULLDOWN-меню
Двухуровневое меню состоит из горизонтального и вертикального меню. Используя эти же команды, можно создать только горизонтальное меню Здесь также предусмотрены команды для создания меню и команды для использования меню.
8.1.3.1. Команда определения горизонтального меню
MENU BAR <масснв>, <Bbip.N>
Определяет и выводит на экран горизонтальное меню. Назначение опций:
<массив> — имя двумерного массива. Размерность массива (п, 2). В первом столбце указываются названия пунктов меню, а во втором — комментарии к пунктам меню. Комментарии выводятся либо в последнюю строку экрана, либо в строку, указанную командой SET MESSAGE ТО... Комментарии описывать не обязательно, но массив должен быть обязательно двумерным и если комментарии отсутствуют, то значения второго столбца — пустые строки.
<выр.1Ч> — обшее число пунктов меню.
В горизонтальном меню на экран выводится столько пунктов меню, сколько уместится на экране. Для предъявления на экран остальных пунктов меню надо несколько раз нажать клавишу «стрелка вправо».
8.1.3.2. Команда описания подчиненного меню
MENU <Bwp.Nl>, <маесив>, <ewp.N2> [, <swp.N3> ]
Команда определяет вспомогательное меню и его «привязку* к соответствующему пункту главного меню. Назначение опций:
<Bbip.Nl> — определяет номер пункта главного меню, который
будет вызывать описываемое вспомогательное меню.
<Bbip.N2> — число пунктов вспомогательного меню. Это число в
общем случае может не соответствовать размерности <массива>.
<выр.\3> — число одновременно показываемых пунктов меню. Если <Bbip.N3> меньше <Bbip.N2>, то автоматически подключается линейка прокрутки.
<массив> — имя одномерного массива, элементы которого содержат названия пунктов вспомогательного меню.
8.1.3.3. Команда фиксации выбора пользователя
Дата добавления: 2015-09-29; просмотров: 26 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |