Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Менюшки    >>    menu_ch
   
 
 Меню для чайников   Sergey Maznichenko 07.10.1997

Статья для начинающих о построении Меню. Опубликована в Журнале "Armor of the God #III"



2k 
 

Article by : GandalF Name: Pascal Beginners #2 Armor Of The Gods ]I[ - (c) 1997, Religion ------------------------------------------------------------------------ Паскаль для начинающих Как делать меню Нам нужно сделать меню - то есть движущийся вверх и вниз курсор с возможностью выбора какого-либо пункта. Для начала неплохо было бы определиться, что в нашем меню будет, и загнать это все в массив: const menu : array[1..5] of string=( ' .:[ Choice 1 ]:. ',' .:[ Choice 2 ]:. ', ' .:[ Choice 3 ]:. ',' .:[ Choice 4 ]:. ', ' .:[ Quit ]:. '); Теперь определим парочку дополнительных переменных.. var curchoice, status, temp : byte; ch : char; Короче говоря, сам алгоритм очень прост - ждем нажатия кнопки, если таковое было, смотрим, что это была за кнопка - если вверх/вниз, то совершаем соответствующее перемещение, если ентер/еск, то выбираем/отменяем. Прокомментируем MENU.PAS из примеров: curchoice:=1;status:=128;textcolor(7); // инициализация asm mov ah,01;mov cl,$20;int $10;end; // убираем курсор for temp:=1 to 5 do writeln(menu[temp]); // выводим меню repeat // цикл идет.. gotoxy(1,curchoice); textcolor(15); // рисуем полоску textbackground(7); write(menu[curchoice]); // выбора if keypressed then case readkey of // проверяем кнопки #72: if curchoice>1 then begin // вниз, если можно textcolor(7);textbackground(0); // стираем пред. // надпись gotoxy(1,curchoice);write(menu[curchoice]);dec(curchoice); end; #80: if curchoice<5 then begin // вверх, если можно textcolor(7);textbackground(0); gotoxy(1,curchoice);write(menu[curchoice]);inc(curchoice); end; #27: status:=5; // escape #13: status:=curchoice; // enter end; until status=5; // ..пока не выбран последний // пункт/не нажат escape asm mov ah,01; m