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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2010, 13:50   #1
kloffelin
Пользователь
 
Регистрация: 21.02.2010
Сообщений: 27
Восклицание работа в меню

Помогите, очень нужно! Как переходить по пунктам меню стрелками?

Последний раз редактировалось kloffelin; 21.02.2010 в 13:58.
kloffelin вне форума Ответить с цитированием
Старый 21.02.2010, 14:20   #2
ddima
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 11
По умолчанию

Тебе сам принцип интересен или код программы?
ddima вне форума Ответить с цитированием
Старый 21.02.2010, 15:02   #3
kloffelin
Пользователь
 
Регистрация: 21.02.2010
Сообщений: 27
По умолчанию

я хочу узнать как это работает, ну и на сам код глянуть)) если можно)
kloffelin вне форума Ответить с цитированием
Старый 21.02.2010, 16:27   #4
ddima
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 11
По умолчанию

Постараюсь объяснить более менее толково, хотя врядли получится.
Изучаю щас паскаль,так что буду объяснять на его примере.
1) Создаешь массив, состоящий из стольких элементов, сколько будет пунктов в меню.
2)Размещаешь названия этих пунктов вертикально(друг под другом, для удобства), ну или как тебе вздумается.
3)первый пункт меню записываешь черными буквами на белом фоне(то есть этот пункт меню изначально выделен), остальные пункты - белыми буквами на черном фоне.
4)Для перехода к другим пунктам меню будем использовать клавиши Вверх и вниз.
СH:= readkey;
если это клавиша Enter, то проходим по выделеному пункту меню.
Если это клавиша Вниз(вверх), то первый(выделенный) переписываем белыми буквами по черному фону, а пунк ниже выделяем(переписываем черными по белому).

Щас код сюда скопирую, думаю понятнее станет.
ddima вне форума Ответить с цитированием
Старый 21.02.2010, 16:39   #5
ddima
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 11
По умолчанию

program Menu;
uses crt, dos;

procedure Frame(x1,y1,x2,y2:integer); {Рамка для меню}
Const
A=#186; B=#187; C=#188; {Для черчения двойной линии}
D=#200; E=#201; F=#205;

{ Для черчения одинарной
A=#179; B=#191; C=#217;
D=#192; E=#218; F=#196;}

Var i,j :integer;
begin
GotoXY(x1,y1);
write(e);
for i:=(x1+1) to (x2-1) do write(f);
write(b);
for i:=(y1+1) to (y2-1) do
begin
GotoXY(x1,i);
write(a);
GotoXY(x2,i);
write(a);
end;
GotoXY(x1,y2);
write(D);
for i:=(x1+1) to (x2-1) do write(f);
write(c);
End;

Procedure CF (c,f: byte); {Процедeра для изменения цвета}
{C-цвет выводимых символов F-фон}
begin
Textcolor(c);
TextBackGround(f);
end;






Procedure Vmenu(k1, k2,kp:byte; ss1,ss2,ss3,ss4,ss5,ss6,ss7 :string;
var result:byte);
Const kr=7;
var M :array[1..kr] of string[49];
i,t :byte;
ch: char;
fl: boolean;
BEgIN
fl:=true;
m[1]:=ss1; m[2]:=ss2; m[3]:=ss3; m[4]:=ss4;
m[5]:=ss5; m[6]:=ss6; m[7]:=ss7;
t:=length(m[1]);

for i:=2 to kp do
if Length(m[i])>t then t:=Length(m[i]);
frame(k1-1, k2, k1+T,K2+kp+1);
for i:=1 to kp do
begin
if i=1 then CF(0,7) else CF(7,0);
gotoxy(k1,k2+i);
write(m[i]);
end;


CF(7,0); i:=1;

while fl=true do
begin
Ch:=readkey;
if ch=#13 then fl:=false;
if (ch=#0) then
begin
ch:=readkey;
case Ch of
#80: begin
gotoxy(k1,k2+I);
CF(7,0);
write(M[i]);
I:=I+1;
If I=(Kp+1) then
begin
i:=1;
CF(7,0);
GotoXY(k1,k2+1);
CF(0,7);
write(m[i]);
CF(7,0);
end;
gotoxy(k1,k2+i);
CF(0,7);
write(m[i]);
CF(7,0);
end;
#72: begin
if i=1 then begin gotoxy(k1,k2+i);CF(7,0);
write(m[i]); I:=5; end;

gotoxy(k1,k2+i);
cf(7,0);
write(m[i]);
i:=i-1;
GoToXY(k1,k2+i);
CF(0,7);
write(m[i]);
end;
end;
end;
end;


Result:=i;
CF(7,0);
end;

procedure p1; begin write('1') end; {процедуры, показывают что будет}
procedure p2; Begin write('2') end; {выполняться в пунктах меню}
procedure p3; Begin write('3') end;
procedure p4; Begin write('4') end;


Begin clrscr;
gotoxy(38,7); write('Menu');
Vmenu(16,9,5,'Просмотр списка',
'Корректировка списка',
'Список задач по конкретному проекту',
'Задачи, срок выполнения которых - ближайший месяц',
'Выход',
'','',Regime);
clrscr; case Regime of
1: p1;
2: p2;
3: p3;
4: p4;
5: Begin
ClrScr;
Halt;
End;

end;
readkey
end.
ddima вне форума Ответить с цитированием
Старый 21.02.2010, 17:08   #6
kloffelin
Пользователь
 
Регистрация: 21.02.2010
Сообщений: 27
По умолчанию

спасибо большое! надо будет только это все реализовать в с++(сразу указать забыл), но думаю я справлюсь.
kloffelin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с меню и рисунками Mag992 Помощь студентам 6 17.02.2010 08:57
И сново sendMessage =) Как нажать пункт верхнего меню и меню правой кнопки? TwiX Win Api 9 15.10.2009 01:57
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) chandrasecar Мультимедиа в Delphi 7 14.01.2009 09:20
Работа с меню в консоли kanja Общие вопросы C/C++ 4 24.11.2008 22:37