опубликую не большой исходник для создания меню в Паскаль думаю тут все понятно
протестирован на 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.
|