При разработке программных продуктов для ПЭВМ большое внимание уделяется дизайну и удобству при работе пользователя с программой. Поэтому при построении программы используется ряд стандартных приемов .
Чаще всего программа начинается с очистки экрана и вывода заставки на фиксированное время с помощью процедуры DELAY или до момента нажатия пользователсм любой клавиши, после чего программа продолжает свою работу. Заставка является визитной карточкой программы (см.рис 2.1) и может включать в себя элементы рисунков, псевдографики, информацию о названии программы, ее разработчике, дате создания и др. Заставка обычно оформляется как отдельная процедура.
Следующим шагом работы программы является вывод на экран меню для пользователя. Под меню понимают список режимов работы программы, из которого пользователь выбирает нужный в данный момент. Меню должно быть простым в работе и понятным для любого пользователя.
Программа может иметь насколько меню, при этом одно из них выделяется как главное. Каждый элемент главного меню может раскрывать подчиненное ему меню, которое в свою очередь может активизировать подчиненное ему меню и т.д. При этом в каждый отдельный момент можно работать только с одним меню, которое называется активным или текущим. Все другие меню в это время недоступны. Уровень вложенности меню определяется потребностью конкретной задачи, ее логикой. Для организации универсального управления любым меню принято использовать только ограниченный набор клавиш :
¯ ® - перемещение по меню;
ENTER- выбор элемента меню;
ESC- удаление текущего меню с экрана.
Для наглядности при работе с меню используется полоска подсветки, которая перемещается по всему списку, указывая на очередной элемент меню. Сначала полоска подсветки выделяет первый элемент списка. Если выделен последний элемент меню, то при попытке выбора следующего элемента происходит переход на первый элемент списка. Аналогично, если выделен подсветкой первый элемент, попытка выбора предыдущего элемента переместит полоску подсветки на последний элемент списка. Когда пользователь нажимает клавишу ENTER выбирается подсвеченный элемент, т.е. управление передается в соответствующую часть программы. Выход из меню производится нажатием клавиши Esc.
Нажатие всех других клавиш игнорируется. Меню может иметь свое имя и обычно сопровождается выводом подсказки в верхней или нижней части экрана, с указанием "горячих" клавиш, которые доступны пользователю в данный момент работы с меню.
По способу размещения элементов в меню можно выделить два меню: горизонтальное и вертикальное.
Горизонтальное меню представляет собой строку с набором элементов меню. Количество элементов горизонтального меню обычно бывает не более 5-7.
В вертикальном меню, который может включать до 24 элементов, список элементов располагается по вертикали. Поиск нужного режима программы производится с помощью клавиш ( -> и <- ) в горизонтальном меню и cтрелок вверх, вниз в вертикальном.
┌─────────────────┐
│ ┌──────────┐ │
│ │ копия │ │
│ └──────────┘ │
│ перенос │
│ замена │
│ вставка │
│ удаление │
│ сортировка │
└─────────────────┘
Рис 2.3. Пример вертикального меню.
Иногда при разработке вложенного меню совмещают главное горизонтальное и вертикальные меню, которые раскрывают подрежимы главного. Примером такой организации может быть меню Norton Comander, Turbo Pascal. Принципы построения горизонтального и вертикального меню одинаковы.
Рассмотрим пример построения вертикального меню.
Построение меню принято начинать с вывода на экран рамки.В приводимом примере это делает процедура Ramka; параметры координат, цвета и вида рамки определяет пользователь. В верхней части рамки будет расположено название меню.
Учитывая особенность прокрутки в начале выводится рамка с координатами (x1,y1,x2,y2) относительно полного экрана, далее выполняется установка окна с координатами (x1+1,y1+1,x2-1,y2-1), ограниченного рамкой и заполнение его области фоновым цветом.
Пример обращения к процедуре Ramka:
Ramka(20,20,60,24,10,14,'╔╗╚╝═║',' ПРИМЕР РАМКИ ');
Процесс вывода списка элементов меню в установленное окно и выбор пункта меню выполняет процедура NewMenu. Результатом работы процедуры является номер Number выбранного клавишей Enter элемента меню , который используется основной программой. Если была нажата клавиша Esc значение переменной Number,будет равно нулю. При вызове процедуры NewMenu необходимо указать параметры размеров окна, цветности, вида рамки, названия меню.
Основная программа PrMenu содержит вывод на экран подсказки процедурой Help, вызов процедуры формирования меню NewMenu и вывод выбранного элемента меню в другое окно.
Пример процедур построения меню.
Program PrimMenu;
Uses Crt;
Const kol=15; { количество элементов меню }
Var ch:char; { код нажатой клавиши }
N, { номер выбранного элемента меню }
old:byte;
(*Spisok - массив с названием элементов меню *)
const spisok:array[1..kol] of string[10]=('ASSIGN','BREAK',
Процесс создания меню является довольно трудоемкой задачей даже для опытных программистов, позтому при разработке сложных программ с целью уменьшения затрат времени на их создание используются готовые программные пакеты, поддерживающие Турбо паскаль , например программа MakeMenu пакета Turbo Professional. Однако обьем получаемого .EXE файла будет сравнительно большим.
Задание.
Разработать программу выбора блюд в кафе мороженное, если