Перейти к содержимому

Как поменять цвет текста в паскале

  • автор:

Textcolor, Window, Textbackground в Pascal.

Текст, который мы выводим на экран с помощью процедуры Writeln или с помощью оператора Write можно изменять. Процедура Textcolor используется для изменения цвета выводимого текста. Процедура Textbackground изменяет цвет фона, на котором выводится текст. Процедура Window задает окно, в котором будет выводиться текст.

program number4; uses crt; begin clrscr; Window (20,5,60,20); Textbackground (14); Textcolor (1); writeln(‘Это сообщение выводится синим цветом на желтом фоне’); readln end.

Строка №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). Ниже дана простая схема.

razmetka okna v windows

Самый большой черный прямоугольник – это весь экран. В компиляторе Turbo Pascal ширина экрана равна 80 столбцам и 43 строкам (для Free Pascal — 80 столбцов и 38 строк). Красный прямоугольник внутри – это экран, определяемый процедурой Window (20,5,60,20). Самое главное здесь – запомнить, что координаты отмеряются с верхнего левого угла. Теперь все действия, которые будут производится в программе (например, вывод сообщения на экран) будут производится в этом окне.

В строке №6 записываем процедуру Textbackground, которая устанавливает цвет для фона, на котором будет выводиться текст. После записи слова Textbackground в скобках указывается значение. Мы указали значение 14. Это число соответствует желтому цвету в палитре цветов Паскаля. Ниже находится таблица, в которой указаны все 16 цветов, входящих в палитру цветов Паскаля.

В строке №7 записываем процедуру Textcolor. Эта процедура устанавливает цвет для выводимого на экран текста. После записи Textcolor в скобках записываем значение 1, что соответствует синему цвету.

palitra tsvetov v Pascal

Строка №8. Выводим на экран сообщение.

Теперь набрем программу в Паскале и запустим ее.

textbackground textcolor window

textbackground textcolor window.

У нас выводится сообщение. Обратите внимание, что оно выводится не в начале экрана, а в начале невидимого экрана, определенного процедурой Window. Кроме того, сообщение выводится, синим цветом, на желтом фоне. Это действие Textbackground и Textcolor.

Дополнение к материалу.

CRT – английская аббревиатура, которая обозначает электронно-лучевую трубку. Таким образом, название модуля Crt подчеркивает, что он умеет управлять способами вывода на экран.

PASCAL для начинающих


Стили шрифта:
fsNormal – обычный;
fsBold – жирный;
fsItalic – наклонный;
fsBoldItalic – жирный наклонный;
fsUnderline – подчеркнутый;
fsBoldUnderline – жирный подчеркнутый;
fsItalicUnderline – наклонный подчеркнутый;
fsBoldItalicUnderline – жирный наклонный подчеркнутый.

Пример программы, выводящей слово ‘Привет!» в окно, начиная с точки (10,10) с заданным цветом, размером и стилем.

begin
SetFontColor(clRed);
SetFontSize(48);
SetFontStyle(fsBold);
TextOut(10,10,’Привет!’)
end.

Задание 1. Измените положение текста, его размер, цвет и стиль.
Задание 2. Напишите программу, выводящую следующий текст:

Для вывода используйте цикл! Цвет текста задается случайным образом.

2. Дополнительно о шрифте

tw:=TextWidth(s) — возвращает ширину строки s в пикселях при текущих настройках шрифта;
th:=TextHeight(s) — возвращает высоту строки s в пикселях при текущих настройках шрифта.

Пример программы, выводящей текст по центру окна. Обратите внимание на процедуры SetWindowCaption и CenterWindow.
uses GraphABC;
var
s: string;
tw,th: integer;
begin
SetWindowCaption(‘Текст по центру’); //задает заголовок окна
s:=’Width & Height’;
SetWindowSize(700,300);
CenterWindow; // Центрирует графическое окно по центру экрана
SetFontName(‘Times’); SetFontSize(50);
tw:=TextWidth(s); th:=TextHeight(s);
TextOut(WindowWidth div 2 — tw div 2,WindowHeight div 2 — th div 2,s);
end.

