<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102068&amp;view=findpost&amp;p=908613</guid>
        <pubDate>Mon, 07 Nov 2005 13:15:16 +0000</pubDate>
        <title>Построение меню в программах</title>
        <link>https://forum.sources.ru/index.php?showtopic=102068&amp;view=findpost&amp;p=908613</link>
        <description><![CDATA[Romtek: <span class='tag-u'>Описание программы:</span><br>
<br>
За построение меню отвечает процедура <em class='tag-i'>MakeMenu</em> - её вызывает функция <em class='tag-i'>MenuOption</em>, которая возвращает результат в виде индекса выбранного пункта.<br>
<br>
Стиль меню определяется значением <em class='tag-i'>_style</em> (Vertical/Horizontal) - то, как меню будет располагаться на экране.<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; _style := Vertical; { вертикальное меню }</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Цвет нормальных элементов определяется константой <em class='tag-i'>optNormal</em>, а цвет выделенных - <em class='tag-i'>optSelected</em>.<br>
<br>
Остаётся всего-лишь определить названия элементов меню в <em class='tag-i'>optText</em>,<br>
определить константу Items (количество элементов меню),<br>
определить константу width (максимальная длина букв самой длинной строки меню)<br>
<strong class='tag-b'>и меню готово&#33;</strong><br>
<br>
Для вывода пояснительного текста рядом с меню можно воспользоваться процедурой <em class='tag-i'>TextWindow</em>. 4 параметра означают координаты окна и строка - название файла, из которого загрузится описание для меню.<br>
<br>
Снимок экрана:]]></description>
        <author>Romtek</author>
        <category>Pascal: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102068&amp;view=findpost&amp;p=776049</guid>
        <pubDate>Wed, 13 Jul 2005 11:11:34 +0000</pubDate>
        <title>Построение меню в программах</title>
        <link>https://forum.sources.ru/index.php?showtopic=102068&amp;view=findpost&amp;p=776049</link>
        <description><![CDATA[Romtek: Вот вариант с использованием модуля menu_u:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">uses crt, menu_u;</div><div class="code_line">&nbsp;</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp; width1 = 9; { Максимальная длина элементов (букв) меню }</div><div class="code_line">&nbsp;&nbsp; Items1 = 5; { Максимальное количество элементов меню 1 }</div><div class="code_line">&nbsp;&nbsp; optText1: array [0..Items1-1] of string =</div><div class="code_line">&nbsp;&nbsp; (&#39;Сложение&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;Вычитание&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;Деление&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;Умножение&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;Выход&#39;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; width2 = 6; { Максимальная длина элементов (букв) меню }</div><div class="code_line">&nbsp;&nbsp; Items2 = 3; { Максимальное количество элементов меню 2 }</div><div class="code_line">&nbsp;&nbsp; optText2: array [0..Items2-1] of string = (</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;item 1&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;item 2&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;item 3&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Add;</div><div class="code_line">begin</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Subtract;</div><div class="code_line">begin</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Divide;</div><div class="code_line">begin</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Multiply;</div><div class="code_line">begin</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Option: byte; { номер выбранного пункта }</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; clrscr;</div><div class="code_line">&nbsp;&nbsp; &nbsp; TextWindow (2, 2, 78, 7, &#39;menu.txt&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; _style := Vertical; { вертикальное меню }</div><div class="code_line">&nbsp;&nbsp; &nbsp; Option := MenuOption (optText1, Items1, width1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; case option of</div><div class="code_line">&nbsp;&nbsp; &nbsp; 1: Add; &nbsp; &nbsp; &nbsp; { сложить числа }</div><div class="code_line">&nbsp;&nbsp; &nbsp; 2: Subtract; &nbsp;{ вычесть числа }</div><div class="code_line">&nbsp;&nbsp; &nbsp; 3: Divide; &nbsp; &nbsp;{ поделить числа }</div><div class="code_line">&nbsp;&nbsp; &nbsp; 4: Multiply; &nbsp;{ умножить числа }</div><div class="code_line">&nbsp;&nbsp; &nbsp; 5: exit; &nbsp; &nbsp; &nbsp;{ Выйти из программы }</div><div class="code_line">&nbsp;&nbsp; &nbsp; end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; { вывести (если нужно) номер выбранного пункта }</div><div class="code_line">&nbsp;&nbsp; &nbsp; writeln (&#39;Номер пункта: &#39;, option);</div><div class="code_line">&nbsp;&nbsp; &nbsp; readln;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; _style := Horizontal; { горизонтальное меню }</div><div class="code_line">&nbsp;&nbsp; &nbsp; Option := MenuOption (optText2, Items2, width2);</div><div class="code_line">end.</div></ol></div></div></div></div><br>
<br>
<hr>Прикрепил файл с исходниками:<br>
<ol class="tag-list" type="a"><li>Menudemo.pas - программа построения меню без использования модуля.</li><li>Menu_t.pas - программа построения меню с модулем Menu_u.<br>
Menu_u.pas - модуль с основными функциями и процедурами для построения меню.</li></ol>Вариант <em class='tag-i'>b</em> более предпочтителен, т.к. за счёт использования модуля гораздо легче ориентироваться в программе и отслеживать ошибки.]]></description>
        <author>Romtek</author>
        <category>Pascal: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102068&amp;view=findpost&amp;p=776002</guid>
        <pubDate>Wed, 13 Jul 2005 10:19:24 +0000</pubDate>
        <title>Построение меню в программах</title>
        <link>https://forum.sources.ru/index.php?showtopic=102068&amp;view=findpost&amp;p=776002</link>
        <description><![CDATA[Romtek: <hr><br>
Бывает, что есть необходимость добавить пояснительный текст рядом с меню. В подавляющем количестве студенты пишут тогда следующий код:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; GotoXY (1,2);</div><div class="code_line">&nbsp;&nbsp; &nbsp; writeln (&#39;Для управления пользуйтесь клавишами стрелок:&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; GotoXY (1,4);</div><div class="code_line">&nbsp;&nbsp; &nbsp; writeln (&#39;1 - сделать то-то...&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; writeln (&#39;2 - сделать то-то...&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; writeln (&#39;3 - сделать то-то...&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; writeln (&#39;4- сделать то-то...&#39;&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; writeln (&#39;5 - сделать то-то...&#39;);</div><div class="code_line">end;</div></ol></div></div></div></div>Особенно неудобно в программах с  большим текстом кода. В нём можно просто утонуть.<br>
Это дико неудобно возиться со множеством <em class='tag-i'>writeln</em>, которые только отвлекают от сути, в то время как можно загрузить текст из текстового файла, заранее отредактированного в любом текстовом редакторе такой текст:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Для управления пользуйтесь клавишами стрелок:</div><div class="code_line">&nbsp;</div><div class="code_line">1 - сделать то-то...</div><div class="code_line">2 - сделать то-то...</div><div class="code_line">3 - сделать то-то...</div><div class="code_line">4 - сделать то-то...</div><div class="code_line">5 - сделать то-то...</div></ol></div></div></div></div>Не правда ли удобнее?<br>
<br>
Теперь рассмотрим процедуру, которая загрузит текст из отдельного текстового файла.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">{ Эта процедура используется процедурой TextWindow для загрузки текста из отдельного текстового файла. }</div><div class="code_line">procedure LoadText (fname: string);</div><div class="code_line">var F: text;</div><div class="code_line">&nbsp;&nbsp; &nbsp;str: string;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; Assign (F, fname);</div><div class="code_line">&nbsp;&nbsp; &nbsp; {$I-}</div><div class="code_line">&nbsp;&nbsp; &nbsp; Reset (F);</div><div class="code_line">&nbsp;&nbsp; &nbsp; {$I+}</div><div class="code_line">&nbsp;&nbsp; &nbsp; if IOresult = 0 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; while Not EOF (F) do</div><div class="code_line">&nbsp;&nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;readln (F, str);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;writeln (str);</div><div class="code_line">&nbsp;&nbsp; &nbsp; end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; Close (F);</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
Эта процедура выведет  текст в заданном регионе (окне) из текстового файла <em class='tag-i'>fn</em>.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">{ Выводит текст в заданном регионе из текстового файла fn }</div><div class="code_line">procedure TextWindow (x1, y1, x2, y2: integer; fn: string);</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp; &nbsp; TextColor = Cyan; { цвет фона региона }</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; Window (x1, y1, x2, y2);</div><div class="code_line">&nbsp;&nbsp; &nbsp; TextBackground (TextColor);</div><div class="code_line">&nbsp;&nbsp; &nbsp; ClrScr;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; LoadText (fn);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; Window (1, 1, 80, 25);</div><div class="code_line">&nbsp;&nbsp; &nbsp; TextBackground (Black);</div><div class="code_line">end;</div></ol></div></div></div></div>Таким образом, задав нужные вам параметры, вы увидите текст рядом с меню.<br>
Например,<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; TextWindow (2, 2, 78, 7, &#39;strelki.txt&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; _style := Vertical; { вертикальное меню }</div><div class="code_line">&nbsp;&nbsp; &nbsp; Option := MenuOption (optText1, Items1);</div></ol></div></div></div></div>Здесь текст выводится в окне с границами 2, 2, 78, 7 из файла &#39;strelki.txt&#39;.<br>
<br>
<strong class='tag-b'>Примечание:</strong><br>
Процедура TextWindow должна находиться <strong class='tag-b'>перед </strong>построением меню&#33; Иначе текста не будет видно.]]></description>
        <author>Romtek</author>
        <category>Pascal: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=102068&amp;view=findpost&amp;p=775460</guid>
        <pubDate>Tue, 12 Jul 2005 21:02:09 +0000</pubDate>
        <title>Построение меню в программах</title>
        <link>https://forum.sources.ru/index.php?showtopic=102068&amp;view=findpost&amp;p=775460</link>
        <description><![CDATA[Romtek: <span class='tag-size' data-value='11' style='font-size:11pt;'><span class="tag-color tag-color-named" data-value="blue" style="color: blue"><strong class='tag-b'>Построение меню в программах</strong></span></span><br>
<br>
Мне часто приходится сталкиваться с программами, в которых студенты пытались построить нечто похожее на меню, и это было нечто... (слов не подобрать  :) ). Построение меню занимало б<strong class='tag-b'>о</strong>льшую часть программы и алгоритм терялся в недрах гигантских программ.<br>
<br>
Программа состоит из набора алгоритмов, данных и интерфейса. Но ошибаются те, которые считают, что интерфейс главнее. Это большое заблужение&#33; Потому, что <em class='tag-i'><span class="tag-color tag-color-named" data-value="green" style="color: green">основную задачу выполняют именно алгоритмы, а не украшательства</span></em>. Интерфейс же совсем не обязательная часть.<br>
<br>
Более того, <span class="tag-color tag-color-named" data-value="red" style="color: red"><em class='tag-i'>неприемлемо смешивание кода алгоритмов и интерфейса</em></span>: в этом случае очень затрудняется поиск ошибок и нарушается строение программы.<br>
<br>
Поэтому советую взять за основу эту программу, которая строит меню (горизонтальное или вертикальное) с управлением клавиш стрелок.<br>
Выбор пункта меню ведёт к отдельной подзадаче, каждая из которых оформлена в виде процедуры. В них вы будете выполнять  действия, предусмотренные вашей программой. Я привёл пример для операций над числами.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">uses crt;</div><div class="code_line">Type</div><div class="code_line">&nbsp;&nbsp; MenuType = (Vertical, Horizontal);</div><div class="code_line">&nbsp;</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp; width = 9; { Максимальная длина элементов (букв) меню }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; Items1 = 5; { Количество элементов меню 1 }</div><div class="code_line">&nbsp;&nbsp; optText1: array [0..Items1-1] of string =</div><div class="code_line">&nbsp;&nbsp; (&#39;Сложение&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;Вычитание&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;Деление&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;Умножение&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;Выход&#39;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; Items2 = 3; { Количество элементов меню 2 }</div><div class="code_line">&nbsp;&nbsp; optText2: array [0..Items2-1] of string = (</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;item 1&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;item 2&#39;,</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;item 3&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; optNormal = LightGray; { цвет невыделенных элементов меню }</div><div class="code_line">&nbsp;&nbsp; optSelected = Yellow; &nbsp;{ цвет выделенных элементов меню }</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp; X, Y,</div><div class="code_line">&nbsp;&nbsp; selected, &nbsp;{ Индекс элемента, который будет подсвечиваться в начале</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;программы }</div><div class="code_line">&nbsp;&nbsp; row: integer;</div><div class="code_line">&nbsp;&nbsp; _style: menuType; &nbsp;{ Указывает на тип меню: вертикальный (Vertical)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;или горизонтальный (Horizontal) }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">{ Эта процедура используется процедурой MenuOption для построения меню }</div><div class="code_line">procedure MakeMenu (optText: array of string; MaxItems: integer);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp; i, _X: byte;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; Y := row;</div><div class="code_line">&nbsp;&nbsp; &nbsp; _X := X;</div><div class="code_line">&nbsp;&nbsp; &nbsp; for i := 0 to MaxItems-1 do</div><div class="code_line">&nbsp;&nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GoToXY (_X, Y);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if i = selected then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TextColor (optSelected)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TextColor (optNormal);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;write (optText[i]);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;If _style = Horizontal Then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inc (_X, width + 1)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inc (Y, 2);</div><div class="code_line">&nbsp;&nbsp; &nbsp; end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">{ выбираем нужный элемент меню этой функцией }</div><div class="code_line">function MenuOption (optText: array of string; MaxItems: integer): byte;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp; ch: char;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; selected := 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; If _style = Vertical then begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; X := (80 - width) div 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; row := (25 - MaxItems) div 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp; End</div><div class="code_line">&nbsp;&nbsp; &nbsp; Else</div><div class="code_line">&nbsp;&nbsp; &nbsp; Begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; X := (80 - MaxItems * width) div 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; row := 2; { строчка, в которой будет находиться горизонтальное меню }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; GotoXY(1, row); ClrEol; { ... а для горизонтального - только строку</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; где будет меню. }</div><div class="code_line">&nbsp;&nbsp; &nbsp; End;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; repeat</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MakeMenu (optText, MaxItems);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ch := readkey;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ch = #0 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ch := readkey;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case ch of</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #80, #77: {Down/Right}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inc (Selected);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if Selected = MaxItems then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Selected := 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MakeMenu (optText, MaxItems);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #72, #75: {Up/Left}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dec (Selected);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if Selected &#60; 0 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Selected := MaxItems-1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MakeMenu (optText, MaxItems);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; until ch = #13; {Enter}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; MenuOption := Selected + 1;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; TextColor (optNormal);</div><div class="code_line">&nbsp;&nbsp; &nbsp; If _style = Vertical Then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;clrscr;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Add;</div><div class="code_line">begin</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Subtract;</div><div class="code_line">begin</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Divide;</div><div class="code_line">begin</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure Multiply;</div><div class="code_line">begin</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Option: byte; { номер выбранного пункта }</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; clrscr;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; _style := Vertical; { вертикальное меню }</div><div class="code_line">&nbsp;&nbsp; &nbsp; Option := MenuOption (optText1, Items1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; case option of</div><div class="code_line">&nbsp;&nbsp; &nbsp; 1: Add; &nbsp; &nbsp; &nbsp; { сложить числа }</div><div class="code_line">&nbsp;&nbsp; &nbsp; 2: Subtract; &nbsp;{ вычесть числа }</div><div class="code_line">&nbsp;&nbsp; &nbsp; 3: Divide; &nbsp; &nbsp;{ поделить числа }</div><div class="code_line">&nbsp;&nbsp; &nbsp; 4: Multiply; &nbsp;{ умножить числа }</div><div class="code_line">&nbsp;&nbsp; &nbsp; 5: exit; &nbsp; &nbsp; &nbsp;{ Выйти из программы }</div><div class="code_line">&nbsp;&nbsp; &nbsp; end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; { вывести (если нужно) номер выбранного пункта }</div><div class="code_line">&nbsp;&nbsp; &nbsp; writeln (&#39;Номер пункта: &#39;, option);</div><div class="code_line">&nbsp;&nbsp; &nbsp; readln;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; _style := Horizontal; { горизонтальное меню }</div><div class="code_line">&nbsp;&nbsp; &nbsp; Option := MenuOption (optText2, Items2);</div><div class="code_line">&nbsp;</div><div class="code_line">end.</div></ol></div></div></div></div><br>
Совместное авторство программы: &copy; Romtek и volvo877.  :)]]></description>
        <author>Romtek</author>
        <category>Pascal: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	