Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Среднее профессиональное образование 10 страница



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 | Нарушение авторских прав







mybiblioteka.su - 2015-2024 год. (0.056 сек.)







<== предыдущая лекция | следующая лекция ==>