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

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

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

 
 Ответить  Открыть новую тему 
> Меню, меню в графическом режиме
сообщение
Сообщение #1


Гость






Доброе время суток!
Подскажите пожалуйста, как сделать меню в графическом режиме так, чтобы каждому пункту соответствовал прямоугольник с надписью, и управление осуществлялось бы стрелками, причем при выделении прямоугольника он менял бы цвет? И после выполнения ряда действий, соответствующих пункту, пользователь возращался в меню?

Заранее большое спасибо!

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


Гость






Ну, тема однозначно переезжает в Задачи, т.к. вопрос - именно по реализации ...

Уточни, что можно использовать в программе? Динамическая память? Объекты? Процедурные типы? Модули?
Есть кое-что готовое, правда там с мышью, модулями и объектами, можно будет убрать все лишнее, если нужно...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Ну объекты и модули точно использовать нельзя. Процедуры и динамическую память, думаю можно. Мышь тоже можно (даже нужно) если не очень сложно.

P.S.: как перекидывать тему в Задачи?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ну, вот первое приближение - мыши пока нет, только с клавиатуры ...


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


Новичок
*

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

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


Volvo, огромное спасибо! Это то, что нужно. Только хотелось бы кнопки друг над другом расположить (Как это сделать?)
И еще в процессе написания возникла проблема: мой паскаль не печатает на русском, все раскладки перепробовала, не работает. Что делать?
Последний ворос: можно ли загрузить в паскаль нестандартные цвета?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
хотелось бы кнопки друг над другом расположить (Как это сделать?)
изменить процедуру show_menu на такую:
procedure show_menu(current: integer;
const menu_str: array of string;
const size: integer);
var
i, py, color, max_width: integer;
begin
py := dist;
setcolor(white);
settextjustify(centertext, centertext);

max_width := 0;
for i := 0 to pred(size) do
if textwidth(menu_str[i]) > max_width then
max_width := textwidth(menu_str[i]);

for i := 0 to pred(size) do begin

if (current - 1) = i then color := lightgreen
else color := green;

setfillstyle(solidfill, color);
bar(dist, py,
dist + max_width + 2 * dist,
py + textheight(menu_str[i]) + 2 * dist);
rectangle(dist, py,
dist + max_width + 2 * dist,
py + textheight(menu_str[i]) + 2 * dist);

outtextxy(dist + (max_width + 2 * dist) div 2,
py + (textheight(menu_str[i]) + 2 * dist) div 2,
menu_str[i]);
inc(py, textheight(menu_str[i]) + 3 * dist)

end;
end;
и обрабатывать не кнопки "влево/вправо", а "вверх (#72)/вниз (#80)"...

Цитата
мой паскаль не печатает на русском
Читай вот это:
Turbo Pascal на Xp.

Если тебе понадобится в графическом режиме выводить кириллицу (через outtext/outtextxy) - придется добавлять русифицированные шрифты, если надо - дам ссылку, где их можно взять...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


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


Гость






http://pascal.sources.ru/graph/bgirfont.htm
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


Спасибо!
Пробовала установить руссификаторы keyrus и др. , все равно русским не печатает. Может можно каким-нибудь другим методом установить?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

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

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


Можно ли сделать так, чтобы при нажатии определенной кнопки меню программа автоматически переходила в текстовый режим, там выполнялась бы определенная функция, и при нажатии пользователем какой-нибудь клавиши он возращался бы в меню? Если да, то как?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Можно, только зачем? Что, нельзя все в графике сделать?

Если очень надо, конечно, тебе видней - используй RestoreCRTMode для кратковременного перехода в текстовый режим, а потом SetGraphMode(GetGraphMode) для возврата обратно в графический, только учти, что после возврата экран не сохранится, так что придется перерисовать меню...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

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

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


Посоветуй пожалуйста, как лучше сделать. Задача такая: при нажатии пользователем определенной кнопки программа запрашивает ввод данных, потом запускается функция с этими входными данными(вычисление интеграла) и выводит результат. Можно ли все это сделать в графическом режиме?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Вот тут я выкладывал процедуру ввода строки в графическом режиме:
Графика
Переконвертировать в число ее можно через Val.

Как вывести результат ты знаешь, для этого существует процедура конвертации числа в строку Str и OutTextXY... Запускать функцию, которая что-то считает, можно как в текстовом, так и в графическом режиме - ей все равно... Вот и все... Что еще не хватает? Ввод есть, вывод тоже, и не надо мудрить с переходами графика/текст... smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

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

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


Можно ли загрузить в Паскаль нестандартные шрифты(из Ворда), цвета (RGB) и можно ли вставить картинку? Если да то как?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Из Word-а шрифты не пойдут... Можно попробовать поискать утилиту конвертации (хотя я не уверен, что таковая имеется, но все может быть) из файлов формата FON/FNT в формат CHR, которые распознаются Паскалем...

Для работы больше чем с 16 цветами нужен Svga256/Vesa256 (поищи по форуму, уже было про эти драйвера)... Насчет картинок - тебе сюда: Модули для вывода графики. (bmp, Pcx ...)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

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

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


Можно ли наряду с кнопками меню рядом нарисовать Window (из модуля CRT) и все процедуры ввода-вывода осуществлять там? Будет ли это работать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гость






Нет, нельзя... Window - это процедура текстового режима, Кнопки рисуются в приведенной выше программе в графике. Тебе уже задавали вопрос: "Зачем?" Делай либо ВСЕ в графике, либо ВСЕ в текстовом режиме. Иначе будет такая каша ... wacko.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






А как в с++ сделать меню в текстовом режиме?
 К началу страницы 
+ Ответить 

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

 





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