Рефераты. Основы программирования на языке Паскаль

11.2. Текстовый вывод на экран

Библиотека Turbo Vision способна удовлетворить самым высоким требованиям, и мы настоятельно рекомендуем обращаться к ней при программировании сложных текстовых изображений (меню, окон и т.п.). Тем не менее, вполне возможно, что некоторые из читателей захотят использовать значительно более простые, но достаточно эффективные средства модуля CRT, описываемые в этом разделе.

Процедура TextMode используется для задания одного из возможных текстовых режимов работы адаптера монитора. Заголовок процедуры:

Procedure TextMode (mode: word);

Здесь mode - код текстового режима. в качестве значения этого выражения могут использоваться следующие константы, определенные в модуле CRT:

const

bw40=0; {черно-белый режим 40*25}

co40=l; {цветной режим 40*25}

bw80=2, {черно-белый режим 80*25}

co80=3; {цветной режим 80*25}

mono=7; {используется с mda}

Font8*8=256; {используется для загружаемого шрифта в режиме 80*43 или 80*50 с адаптерами EGA или VGA}

Код режима, установленного с помощью вызова процедуры TextMode, запоминается в глобальной переменной LastMode модуля CRT и может использоваться для восстановления начального состояния экрана.

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

user CRT;

procedure print (s: string), {вывести сообщение s и ждать инициативы пользователя}

Begin

writeln (s), {вывести сообщение}

writeln ('нажать клавишу enter...');

readln {ждем нажатия клавиши enter}

end; {print}

Var

lm: word, {начальный режим экрана}

Begin

lm:=LastMode; {запомнить начальный режим работы дисплея}

TextMode (со40);

print ('режим 40*25');

TextMode (co8o);

print ('режим 80*25');

TextMode (co40+font8*8);

print ('режим co40+font8*8');

TextMode (co80+font8*8);

print ('режим co80+font8*8'), {восстановить исходный режим работы:}

TextMode (lm)

end.

Процедура TextColor определяет цвет выводимых символов. заголовок процедуры:

Procedure TextColor (color: byte);

Процедура TextBackGround определяет цвет фона. заголовок процедуры:

Procedure TextBackGround (color: byte);

Единственным параметром обращения к этим процедурам должно быть выражение типа byte, задающее код нужного цвета. Этот код удобно определять с помощью следующих мнемонических констант, объявленных в модуле CRT:

const

black=0; {черный}

blue=l; {темно-синий}

green=2; {темно-зеленый}

суаn=3; { бирюзовый}

red=4; {красный}

magenta=8; {фиолетовый}

brown=6; {коричневый}

lightgray=7; {светло-серый}

darkgray=8; {темно-серый}

light blue=9; {синий}

lightgreen=10; {светло-зеленый}

lightcyan=11; {светло-бирюзовый}

lightred=12; {розовый}

lightmagenta=13; {малиновый}

yellow=14; {желтый}

white=15; {белый}

blink=128; {мерцание символа}

Следующая программа иллюстрирует цветовые возможности Турбо-Паскаля.

uses CRT,

const

col: array [1..15] of string [16] =

('темно-синий', 'темно-зеленый', 'бирюзовый', 'красный', 'фиолетовый', 'коричневый', 'светло-серый', 'темно-серый', 'синий', 'зеленый', 'светло-бирюзовый', 'розовый', 'малиновый', 'желтый', 'белый');

Var

k: byte,

Begin

for k:=l to 15 do

Begin {выводим 15 сообщений различными цветами}

textcolor (k),

writeln ("цвет", k, "-", col [k] )

end;

textcolor (white+blink); {белые мигающие символы}

writeln ("мерцание символов");

{восстанавливаем стандартный цвет}

textcolor (lightgray),

writeln

end.

Обратите внимание на последний оператор writeln. Если его убрать, режим мерцания символов сохранится после завершения программы, несмотря на то, что перед ним стоит оператор

TextColor (lightgray);

Дело в том, что все цветовые определения предварительно заносятся в специальную переменную TextAttr модуля CRT и используются для настройки адаптера только при обращении к процедурам write/writeln.

Процедура ClrScr очищает экран или окно (см. ниже процедуру window). после обращения к ней экран (окно) заполняется цветом фона и курсор устанавливается в его левый верхний угол. например:

uses CRT;

Var

с: char

Begin

textbackground (red);

clrscr; {заполняем экран красным цветом}

writeln ("нажмите любую клавишу...");

с:= ReadKey, {ждем нажатия любой клавиши}

textbackground (black);

clrscr {восстанавливаем черный фон экрана}

end.

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

Procedure Window (xi, yi, х2, y2: byte);

Здесь x1...y2 - координаты левого верхнего (х1, y1) и правого нижнего (х2, y2) углов окна. Они задаются в координатах экрана, причем левый верхний угол экрана имеет координаты (1,1), горизонтальная координата увеличивается слева направо, а вертикальная - сверху вниз.

В следующем примере иллюстрируется вывод достаточно длинного сообщения в двух разных окнах:

uses CRT;

Var

k: integer;

Begin {создать левое окно - желтые символы на синем фоне:}

textbackground (blue);

window (5, 2, 35, 17);

textcolor (yellow);

for k:= i to 100 do

write ("нажать клавишу enter... ");

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.