Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Turbo Pascal / Stud_1_1 / LecRus / MainPart.doc
Скачиваний:
117
Добавлен:
03.03.2016
Размер:
5.03 Mб
Скачать

Процедуры управления текстовым режимом экрана

Ниже приведены краткие сведения о некоторых процедурах и функциях, используемых для управления текстовым режимом работы экрана. Более подробная информация содержится в [2, 6, 8].

1. Процедура Window(x1,y1,x2,y2:byte);

Процедура устанавливает текущее окно на экране:

При этом должны соблюдаться условия:

1  <

1  <

При нарушении этих условий окно не создается.

Параметр может иметь значения 40 или 80, параметр - 25, 43 или 50 в зависимости от типа адаптера.

После выполнения процедуры Window все действия с экраном относятся к той его части, которая определена координатами . Отсчет строк и столбцов для позиционирования курсора теперь производится в координатах текущего окна, а позиция (1,1) - это левый верхний угол окна. Сразу после выполнения процедуры Window курсор устанавливается в позицию (1,1) созданного окна.

Координаты очередного создаваемого окна всегда даются в абсолютных экранных координатах, а не в относительных координатах последнего текстового окна.

2. Процедура ClrScr.

Процедура очищает текущее текстовое окно, закрашивая его текущим цветом фона. При этом курсор устанавливается в позицию (1,1).

3. Процедура GotoXY(x,y:byte);

С помощью этой процедуры можно устанавливать курсор в столбец и строку текущего окна. При этом последующая операция вывода текста на экран разместит первый символ выводимой строки в позицию (). Процедура GotoXY использует систему координат текущего текстового окна. При выводе символов или другой информации по мере необходимости на экране происходит прокрутка, или сдвиг, изображения. Это всегда имеет место при выводе кодов конца строки (код #10) в последней строке окна операторами Write и Writeln или когда выводимая строка не помещается в последней строке текстового окна. В то же время вывод типа

GotoXY(5,25); Write('строка');

не вызовет сдвига вверх, потому что оператор Write не переводит строки. Однако вывод хотя бы одного символа в правый нижний угол текстового окна вызовет прокрутку:

GotoXY(80,25); Write('*');

и символ '*' окажется уже в 24-ой строке, а не в 25-ой.

Устранить указанный эффект можно с помощью прокрутки экрана вниз после вывода символа в последней позиции последней строки (например, с помощью процедуры InsLine).

4. Функции WhereX и WhereY.

Используются для программного опроса текущего положения курсора в текстовом окне.

5. Процедура ClrEOL.

Эта процедура может использоваться как для стирания "хвостов" строк, так и для раскраски чистого экрана в полоску максимально быстрым способом. Процедура стирает все символы в строке, начиная с текущей позиции курсора и до правого края текущего окна. Вместо стираемых символов она ставит пробелы, при этом цвет строки определяется цветовым атрибутом фона.

6. Процедуры InsLine и DelLine.

Эти процедуры позволяют "прокручивать" часть текстового окна или весь экран вверх и вниз. InsLine вставляет пустую строку на место той, где находится в текущий момент курсор. Все нижние строки, начиная с нее, смещаются вниз на одну строку. Самая нижняя строка уйдет за нижнее поле окна и исчезнет.

Процедура DelLine удаляет строку, в которой находится курсор, подтягивая на ее место все нижестоящие строки. При этом освобождается самая нижняя строка экрана.

Все строки, которые освобождаются при работе процедур InsLine и DelLine, закрашиваются текущим цветом фона.

И С П О Л Ь З О В А Н И Е П Р Е Р Ы В А Н И Й

Многие из процедур работы с экраном не могут быть выполнены путем применения только средств Турбо Паскаля. Для реализации таких процедур, как ввод-вывод в ненулевые страницы видеопамяти, управление курсором и др., необходимо использовать функции операционной системы MS DOS. Обращение к таким функциям осуществляется через так называемые прерывания, которые представляют собой стандартные подпрограммы базовой системы ввода-вывода (BIOS) операционной системы MS DOS.

Обращение к программным прерываниям выполняется с помощью процедуры Intr, заголовок которой имеет вид

Соседние файлы в папке LecRus