Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Управление текстовым экраном




С помощью средств модуля CRT можно реализовать следующие функции управления текстовым экраном:

- формировать окна на экране дисплея;

- устанавливать цвет фона и символов текста;

- выводить текст в заданное место экрана;

- вставлять и удалять строки текста на экране.

Например, с помощью CRT можно формировать меню, контролировать и управлять процессом его использования.

Для вывода на экран текстов используются процедуры Write и Writeln мо­дуля SYSTEM. При выводе символов на экран они размещаются начиная с той позиции, в которой находился курсор. После вывода символа курсор смещается вправо. Если курсор был у правой границы окна (экрана), он перемещается в начало следующей строки, а если строка последняя, организуется "прокрутка": подъем вверх всех строк и установка курсора в крайнюю левую позицию нижней строки.

В списке данных процедур вывода Write и Writeln можно использовать ко­ды любых символов в виде #код. Это могут быть, например, числа от 0 до 31 - коды служебных функций (см. табл.);

Например:

#7 - для выдачи короткого звукового сигнала;

#8 - для перемещения курсора влево на один символ; если курсор уже нахо­дился на левой границе окна или экрана, символ #8 игнорируется;

#10 - для перемещения курсора на одну строку вниз при той же горизон­тальной позиции; если курсор к этому моменту уже находился на нижней строке окна (экрана), содержимое экрана "прокручивается" (поднимается) вверх на одну строку;

#13 - для перемещения курсора в начало этой же строки.

Пример использования специальных символов при выводе данных на экран:

USES CRT;

VAR I: BYTE;

BEGIN

WRITELN ('Нажимайте клавишу ВВОД для продолжения');

READLN; { - приостановка до нажатия клавиши Enter }

