Помощь - Поиск - Пользователи - Календарь
Полная версия: Создание меню
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
vi-rus
Люди, очень нужна ваша помощь.

Нужно сделать меню. Допустим выглядит так : 1. Факториал
2. Сумма чисел
3. Сумма ряда

Нужно сделать так : при нажатии клавиши вниз( вверх) выделяется нижний( верхний ) элемент меню. Затем при нажатии клавиши Enter запускается соответствующая программа, которая запускает нужный модуль, и затем выполняется сама программа.
Как сделать модуль, я разобрался. Подскажите, как сделать меню ?
Артемий
Графический режим? Пробовала что-нибудь делать?покажи..
vi-rus
А возможно ли это делать без графического режима ?
volvo
Или здесь: http://volvo71.narod.ru/menus.htm
vi-rus
Вот вроде бы сделал :

uses crt,modul;
const
   menu   :array[1..4] of string=(
   '    Посчитать факториал нечетных чисел от 1 до 9   ',
   ' Перевод из р-ичной системы счисления в десятичную ',
   '            Задача на множество из букв            ',
   '                     Выход                         ');
var
   curchoice :byte;
   status    :byte;
   temp      :byte;
   ch        :char;

procedure z3;
begin
slova;
writeln('Нажмите Enter...');
end;

procedure z1;
begin
 clrscr;
 fak;
 writeln('Ответ : ', fak);
 writeln('Нажмите Enter...');
 readln;
end;

procedure  z2;
var n:string;
    syst:longint;
begin
clrscr;
writeln('Выберите систему :');
readln(syst);
writeln('В ',syst,'-ичной системе можно использовать только цифры от 0 до ',syst-1,' !' );
writeln('В противном случае результат будет неверным!');
writeln('Число :');
readln(n);
todecr(n,syst);
textcolor(12);
writeln;
writeln('Ответ : ',todecr(n,syst));
textcolor(15);
writeln('Нажмите Enter...');
readln;
end;

procedure povtor;
begin
  clrscr;
  curchoice:=1; status:=0;
  textcolor(11); for temp:=1 to 4 do writeln(menu[temp]);
repeat
    gotoxy(1,curchoice); textcolor(15); textbackground(13); write(menu[curchoice]);
     textbackground(0);
   if keypressed then

      case readkey of
       #72: if curchoice>1 then begin
           textcolor(11); textbackground(0); gotoxy(1,curchoice);
           write(menu[curchoice]); dec(curchoice);
         end;
       #80: if curchoice<4 then begin
           textcolor(11); textbackground(0); gotoxy(1,curchoice);
           write(menu[curchoice]); inc(curchoice);
         end;
       #27: status:=4;
       #13:   begin
       status:=curchoice;
       if status = 1 then begin z1; povtor; end;
       if status = 2 then begin z2; povtor; end;
       if status = 3 then begin z3; povtor; end;
       end
      end;

  until status=4;

end;



begin
 povtor;
   textcolor(13); textbackground(0);
end.



Подскажите, как сместить меню в центр экрана, что-то не получается. И можно ли убрать мигающий курсор ?
volvo
Цитата
можно ли убрать мигающий курсор ?

Курсор

Сдвинуть ближе к центру экрана можно так:
procedure povtor;
begin
  clrscr;
  curchoice:=1; status:=0;
  textcolor(11); for temp:=1 to 4 do writeln('':15, menu[temp]);

только тогда может понадобиться изменять еще несколько значений... Иначе подсвечиваться будет некрасиво...

А теперь - вопрос... Я тебе что, просто так дал ссылку? Я же написал на сайте, как делать НЕ надо, и ты тут же делаешь именно так, от чего я предупреждал !!! Что, пока сам не нарвешься на проблему - никого слушать не хочешь? А потом придешь, и будешь удивляться: все правильно, а вылетает dry.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.