Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 1
Регистрация: 29.05.2012
Сообщений: 7

Как на Qbasic сделать вертикальное меню

29.05.2012, 16:34. Показов 2412. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно вывести на экран в столбец пункты меню, примерно так:
Пункт 1
Пункт 2
...
Пункт 10

Пункт 1 выделить другим цветом. И ждать нажатия клавиш стрелок вверх и вниз.
При нажатии стрелки вниз Пункт i закрашивается фоновым цветом, а Пункт i+1 выделяется
Если сейчас выделен первый пункт, то выделяется последний.
При нажатии стрелки вверх Пункт i закрашивается фоновым цветом, а Пункт i-1 выделяется
Если сейчас выделен последний пункт, то выделяется первый.
И все это в текстовом режиме SCREEN 0 !

Как всё это сделать? Только не надо общих слов, дайте конкретные команды, хотя бы основные.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2012, 16:34
Ответы с готовыми решениями:

Как сделать такое вертикальное меню?
Задача вот какая: нужно сделать вот такое меню: но у меня ни как не получается заменить маркер на картинку чтобы оно потом...

Как сделать вертикальное меню раскрывающимся и закрывающимся?
Ребята! Я в этом вопросе полный "ноль". Есть такой код: </div> </div> <aside...

Вертикальное-раздвижное меню (на CSS). Как сделать чтоб оно не перекрывало соседние обънкты?
Как сделать чтоб оно "не наезжало" на соседние объекты?? Как то дивку надо изменить, я не знаю как, чтоб оно...

4
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
29.05.2012, 17:49
Лучший ответ Сообщение было отмечено как решение

Решение

Я как-то давно хотел написать FAQ для начинающих, вот информация оттуда...
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Vib% = 0   ' Текущий выбор
Drw% = 1   ' Нарисуем меню в самом начале
DO   '  Это бесконечный цикл с постусловием
 
 
   Kb$ = INKEY$    '  Это получение кодов нажатых клавиш
                   '  т.е. если клавиша была нажата, её
                   '  код в строковом выражении запишется
                   '  в строковую переменную Kb$, а если
                   '  не было нажатий клавиш, то соотв.
                   '  переменная будет пустым значением.
 
     '  Это мы проверяем нажата ли клавиша вверх(смотрим Kb$)
     '  и отнимаем единицу от значения выбранного пункта, если
     '  его значение больше нуля, т.е. не даём выйти за ноль.
     '  После изменения значения, ставим флаг отрисовки меню
 
   IF Kb$ = CHR$(0) + "H" AND Vib% > 0 THEN Vib% = Vib% - 1: Drw% = 1
 
     '  Это мы проверяем нажата ли клавиша вниз
     '  и прибавляем единицу к значению выбранного пункта, если
     '  его значение меньше двух, т.е. мы ограничиваем кол-во
     '  пунктов тремя значениями: 0, 1, 2
     '  Также после изменения значения, ставим флаг отрисовки меню
 
   IF Kb$ = CHR$(0) + "P" AND Vib% < 2 THEN Vib% = Vib% + 1: Drw% = 1
 
     '  Тут будет выбор пункта меню ENTER'ом
   IF Kb$ = CHR$(13) THEN
          '  Пусть надпись выводится вверху, жёлтым цветом
      LOCATE 1, 1: COLOR 14
          '  Селект кейзу скармливаем переменную,
          '  по значению которой нужно произвести выбор
          '  Далее пишем CASE, номер пункта и код для выполнения
          '  Двоеточие равносильно переводу на другую строку, т.е.
          '  если бы мы писали код на следующей строке.
      SELECT CASE Vib%
         CASE 0: PRINT "Punkt 1"
         CASE 1: PRINT "Punkt 2"
         CASE 2: PRINT "Punkt 3"
      CASE ELSE     ' Этой строчки требуют некоторые компиляторы
                    ' по сути это исключающее условие, т.е. если
                    ' ни один пункт не выбран, то выполнится код
                    ' между CASE ELSE и END SELECT(однако этого
                    ' никогда не произойдёт).
      END SELECT
   END IF
 
         '  Это условие отрисовки меню
         '  после изменения выбранного пункта
         '  оно единоразово выполняется
 
         IF Drw% = 1 THEN
 
                      '  Сбросим флаг отрисовки, чтобы не
                      '  выполнять мног раз. Нам нужно
                      '  перерисовывать меню только тогда,
            Drw% = 0  '  когда выбранный пункт изменился.
 
          '  Тут ставим позицию печати в заданную точку(LOCATE)
          '  и проверяем ровняется ли значение выбранного пункта
          '  значению пункта который в тек. момент отрисовываем.
          '  Если ровняется, значит это и есть выбранный пункт,
          '  помечаем его особым цветом(11), в противном случае ставим
          '  ему обычный цвет(8).
          '  Цвет задаётся оператором COLOR
 
          '  Пункт 1
          LOCATE 5, 10: IF Vib% = 0 THEN COLOR 11 ELSE COLOR 8
 
               '  Печатаем наш пункт
               PRINT "Punkt 1"
 
          '  Пункт 2
          LOCATE 6, 10: IF Vib% = 1 THEN COLOR 11 ELSE COLOR 8
               '  Печатаем наш пункт
               PRINT "Punkt 2"
 
          '  Пункт 3
          LOCATE 7, 10: IF Vib% = 2 THEN COLOR 11 ELSE COLOR 8
               '  Печатаем наш пункт
               PRINT "Punkt 3"
 
         END IF  '  Конец отрисовки меню
 
     '  Тут код цикла заканчивается
     '  Заодно поставим постусловие на выход из цикла
     '  по нажатию клавиши ESCAPE
