- •Оглавление
- •Комбинированный урок №16
- •Обеспечение интерфейса с командами операционной системы
- •Типы прерываний и их обслуживание
- •Организация работы с каталогами и файлами
- •Установка даты и времени
- •Управление вычислительным процессом с помощью вызова внешних программ
- •Организация работы в текстовом режиме Установка текстового режима
- •Организация окон и вывод на экран
- •Управление клавиатурой и звуком
- •Форматы меню. Алгоритм построения вертикального меню
- •Контрольные вопросы
Форматы меню. Алгоритм построения вертикального меню
В процессе своей работы за компьютером пользователь постоянно встречается с меню различных форматов. Сущность структуры меню заключается в том, что у пользователя есть список возможных вариантов данных для ввода, среди которых ему необходимо выбрать то, что требуется.
Основные форматы меню следующие:
-
список объектов, выбираемых указанием числовых кодов, например,
-
1.
Открыть базу данных
2.
Отредактировать
3.
Поиск в базе данных
4.
Отсортировать
5.
Выход
-
список объектов, выбираемых указанием мнемонических кодов:
-
Соб
Собственность
Трн
Транспорт
Меб
Мебель
Рзн
Разное
Кон
Конец
-
меню в виде блока данных в столбик - вертикальное меню или в строчку - горизонтальное меню или комбинации этих двух видов меню, например,
вертикальное меню: горизонтальное меню:
Треугольник |
|
||||
Круг |
|
Сохранение |
Редактирование |
Выполнение |
|
Квадрат |
|
||||
Выход |
|
комбинированное меню:
Файл |
Правка |
Формат |
Справка |
Открыть |
Вырезать |
Шрифт |
|
Закрыть |
Копировать |
Абзац |
|
Сохранить |
Вставить |
|
|
Выход |
|
|
|
-
меню в виде пиктограмм, иконок или значков.
Задача. В дальнейшем представим простейший алгоритм построения вертикального меню. Данный алгоритм строит меню из трех пунктов:
-
Данные
Справка
Выход
Движение по этому меню выполняется с помощью стрелок вверх ↑ или вниз ↓. Выполнение каждого пункта меню осуществляется при нажатии клавиши Ввод на выбранном пункте меню.
Uses CRT,DOS;
Var SPISOK:array[1..3] of string[7];
kod,kod1 : char;
n,i,p : byte;
{процедура регулирования размера курсора}
Procedure CURS(size:word);
Var Regs : Registers;
begin
With Regs do
begin
AH:=$01;
CH:=Hi(size);
CL:=Lo(size);
Intr($10,Regs)
end
end;
{процедура вывода информации по выбранному пункту меню}
Procedure findd(n:byte);
begin
Textmode(3);
Window(1,1,80,25);
TextBackGround(Black);
ClrScr;
case n of {анализ номера выбранного пункта меню}
1: begin {вывод информации для пункта 1} end;
2: begin {вывод информации для пункта 2} end;
3: exit
end;
readln;
Curs($0607) {восстановить стандартный размер курсора}
end;
{процедура оформления меню и обработки нажатой клавиши}
Procedure oformenu;
begin
p:=1; i:=1;
Repeat {построение пунктов меню}
if i=n then
begin TextBackGround(Blue); Textcolor(LightGray); end
else
begin TextBackGround(Lightgray); Textcolor(Blue); end;
gotoxy(1,i);
writeln(SPISOK[i]); {вывод текста пунктов меню}
inc(i); inc(p)
until p>3;
kod:=ReadKey;
CASE kod of
#13: begin { обработка клавиши Ввод}
findd(n);
exit
end;
#0: begin
kod1:=ReadKey; {обработка нажатия клавиш ↑, ↓}
Case kod1 of
#72: if n>1 then dec(n)
else n:=3;
#80: if n<3 then inc(n)
else n:=1;
end;
oformenu; {рекурсивный вызов процедуры}
end
else oformenu
end;
end;
BEGIN {основная программа}
SPISOK[1]:='Данные ';
SPISOK[2]:='Справка';
SPISOK[3]:=' Выход ';
TextBackGround(Black); {установка цвета фона}
Textcolor(Lightgray); {установка цвета шрифта}
ClrScr; {очистка окна}
Window(35,10,43,13); {задание окна для меню}
n:=1; {указатель номера выбранного пункта меню}
Curs($2000); {удаление изображения курсора}
oformenu; {вызов процедуры оформления меню}
END.