Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Ресурсы модуля crt для управления экраном





Управление экраном с помощью ресурсов модуля crt базируется на понятии «окно».

Окно - часть экрана прямоугольной формы. В момент получения программой управления весь экран считается окном 25x80 знакомест. Программист может определять на экране новые окна и управлять как цветом символов и фона окна, так и размещением информации в окне. Вывод информации в текстовом режиме осуществляется стандартными процедурами Write и WriteLn текущими цветом символа и цветом фона.

При выводе четыре символа интерпретируются особым образом:

#7 - звуковой сигнал;

#8 - перемещение курсора влево на один символ;

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

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

 

 

 

Рис. 8.2. Текущее окно на экране и относительная адресация символа в окне

 

Процедуры начинают вывод с того места, где стоит курсор. Координаты курсора определяются относительно верхнего левого угла текущего окна (рис. 8.2). Для управления окнами и размещения в них информации модуль crt содержит следующие процедуры и функции.

1. Процедура Window(xl, у1, х2, y2:word) - определяет на экране окно. Местоположение и размеры окна определяются координатами верхнего левого (х1, у1) и нижнего правого (х2, у2) углов прямоугольника. Координаты текущего окна модуль crt хранит в специальных переменных:

WindMin, WindMax:word.

Откуда координаты текущего окна можно определить, применив функции 1о и hi, которые выделяют из слова младший и старший байты соответственно:

xl=Lo(WindMin) - координата х верхнего левого угла;

у1=Hi(WindMin) - координата у верхнего левого угла;

x2=Lo(WindMax) - координата х нижнего правого угла;

y2=Hi(WindMax) - координата у нижнего правого угла.

После объявления окна курсор устанавливается в верхний левый угол окна.

2. Процедура TextColor(color:byte) - устанавливает текущий цвет вывода символов в окне.

3. Процедура TextBackGround(color:byte) - устанавливает текущий цвет фона окна. Цвета для процедур TextColor и TextBackGround можно задавать, используя специальные константы модуля crt:

Black=0; {черный} DarkGrey=8; {темно-серый}

Blue=1; {синий} LightBlue=9; {светло-синий}

Green=2; {зеленый} LightGreen=10; {светло-зеленый}

Cyan=3; {голубой} LightCyan=11; {светло-голубой}

Red=4; {красный} LightRed=12; {розовый}

Magenta=5; {фиолетовый} LightMagenta=13; {сиреневый}

Brown=6; {коричневый} Yellow=14; {желтый}

LightGrey=7; {светло-серый} White=15; {белый}

Blink=128; {мерцание}

Текущие цвета символа и фона в виде байта атрибута хранятся в переменной TextAttr:word. Текущий цвет фона из этой переменной определяется как

(TextAttr div 16) mod 8,

a текущий цвет символа как

TextAttr mod 16.

4. Процедура ClrScr - очищает окно, выводя в него пробелы с текущим атрибутом. После этого курсор устанавливается в верхний левый угол окна. Если окно не установлено, то очищается весь экран. Эту процедуру обычно используют после определения окна и атрибута его символов, чтобы обозначить окно на экране.

5. Функция WhereX:word - возвращает координату х текущего положения курсора в окне.

6. Функция WhereY:word - возвращает координату у текущего положения курсора в окне.

7. Процедура GotoXY(x,y:word) - перемещает курсор на знакоместо с координатами x и у.

Модуль crt содержит также процедуры, работающие с текущей строкой (строкой, в которой стоит курсор).

8. Процедура DelLine - удаляет текущую строку.

9. Процедура InsLine - вставляет строку, сдвигая остальные строки вниз.

10. Процедура ClrEol – стирает часть строки справа от курсора.

 

Пример 8.1.

Разработать программу вычисления среднего арифметического заданного количества чисел n, где n<10. Реализовать оконный интерфейс, представленный на рис. 8.3. Верхнее окно интерфейса не зависит от исходных данных. Его нужно определить, задать цвета символов и фона, очистить и вывести в него текст. Ввод ответа пользователя будет выполняться с того места, где окажется курсор. Количество окон для ввода чисел зависит от введенного значения. Их положение на экране необходимо рассчитать.

Рис. 8.3. Интерфейс программы вычисления среднего арифметического

Нижнее окно также не зависит от исходных данных. Его нужно определить и внести в него результат. Ниже представлена соответствующая программа с комментариями.

Program ex;

Uses Crt;

Var a:array[1 10] of integer;

x,dx,n,i:integer; s:real;

Begin

ClrScr; {очищаем экран}

Window(20,3,50,5); {выделяем окно ввода количества чисел}

TextAttr:=16+7; {определяем светло-серые символы на синем фоне}

ClrScr; { выделяем окно ввода}

GotoXY(2,2); {устанавливаем курсор для вывода запроса}

Write(‘введите количество чисел:’); {выводим запрос}

ReadLn(n); {вводим ответ пользователя}

dx:=(80-(n+1)*3)div n;

х:=0;

s:=0;

TextAttr:=2*I6+14; {желтые символы на зеленом фоне}

for i:=1 to n do

begin х:=х+3;

Window(x,7,x+dx,9); {устанавливаем окно ввода данных}

ClrScr; {выделяем это окно}

GotoXY(2,2); {устанавливаем курсор для ввода данных}

ReadLn(a[i]); {вводим число}

s:=s+a[i];

x:=x+dx;

end;

TextAttr:=4*16+14; {желтые символы на красном фоне}

Window(18,11,53,13); {устанавливаем окно результата}

ClrScr; {выделяем окно результата}

GotoXY(3,2); {устанавливаем курсор для вывода результата}

Write('Cpeднee арифметическое = , s/n:5:2);

ReadLn; {ожидаем нажатия клавиши Enter}

Window(1,1,80,25); {восстанавливаем окно на весь экран}

TextAttr:=7; {восстанавливаем стандартные цвета}

ClrScr; {очищаем экран}

End.

Date: 2015-07-24; view: 461; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию