Теоретические сведения. Модуль Crt содержит функции и процедуры, полезные при выводе на экран
Модуль Crt содержит функции и процедуры, полезные при выводе на экран. Например, при помощи процедур библиотеки можно задать цвет выводимых символов и цвет фона, на котором они будут выводиться, вывести текст в нужной точке экрана. Управлением курсором. Инструкции write и writeln выводят информацию, начиная с той позиции экрана, в которой находится курсор. Положение курсора на экране определяется номером строки и номером позиции в строке, которые можно рассматривать как координаты курсора. В стандартном режиме на экране могут быть отображены до 25 строк текста длиной до 80 символов. Поэтому горизонтальная координата (х), определяющая номер позиции в строке, может меняться от 1 до 80, а вертикальная координата (у), определяющая номер строки, может меняться от 1 до 25. за начало координат принят левый верхний угол экрана. Левая верхняя точка экрана имеет координаты (1, 1), правая нижняя (80, 25).
(1, 1) Х
(80, 25) У
Если нужно вывести текст, начиная с определенной позиции экрана, то перед выполнением инструкции вывода надо установить курсор в эту позицию. Это можно сделать с помощью процедуры GoToXY, инструкция вызова которой в общем виде выглядит так: GoToXY (34, 13); Write (‘Turbo Pascal’); выводят сообщение примерно в середине экрана. Следующая процедура, ее текст приведен ниже, рисует на экране рамку. При вызове процедуры задаются координаты левого верхнего угла рамки, ширина и высота. Procedure Frame (1: integer; t: integer; w: integer; h: integer); {l, t – координаты верхнего левого угла, w – ширина рамки, h – высота рамки} var x, y: integer; i: integer; c1, c2, c3, c4, c5, c6: char; {символы, из которых рисуется рамка} begin c1: =chr (218); {символ верхнего левого угла} {функция chr возвращает символ, номер которого указан при вызове функции} c2: =chr (196); {символ горизонтальной линейки} c3: =chr (191); {символ правого верхнего угла} c4: =chr (179); {символ вертикальной линейки} c5: =chr (192); {символ левого нижнего угла} c6: =chr (217); {символ правого нижнего угла} GoToXY (1, t); write (c1); for i: =1to w-2 do {символ верхней границы рамки} write (c2); write (c3); y: =t+1; x: =1+w-1; for i: =1to h-2 do {символы левой и правой границ} begin GoToXY (1, y); write (c4); GoToXY (x, y); write (c4); y: =y+1; end; GoToXY (1, y); write (c5); for i: =1to w-2 do {символы нижней границы} write (c2); write (c6); end; Управление цветом. Используя процедуры TextColor и TextBackGround, можно задать цвет символов и цвет фона для текста, выводимого инструкциями write и writeln. Каждый цвет кодируется целым числом, которому соответствует именованная константа.
Процедура TextColor (цвет) устанавливает цвет символов, а процедура TextBackGround (цвет) – цвет фона выводимого теста. В качестве параметра Цвет для процедуры TextColor можно использовать код цвета или именованную константу в диапазоне от 0 до 15, а для процедуры TextBackGround – в диапазоне от 0 до 7. Например, после выполнения инструкций TextColor (LightGray); TextBackGround (Blue); Инструкции write и writeln будут выводить текст светло-серым цветом на синем фоне. Установленные цвета символов и фона называются текущими. Инструкции вывода используют текущие цвета символов и фона до тех пор, пока они не будут изменены. Например, следующие инструкции TextBackGround (Blue); TextColor (15); write (‘1’); TextColor (7); Writeln (‘Вывод на экран’); NextColor (7); Writeln (‘Вывод на принтер’); Выводят на экран фрагмент меню. Названия пунктов меню выводятся на синем фоне светло-серым цветом, а номера пунктов меню – ярко-белым. Информация о текущем цвете символов и фона хранится в глобальной переменной TextAttr (атрибуты текста) типа byte. Значение переменной TextAttr можно использовать для того, чтобы перед завершением работы программа установила свои цвета. Например, следующая программа в начале своей работы сохраняет текущие установки цвета, а в конце – восстанавливает старые значения. Program p; Uses Crt; Var oldTextAttr: byte; begin {сохраним цвет символов и фона} oldTextAttr: TextAttr; {установим свои цвета} TextBackGround (Red); TextColor (White); {инструкции программы} {восстановим цвет символов и фона} TextArrt: = oldTextAttr; End. Помимо использования процедур TextColor и TextBackGround для установки цвета символов и цвета фона, установить атрибуты текста можно непосредственным присвоением значения переменной TextAttr, определяемого по формуле: НомерЦветаФона*16+НомерЦветаСимволов. Например, чтобы установить белый цвет символов на красном фоне, переменной TextAttr надо присвоить значение 79 (79=4*16+15). В качестве значения, присваиваемого переменной TextAttr, удобно использовать двузначную шестнадцатеричную константу, старший разряд которой определяет номер цвета фона, младший – номер цвета символов. Например, синий цвет фона обозначается числом 1, желтый цвет обозначается десятичным числом 14, которому соответствует шестнадцатеричная цифра Е. Таким образом, желтый цвет на синем фоне кодируется шестнадцатеричным числом 1Е. Так как в изображении шестнадцатеричных чисел используются латинского алфавита от А до F, то для того чтобы компилятор различал шестнадцатеричные числа и имена переменных, перед шестнадцатеричным числом ставится символ $. Так, инструкция TextAttr: =$1E; задает синий фон (номер цвета 1) и желтый цвет символов (номер цвета 14 в десятичной форме, и Е – в шестнадцатеричной). Если к сообщению надо привлечь особое внимание, то можно установить его атрибуты так, что оно будет мигать. Чтобы это сделать, надо к константе, определяющей атрибуты, прибавить 128. Следующая последовательность инструкций выводит мигающее предупреждающее сообщение. TextAttr: =$1E+128; Write (‘Ошибка ввода данных’);
|