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

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

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

 
 Ответить  Открыть новую тему 
> Меню в Паскале
сообщение
Сообщение #1


Гость






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


Гость






Поиск по слову menu пробовал? Выкладывалось как минимум 2 варианта...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






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


Гость






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

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





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


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


Гость






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


Гость






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


Гость






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

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

 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Там не понятно что на что менять! Если ты знаешь что на что менять, поменяй пожалуйста! ОЧЕНЬ нужно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


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

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

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


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

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


good.gif


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

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

 





- Текстовая версия 28.03.2024 21:50
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name