Помощь - Поиск - Пользователи - Календарь
Полная версия: Контекстное меню
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Nolan
Подскажите, пожалуйста как создать такое меню средствами языка Turbo Pascal.
klem4
меню должно быть представлено в виде кнопок ? или ты имеешь в виду меню типа

1) Ввод данных
2) Вывод данных
3) Выход

допустим нажимаешь 1, вводишь данные и обратно в меню ... пока не нажмешь 3 - > выход ? Так ?
Altair
To: klem4 , ты видишь двусмысленность вопроса ? я нет!
контекстное меню это popup menu!!! ничего более!

Или по другому выпадающее!

Nolan, а вот что ты не сказал так это какой режим ? текстовый или графический ?
Altair
ты поймешь что хотел сказать


uses wincrt,graph;
var
 {$ifdef Win32}gd,gm:smallint;{$else} gd,gm:integer;{$endif}
const
 size = 3;
 pitmenu : array[1..size] of string = ('p m1', 'p2',' p 3');
var
 menu: record x,y:longint end;

procedure viewmenu(x,y:longint);
begin
 setcolor (15);
 menu.x:=x;
 menu.y:=y;
 line ( x, y,x+length(pitmenu[1])*8, y);
 line ( x, y+10,x+length(pitmenu[1])*8, y+10);
 line ( x, y,x, y+10);
 line ( x+length(pitmenu[1])*8, y,x+length(pitmenu[1])*8, y+10);
 outtextxy(x+1,y+1,pitmenu[1]);
end;

Function selectmenu: integer;
var
 ch,i,v:byte;
begin v:=0;
 setcolor (7);
 bar (menu.x,menu.y+11,menu.x+100,menu.y+11); { <- size !!!!!!!!!!!!!!!!!!}
 setcolor (15);
 for i:=1 to size do begin
   outtextxy(menu.x+1,menu.y+10*i,pitmenu[i]);
 end;
 repeat
  ch:=0;
  ch:=ord(readkey);
  if (ch>= ord('1')) and (ch<=ord('9')) then begin
   v:=ord('1')-ch+1;
   setcolor (7);
   bar (menu.x,menu.y+10,menu.x+100,menu.y+10); { <- size !!!!!!!!!!!!!!!!!!}
   for i:=1 to size do begin
     if ch-ord('1')+1 = i then setcolor (4) else setcolor (15);
     outtextxy(menu.x+1,menu.y+10*i,pitmenu[i]);
   end;
  end;
  if (ch=13) then begin
   ch:=27; selectmenu:=v;
   cleardevice;
   viewmenu(menu.x,menu.y)
  end;
 until ch=27;
end;

var
 ch:byte;
begin
 gd:=detect;
 initgraph(gd,gm,'');
 viewmenu(100,100);
 repeat
  ch:=ord(readkey);
  if ch=0 then ch:=ord(readkey);
  if ch=109 then case selectmenu of
   1: begin end;
   2: begin end;
   end;
 until ch=27;
 readkey;
end.



Вот что-то типа того получилось:
(я компилирую в FPC, под TP чуть исправишь)

При нажатии на клавиу "m" у тебя меню выпадает.
дальше клавишами 1..3 выбираешь пункт меню (он краснеет)
и нажимаешь enter.
выбранный пункт передасться в прогу.

Я не работал над интерфейсом, обработкой ошибок и прочим..
лишь пример имеологии вылезающих меню.

так например стоит при выпадени меню, сохранить то что под ним, а потом вернуть.

подключить мышу...
и т.д. и т.п. до бесконечности smile.gif
Nolan
Спасибо, Altair! Как раз то, что нужно!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.