Textcolor, Window, Textbackground в Pascal.
Текст, который мы выводим на экран с помощью процедуры Writeln или с помощью оператора Write можно изменять. Процедура Textcolor используется для изменения цвета выводимого текста. Процедура Textbackground изменяет цвет фона, на котором выводится текст. Процедура Window задает окно, в котором будет выводиться текст.
Строка №2. Подключаем к программе модуль Crt. Мы уже упоминали этот модуль, когда использовали процедуру очистки экрана Clrscr. Помимо этого данный модуль подключается к программе для управления способами вывода на экран. Он позволяет устанавливать курсор в нужную позицию на экране (gotoxy), устанавливать цвет фона (textbackground) и цвет выводимых символов (textcolor) и многое другое. В конце обязательно ставится точка с запятой.
Строка №5. Записываем процедуру Window. Эта процедура определяет, где на экране будет находиться текстовое окно. Window (x1, y1, x2, y2): (x1, y1) — координаты для верхнего левого угла окна. (x2,y2) – координаты для нижнего правого угла окна. Таким образом, запись Window (20,5,60,20) означает, что у нас задается окно. Его координаты: левый верхний угол (20,5) и нижний правый угол (60,20). Ниже дана простая схема.
Самый большой черный прямоугольник – это весь экран. В компиляторе Turbo Pascal ширина экрана равна 80 столбцам и 43 строкам (для Free Pascal — 80 столбцов и 38 строк). Красный прямоугольник внутри – это экран, определяемый процедурой Window (20,5,60,20). Самое главное здесь – запомнить, что координаты отмеряются с верхнего левого угла. Теперь все действия, которые будут производится в программе (например, вывод сообщения на экран) будут производится в этом окне.
В строке №6 записываем процедуру Textbackground, которая устанавливает цвет для фона, на котором будет выводиться текст. После записи слова Textbackground в скобках указывается значение. Мы указали значение 14. Это число соответствует желтому цвету в палитре цветов Паскаля. Ниже находится таблица, в которой указаны все 16 цветов, входящих в палитру цветов Паскаля.
В строке №7 записываем процедуру Textcolor. Эта процедура устанавливает цвет для выводимого на экран текста. После записи Textcolor в скобках записываем значение 1, что соответствует синему цвету.

Строка №8. Выводим на экран сообщение.
Теперь набрем программу в Паскале и запустим ее.


