Приветствую Вас Гость | RSS

Delphi заготовки

Понедельник, 13.05.2024, 19:57
Главная » 2012 » Май » 18 » Создание Manu (Меню) в Pascal (Паскаль)
16:04
Создание Manu (Меню) в Pascal (Паскаль)
опубликую не большой исходник для создания меню в Паскаль думаю тут все понятно

протестирован на Pascal ABC
http://netsoftware.ucoz.ru/load/gde_skachat_pascal_abc/1-1-0-10

uses crt;



Var count_k:integer;
Var
  Menu: array[1..100] of string[50];



procedure Show_Menu(SelectElement:byte);
var i: byte;
begin
   for i:=1 to count_k do
   begin
      textcolor (white);
      Window (25,i*2,70,i*2+2);  { Рисуем окна с разными координатами (кнопки)}
      if (i = SelectElement) then
      TextBackground (red)
      else
      TextBackground (blue);
      write (menu[i]);
   end;
   TextBackground (blue);
   window (2,2*(count_k+1),79,24);
   clrscr;
   textbackground (black);
   textcolor (white);

end;
procedure pouse_clik;
begin
   repeat
    until readkey=#0;
end;


Procedure AddMenu(Name:string);
begin
   count_k:=count_k+1;
   Menu[count_k-1]:=name;
end;

// действия
Procedure Click1;
begin
                   TextBackground (blue);
                   window (2,2*(count_k+1),79,24);
                   clrscr;
                   textcolor (white);
                   Writeln('Выбрано действие Click1');
                   pouse_clik;
end;
Procedure Click2;
begin
                   TextBackground (blue);
                   window (2,2*(count_k+1),79,24);
                   clrscr;
                   textcolor (white);
                   Writeln('Выбрано действие Click2');
                   pouse_clik;
end;

Procedure Click3;
begin
                   TextBackground (blue);
                   window (2,2*(count_k+1),79,24);
                   clrscr;
                   textcolor (white);
                   Writeln('Выбрано действие Click3');
                   pouse_clik;
end;

Procedure ExitClik;
begin
    halt;
end;

// список кнопок объявляется тут
Procedure ExecuteClick(val:byte);
begin
  case val of
  1:begin Click1; end;
  2:begin Click2; end;
  3:begin Click2; end;
  4:begin Click2; end;
  5:begin ExitClik; end; // если  пункт то выполянем ExitClik;

  else
  end;
end;


// функция для работы процедуры
procedure MenuWork;
var SelectElement:byte;
ch:char;
Begin
 clrscr;
 SelectElement:=1;
 repeat
    { Рисуем основное окно}
   window (1,1,2*(count_k+1),26);
   TextBackground (yellow);
   Show_menu(SelectElement); { Вызываем процедуру меню с параметрами}
   ch:=readkey;
   if ch = #0 then
   ch:=readkey;
   case ch of
  #27:halt;
      #80: { Стрелка верх}
      begin
       if SelectElement<count_k then { проверяем, если меньше 3, то вызываем процедуру меню с увеличенным на единицу параметром}
        inc(SelectElement)
        else SelectElement:=1;
        Show_Menu(SelectElement);
      end;

      #72: { Кнопка вниз}
      Begin
       if SelectElement>1 then       { Аналогично}
        dec(SelectElement)
        else SelectElement:=count_k;
        Show_Menu(SelectElement);
      end;
      #13:{ Нажатие кнопи Ентер}
      begin
             ExecuteClick(SelectElement);

      end
      else

      end;

 until false;
end;



begin
count_k:=1;

    AddMenu('1. Click1');
    AddMenu('2. Click2');
    AddMenu('3. Click3');
    AddMenu('4. Click4');
    AddMenu('5. Выход');
    MenuWork; // заставляем меню работать
  
end.

Просмотров: 26271 | Добавил: NetSoftWare | Рейтинг: 5.0/1
Всего комментариев: 1
1 Amir  
0
как реализовать возврат в главное меню?

Имя *:
Email *:
Код *: