Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс_роб(вказівки)_90.doc
Скачиваний:
1
Добавлен:
04.05.2019
Размер:
484.86 Кб
Скачать

Var m: array[1..Kr] of string[22];

pp: array[1..kr] of byte; result, i, t, r:byte;

ch: char; fl: boolean;

begin

cursor(false); fl:=true;

m[1]:=ss1; m[2]:=ss2; m[3]:=ss3; m[4]:=ss4;

m[5]:=ss5; m[6]:=ss6; m[7]:=ss7;

t:=Length(m[1]); r:=0;

for i:=1 to kr do r:=r+length(m[i]);

r:=Round((78-r)/kr)-1; Frame(3,y1-1,75,y1+1);

GotoXY(14,22); CF(14,0); write('за допомогою ',Chr(26),' чи ',Chr(27),'

зробіть вибір и натисніть <Enter> ');

GotoXY(Round(R/2+3),y1);

for i:=1 to kr do begin

if i=1 then CF(0,7) else CF(7,0); pp[i]:=WhereX; write(m[i]);

CF(7,0); if i=kr then r:=0; write('':r);

end;

i:=1;

while fl=true do

begin

Ch:=Readkey;

if Ch=#13 then fl:=false;

if (Ch=#0) and KeyPressed then

begin

Ch:=ReadKey;

case Ch of

#77:begin Beep;

GoToXY(k1+pp[i],y1); cf(7,0); write(m[i]); i:=i+1;

if i=(kr+1) then begin i:=1; CF(7,0);

GotoXY(k1+pp[i],y1); CF(0,7);

write(m[i]);CF(7,0); Goto Met;

end;

GotoXY(k1+pp[i],y1); CF(0,7); write(m[i]); CF(7,0)

end;

#75: begin

GotoXY(k1+pp[i],y1); Beep; CF(7,0); write(m[i]);

i:=i-1; if i=0 then i:=kr; GotoXY(k1+pp[i],y1);

CF(0,7); write(m[i])

end; end;

Met:

end; end;

Regime:=i; CF(7,0); Cursor(True);

end;

begin

clrscr; cf(15,0); frame(1,1,80,24);

gmenu(5,5,'пункт1', 'пункт2', 'пункт3', 'пункт4',

'пункт5', 'пункт6', 'пункт7', rez);

gotoxy(10,10); write(rez); readln;

end.

3. Приклад програми створення вертикального меню в текстовому режимі. За вікном меню виводиться "тінь". Для невидимого курсору можна використати процедуру із попереднньої програми.

uses crt;

const tpr: array[1..2, 1..6] of char=((#179,#191,#217,#192,#218,#196),

(#186,#187,#188,#200,#201,#205));

var

buf: array[0..24,0..79,0..1] of byte absolute $b800:0000;

tr, cr, cf, cl, ns, kx, ky, dx, dy, j, jj, i, l, ll, ii, x2, y2: integer;

nr: string; c: char; sr: array[1..8] of string;

begin

clrscr;

tr:=2; cr:=12; cf:=1; cl:=14; ns:=5; kx:=12; ky:=12; dx:=25; dy:=ns;

nr:=' меню выбора '; sr[1]:='пункт 1';

sr[2]:='пункт 2'; sr[3]:='пункт 3';

sr[4]:='пункт 4'; sr[5]:='пункт 5';

textbackground(2);

for i:=1 to 23 do begin writeln; for j:=1 to 70 do write('1'); end;

window(1,1,80,25);

for i:=1 to ns do begin ll:=dx-length(sr[i])-3; for ii:=1 to ll do sr[i]:=sr[i]+' '; end;

x2:=kx+dx; y2:=ky+dy+1; textcolor(cr); textbackground(cf);

gotoxy(kx-1,ky); {лівий верхній} write(tpr[tr,5]);

for i:=kx to (x2-1) do write(tpr[tr,6]); {верх лінія}

write(tpr[tr,2]); {правий верхіий}

for i:=(ky+1) to (y2-1) do begin {ліва лінія}

gotoxy(kx-1,i); write(tpr[tr,1]);

gotoxy(x2,i); {права лінія}

write(tpr[tr,1]); end;

gotoxy(kx-1,y2); write(tpr[tr,4]);

for i:=kx to x2-1 do write (tpr[tr,6]);

write(tpr[tr,3]);

gotoxy(kx+round((((x2-kx)-length(nr))/2)),ky);{ім’я рамки}

write (nr);

textbackground(0); {тінь}

for i:=kx+1 to x2+2 do buf[y2,i-1,1]:=7;

for i:=ky+1 to y2 do begin buf[i-1,x2,1]:=7;

buf[i-1,x2+1,1]:=7; end;

window(kx,ky+1,x2-1,y2-1); {записуємо пункти меню}

textbackground(cf); clrscr;

if ns<>0 then begin

window(1,1,80,25); textbackground(cf); textcolor(cl);

for i:=1 to ns do begin

gotoxy(kx+1,ky+i); writeln(sr[i]);

end;

gotoxy(kx+1,ky+1); textbackground(3);

textcolor(0); writeln(sr[1]+' '); window(kx,ky+1,x2-1,y2-1); j:=1; c:=' ';

repeat

repeat

c:=readkey;

until (c=#72) or (c=#80) or (c=#13) or (c=#27);

jj:=j;

if c=#72 then begin dec(j); if j=0 then j:=ns; end;

if c=#80 then begin inc(j); if j>ns then j:=1; end;

if jj<>j then begin

window(1,1,80,25);

for i:=1 to ns do begin

gotoxy(kx+1,ky+i);

if i=j then begin textcolor(0); textbackground(3); end

else begin textcolor(cl); textbackground(cf); end;

writeln(sr[i]+' '); end; window(kx+1,ky,x2,y2); end;

until (c=#13) or (c=#27);

window(1,1,80,25); end; writeln('OK'); readln;

end.

Додаток 3