У нас выводится сообщение. Обратите внимание, что оно выводится не в начале экрана, а в начале невидимого экрана, определенного процедурой Window. Кроме того, сообщение выводится, синим цветом, на желтом фоне. Это действие Textbackground и Textcolor.
Дополнение к материалу.
CRT – английская аббревиатура, которая обозначает электронно-лучевую трубку. Таким образом, название модуля Crt подчеркивает, что он умеет управлять способами вывода на экран.
Оформление текста на экране в Паскаль
Оформление и разметку текста используют довольно редко , однако бывают случаи , когда они вам пригодятся.
Возможно , когда-нибудь вы столкнетесь с такой задачей : как оформить текст в паскале.
В данной статье вы узнаете о том , как изменить цвет текста , как добавить цветной фон , как очистить экран и т.д.
Модуль crt
Если вы не подключите данный модуль , то функции по оформлению текста не будут работать.
После того , как вы его подключите , программа будет работать в новом окне размером 80×25. Представлять такое окно можно как таблица в 25 строк и 80 столбцов.
GotoXY
TextColor
Стандартно , в языке программирования паскаль текст выводится строго черным цветом , но его также можно изменить. Изменить цвет текста можно командой textcolor. Чтобы изменить цвет текста требуется использовать команду textcolor(red) , а в скобках указать цвет ( например red ). В скобках можно использовать название цвета , а также код цвета.
Но стоит помнить , что команда textcolor не меняет весь текст на экране ,а только тот , который выводится после этой команды.
Результат выполнения данной программы будет выглядеть примерно так :
Clrscr
TextBackGround
Результат выполнения данной программы будет выглядеть так :
С помощью данной команды можно задать фон всему рабочему окну программы,
Сделать это можно так :
23.1. Модуль Crt
Этот модуль облегчает работу с клавиатурой и экраном, позволяет создавать окна, задавать цвет текста и фона для цветного дисплея. Содержит около 20 процедур и функций. В зависимости от типа дисплея и драйвера (программы, обеспечивающей связь компьютера с дисплеем) поддерживает до 16 цветовых текстовых режимов.
Замечание. При исполнении на компьютерах с процессорами последних разработок модуль Crt работает некорректно, выдавая ошибку: 200 Division by zero. В Интернете можно найти комплект программ, исправляющих этот недостаток. Такой комплект CrtDevice можно переписать в лаборатории кафедры вычислительной техники.
Рассмотрим наиболее часто употребляемые процедуры и функции модуля.
23.1.1. Работа с клавиатурой и звуком
1) ReadKey — функция, возвращающая символ нажатой клавиши без вывода его на экран. Тип результата – Char. Аргумента у функции нет. Специальные клавиши на клавиатуре (функциональные F1 – F12, управления курсором, Alt, Ctrl и т.д.) генерируют расширенные коды. При нажатии такой клавиши функция ReadKey возвращает сначала нулевой, а затем — расширенный код клавиши.
Пример. S := ReadKey;
Приводимый ниже фрагмент программы показывает, как можно применить функцию для организации итерационных циклов.
Writeln(’Продолжаем?- Да/Нет (Д/Н)’);
S := ReadKey;
Until (S=’H’) OR (S=’н’) ;
2) KeyPressed -функция без аргумента, возвращает значение True (истина), если клавиша нажата, и False (ложь) в противном случае. Символ, соответствующий нажатой клавише, остается в буфере клавиатуры. Функция не распознает клавиш перевода регистра (Shift, Alt, NumLock и т.д.). Может использоваться для организации итерационных циклов следующего вида
Until KeyPressed;
Цикл заканчивается, если нажата любая клавиша. Например, текст программы может завершаться следующим фрагментом:
WriteLn(’Работа окончена. Нажмите любую клавишу . ’);
Repeat Until KeyPressed;
3) Delay(задержка : word); – процедура, которая выполняет задержку на число миллисекунд, задаваемых параметром задержка.
4) Sound(частота : word); – процедура, которая включает внутренний излучатель звука, который будет издавать звуковой сигнал с частотой, заданной параметром частота.
5) NoSound выключает внутренний излучатель звука.
Внимание! Звуковой сигнал, включенный процедурой Sound, будет звучать до тех пор, пока его не выключить обращением к процедуре NoSound.
Если в программе часто используются звуковые эффекты, то целесообразно написать процедуру, которая обеспечит излучение звука заданной частоты в течение заданного промежутка времени. Эта процедура может быть такой.
Procedure Zvuk(freq, long : word);
23.1.2. Управление цветом
Если используется цветной графический дисплей с адаптером EGA (Enhansed Graphic Adapter), VGA (Video Graphic Array) и др., то можно задавать и изменять цвет текста и фона с помощью следующих процедур:
1) TextBackGround (Color:Byte); – задает цвет фона.
2) TextColor(Color:Byte); – задает цвет текста.
Параметр Color (цвет) может задаваться выражением целого типа, которое должно принимать значения в диапазоне 0..15, или одной из определенных в модуле Crt констант цветов (название цвета на английском языке). Константы для фонового и основного цвета и их значения приведены ниже:
Black = 0 (черный)
DarkGray = 8 (темно-серый)
LightBlue = 9 (светло-синий)
Green = 2 (зеленый)
LightGreen = 10 (светло-зеленый)
Cyan = 3 (бирюзовый)
LightCyan = 11 (светло-голубой)
LightRed = 12 (розовый)
Magenta = 5 (малиновый)
LightMagenta = 13 (светло-малиновый)
Brown = 6 (коричневый)
Yellow = 14 (желтый)
LightGray = 7 (светло-серый)
White = 15 (белый)
Цвет текста может быть любой, а цвет фона – один из восьми первых.
Вместо того чтобы устанавливать раздельно цвет текста и цвет фона указанными выше процедурами, можно воспользоваться определенной в модуле Crt переменной TextAttr, длиной в байт. Ей можно присвоить значение, которое сразу определит текстовые атрибуты. Младшие 4 бита у этой переменной кодируют цвет текста (0..15), следующие 3 бита – цвет фона (0..7), а самый старший (левый) бит позволяет сделать текст мерцающим. Константа мерцания имеет имя Blink, а значение – 128.Для размещения цвета фона в правильных позициях битов, его значение нужно умножить на 16. Например, следующее присваивание:
TextAttr := Yellow + Blue*16 + Blink
Обеспечит вывод желтых мерцающих символов на голубом фоне.
3) TextMode (Mode:Integer); – процедура; задает указанный текстовый режим (mode). Приведем некоторые определенные в модуле Crt константы (слева) для выбора текстовых режимов и их значения (справа):
BW80 = 2;– черно-белый режим с разрешением экрана 80х25 символов;
C80 = 3; – цветной режим с разрешением экрана 80х25 символов;
Font8*8 = 256; – цветной режим с разрешением экрана 80х50 символов;
Более подробное описание этих и других режимов для соответствующих адаптеров можно найти в справочниках.
Предыдущий цветовой режим сохраняется в памяти в переменной LastМode.
Подпрограммы для работы со шрифтом
Вывод текста осуществляется текущим шрифтом. Доступ к свойствам текущего шрифта можно осуществлять как в процедурном, так и в объектно-ориентированном стиле.
Процедуры и функции для доступа к свойствам шрифта сгруппированы парами: если Prop — имя свойства пера, то функция PenProp возвращает значение этого свойства, а процедура SetPenProp(p) устанавливает это свойство:
| procedure SetFontSize(size: integer); Устанавливает размер текущего шрифта в пунктах |
| function FontSize: integer; Возвращает размер текущего шрифта в пунктах |
| procedure SetFontName(name: string); Устанавливает имя текущего шрифта |
| function FontName: string; Возвращает имя текущего шрифта |
| procedure SetFontColor(c: Color); Устанавливает цвет текущего шрифта |
| function FontColor: Color; Возвращает цвет текущего шрифта |
| procedure SetFontStyle(fs: integer); Устанавливает стиль текущего шрифта |
| function FontStyle: integer; Возвращает стиль текущего шрифта |
Можно также изменять свойства текущего пера через объект Font .
Кроме того, для определения ширины и высоты строки при текущих настройках шрифта используются следующие функции: