<?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=57652&amp;view=findpost&amp;p=385502</guid>
        <pubDate>Mon, 21 Jun 2004 11:49:57 +0000</pubDate>
        <title>Управление формой курсора</title>
        <link>https://forum.sources.ru/index.php?showtopic=57652&amp;view=findpost&amp;p=385502</link>
        <description><![CDATA[e-moe: <strong class='tag-b'>УПРАВЛЕНИЕ   ФОРМОЙ   КУРСОРА</strong><br>
<br>
Курсор служит двум целям. Во-первых, он указывает позицию экрана, в которую про-грамма должна производить вывод очередного символа. Во-вторых, он делает видимой на экране точку отсчета для пользователя. Только для второй цели курсор должен быть види-мым. Тем не менее вне зависимости от того, видим он или невидим, курсор всегда указывает определенную позицию на экране. Это связано с тем, что операционная система в любом случае производит вывод на экран, начиная с текущей позиции курсора.<br>
Программа может управлять формой курсора, вплоть до полного его отключения, с по-мощью функции <strong class='tag-b'>1</strong> программного прерывания <strong class='tag-b'>&#036;10</strong>. Для этого требуется лишь загрузить в ре-гистры <strong class='tag-b'>CH </strong>и <strong class='tag-b'>CL </strong>номера начальной и конечной линий курсора.<br>
<br>
Курсор строится из тонких горизонтальных отрезков, верхний из которых называется начальной линией курсора, а нижний - его конечной линией. Размер курсора по вертикали не может превышать размер знакоместа, ширина курсора всегда равна ширине знакоместа. На-чальная и конечная линии отсчитываются сверху вниз:  <strong class='tag-b'>0 .. 7  </strong>или  <strong class='tag-b'>0 .. 13.</strong><br>
В знакоместе  <strong class='tag-b'>8 х 8  </strong>нормальный курсор занимает строки <strong class='tag-b'>7 и 8</strong>, в знакоместе <strong class='tag-b'>14 х 8 </strong>- строки <strong class='tag-b'>12 .. 14</strong>.  Значение начальной строки, равное <strong class='tag-b'>32 (&#036;20), </strong>отключает курсор, т.е. делает его невидимым. Мигание видимого курсора отключить нельзя, так как оно реализовано ап-паратно.<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">Program DemoCursor;</div><div class="code_line">Uses &nbsp;Crt, Dos;</div><div class="code_line">{ --------------------------------- }</div><div class="code_line">Procedure WaitEnter;</div><div class="code_line">Var &nbsp;ch : char;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;&nbsp;Repeat</div><div class="code_line">&nbsp;&nbsp; &nbsp;ch:=ReadKey;</div><div class="code_line">&nbsp;&nbsp;Until &nbsp;ord(ch)=13;</div><div class="code_line">End { WaitEnter };</div><div class="code_line">{ --------------------------------- }</div><div class="code_line">Procedure SetCursor(Cursor:word);</div><div class="code_line">Var &nbsp;Reg : Registers;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;&nbsp;With Reg do</div><div class="code_line">&nbsp;&nbsp; &nbsp;Begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;AH:=1; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ Номер функции }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;BH:=0; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ Номер страницы }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;CH:=Hi(Cursor); &nbsp; { Начальная линия }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;CL:=Lo(Cursor); &nbsp; { Конечная линия }</div><div class="code_line">&nbsp;&nbsp; &nbsp;End;</div><div class="code_line">&nbsp;&nbsp;Intr(,Reg);</div><div class="code_line">End { SetCursor };</div><div class="code_line">{ --------------------------------- }</div><div class="code_line">Begin</div><div class="code_line">&nbsp;&nbsp;SetCursor(07); Writeln(&#39;Нормальный курсор&#39;);</div><div class="code_line">&nbsp;&nbsp;WaitEnter;</div><div class="code_line">&nbsp;&nbsp;SetCursor({text}07); Writeln(&#39;Блок-курсор&#39;);</div><div class="code_line">&nbsp;&nbsp;WaitEnter;</div><div class="code_line">&nbsp;&nbsp;SetCursor(00); Writeln(&#39;Отключенный курсор&#39;);</div><div class="code_line">&nbsp;&nbsp;WaitEnter;</div><div class="code_line">&nbsp;&nbsp;SetCursor(07); Writeln(&#39;Тонкий курсор&#39;);</div><div class="code_line">&nbsp;&nbsp;WaitEnter;</div><div class="code_line">End.</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
По мотивам лекций Назаренко В.И.]]></description>
        <author>e-moe</author>
        <category>Pascal: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	