1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
задание: 1) разработать интерфейсное меню, состоящее из кнопок вида ромба и квадрата 2)кнопки должны размещаться на панели и иметь объемный вид 3) текущей является кнопка серого цвета, неактивная - зеленая 4) перемещение по кнопкам производиться с помощью клавиш навигации, выбор кнопка-энтер 5) по нажатию каждой кнопки создается эффект вогнутости и выполняется действия: на дополнительную панель внизу экрана вывести задание на лабу; развернуть панель и вернуть ее в исходное состояние; увеличить объемность панели...
procedure knopka.init; begin x1:=x0;y1:=y0;x2:=x4;y2:=y4;cl:=cli;cz:=cza;ac:=act; end; procedure knopka.init2; begin x1:=x0;y1:=y0;r1:=rx;r2:=ry;cz:=cza;cl:=cli;act:=ac; end; procedure knopka.draw1; {моя кнопо4ка-квадрат} begin setcolor(2); if ac=true then begin setfillstyle(1,8); setcolor(15);line(x1-1,y1,x2+1,y1);line(x1,y1+2,x1,y2); setcolor(0);line(x1+1,y2,x2,y2);line(x2,y1+1,x2,y2); setcolor(7);line(x1+3,y2-3,x2-3,y2-3);line(x2-3,y1+3,x2-3,y2-3); bar(x1+2,y1+2,x2-3,y2-3); end else begin setfillstyle(1,2); setcolor(15);line(x1-1,y1,x2+1,y1);line(x1,y1+2,x1,y2); setcolor(0);line(x1+1,y2,x2,y2);line(x2,y1+1,x2,y2); setcolor(7);line(x1+3,y2-3,x2-3,y2-3);line(x2-3,y1+3,x2-3,y2-3); bar(x1+2,y1+2,x2-3,y2-3); end; end; procedure knopka.draw_dawn; begin setfillstyle(1,2); setcolor(8);line(x1,y1,x2,y1);line(x1,y1+3,x1,y2); setcolor(15);line(x1+3,y2,x2,y2);line(x2,y1+3,x2,y2-3); setcolor(7);line(x1+3,y1+3,x2-3,y1+3);line(x1+3,y1+3,x1+3,y2-3); bar(x1+4,y1+4,x2-3,y2-3);delay(5000); end;
procedure knopka.draw2;{а вот тут должна быть кнопка-ромб} begin setcolor(2); if ac=true then begin setfillstyle(1,8); setcolor(15);line(x2--1,(y2-y1) div 2,(x2-x1) div 2-1,y1);line(x2,(y2-y1) div 2+2,(x2-x1) div 2,y2); setcolor(0);line((x2-x1) div 2+1,y2,x2,(y2-y1) div 2);line(x2,y2+1,x2,(y2-y1) div 2); setcolor(7);line((x2-x1) div 2+3,y2-3,x2-3,(y2-y1) div 2-3);line(x2-3,y2+3,x2-3,(y2-y1) div 2-3); setcolor(12); end else begin setfillstyle(1,2); setcolor(15);line(x2-1,(y2-y1) div 2,(x2-x1) div 2-1,y1);line(x2,(y2-y1) div 2+2,(x2-x1) div 2,y2); setcolor(0);line((x2-x1)div 2+1,y2,x2,(y2-y1) div 2);line(x2,y2+1,x2,(y2-y1) div 2); setcolor(7);line((x2-x1)div 2+3,y2-3,x2-3,(y2-y1) div 2-3);line(x2-3,y2+3,x2-3,(y2-y1) div 2-3); end;end; procedure knopka.draw_up; begin setfillstyle(1,2); delay(5000); end;
procedure panel.initp; begin x1:=x00;y1:=y00;x2:=x44;y2:=y44;cz:=cz0;cl:=cl0; end; procedure panel.drawp; begin setfillstyle(1,cz); setlinestyle(0,2,3);setcolor(2);rectangle(x1,y1,x2,y2); floodfill(x1+5,y1+5,2); end;
var a:array[1..3] of knopka;v:array[1..3,1..3] of real; p,c:panel; chk:char;i,j,k,z:byte; m:byte;gd,gm:integer;tt:string;f:text; begin gd:=detect; initgraph(gd,gm,'d:\bp\bgi'); cleardevice; setbkcolor(1); p.initp(120,10,560,80,4,blue); p.drawp; a[1].init(140,30,190,70,15,green,false); a[2].init2(280,50,25,20,15,green,false); a[3].init(490,30,540,70,15,green,false); a[1].ac:=true; m:=1;z:=2; repeat setbkcolor(0); cleardevice; p.drawp; for i:=1 to 4 do begin if m=i then a[i].ac:=true else a[i].ac:=false; if (i=1) or (i=3) then a[i].draw1 else a[i].draw2; end; chk:=readkey; case chk of #77:if (m=4) then m:=1 else m:=m+1; #75:if (m=1) then m:=4 else m:=m-1; #13:begin if (m=1) or (m=3) then a[m].draw_dawn else a[m].draw_up; case m of 1:begin {должна увеличивать объем} cleardevice; setbkcolor(1); p.initp(120,10,560,80,4,blue); p.drawp; a[1].init(140,30,190,70,15,green,false); a[2].init2(280,50,25,20,15,green,false); a[3].init(490,30,540,70,15,green,false); a[1].ac:=true;m:=1; end; 2:begin{открывает файл с заданием} c.initp(120,120,450,250,4,blue); c.drawp; assign(f,'d:\cs.txt'); reset(f);j:=0; while not eof(f) do begin readln(f,tt);outtextxy(125,125+j,tt); j:=j+10; end; close(f);delay(65000);readkey; end; 3:begin {разварачивает} if (z mod 2)=0 then begin p.initp(1,1,640,480,4,blue); a[1].ac:=true; p.drawp;a[1].init(140,30,190,70,15,green,false); a[2].init2(280,50,25,20,15,green,false); a[3].init(490,30,540,70,15,green,false); z:=z+1; end else begin p.initp(120,10,560,80,4,blue); p.drawp;a[1].init(140,30,190,70,15,green,false); a[2].init2(280,50,25,20,15,green,false); a[3].init(490,30,540,70,15,green,false); z:=z+1; a[1].ac:=true; end;end; end; end;end; until chk=#27;end.
результат: черный фон с красивой панелькой с 2-мя квадратными кнопками; работает только третья кнопка, которая разворачивает и сворачивает панель; с объемом траблы ужасные; с файлом тоже не оч хорошо; а ромбик, т.е. ромбовидную кнопку, не видно вообще...
необходима: помощь программиста (задание интересное, но доделать у меня его не получается); очень хочется доделать ЭТО и желательно правильно =))