Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia_16_Standartnye_podprogrammy_DOS_System.doc
Скачиваний:
3
Добавлен:
03.12.2018
Размер:
141.82 Кб
Скачать

Форматы меню. Алгоритм построения вертикального меню

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

Основные форматы меню следующие:

  • список объектов, выбираемых указанием числовых кодов, например,

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]