WRITELN ('Эффект от кода 7 - короткий звук', #7);

READLN; { - приостановка до нажатия клавиши Enter }

WRITELN ('Демонстрация кода возврата на одну позицию влево #8');

FOR I:= 1 ТО 40 DO WRITE (‘/’); { - вывод 40 штук '/' }

FOR I:= 1 ТО 40 DO

BEGIN

DELAY (100); { - задержка на 100 мс }

WRITE (#8, 'V, #8); { - сдвиг курсора на 1 символ влево в той же строке,

замена символа '/' строки на ‘\’ и снова сдвиг влево }

END;

WRITELN; READLN; { - переход на следующую строку; ожидание ввода }

WRITELN ('Демонстрация кода разрыва строки -', ' #10 (LF) ');

WRITELN; READLN; { - приостановка до нажатия клавиши Enter }

WRITE('Эта'#10'строка'#10'разорвана'#10'кодами #10');

WRITELN (#10);

READLN; { - приостановка до нажатия клавиши Enter }

WRITELN('Работа с кодом "возврата каретки" - #13');

FOR I:= 1 ТО 40 DO WRITE (‘/’); { - вывод 40 штук '/' }

WRITE (#13); { - перевод курсора в начало этой же строки }

FOR I:= 1 ТО 40 DO

BEGIN

DELAY (100); { - задержка на 100 мс }

WRITE (‘\’);

END; { - вывод 40 штук 'V в позициях '/' }

WRITELN; READLN; { - приостановка до нажатия клавиши Enter }

END.

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

Const

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

Blue = 1; { синий }

Green = 2; { зеленый }

Cyan = 3; { голубой }

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

Magenta = 5; { фиолетовый }

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

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

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

LightBlue = 9; { ярко-синий }

LightGreen = 10; { ярко-зеленый }

LightCyan = 11; { ярко-голубой }

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

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

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

White = 15; { белый }

Blink = 128; (мерцание символа }

Процедура TextColor устанавливает цвет символов, выводимых в окне с по­мощью оператора Write. Обращение к процедуре TextColor: TextColor (цвет: byte);

где цвет - это выражение целого типа; результат его должен быть равен от 0 до 15, в соответствии со значениями констант цветов; в качестве значения цвета можно использовать имя константы или соответствующее ему значение кон­станты цвета. Например:

TextColor (Green + 128); TextColor (2 + 128); задают зеленый мер­цающий (от + 128) цвет символов.

Пример программы для установки цвета символов (для установки цвета надо ввести значение константы цвета, а для выхода из про­граммы — константу больше 15):

Program ColorSim;

Uses CRT;

VAR COLOR: byte; { - для цветов текста }

BEGIN

Writeln (' Введите номер цвета, для окончания - 16'); WHILE COLOR < 16 DO

BEGIN

Readln (COLOR); { - ввод константы цвета }

TextColor (COLOR); { - установка цвета }

Writeln (' Цвет = ', COLOR); (- вывод текста }

END;

END.

Процедура TextBackGround устанавливает цвет фона экрана или окна, в ко­торое будут выводиться символы текстов. Формат обращения к процедуре

TextBackGround:

TextBackGround (цвет: byte);

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

Например:

TextBackGround (3); дает голубой цвет фона.

Для начала формирования окон или вывода текста надо установить курсор в требуемое место экрана. Это можно сделать с помощью процедуры GotoXY. Обращение к процедуре GotoXY:

GotoXY (X, Y);

где X, Y - выражения целого типа:

X - горизонтальная координата, номер позиции в строке; X = 1.. 80; Y - вертикальная координата, номер строки экрана; Y = 1.. 25.

Верхний левый угол экрана имеет координаты 1,1; нижний правый угол -координаты 80, 25 (х = 80, Y = 25). Например: GotoXY (1,1);.

Как правило, меню формируют из окон экрана. Формирование окна произво­дят "с помощью процедуры Window (окно). Она устанавливает границы активного окна, в которое может быть выведен текст.

Обращение к процедуре Window:

Window (XI, Yl, X2, Y2);

где XI, Yl - координаты верхнего левого угла окна на экране; Х2, Y2 - координаты нижнего правого угла окна на экране.

Координаты окна задаются выражениями типа byte. Если какая-либо коор­дината выходит за границы экрана, обращение к процедуре игнорируется. Ми­нимальный размер окна - одна позиция (один столбец на одной строке экрана). Примеры формирования окон:

Window (2, 3, 4,5); '

Window (1., 24, 80, 25);

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

Пример рисования окон случайным образом до нажатия любой клавиши (Random - функция генерации случайного числа):

Рисование окон случайным образом.

Program Ris;

Uses CRT;

CONST MaxX =80; { - максимальная координата Х }

MaxY = 25; { - максимальная координата Y }

MaxColor = 8; VAR XI, Yl, X2, Y2: byte;

BEGIN

Repeat

XI:= Random (MaxX); Yl:= Random (MaxY);

X2:= XI + Random(MaxX);

IF X2 > MaxX Then X2:= MaxX;

Y2:= Yl + Random(MaxY);

IF Y2 > MaxY Then Y2:= MaxY;

TextBackGround (Random(MaxColor - 1));

Window (XI, Yl, X2, Y2);

ClrScr; Delay (100);

Until KeyPressed;

END.

С помощью процедур WhereX и WhereY можно определить положение курсора на экране: его горизонтальную и вертикальную координаты. Результат имеет тип BYTE.

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

Процедура ClrEOL стирает часть строки от позиции, на которой установлен курсор, вправо до конца строки.

После формирования окна с помощью процедуры window процедуры TextColor, TextBackGround, ClrScr, ClrEol, GotoXY, DelLine и InsLine отно­сятся к активному (текущему) окну. Например, процедура GotoXY (1,1); будет позиционировать курсор в левый верхний угол текущего окна.

Пример программы с использованием окон и функции Readkey дан в разд. 10.6.

Процедуры LowVideo, NormVideo и HighVideo устанавливают соответственно пониженную, нормальную и повышенную яркость символов текста. При перехо­де от NormVideo к HighVideo цвета 0.. 7 заменяются цветами 8.. 15. Пример программы, изменяющей яркость символов:

PROGRAM SVET;

Uses CRT;

BEGIN TextBackGround (1); ClrScr;

LowVideo; Writeln (' Пониженная яркость ');

NormVideo; Writeln (' Нормальная яркость ');

HighVideo; Writeln (' Повышенная яркость ');

END.

 




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 346; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.028 сек.