русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Виды меню


Дата добавления: 2015-09-15; просмотров: 883; Нарушение авторских прав


При разработке программных продуктов для ПЭВМ большое внимание уделяется дизайну и удобству при работе пользователя с программой. Поэтому при построении программы используется ряд стандартных приемов .

Чаще всего программа начинается с очистки экрана и вывода заставки на фиксированное время с помощью процедуры DELAY или до момента нажатия пользователсм любой клавиши, после чего программа продолжает свою работу. Заставка является визитной карточкой программы (см.рис 2.1) и может включать в себя элементы рисунков, псевдографики, информацию о названии программы, ее разработчике, дате создания и др. Заставка обычно оформляется как отдельная процедура.

Следующим шагом работы программы является вывод на экран меню для пользователя. Под меню понимают список режимов работы программы, из которого пользователь выбирает нужный в данный момент. Меню должно быть простым в работе и понятным для любого пользователя.

Программа может иметь насколько меню, при этом одно из них выделяется как главное. Каждый элемент главного меню может раскрывать подчиненное ему меню, которое в свою очередь может активизировать подчиненное ему меню и т.д. При этом в каждый отдельный момент можно работать только с одним меню, которое называется активным или текущим. Все другие меню в это время недоступны. Уровень вложенности меню определяется потребностью конкретной задачи, ее логикой. Для организации универсального управления любым меню принято использовать только ограниченный набор клавиш :

­ ¯ ® - перемещение по меню;

ENTER- выбор элемента меню;

ESC- удаление текущего меню с экрана.

Для наглядности при работе с меню используется полоска подсветки, которая перемещается по всему списку, указывая на очередной элемент меню. Сначала полоска подсветки выделяет первый элемент списка. Если выделен последний элемент меню, то при попытке выбора следующего элемента происходит переход на первый элемент списка. Аналогично, если выделен подсветкой первый элемент, попытка выбора предыдущего элемента переместит полоску подсветки на последний элемент списка. Когда пользователь нажимает клавишу ENTER выбирается подсвеченный элемент, т.е. управление передается в соответствующую часть программы. Выход из меню производится нажатием клавиши Esc.



Нажатие всех других клавиш игнорируется. Меню может иметь свое имя и обычно сопровождается выводом подсказки в верхней или нижней части экрана, с указанием "горячих" клавиш, которые доступны пользователю в данный момент работы с меню.

По способу размещения элементов в меню можно выделить два меню: горизонтальное и вертикальное.

Горизонтальное меню представляет собой строку с набором элементов меню. Количество элементов горизонтального меню обычно бывает не более 5-7.

┌───────────────────────────────────────────────────┐

│ ┌───────┐ │

│ │ диск │ текст числа график печать выход │

│ └───────┘ │

└───────────────────────────────────────────────────┘

Рис 2.2. Пример горизонтального меню.

В вертикальном меню, который может включать до 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',

'COPY','DATE','FORMAT','LABEL','PATH','PRINT','SET',

'SYS','TYPE','TIME','VER','VERIFY','VOL');

(*--------------------------------------------------*)

(* подпрограмма формирования рамки *)

(* переменные : *)

(* contur-параметры вида линий рамки *)

(* name - имя для меню *)

(* fonr - цвет для заполнения окна с рамкой *)

(* colr - цвет символов линий рамки окна *)

(*--------------------------------------------------*)

Procedure Ramka(x1,y1,x2,y2:word;fonr,colr:byte;contur,

name:string);

var k:integer;

begin

window(1,1,80,25); { установка полного экрана }

TextColor(colr);

TextBackGround(fonr);

GotoXY(x1,y1);write(contur[1]);

for k:=x1+1 to x2-1 do write(contur[5]); write(contur[2]);

GotoXY(x1+trunc((x2-x1-Length(name))/2),y1);

write(name); { вывод названия меню }

for k:=y1+1 to y2-1 do

begin

GotoXY(x2,k);write(contur[6]);

GotoXY(x1,k);write(contur[6])

end;

GotoXY(x1,y2);write(contur[3]);

for k:=x1+1 to x2-1 do write(contur[5]); write(contur[4]);

Window(x1+1,y1+1,x2-1,y2-1); { установка и очистка окна}

clrscr; { ограниченного рамкой }

end;

 

 

(*--------------------------------------------------*)

(* подпрограмма формирующая меню команд DOS *)

(* *)

(*--------------------------------------------------*)

 

Procedure NewMenu(var number:byte; x1,y1,x2,y2:word;

fonr,colr,fons,cols:byte;

contur,name:string);

const Enter=#13; { выбор пункта меню }

Esc=#27; { отмена работы с меню}

sdvig=#0; { признак управляющей клавиши }

Up=#72; { вверх по меню }

Down=#80; { вниз по меню }

Var CopyAttr:array[1..2] of byte; { атрибуты цветности }

old:byte;

x,y:word;

ch:char;

n,newkursor:integer;

Begin

old:=TextAttr;

Number:=0;

Ramka(x1,y1,x2,y2,fonr,colr,'╔╗╚╝═║','HELP-DOS');

GotoXY(30,0);

CopyAttr[1]:=TextAttr;

writeln;

n:=0;

while n<15 do

begin

n:=n+1;

GotoXy(1,n+1);writeln(' ':4,spisok[n]);

end;

newkursor:=1; n:=1;

GotoXY(1,newkursor+1);

TextColor(cols);

TextBackGround(fons);

CopyAttr[2]:=TextAttr;

write(' ':4,spisok[1]); ClrEol; { подсветка первого

элемента меню }

repeat

ch:=readkey;

if ch=sdvig

then begin

ch:=readkey;

case ch of

{ переход на один элемент вверх }

up : begin

newkursor:=n-1;

if newkursor=0 then newkursor:=kol

end;

{ переход на один элемент вниз }

down : begin

newkursor:=n+1;

if newkursor=kol+1 then newkursor:=1

end

end;

{ снять выделение старого пункта иеню }

GotoXY(1,n+1);

TextAttr:=CopyAttr[1];

write(' ':4,spisok[n]);

ClrEol;

{ выделить новый пункт меню }

{ световым пятном }

TextAttr:=CopyAttr[2];

GotoXY(1,newkursor+1);

write(' ':4,spisok[newkursor]);

ClrEol;

n:=newkursor;

end

until (ch=enter)or(ch=Esc) ;

if ch=Enter then Number:=n;

TextAttr:=old;

end;

(*--------------------------------------------------*)

(* подпрограмма формирующая подсказки *)

(*--------------------------------------------------*)

 

procedure help;

begin

ramka(1,21,80,24,10,14,'╔╗╚╝═║',' ВЫБОР КЛАВИШ ');

GotoXY(1,1);

writeln(' ':10,'ENTER - выбор команды Esc - выход из меню');

write(' ':10,'CТРЕЛКИ (вверх,вниз)-выбор пункта меню');

end;

 

(*--------------------------------------------------*)

(* Основная программа *)

(*--------------------------------------------------*)

Begin

old:=lastmode;

Clrscr;

Help; { вывод подсказки }

NewMenu(N,10,1,50,20,13,14,3,8,'╔╗╚╝═║','HELP-DOS');

if N<>0 then begin

Ramka(30,10,70,13,3,15,'╔╗╚╝═║','РЕЗУЛЬТАТ');

write(' выбран элемент меню :',Spisok[N]);

end;

ch:=readkey;

textmode(old);

end.

Процесс создания меню является довольно трудоемкой задачей даже для опытных программистов, позтому при разработке сложных программ с целью уменьшения затрат времени на их создание используются готовые программные пакеты, поддерживающие Турбо паскаль , например программа MakeMenu пакета Turbo Professional. Однако обьем получаемого .EXE файла будет сравнительно большим.

Задание.

Разработать программу выбора блюд в кафе мороженное, если

имеется следующий ассортимент товара:

1 мороженое

2 сок

3 молочный коктейль

4 фрукты

 



<== предыдущая лекция | следующая лекция ==>
Readkey:char. | Использование буфера экрана.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.009 сек.