Главная » Free Pascal » Окно вывода Free Pascal

0

По умолчанию программа может использовать для вывода результатов всю ра- бочую площадь окна консольного приложения — 25 строк по 80 символов в стро- ке. Чтобы убедиться в этом, можно воспользоваться программой из листинга 12.1.

   Листинг 12.1. Программа  MaxWindow                                           

program MaxWindow; uses Crt;

var x,y: byte; begin

clrscr;

for y:=0 to 23 do for x:=0 to 79 do

begin

gotoxy(x+1,y+1); write((x+y+1) mod 10);

end; readln;

end.

После ее предварительного запуска необходимо привести в соответствие раз- мер буфера, выделяемого операционной системой консольному приложению (ши- рина — 80, высота — 300), и размер окна приложения (ширина — 80, высота — 25). Чтобы попасть в диалоговое окно Windows, приведенное на рис. 12.2, вы должны зайти в системное меню окна приложения (рис. 12.3) и выполнить команду Свойства.

После приведения указанных размеров в соответствие результат работы про-

граммы MaxWindow будет выглядеть так, как показано на рис. 12.4.

Рис. 12.2. Согласование буфера и окна по высоте

Рис. 12.3. Системное меню окна

Система координат с дискретными значениями x и y, используемая для иденти- фикации знакомест на "текстовом" экране, устроена следующим образом. Ось x направлена вправо, и номера колонок отсчитываются от 1 до 80. Ось y направлена вниз, и номера строк отсчитываются от 1 до 25.

Рис. 12.4. Максимальное заполнение площади вывода

Продолжение вывода после заполнения 25-й строки приводит к подъему со- держимого окна вывода и выталкиванию верхних строк за пределы зоны видимо- сти. Именно так все происходило под управлением MS-DOS. Однако Windows предлагает консольному приложению буфер вывода, содержащий 300 строк, по- этому по мере вывода в пределах указанного объема выталкиваемые вверх резуль- таты работы программы не пропадают. Используя полосу вертикальной прокрутки, мы можем вернуться к ранее выданным результатам. При запуске программы на исполнение Windows открывает окно приложения, пользуясь своими системными параметрами (ширина, высота, положение на экране дисплея). Довольно часто ши- рина окна может оказаться меньше 80 символов, и тогда при выводе длинных строк будут возникать неожиданные переносы в следующую строку. Для предотвраще- ния нежелательных последствий программист может включить в свою программу строку вида:

WindMaxX:=80;

Габариты окна вывода программы можно уменьшить двумя способами. Во- первых, можно изменить значения системных переменных WindMaxX и WindMaxY. Во-вторых, в области окна вывода с помощью процедуры Window можно устано- вить неподвижное окно меньшего размера (листинг 12.2).

   Листинг 12.2. Программа  LowWindow                                           

Program LowWindow; uses Crt;

var x,y: byte; begin

clrscr;

for y:=0 to 23 do

for x:=0 to 79 do begin

gotoxy(x+1,y+1); write((x+y+1) mod 10);

end;

window(20,5,55,10);

clrscr; writeln;

writeln(‘ Строка 2 в новом окне ‘); writeln(‘ Строка 3 в новом окне ‘); readln;

end.

Параметрами этой процедуры являются "координаты" знакомест в левом верх- нем и правом нижнем углах нового окна вывода. И тогда результаты работы слегка модифицированной программы выглядят так, как это представлено на рис. 12.5.

Рис. 12.5. Новое окно вывода с "координатами" углов (20, 5) и (55, 10)

Логика обслуживания маленького окна та же самая. В нем действует своя, ло- кальная система координат, операция очистки экрана (ClrScr) распространяет свое действие только на поле нового экрана, не затрагивая ранее выданную окружаю- щую информацию. По мере заполнения маленького окна его верхние строки вы- талкиваются за пределы зоны видимости (и пропадают). На большом экране можно завести не одно такое окно, но в каждый момент времени активным (т. е. готовым к отображению выводимой информации) будет окно, объявленное последним.

Кроме очистки экрана или действующего окна вывода в двух приведенных программах продемонстрировано перемещение курсора текстового окна с помо- щью процедуры GoToXY. Текущая позиция курсора определяет позицию, с которой

начинается вывод очередных результатов. По мере поступления очередного симво- ла выводимых данных курсор смещается вправо, указывая следующую свободную позицию. Если курсор вынужден сместиться за пределы, установленные значением переменной WndMaxX, то он автоматически переходит в начало следующей строки.

Программа имеет возможность опросить текущее местоположение курсора с

помощью двух следующих функций без параметров (их бы правильнее называть системными переменными, доступными только для чтения):

± WhereX — опрос координаты x;

± WhereY — опрос координаты y.

С их помощью, например, можно осуществить смещение курсора в текущей строке на заданное количество позиций влево или вправо:

GoToXY(WhereX+5,WhereY);

На конфигурацию курсора и его видимость оказывают влияние три следующие процедуры без параметров:

± CursorBig — превращает курсор из горизонтальной черточки в прямоугольник;

± CursorOff — отключает видимость курсора;

± CursorOn — включает видимость курсора и восстанавливает его стандартный вид.

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

По теме:

  • Комментарии