КАТЕГОРИИ: Архитектура-(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; Просмотров: 364; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |