metod_15.03.04_atppp_oaip_ump_2016 (1016599), страница 41
Текст из файла (страница 41)
Для этого можно использовать следующий прием:VAR С : CHAR; ... WHILE KeyPressed DO С := ReadKey; ...Как только будет нажата клавиша, символ из буфера считывается с помощьюфункции ReadKey в переменную С, очищая буфер.Управление текстовым экраномС помощью средств модуля CRT можно реализовать следующие функцииуправления текстовым экраном:- формировать окна на экране дисплея;- устанавливать цвет фона и символов текста;- выводить текст в заданное место экрана;- вставлять и удалять строки текста на экране.Например, с помощью CRT можно формировать меню, контролировать и управлятьпроцессом его использования.Для вывода на экран текстов используются процедуры Write и Writeln модуляSYSTEM. При выводе символов на экран они размещаются начиная с той позиции, вкоторой находился курсор.
После вывода символа курсор смещается вправо. Есликурсор был у правой границы окна (экрана), он перемещается в начало следующейстроки, а если строка последняя, организуется "прокрутка": подъем вверх всех строк иустановка курсора в крайнюю левую позицию нижней строки.В списке данных процедур вывода Write и Writeln можно использовать коды любыхсимволов в виде #код.
Это могут быть, например, числа от 0 до 31 - коды служебныхфункций (см. табл.);Например:#7 - для выдачи короткого звукового сигнала; #8 - для перемещения курсора влево наодин символ; если курсор уже находился налевой границе окна или экрана, символ #8 игнорируется; #10 - для перемещениякурсора на одну строку вниз при той же горизонтальнойпозиции; если курсор к этому моменту уже находился на нижней строке окна (экрана),содержимое экрана "прокручивается" (поднимается) вверх на одну строку;#13 - для перемещения курсора в начало этой же строки.Пример использования специальных символов при выводе данных на экран:USES CRT; VARI : BYTE;BEGINWRITELN ('Нажимайте клавишу ВВОД для продолжения');READLN;{ - приостановка до нажатия клавиши Enter }189WRITELN ('Эффект от кода 7 - короткий звук', #7 );READLN;{ - приостановка до нажатия клавиши Enter }WRITELN ('Демонстрация кода возврата на одну позицию влево #8' );FOR I := 1 ТО 40 DO WRITE (‘/’);{ - вывод 40 штук '/' }FOR I := 1 ТО 40 DOBEGINDELAY ( 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 DOBEGINDELAY ( 100 );{ - задержка на 100 мс }WRITE ( ‘\’ );END; { - вывод 40 штук 'V в позициях '/' }WRITELN; READLN;{ - приостановка до нажатия клавиши Enter }END.Для выбора цвета фона и символов на экране используются следующие константыцветов:ConstBlack= 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; { белый }190Blink= 128; ( мерцание символа }Процедура TextColor устанавливает цвет символов, выводимых в окне с помощьюоператора Write.
Обращение к процедуре TextColor: TextColor ( цвет : byte );где цвет - это выражение целого типа; результат его должен быть равен от 0 до 15, всоответствии со значениями констант цветов; в качестве значения цвета можноиспользовать имя константы или соответствующее ему значение константы цвета.Например:TextColor (Green + 128) ; TextColor ( 2 + 128 ) ; задают зеленый мерцающий (от +128) цвет символов.Пример программы для установки цвета символов (для установки цвета надо ввестизначение константы цвета, а для выхода из программы — константу больше 15):Program ColorSim;Uses CRT;VAR COLOR : byte;{ - для цветов текста }BEGINWriteln (' Введите номер цвета, для окончания - 16'); WHILE COLOR < 16 DOBEGINReadln ( 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 );191где 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;BEGINRepeatXI := 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.192Процедуры LowVideo, NormVideo и HighVideo устанавливают соответственнопониженную, нормальную и повышенную яркость символов текста. При переходе отNormVideo к HighVideo цвета 0 .. 7 заменяются цветами 8 .. 15. Пример программы,изменяющей яркость символов:PROGRAM SVET;Uses CRT;BEGIN TextBackGround (1); ClrScr;LowVideo; Writeln (' Пониженная яркость ');NormVideo; Writeln (' Нормальная яркость ');HighVideo; Writeln (' Повышенная яркость'); END.Управление принтеромДля управления принтером используются процедуры вывода данных Write и Writeln,ориентированные на печатающее устройство.
Это можно сделать, например, еслиназначить файлу OUTPUT или любому другому текстовому файлу печатающееустройство с помощью процедуры Assign ( Output, 'PRN');ПоследовательностьуправленияSODC4SIDC2ESC,'E'ESC,’F'ESC,’G'ESC,’H'ESC,'S',CHR(0)ESC,'S',CHR(1)ESC,’T’ESC,'-',CHR(1)ESC,'-',CHR(0)ESC,’0'ESC,'C',CHR(N)ESC,'N',CHR(N)ESC/8'ESC,'9'Значения их кодовНазначение последовательности управляющихкодов принтеровВыбор широкого шрифтаОтказ от широкого шрифтаВыбор узкого шрифтаОтказ от узкого шрифтаВыбор утолщенного шрифтаОтказ от утолщенного шрифтаДвукратная печать одной строкиОтказ от двойной печатиПечать верхних индексовПечать нижних индексовОтказ от печати индексовПечать с подчеркиваниемОтказ от подчеркиванияИнтервал продвижения бумаги 1 /8 дюймаКоличество строк на странице; N=1 ..127;Пропустить N строк в конце страницыВключение контроля за концом бумагиОтключение контроля за концом бумаги#14#20#15#18#27, #69#27, #70#27, #71#27, #72#27, #83, #0#27, #83, #1#27, #84#27, #35, #1#27, #35, #0#27, #48#27, #67, #N#27, #78, #N#27, #56#27, #57Команды управления принтером передаются по тем же линиям связи, что ивыводимые данные.














