Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2011, 17:03   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так пойдёт?
Код:
{ Пример создания и использования меню в графике}
program menu2;
uses Crt, Graph;
const
     NORM=WHITE; { цвет невыделеного пункта }
     SEL=YELLOW;  { цвет выделенного пункта }
     BackSelectedColor=Cyan;
     BackNotSelectedColor=Black;

     N=4;      {количество пунктов в меню}
     HeightSize = 40; {высота, занимаемая каждой строчкой в меню}
     WidthSize = 200; {длина каждой строчки}
var
     menu:array[1..N] of string[12];{ названия пунктов меню }
     punkt:integer;  { номер выделенного пункта }
     ch:char;        { введенный символ }
     x,y:integer;    { координаты первой строки меню }

var
  grDriver: Integer;
  grMode: Integer;
  ErrCode: Integer;

Procedure punkt1;
begin
     ClearDevice;
     OutText('Процедура 1.Нажмите <Enter> для продолжения.');
     readln;
end;

Procedure punkt2;
begin
     ClearDevice;
     OutText('Процедура 2.Нажмите <Enter> для продолжения.');
     readln;
end;

procedure ShowSelectedPunkt;
begin
     SetFillStyle(1, BackSelectedColor );
     Bar(x,y+(punkt-1)*HeightSize-(HeightSize div 4),
         x + WidthSize, y+(punkt-1)*HeightSize+3*(HeightSize div 4));
     SetColor(SEL);
     MoveTo(x,y+(punkt-1)*HeightSize);
     OutText(menu[punkt]);{ выделим строку меню }
     SetColor(NORM);
end;

procedure ShowNotSelected(i : integer);
begin
     SetFillStyle(1, BackNotSelectedColor);
     Bar(x,y+(i-1)*HeightSize-(HeightSize div 4),
         x + WidthSize, y+(i-1)*HeightSize+3*(HeightSize div 4));
     SetColor(NORM);
     MoveTo(x,y+(i-1)*HeightSize);
     OutText(menu[i]);{ выделим строку меню }
end;

Procedure MenuToScr;{ вывод меню на экран }
var i:integer;
begin
     ClearDevice;
     SetTextStyle(TriplexFont, HorizDir, 2);
     SetTextJustify(LeftText, TopText);
     SetColor(NORM);
     for i:=1 to N do begin
          ShowNotSelected(i);
     end;
     ShowSelectedPunkt;
end;

{ основная программа }
begin

  grDriver := Detect;
  InitGraph(grDriver, grMode,'..\BGI');
  ErrCode := GraphResult;

     menu[1]:=' Memu Item 1 ';
     menu[2]:=' Memu Item 2 ';
     menu[3]:=' Empty Menu Item ';
     menu[4]:=' Quit ';
     punkt:=1;
     x:=200;
     y:=100;
     MenuToScr;
     repeat
          ch:=ReadKey;
          if ch=char(0) then begin
               ch:=ReadKey;
               case ch of
                    chr(80):{ стрелка вниз }
                         if punkt<N then begin
                              ShowNotSelected(punkt);
                              punkt:=punkt+1;
                              ShowSelectedPunkt;
                         end;
                    chr(72):{ стрелка вверх }
                         if punkt>1 then begin
                              ShowNotSelected(punkt);
                              punkt:=punkt-1;
                              ShowSelectedPunkt;
                         end;
                 end;
              end
          else
               if ch=chr(13) then begin { нажата клавиша <Enter> }
                    case punkt of
                         1:punkt1;
                         2:punkt2;
                         N:ch:=chr(27);{ выход }
                    end;
                    MenuToScr;
               end;
     until ch=chr(27);{ 27 - код <Esc> }
end.

Последний раз редактировалось Serge_Bliznykov; 04.03.2011 в 17:07.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
меню как на сайте p&g (меню ввиде таблицы) ilma55 WordPress и другие CMS 0 19.09.2010 19:09
контекстное меню в паскаль xakkkkker Помощь студентам 7 30.03.2010 10:30
И сново sendMessage =) Как нажать пункт верхнего меню и меню правой кнопки? TwiX Win Api 9 15.10.2009 01:57
Для доступа к пунктам главного меню клавиши ALT + подчеркнутая буква меню в офис 2007? Окоча Юра Microsoft Office Word 1 24.02.2009 12:29
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) chandrasecar Мультимедиа в Delphi 7 14.01.2009 09:20