LOOP UNTIL Kb$ = CHR$(27)
CLS  '  Очистим экран, дальше никаких END'ов не надо
     '  интерпретатор и так поймёт что это конец программы.
3
0 / 0 / 1
Регистрация: 29.05.2012
Сообщений: 7
29.05.2012, 21:22  [ТС]
Спасибо! Я на самом деле вовсе не начинающий, просто ОЧЕНЬ давно не работал в QB и много чего забыл.

Добавлено через 2 часа 3 минуты
А можно ещё 1 вопрос?
Код стрелки вверх = CHR$(0) + "H". Стрелки вниз = CHR$(0) + "P".
Не подскажете коды стрелки влево и вправо? А ещё лучше - таблицу служебных кодов, чтобы каждый раз не спрашивать?
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
29.05.2012, 22:48
А ещё лучше - таблицу служебных кодов.
Я могу вам прогу дать, которая по нажатию определит код:
Вы его только вставляете и радуетесь.
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CLS
DO: Kb$ = INKEY$
  IF Kb$ <> "" THEN
    IF LEFT$(Kb$, 1) = CHR$(0) THEN
      LOCATE , 20
      PRINT "INKEY$ = CHR$(0) + CHR$(";
      PRINT LTRIM$(STR$(ASC(RIGHT$(Kb$, 1)))); ")"
      PRINT
    ELSE
      LOCATE , 20
      PRINT "INKEY$ = CHR$("; LTRIM$(STR$(ASC(Kb$))); ")"
      PRINT
    END IF
  END IF
LOOP UNTIL Kb$ = CHR$(27)
Таблица эта называется ASCII есть в интернете и справках QBasic\QuickBasic...

Добавлено через 4 минуты
Вот эту я себе на фотокарточке распечатал и вам советую:
http://www.asciitable.com/
1
0 / 0 / 1
Регистрация: 29.05.2012
Сообщений: 7
29.05.2012, 23:24  [ТС]
Понял, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.05.2012, 23:24
Помогаю со студенческими работами здесь

Нужно сделать вертикальное меню с раскрывающимися вкладками
Здравствуйте, помогите пожалуйста сделать вертикальное меню. дело в том, что на сайте есть горизонтальное меню главных страниц, и 1...

Как плавно выкатить вертикальное меню
Накидал меню в конструкторе, но вот не понимаю, как использовать анимацию -webkit-transition для эффектов появления меню. Вот накидал...

Как вертикальное меню перевести в горизонтальное ( CSS )
Вот сайт (шаблон с доступом к html и css на платформе Jimdo). www.problabla.jimdo.com Сейчас, как видите, меню вертикальное справо. Как...

Как создать левое вертикальное двухуровнее меню?
Как создать левое вертикальное двухуровнее меню?

Как правильно делать вертикальное меню в _Layout.cshtml?
Добрый день! Подскажите пожалуйста, как Вы добавляете вертикальное меню в _Layout.cshtml, что бы оно как и стандартный вариант(который...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru