f1:=7;f2:=11;f3:=7;f4:=11;f8:=11;pu:=11;pd:=11;f10:=7; {Переменные цвета нижних кнопок}
Text1:='Двигайтесь кнопками';
Text2:='PageDown,PageUp'; {Подсказки}
Text3:='Для выхода нажмите';
Text4:='ESC';
RP; {Выводится первый товар}
hod:=1; {Сделан первый ход}
writeSpisok; {Вывести на экран товар соответствующий коду товара из списка}
repeat
ch:=readkey;
if (ord(ch)=81) and (ScetRP<>0) then {Если нажата PageDown}
begin
if ScetRP<>hod then
begin
hod:=hod+1;
PoiskFPR; {Считывается весь файл и проверяется соответствие каждого товара
разделу и подразделу и проверяет входит ли код товара в список
если входит то ищет дальше если нет то...}
addspisok; {Если нет то добавляет в список}
writeSpisok; {Выводит товар соответствующий коду товара из списка}
end;
end;
if (ord(ch)=73) and (ScetRP<>0) then {Если нажата PageUp}
begin
if hod<>1 then
begin
hod:=hod-1;
DelSpisok; {Удаляет последний элемент списка}
writeSpisok; {Выводит уже другой последний элемент}
end;
end;
if ord(ch)=60 then NewTovar; {Если нажата F2 то в данный раздел и подраздел ввести новый товар}
if (ord(ch)=66) and (ScetRP<>0) then Del;{Если нажата клавиша F8, то процедура удаление товара}
if (ord(ch)=62) and (ScetRP<>0) then PrintF;{Если нажата клавиша F4, то процедура создания отчета}
until ord(ch)=27;
end;
procedure Vhod; {Процедура обработки события по нажатию клавише ввод}
begin
Lom:=1;
if ord(ch)=13 then {Если нажат ввод}
begin
for i:=1 to nabor do
begin
if (men[i]=15) then {Если текущий цвет белый то... }
begin
if razdel=1 then {Если открыт подраздел...}
begin
podrazd:=Lom; {Присвоить подразделу его порядковый номер}
vivod; {Вывод на экран}
kolvo:=0;
end;
if (Lom=1) and (razdel=0) then
begin
rozd:='1'; {Номер раздела}
MRazdel:=1;{Номер подраздела}
razdel:=1; {Показывает что открыт подраздел, а не раздел}
end;{Далее аналогично}
if (Lom=2) and (razdel=0) then begin rozd:='2'; MRazdel:=2; razdel:=1; end;
if (Lom=3) and (razdel=0) then begin rozd:='3'; MRazdel:=3; razdel:=1; end;
if (Lom=4) and (razdel=0) then begin rozd:='4'; MRazdel:=4; razdel:=1; end;
if (Lom=5) and (razdel=0) then begin rozd:='5'; MRazdel:=5; razdel:=1; end;
if (Lom=6) and (razdel=0) then begin rozd:='6'; MRazdel:=6; razdel:=1; end;
if (Lom=7) and (razdel=0) then begin rozd:='7'; MRazdel:=7; razdel:=1; end;
if (Lom=8) and (razdel=0) then begin rozd:='8'; MRazdel:=8; razdel:=1; end;
if (Lom=9) and (razdel=0) then begin rozd:='9'; MRazdel:=9; razdel:=1; end;
end;
Lom:=Lom+1;
end;
end;
if ord(ch)=8 then {Если нажата <- то вернутся назад}
begin
rozd:='0'; {Открывает раздел}
razdel:=0; {Показывает что открыт раздел}
end;
podRazdel; {Процедура создание подразделов}
end;
procedure Poisk;
var punkt:integer; {Переменная ввода выбранного критерия поиска}
NSP:string; {Переменная условия поиска}
fol:integer; {Переменная счетчик}
begin
clrscr;
fol:=0; {Счетчик указывающий количество найденных позиций}
GoToXY(10,2); Textcolor(10); Writeln('Выберете критерии поиска');
{GoToXY(10,3); Writeln('и нажмите ввод');}
Textcolor(11); GoToXY(12,6); Writeln('1: Название');
GoToXY(12,8); Writeln('2: Серия');
GoToXY(12,10); Writeln('3: Производитель');
GoToXY(12,12); Writeln('4: Отмена');
repeat
ch:=readkey;
if (ord(ch)=49) or (ord(ch)=50) or (ord(ch)=51) then
begin
{GoToXY(12,14); readln(punkt);}
GoToXY(12,14);writeln('Введите условие и нажмите ввод');
GoToXY(12,16);readln(nsp);
assign(f,'e:\prog\bd.dat');
reset(f);
while (not Eof(f)) do {Считывает очередной товар}
begin
readln(f,Baza.FKod);
readln(f,Baza.FRazdel);
readln(f,Baza.FPodRazdel);
readln(f,Baza.FName);
readln(f,Baza.FSeria);
readln(f,Baza.FProizvod);
readln(f,Baza.FOpisan);
readln(f,Baza.FMany);
readln(f,Baza.FSim);
If (Baza.FName=NSP) or (Baza.FSeria=Nsp) or (Baza.FProizvod=Nsp) then
begin
clrscr;
Tablo;
f1:=7;f2:=7;f3:=7;f4:=7;f8:=7;pu:=7;pd:=11; f10:=7; {Цвета нижних кнопок}
Text1:='Двигайтесь кнопкой';
Text2:='PageDown'; {Подсказка}
Text3:='Для выхода нажмите';
Text4:='ESC';
Shapka;
fol:=fol+1;
repeat
ch:=readkey;
until (ord(ch)=81) or (ord(ch)=27);
f1:=11;f2:=7;f3:=11;f4:=7;f8:=7;pu:=7;pd:=11;f10:=11; {Цвета нижних кнопок}
if ord(ch)=27 then break;
end;
end;
close(f);
clrscr;
GoToXY(15,12);Textcolor(4);
if fol>0 then writeln('Больше совпадений нет, для продолжения работы нажмите ввод')
else writeln('Cовпадений нет, для продолжения работы нажмите ввод');
readln;
break;
end;
until ord(ch)=52;
clrscr;
Text1:='Двигайтесь курсором';
Text2:='до нужного раздела'; {Подсказка}
Text3:='и нажмите ВВОД';
Text4:='Для возврата <-';
Shapka;
podRazdel;
end;
procedure help;
var k:string;
n:integer;
begin
clrscr;
n:=0;
assign(f,'e:\prog\help.dat');
reset(f);
while not Eof(f) do {Считывает очередной товар}
begin
if (n=24) or (n=48) or (n=72) or (n=96) or (n=120) or (n=120) then readln;{ch:=readkey;}
readln(f,k);
writeln(k);
n:=n+1;
end;
readln;
close(f);
clrscr;
Shapka;
podRazdel;
end;
procedure perem; {Процедура перемещает элементы меню}
begin
{Массив цветов. Первый белый остальные зеленые}
men[1]:=15; men[2]:=2; men[3]:=2; men[4]:=2; men[5]:=2; men[6]:=2; men[7]:=2;
men[8]:=2; men[9]:=2; men[10]:=2;men[11]:=2;men[12]:=2;men[13]:=2; men[14]:=2; men[15]:=2;
repeat
podRazdel; {Процедура вывода подразделов}
strok:=1; {Текущая строка}
GoToXY(79,1);
ch:=readkey; {Просит ввести курсором направления движения}
if (ord(ch)=80) then {Если вниз тогда текущий становится белым,
а нижний становится зеленым}
begin
for i:=1 to nabor do
begin
if (men[i]=15) and (strok<>nabor) then
begin
men[strok]:=2;
men[strok+1]:=15;
end
else strok:=strok+1;
end;
end;
if ord(ch)=72 then {Если вверх, то текущий белым, а верхний зеленым}
begin
for i:=1 to nabor do
begin
if (men[i]=15) and (strok<>1)then
begin
men[strok]:=2;
men[strok-1]:=15;
end
else strok:=strok+1;
end;
end;
if ord(ch)=59 then Help; {Если нажата клавиша F1}
if ord(ch)=61 then Poisk;{Если нажата клавиша F3}
{До тех пор пока не нажат ввод или назад или выход}
until (ord(ch)=13) or (ord(ch)=8) or (ord(ch)=68);
vof:=true;
if (ord(ch)<>68) then vhod;{Если не нажат выход то вход в очередной раздел или подраздел}
end;
{Основная программа}
begin
rozd:='0'; {Подраздел не выбран, значит выводить главный раздел}
razdel:=0; {Показывает что открыт раздел, а не подраздел}
vof:=false; {Переменная показывает что перемещений не было}
repeat
clrscr;
f1:=11;f2:=7;f3:=11;f4:=7;f8:=7;pu:=7;pd:=7;f10:=11; {Цвета нижних кнопок}
Text1:='Двигайтесь курсором';
Text2:='до нужного раздела'; {Подсказка}
Text3:='и нажмите ВВОД';
Text4:='Для возврата <-';
shapka; {Процедура выводит разметку на экран}
GoToXY(79,1);
perem; {Процедура перемещения курсором в разделах и подразделах}
until (ord(ch)=68) ; {До тех пор пока не нажат пункт EXIT}
end.