русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Текстовый режим. Модуль CRT. Работа с окнами. Управление звуком


Дата добавления: 2014-11-28; просмотров: 570; Нарушение авторских прав


Модуль CRT позволяет работать не только со всем экраном, но и выделять в нем прямоугольные окна. Любое окно задаётся своим верхним левым и правым нижним углами. Эти углы, так же как и положение любого объекта на экране, задаются двумя координатами: Х и Y. В качестве координаты Х выступает номер позиции в строке (нумерация начинается с 1 и идет слева направо), а в качестве координаты Y - номер строки (нумерация начинается с 1 и идет сверху вниз). При работе в окне координаты отсчитываются от левого верхнего угла окна. При запуске программы выделенное окно совпадает по размеру со всем экраном. Если режим работы адаптера 25 строк по 80 позиций, то координаты такого окна (1, 1) и (80, 25).

Window(X1, Y1, X2, Y2 : byte) – определяет текстовое окно на экране.

Смысл выполнения процедуры заключается в том, что все последующие действия по выводу информации действуют в пределах данного окна. Кроме того, системные процедуры, работающие с курсором - GotoXY, WhereX, WhereY, также интерпретируют свои параметры относительно левого верхнего угла последнего установленного окна. Далее, процедура ClrScr, заполняет пробелами не весь экран, а текущее окно.

Значения параметров процедуры Window выбираются очевидным образом; например, вызов

Window(35,11,45,13);

определяет окно высотой в две строки и длиной в десять символов примерно посередине экрана.

После выполнения процедуры Window курсор устанавливается в позицию окна с координатами (1,1). Кроме этого, эффект данной процедуры на экране никак не проявляется. Результат ее работы бывает виден только при выполнении каких-либо процедур вывода или управления курсором. Хорошей иллюстрацией механизма окон является следующая простая программа, которая в цикле производит создание очередного окна, случайным образом задавая его размеры м местоположение, а затем выводит в него серию случайных символов.



Задание. Наберите и протестируйте предложенную программу. Дополните ее своими операторами и комментарием. В целях большей наглядности употребите процедуру Delay и увеличьте длительность цикла вывода символов.

Program Windows;

Uses

Crt;

Procedure RandomWindow;

Var

X1, Y1, X2, Y2 : byte;

Begin

X1 := Random(40)+1;

Y1 := Random(12)+1;

X2 := X1+Random(40);

Y2 := Y2+Random(12);

TextColor(Random(15));

Window(X1, Y1, X2, Y2);

ClrScr;

End;

Procedure WorkWindow;

Var

i : integer;

Begin

for i := 0 to Random(1000)+500 do

write(Chr(Random(224)+32));

End;

Procedure Finish;

Var

i : integer;

Begin

Window(1, 1, 80, 25);

ClrScr;

if ReadKey = #0

then

ReadKey;

End;

Begin

ClrScr;

Randomize;

repeat

RandomWindow;

WorkWindow

until KeyPressed;

Finish;

End.

Модуль CRT содержит две интерфейсные переменные типа word, которые хранят в упакованном виде координаты двух углов текущего активного окна:

Var

WindMin : word; {координаты левого верхнего угла окна}

WindMax : word; {координаты правого нижнего угла окна}

Посредством стандартных функций Hi и Lo можно извлечь из этих переменных горизонтальные и вертикальные координаты углов. Наличие этих переменных избавляет от необходимости хранить информацию об активном окне в самой программе.

Наблюдая работу программы Windows, можно заметить, что, когда в процессе вывода производится заполнение последней позиции окна, его содержимое сдвигается на одну строку вверх (при этом верхняя строка пропадает) и, тем самым, нижняя строка освобождается для последующего вывода. Этот механизм является естественным обобщением знакомых правил работы процедур write и writeln на случай вывода в окна. В модуле Crt имеются две дополнительные процедуры, позволяющие несколько расширить и усилить возможности прокручивания("скроллинга") содержимого окон – DelLine и InsLine.

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

Задание. Наберите и протестируйте предложенную программу. Дополните ее своими операторами и комментарием.

Program ScrollUp;

Uses

Crt;

Var

i : word;

Begin

Window(5,10,65,14);

ClrScr;

writeln('Cтрока 1');

writeln('Cтрока 2');

writeln('Cтрока 3');

writeln('Cтрока 4');

writeln('Cтрока 5');

for i := 6 to 26 do

begin

GotoXY(1,1);

DelLine;

GotoXY(1,5);

write('Строка ',i);

Delay(300);

end;

Delay(500);

Window(1, 1, 80, 25);

ClrScr;

End.

Процедура InsLine вставляет пустую строку в позиции курсора. При этом все строки окна, расположенные ниже новой строки, сдвигаются вниз (нижняя строка пропадает).Легко видеть, что эта процедура позволяет организовать прокрутку содержимого окна (или части окна) в направлении сверху вниз.

Задание. Наберите и протестируйте предложенную программу. Дополните ее своими операторами и комментарием.

Program ScrollDown;

Uses

Crt;

Var

i : word;

Begin

Window(5,10,65,19);

ClrScr;

writeln('Данные строки окна');

writeln('остаются неизменными.');

writeln('В пяти нижних строках');

writeln('организована прокрутка');

writeln('в направлении сверху вниз');

for i := 1 to 40 do

begin

GotoXY(1,6);

InsLine;

write('Строка ',i);

Delay(300);

end;

Delay(500);

Window(1, 1, 80, 25);

ClrScr;

End.



<== предыдущая лекция | следующая лекция ==>
Управление курсором | Процедуры управления звуком


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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