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

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

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

 
 Ответить  Открыть новую тему 
> Меню в Паскале
ЧЕРМАК
сообщение 31.01.2007 19:35
Сообщение #1


Гость






Помогите сделать графическое меню для двух задач.
 К началу страницы 
+ Ответить 
volvo
сообщение 31.01.2007 19:36
Сообщение #2


Гость






Поиск по слову menu пробовал? Выкладывалось как минимум 2 варианта...
 К началу страницы 
+ Ответить 
ЧЕРМАК
сообщение 31.01.2007 19:46
Сообщение #3


Гость






Я видел их и скачал одну, но у меня задачи сделани при помощи модуля CRT, а меню через Graph и мои задачи не пашут там! У меня не работает функция ''writeln''!
 К началу страницы 
+ Ответить 
ЧЕРМАК
сообщение 31.01.2007 19:55
Сообщение #4


Гость






Цитата(volvo @ 31.01.2007 19:36) *

Поиск по слову menu пробовал? Выкладывалось как минимум 2 варианта...





Вот я немного переделал прогу, но у меня не пашет моя задача!


Прикрепленные файлы
Прикрепленный файл  MENU.PAS ( 2.63 килобайт ) Кол-во скачиваний: 351
 К началу страницы 
+ Ответить 
volvo
сообщение 31.01.2007 19:55
Сообщение #5


Гость






Ну, не знаю, что ты скачал, а вот тут, например, лежит меню написанное именно для графического режима:
меню во фрейме
 К началу страницы 
+ Ответить 
ЧЕРМАК
сообщение 31.01.2007 20:23
Сообщение #6


Гость






у меня ошибку выдаёт '' Cannot run a unit '' как её можно исправить?
 К началу страницы 
+ Ответить 
volvo
сообщение 31.01.2007 20:36
Сообщение #7


Гость






Так ты же, наверное, запускал ты программу? А нельзя - это модуль... Его надо подключать к программе (через Uses), потом в своей программе заполнять поля переменной N нужными тебе значениями (цвета выбранного/невыбранного элементов, количество кнопок, надписи на кнопках, ... там все написано), и вызывать функцию SimpleMenu, например:

uses FMenu;
var selected: byte;
begin
{ тут инициализация графики и заполнение структуры N }
...
selected := SimpleMenu; { <--- Вот так вот ... }
...

 К началу страницы 
+ Ответить 
ЧЕРМАК
сообщение 31.01.2007 20:54
Сообщение #8


Гость






Там не понятно что на что менять! Если ты знаешь что на что менять, поменяй пожалуйста! ОЧЕНЬ нужно.
 К началу страницы 
+ Ответить 
volvo
сообщение 31.01.2007 21:47
Сообщение #9


Гость






Вот я немного подкорректировал модуль (так он более читаемый):
Unit FMenu;

Interface

Type
TMenu = record
nOptions: byte;
Option: array[1 .. 8] of string[22];
clrActive, clrInActive: integer;
Title: string[10];
end;

Var
menu: TMenu;

Function SimpleMenu: byte;

Implementation
Uses Graph, crt;

Function SimpleMenu : byte;
Var
i: integer;
ch: char;
current: 1 .. 8;
begin
setfillstyle(solidfill, darkgray);
current := 1;

settextstyle(4, 0, 2);
setcolor(menu.clrActive);
bar(0, 0, getmaxx, getmaxy);
settextjustify(centertext, centertext);
outtextxy(getmaxx div 2, (textheight(menu.Title) + 4) div 2, menu.Title);

repeat
for i := 1 to menu.nOptions do begin
If i = current then setcolor(menu.clrActive)
else setcolor(menu.clrInActive);
outtextxy(getmaxx div 2, i*(textheight(menu.Option[i]) + 5) + 60,
menu.Option[i]);
end;

ch := Readkey;
case ch of
#0:
case readkey of
#72: If current <> 1 then dec(current)
else current := menu.nOptions;
#80: If current <> menu.nOptions
then inc(current) else current := 1;
end;
end;

until ch = #13;
SimpleMenu := current;
end;

End.


А вот так его вызывать:
uses Graph, FMenu;

var
grDriver, grMode, ErrCode: integer;
b: byte;
begin
grDriver := Detect;
InitGraph(grDriver, grMode,'');
ErrCode := GraphResult;
if ErrCode <> grOk then begin
Writeln('Graphics error:', GraphErrorMsg(ErrCode));
readln; halt(100);
end;

{ Заполняешь структуру }
with menu do begin
nOptions := 3;
Option[1] := 'first';
Option[2] := 'second';
Option[3] := 'third';
Title := 'menu #1';
clrActive := red; clrInactive := white;
end;
{ И вызываешь меню... }
b := SimpleMenu; { <--- В переменной b - номер выбранного элемента }

{ Если понадобится еще одно меню в программе -
еще раз перезаполни запись menu и вызывай SimpleMenu }
Readln;
CloseGraph;
end.



А вообще, я скоро выложу в FAQ и текстовую и графическую версии меню... yes2.gif
 К началу страницы 
+ Ответить 
mamont001
сообщение 31.01.2007 21:53
Сообщение #10


Вожак стада
***

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

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


Цитата(volvo @ 31.01.2007 20:47) *

А вообще, я скоро выложу в FAQ и текстовую и графическую версии меню... yes2.gif


good.gif


--------------------
Админ наш,
Иже еси на серверах!
Да святится имя Твое,
Да приидет Unix Твой,
Да будет воля Твоя,
Как на земле , так и на небе.
Пинг наш насущный дай нам на сей день;
И прости нам счета наши, как и мы оставляем их должникам нашим;
И не введи нас во искушение виндовое,
Но избавь нас от лукавого Билли.
И да пребудет с нами сила твоя великая,
Во имя Отца-админа, Сына-Пингвина, и духа мастдайного. Админь!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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