На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила ЧаВо (FAQ) разделов Паскаля
В этом разделе разрешено создавать только темы, в которых описано РЕШЕНИЕ какой-либо общей проблемы, или описание какого-либо аспекта языка Паскаль.
Обсуждение уже созданных тем разрешено, но только конструктивное, например указание на ошибку или уточнение имеющегося текста.

Также читать Требования к оформлению статей
Модераторы: volvo877, Romtek
  
> Управление формой курсора
    УПРАВЛЕНИЕ ФОРМОЙ КУРСОРА

    Курсор служит двум целям. Во-первых, он указывает позицию экрана, в которую про-грамма должна производить вывод очередного символа. Во-вторых, он делает видимой на экране точку отсчета для пользователя. Только для второй цели курсор должен быть види-мым. Тем не менее вне зависимости от того, видим он или невидим, курсор всегда указывает определенную позицию на экране. Это связано с тем, что операционная система в любом случае производит вывод на экран, начиная с текущей позиции курсора.
    Программа может управлять формой курсора, вплоть до полного его отключения, с по-мощью функции 1 программного прерывания $10. Для этого требуется лишь загрузить в ре-гистры CH и CL номера начальной и конечной линий курсора.

    Курсор строится из тонких горизонтальных отрезков, верхний из которых называется начальной линией курсора, а нижний - его конечной линией. Размер курсора по вертикали не может превышать размер знакоместа, ширина курсора всегда равна ширине знакоместа. На-чальная и конечная линии отсчитываются сверху вниз: 0 .. 7 или 0 .. 13.
    В знакоместе 8 х 8 нормальный курсор занимает строки 7 и 8, в знакоместе 14 х 8 - строки 12 .. 14. Значение начальной строки, равное 32 ($20), отключает курсор, т.е. делает его невидимым. Мигание видимого курсора отключить нельзя, так как оно реализовано ап-паратно.
    Ниже приведена программа, иллюстрирующая управление курсором.

    ExpandedWrap disabled
      Program DemoCursor;
      Uses  Crt, Dos;
      { --------------------------------- }
      Procedure WaitEnter;
      Var  ch : char;
      Begin
        Repeat
          ch:=ReadKey;
        Until  ord(ch)=13;
      End { WaitEnter };
      { --------------------------------- }
      Procedure SetCursor(Cursor:word);
      Var  Reg : Registers;
      Begin
        With Reg do
          Begin
            AH:=1;            { Номер функции }
            BH:=0;            { Номер страницы }
            CH:=Hi(Cursor);   { Начальная линия }
            CL:=Lo(Cursor);   { Конечная линия }
          End;
        Intr($10,Reg);
      End { SetCursor };
      { --------------------------------- }
      Begin
        SetCursor($0607); Writeln('Нормальный курсор');
        WaitEnter;
        SetCursor($0007); Writeln('Блок-курсор');
        WaitEnter;
        SetCursor($2000); Writeln('Отключенный курсор');
        WaitEnter;
        SetCursor($0707); Writeln('Тонкий курсор');
        WaitEnter;
      End.


    По мотивам лекций Назаренко В.И.
    Сообщение отредактировано: e-moe -
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0155 ]   [ 16 queries used ]   [ Generated: 26.04.24, 13:41 GMT ]