Ниже приведены краткие сведения о некоторых процедурах и функциях, используемых для управления текстовым режимом работы экрана. Более подробная информация содержится в [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, закрашиваются текущим цветом фона.