Меню и файлы |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Меню и файлы |
Sensitive |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 132 Пол: Женский Реальное имя: Юлия Репутация: 0 |
Здравствуйте.
У меня такой вопрос. Есть меню из 3-х пунктов. Если нажимается первый пункт, то должно появиться следующее меню, где также можно выбирать пункты второго меню. Содержимое второго меню хранится в файле. То есть при нажатии на первый пункт главного меню я вывожу пункты второго меню из файла. Как сделать, чтобы из этих (выведенных из файла) пунктов также можно было выбирать... или это невозможно? Спасибо заранее за помощь. |
Tan |
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: 10 |
Есть же оператор case(x), что тебе его мешает использовать для того, чтобы осуществить выбор.
-------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
Sensitive |
Сообщение
#3
|
Пионер Группа: Пользователи Сообщений: 132 Пол: Женский Реальное имя: Юлия Репутация: 0 |
Есть же оператор case(x), что тебе его мешает использовать для того, чтобы осуществить выбор. с case у меня получается работать только если пункты меню заданы стринговской константой. А если я их вывела из файла, то не могу понять как использовать case в данном случае... |
volvo |
Сообщение
#4
|
Гость |
Sensitive, для этого надо максимально отделить функцию отображения меню от всего остального. То есть, есть какой-то массив строк, есть функция
function get_menu(const s_arr: array of string): integer;, которая отображает этот массив и подсвечивает нужный элемент в зависимости от выбора пользователя. Когда нажат Enter - возвращается индекс выбранного значения. Все. Больше эта функция не должна быть привязана ни к чему. Только так ты сможешь обеспечить работу с одинаковой легкостью с меню любой вложенности. Примеры я выкладывал у себя на сайте: http://volvo71.narod.ru/menus.htm |
Sensitive |
Сообщение
#5
|
Пионер Группа: Пользователи Сообщений: 132 Пол: Женский Реальное имя: Юлия Репутация: 0 |
Спасибо, я попробую.
|
Sensitive |
Сообщение
#6
|
Пионер Группа: Пользователи Сообщений: 132 Пол: Женский Реальное имя: Юлия Репутация: 0 |
посмотрела меню на сайте. взяла пока что тупо меню оттуда... вот получается вывожу главное меню, и подменю. А дальше мне еще нужно выводить подменюшки-там где "Просмотр данных" и "Добавление данных"(код ниже)...не знаю как это сделать, и как отделить подпрограмму отрисовки меню не поняла (как говорил Volvo). Вот мой код, посмотрите плиз.
uses crt; |
volvo |
Сообщение
#7
|
Гость |
Да хоть еще 10 уровней... Смотри, я добавил тип TProcedure, и еще один уровень меню (который ничего не делает, только отображается, но на него очень просто повесить какие-то действия) на "Prosmotr dannih":
submenu.pas ( 2.34 килобайт ) Кол-во скачиваний: 522 Разберешься? |
Sensitive |
Сообщение
#8
|
Пионер Группа: Пользователи Сообщений: 132 Пол: Женский Реальное имя: Юлия Репутация: 0 |
Да, volvo, с этим поняла. И действительно можно сделать теперь много уровней меню-очень помог. Но... Мне получается сами пункты меню ("Просмотр данных" например) нужно выводить из файла, то есть я их никак не введу в строковую константу... как мне быть? выводить я их думала процедурой Prosmotr;
Procedure Prosmotr; а куда и как её влепить? Пробовала, но ничего не выходит... то есть у меня получается эта процедура будет выводить список терминов, а пользователь уже должен из них выбрать тот,кторый он хочет просмотреть(описание каждого термина тоже будет выводиться из файла). Вот и застряла...не продвигаюсь никуда-не получается. |
volvo |
Сообщение
#9
|
Гость |
А как, прости, ты будешь знать, какое ДЕЙСТВИЕ выполнять при выборе того или иного пункта меню, прочитанного из файла? Просто прочесть строки из файла и отобразить их в меню - без проблем:
const Файл: termini.txt ( 55 байт ) Кол-во скачиваний: 505 Если у тебя возник вопрос о том, что в некоторых подменюшках может быть по 3, а в некоторых - и по 5 элементов, то это тоже не проблема, достаточно не брать nItems в ShowMenu из константы, а передавать еще одним параметром (как раз в приведенном выше коде Prosmotr заодно возвращает и длину массива строк). Только вот с массивом Proc - непонятно, что делать... Откуда ты (вернее, программа, читающая файл 'termini.txt') будет знать, что по нажатию на первый пункт меню надо открыть еще один файл? Сейчас-то пока массив Proc для прочитанного из файла меню задается вручную... Ну, извратиться, конечно можно (если надо - говори, я попробую объяснить, как это преодолеть, есть кое-какая идея), но стоит ли оно таких ухищрений? |
Sensitive |
Сообщение
#10
|
Пионер Группа: Пользователи Сообщений: 132 Пол: Женский Реальное имя: Юлия Репутация: 0 |
Ну пока что я разберусь с тем, что ты написал... а вообще нужно чтобы работала программа именно так, как ты понял, потому что еще будет процедура добавления термина, а как же я его добавлю в константу...поэтому подменюшку выводим из файла...
пока поразбираюсь с тем, что есть. |
Текстовая версия | 12.01.2025 16:51 |