Процедуры и функции
Процедура Window
Определяет текстовое окно – область экрана, которая в дальнейшем будет рассматриваться процедурами вывода как весь экран. Сразу после вызова процедуры курсор помещается в левый верхний угол окна, а само окно очищается (заполняется цветом фона). По мере вывода курсор, как обычно, смещается вправо и при достижении правой границы окна переходит на новую строку, а если он к этому моменту находился на последней строке, содержимое окна сдвигается вверх на одну строку, т.е. осуществляется "прокрутка" окна. Заголовок процедуры:
Procedure Window(XI,Y1,X2,Y2: Byte);
ЗдесьX1…Y2 – координаты левого верхнего (X1,Y1) и правого нижнего (X2,Y2) углов окна. Они задаются в координатах экрана, причем левый верхний угол экрана имеет координаты (1.1), горизонтальная координата увеличивается слева направо, а вертикальная – сверху вниз.
В следующем примере иллюстрируется вывод достаточно длинного сообщения в двух разных окнах.
Uses CRT; var k: integer; begin {Создаем левое окно – желтые символы на синем фоне:} TextBackground(Blue); Window(5.2.35.17); TextColor(Yellow); for k: = 1 to 100 do Write(' Нажмите клавишу Enter…'); ReadLn; {Ждем нажатия Enter} ClrScr; {Очищаем окно} {Создаем правое окно – белые символы на красном фоне:} TextBackground(Red); TextColor(White); Window(40.2.70.17); for k: = 1 to 100 do Write(' Нажмите клавишу Enter…'); ReadLn; TextMode(C080) {Сбрасываем все установки} end.
Обращение к процедуре Window игнорируется, если какая-либо из координат выходит за границы экрана или если нарушается одно из условий: Х2>Х1 и Y2>Y1. Каждое новое обращение к Window отменяет предыдущее определение окна. Границы текущего окна запоминаются в двух глобальных переменных модуля CRT: переменная WindMin типа Word хранит X1 и Y1 (X1 – в младшем байте), а переменная того же типа WindMax – Х2 и Y2(X2 – в младшем байте).
При желании Вы можете изменять их нужным образом без обращения к Window. Например, вместо оператора:
Window(40.2.70.17);
Можно было бы использовать два оператора:
WindMin: = 39+(1 shl 8); WindMax: = 69+(16 shl 8);
(В отличие от обращения к Window координаты, хранящиеся в переменных WindMin и WindMax, соответствуют началу отсчета 0.0).
Процедура GotoXY
Переводит курсор в нужное место экрана или текущего окна. Заголовок процедуры:
Procedure GotoXY(X,Y: Byte);
Здесь X, Y – новые координаты курсора. Координаты задаются относительно границ экрана (окна), т.е оператор:
GotoXY(1.1);
Означает указание перевести курсор в левый верхний угол экрана (или окна, если к этому моменту на экране определено окно). Обращение к процедуре игнорируется, если новые координаты выходят за границы экрана (окна).