Иллюстрированный самоучитель по Turbo Pascal

Процедуры и функции

Процедура 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);

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.