Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VT_PAS1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
202 Кб
Скачать
☆

Использование модуля crt

В этом модуле расположены процедуры и функции позволяющие перемещать курсор, менять цвета символов и фона, управлять звуками и др. Рассмотрим некоторые из этих процедур.

Процедура

CLRSCR;

предназначена для очистки экрана.

Процедура

GoToXY(col,row);

осуществляет перемещение курсора в точку с горизонтальной координатой col и вертикальной - row. Значения этих параметров должны быть целыми величинами. Начало координат - точка (1,1) - расположена в верхнем левом углу экрана.

Пример:

Program No12;

Uses CRT;

Const

text='Пример вывода текста в середине длины строки';

BEGIN

CLRSCR;

GoToXY((80-LENGTH(text)) div 2, 10);

write(text);

END.

В данной программе использована стандартная функция LENGTH, позволяющая определить длину ее аргумента строкового типа.

Некоторые другие процедуры модуля CRT:

ClrEOL - очищает строку от курсора до ее конца;

DelLin - удаляет строку, на которой находится курсор, а те, что ниже, поднимает на строку вверх;

TextColor(c) - задает цвет символов, с - целая величина - номер цвета;

TextBackGround(c) - задает цвет фона.

Функция ReadKey - читает символ, вводимый с клавиатуры, без его отображения на экране; приостанавливает выполнение программы до нажатия любой клавиши, кроме Shift, Ctrl, Alt, CapsLock, NumLock, ScrollLock.

Практический пример. Программа "меню"

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

Program No13;

uses CRT;

Type

massiv=array [1..4] of string;

Const

Nm=4; r=5; c=20;

M:massiv= (' Пункт 1 ', ' Пункт 2 ', ' Пункт 3 ',' Выход ');

Var

i,k: integer;

{-------------------------------------------------------------------------------}

Procedure WriteMenu(col,row,N: integer; Mnu: massiv);

Var

i: integer;

Begin

textcolor(15); textbackground(7);

gotoxy(col,row);

For i:=1 to N do

begin

write(Mnu[i]);

gotoxy(col,row+i)

end;

End;

{********************************************************************}

BEGIN

clrscr;

WriteMenu(c,r,Nm,M);

k:=1;

Repeat

begin

gotoxy(c,r+7); write('Укажите пункт меню '); read(k); {***}

Case k of

1: begin gotoxy(c, r+8);writeln('Пункт 1') end;

2: begin gotoxy(c, r+8);writeln('Пункт 2') end;

3: begin gotoxy(c, r+8);writeln('Пункт 3') end;

4: begin gotoxy(c, r+8);writeln('Пункт 4') end;

end;

end;

Until k=Nm;

textbackground(0); textcolor(15);

END.

В разделе описаний заданы следующие константы: Nm - количество пунктов меню, r , c - координаты левого верхнего угла меню. При работе программы меню печатается на экране на светлом фоне.

После того, как мы убедимся, что программа работает правильно, можно приступать к ее усовершенствованию. Например, поочередно вводить в нее тексты процедур, реализующих выполнение каждого из пунктов меню. Мы же усовершенствуем само меню - предоставим пользователю возможность выбора того или иного пункта с помощью клавиш управления курсором. Для активизации выбранного пункта он должен нажать клавишу <ENTER>. Процесс выбора и активизации пунктов меню оформим в виде процедуры, поэтому в главной программе изменения будут минимальными: оператор чтения номера пункта меню заменится на обращение к процедуре:

Procedure Menu(col,row,N: integer; Mnu: massiv; var k:integer);

Var

punkt: integer;

ch : char;

Begin

textbackground(7);

Repeat

punkt:=k;

textcolor(4); gotoxy(col,row-1+punkt);

write(Mnu[punkt]);

ch:=readKey;

if ch=char(0) then

begin

ch:=readkey;

case ch of

char(72):if k>1 then k:=k-1;

char(80):if k<N then k:=k+1;

end;

end;

textcolor(15); gotoxy(col,row-1+punkt);

write(Mnu[punkt]);

punkt:=k; gotoxy(col,row-1+punkt);

write(Mnu[punkt]);

Until ch=char(13);

textbackground(0);

End;

Обращение к этой процедуре

Menu(c,r,Nm,M,k);

должно заменить строку

gotoxy(c,r+7); write('Укажите пункт меню '); read(k);

примера Program No13.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]