Задание 3. Измените программу таким образом, чтобы текст вписывался в верхнюю четверть окна (точно по центру). Возможно надо будет изменить и размер шрифта.
Задание 4. Напишите программу, выводящую 4 строки в центр каждой из четырех четвертей окна (см. картинку).

Как поменять цвет текста в паскале

Нужна помощь,
как мне сделать так чтобы при правильном ответе паскаль менял цвет ответа, тоесть if c=a-b перекрасить вводимое число пользователем (с) в зелёный цвет
else в красный?

program rand; uses crt; var a,b,c,c1:integer; begin textbackground(black); ClrScr; TextColor (white); writeln('Дано выражение:'); while true do begin randomize; TextColor (white); a := random(100)+1; b := random(a)+1; write(a,'-',b,'='); readln(c); if c=a-b; then begin textcolor (green); writeln('Да'); delay(500); end else begin textcolor (red); writeln('Нет'); delay(1000); end;end;end.

Последний раз редактировалось _fynjy_; 13.12.2010 в 22:13 .
Delphi Warrior
Регистрация: 15.08.2008
Сообщений: 2,502
Только с помощью gotoxy ставте курсор на место числа и выводите заного!

Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq — 636-954-303

Hacker19_90
Посмотреть профиль
Найти ещё сообщения от Hacker19_90

Пользователь
Регистрация: 20.11.2010
Сообщений: 50
мы такого не проходили(
Delphi Warrior
Регистрация: 15.08.2008
Сообщений: 2,502

gotoxy( x, y: integer)
Этой функции передаёшь координаты! Координаты в досе начинаются с левого верхнего угла!
Вот смотришь на какой строчке стоит нужная строка = это координата y, потом скок отступ от края =это координата x! Запомни считаются координаты не по пикселям а по символам!
Ну вот нашёл координаты! Теперь меняешь координату курсора, цвет текста, и выводишь текст! Он перерисует старый на новый.

Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq — 636-954-303

Hacker19_90
Посмотреть профиль
Найти ещё сообщения от Hacker19_90

Пользователь
Регистрация: 20.11.2010
Сообщений: 50
Спасибо, поробую сначала на простом примере

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как менять цвет компонента по условию kenta Общие вопросы Delphi 1 20.02.2010 20:53
Как с помощью JavaScript изменить цвет фона ячеек в таблице,так что бы можно было выбрать цвет из списка Gotessa JavaScript, Ajax 1 09.05.2009 16:05
Можно ли своей функцей менять цвет ячейки в которую эта фу-я вставлена? maeglah Microsoft Office Excel 3 21.04.2009 05:23
Image не хочет цвет менять Roof Компоненты Delphi 3 04.08.2008 01:33
как менять стили?? oLMeR Свободное общение 3 10.11.2006 14:27

Как поменять цвет текста в паскале

Модуль c rt содержит процедуры и функции, предназначенные для работы с экраном консоли в текстовом режиме. Как и ряд других стандартных модулей, crt встроен в компилятор и содержится в файле t urbo.tpl.

Экран в текстовом режиме разбивается на отдельные строки, а каждая строка — на позиции, причем в каждую позицию может быть помещен только 1 символ из набора ASCII .

Для полного описания экранной позиции кроме символа следует задать еще и атрибут, содержащий информацию о цвете символа и фона на экране. Символ и атрибут занимают в памяти по 1 байту. Структура байта-атрибута показана на рис. 24.1.

Рис. 24.1. Структура байта-атрибута консоли

Старший бит 7 управляет мерцанием символа (символ на экране мерцает, если он установлен в 1), биты 4-6 содержат цвет фона (кодируется двоичными числами от 0 до 7 включительно), а биты 0-3 — цвет символа (от 0 до 15). Разумеется, программисту обычно не приходится заполнять байт атрибута по битам, для этого есть стандартные коды цветов. Основные цвета кодируются цифрами от 0 до 15, причем цвет текста может быть любым, а цвет фона — только из первых 8 цветов. Все цвета описаны в табл. 24.1.

Табл. 24.1. Коды и наименования стандартных цветов

Можно обращаться к цвету как по цифровому коду, так и по англоязычному имени.

Широко используемые текстовые режимы имеют в окне консоли 25 строк по 80 столбцов (позиций) в строке. Нумерация строк и позиций начинается с 1 и считается слева направо и сверху вниз. Весь экран в текстовом режиме может быть описан парой координат (1, 1), (80, 25). Обратите внимание на порядок записи — столбец, затем строка.

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

x , x 1, x 2 — координаты столбцов экрана;

y , y 1, y 2 — координаты строк экрана;

c — значение цвета.

Особенность модуля c rt состоит в том, что он позволяет работать не только со всем экраном, но и с выделенным на нем прямоугольным окном. При этом весь ввод, вывод и прокрутка текста происходят в пределах окна. По умолчанию размеры окна совпадают с размерами экрана, но можно явно установить их обращением к стандартной процедуре Window ( x 1, y 1, x 2, y 2); , где ( x 1, y 1) и ( x 2, y 2) — соответственно, левый верхний и правый нижний угол окна.

Цвет фона окна c задает процедура textbackground ( c ); , а цвет символов — textcolor ( c ); .

Процедура без параметров clrscr ; очищает текущее окно цветом фона.

Для установки текстового курсора в позицию окна с координатами ( x , y ) определена процедура gotoxy ( x , y ); .

Программно определить текущее положение курсора позволяют 2 стандартные функции Wherex : char ; и Wherey : char ; , возвращающие, соответственно, текущие x — и y -координату курсора.

Процедура ClrEol ; удаляет все символы от позиции курсора до конца строки включительно, заполняя этот участок цветом фона.

Процедура Delline ; полностью удаляет строку, в которой находится курсор, а Insline ; вставляет пустую строку на экране в месте расположения курсора и заполняет ее цветом фона. Обе процедуры обеспечивают прокрутку содержимого окна.

Процедура Sound ( F : word ); включает встроенный динамик с частотой F герц, обеспечивая выдачу звукового сигнала.

Процедура Delay ( T : word ); задает задержку выполнения программы, равную T миллисекунд (1000 мс = 1 сек.). Эта процедура используется для организации задержек выполнения программы, а также всегда вызывается после sound , чтобы определить время звучания динамика.

Процедура без параметров NoSound ; выключает динамик. Обязательно используется после пары Sound и Delay .

Наконец, в модуле crt определены 2 стандартных функции для работы с кодами нажатых клавиш. Функция readkey : char ; возвращает код символа, прочитанный из буфера клавиатуры. Функция keyPressed : boolean ; возвращает значение true , если была нажата клавиша на клавиатуре (за исключением вспомогательных клавиш Alt, Shift, Ctrl и т. д.). Использование последней функции позволяет организовать циклы, выполняющиеся до нажатия какой-либо клавиши.

При запуске программы из оболочки Паскаля монитор находится обычно в текстовом режиме и устанавливать его не нужно. Тем не менее, существует стандартная процедура textMode ( Mode : integer ), устанавливающая текстовый режим с номером Mode .

Стандартный цветной текстовый режим 25*80 позиций имеет номер 3, цветной текстовый режим 25*40 позиций — номер 1.

Модуль c rt содержит также системные переменные, которые можно изменять в соответствии с указанным для них типом.

Переменная CheckBreak : boolean ; управляет реакций программы на прерывание по сочетанию клавиш Ctrl+ B reak. По умолчанию переменная имеет значение true (реакция включена).

Если переменная DirectVideo : boolean ; имеет значение true , процедуры вывода на экран пишут данные непосредственно в видеопамять, не используя операционную систему. Это ускоряет вывод, но может использоваться только на полностью IBM-совместимых ЭВМ.

Переменная textAttr : integer ; содержит текущий атрибут текста, сформированный по описанным выше правилам.

Приведем пример программы, определяющей коды нажатых клавиш. Конструкция repeat . until в этой программе является образцом обработки ввода с клавиатуры. Проблема состоит в том, что функция readkey возвращает однобайтовый код клавиши, а ряд клавиш и сочетаний клавиш имеют двухбайтовые коды. С этим связан второй вызов функции readkey в программе.

writeln (‘Программа выводит коды клавиш;’,

writeln (‘Нажмите клавишу:’);

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *