IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Контекстное меню
Nolan
сообщение 21.11.2005 21:14
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Подскажите, пожалуйста как создать такое меню средствами языка Turbo Pascal.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 21.11.2005 21:25
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


меню должно быть представлено в виде кнопок ? или ты имеешь в виду меню типа

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

допустим нажимаешь 1, вводишь данные и обратно в меню ... пока не нажмешь 3 - > выход ? Так ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 21.11.2005 22:31
Сообщение #3


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


To: klem4 , ты видишь двусмысленность вопроса ? я нет!
контекстное меню это popup menu!!! ничего более!

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

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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 21.11.2005 23:35
Сообщение #4


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


ты поймешь что хотел сказать


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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Nolan
сообщение 22.11.2005 22:12
Сообщение #5





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Спасибо, Altair! Как раз то, что нужно!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.07.2025 6:38
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"