IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> меню с кнопо4ками, вроде даже ООП, нужна помощь
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Женский
Реальное имя: Ol'ka

Репутация: -  0  +


задание:
1) разработать интерфейсное меню, состоящее из кнопок вида ромба и квадрата
2)кнопки должны размещаться на панели и иметь объемный вид
3) текущей является кнопка серого цвета, неактивная - зеленая
4) перемещение по кнопкам производиться с помощью клавиш навигации, выбор кнопка-энтер
5) по нажатию каждой кнопки создается эффект вогнутости и выполняется действия:
на дополнительную панель внизу экрана вывести задание на лабу;
развернуть панель и вернуть ее в исходное состояние;
увеличить объемность панели...

uses crt,graph;
type

knopka=object
cz,cl,w,h,x1,y1,r1,r2,x2,y2:integer;ac:boolean;
procedure init(x0,y0,x4,y4,cli,cza:integer;act:boolean);
procedure init2(x0,y0,rx,ry,cli,cza:integer;act:boolean);
procedure draw1;
procedure draw2;
procedure draw_dawn;
procedure draw_up;
end;
panel=object(knopka)
procedure initp(x00,y00,x44,y44,cl0,cz0:integer);
procedure drawp;
end;

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-мя квадратными кнопками;
работает только третья кнопка, которая разворачивает и сворачивает панель; с объемом траблы ужасные; с файлом тоже не оч хорошо;
а ромбик, т.е. ромбовидную кнопку, не видно вообще...

необходима:
помощь программиста (задание интересное, но доделать у меня его не получается); очень хочется доделать ЭТО и желательно правильно =))

ЖДУ. НАДЕЮСЬ. ВЕРЮ.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 3
Пол: Женский
Реальное имя: Ol'ka

Репутация: -  0  +


Да, поднималась когда-то, но до конца программка по требованиям не работала, вот я и решила вспомнить.)))

Подскажите, пожалуйста, как прописать правильно ромбик для моей задачки, чтоб его видно было и что исправить для того, чтобы первая кнопочка-квадратик все таки увеличивала объемность панельки...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.09.2025 10:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name