Форум: "Начинающим";
Текущий архив: 2014.03.16;
Скачать: [xml.tar.bz2];
ВнизСоздание одного обработчика для всех BitBtn Найти похожие ветки
← →
DanilTraum (2013-05-28 18:24) [0]Всем доброго времени суток!
Есть программа, в которой при нажатии на определенную кнопку происходит построение графиков соответственно...
Текст программы:
procedure TForm1.btn1Click(Sender: TObject);
begin
xc:=img1.Width div 2;
yc:= img1.Height div 2;
w:=xc*2;
h:=yc*2;
mx:=(w-80)/2;
my:=(h-80)/pi;
with img1.Canvas do
begin
Brush.Color:=clWhite;
Pen.Color:=clBlack;
MoveTo(0,yc);
LineTo(w,yc);
MoveTo(xc,0);
LineTo(xc,h);
textout(w-20,yc-20,"X");
textout(xc+10,5,"Y");
textout(xc+10,yc+10,"0");
for i:=1 to 10 do
begin
MoveTo(xc+round(i*mx/5),yc-3);
LineTo(xc+round(i*mx/5),yc+3);
MoveTo(xc-round(i*mx/5),yc-3);
LineTo(xc-round(i*mx/5),yc+3);
textout(xc+round(i*mx/5),yc+5,FloattostrF(i/5,ffFixed,4,1));
textout(xc-round(i*mx/5),yc+5,FloattostrF(-i/5,ffFixed,4,1));
end;
MoveTo(xc+3,yc-round(pi*my/4));
LineTo(xc-3,yc-round(pi*my/4));
MoveTo(xc+3,yc+round(pi*my/4));
LineTo(xc-3,yc+round(pi*my/4));
textout(xc-30,yc-round(pi*my/4),"pi/2");
textout(xc-30,yc+round(pi*my/4),"-pi/2");
MoveTo(xc+3,yc-round(pi*my/2));
LineTo(xc-3,yc-round(pi*my/2));
MoveTo(xc+3,yc+round(pi*my/2));
LineTo(xc-3,yc+round(pi*my/2));
textout(xc-30,yc-round(pi*my/2),"pi");
textout(xc-30,yc+round(pi*my/2),"-pi");
x:=-1;
while x<=1 do
begin
y:=arcsin(x);
pixels[xc+round(x*mx),yc-round(y*my/2)]:=clBlack;
x:=x+0.001;
end;
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
xc:=img1.Width div 2;
yc:= img1.Height div 2;
w:=xc*2;
h:=yc*2;
mx:=(w-80)/2;
my:=(h-80)/pi;
with img1.Canvas do
begin
Brush.Color:=clWhite;
Pen.Color:=clBlack;
MoveTo(0,yc);
LineTo(w,yc);
MoveTo(xc,0);
LineTo(xc,h);
textout(w-20,yc-20,"X");
textout(xc+10,5,"Y");
textout(xc+10,yc+10,"0");
for i:=1 to 5 do
begin
MoveTo(xc+round(i*mx/5),yc-3);
LineTo(xc+round(i*mx/5),yc+3);
MoveTo(xc-round(i*mx/5),yc-3);
LineTo(xc-round(i*mx/5),yc+3);
textout(xc+round(i*mx/5),yc+5,FloattostrF(i/5,ffFixed,4,1));
textout(xc-round(i*mx/5),yc+5,FloattostrF(-i/5,ffFixed,4,1));
end;
MoveTo(xc+3,yc-round(pi*my/4));
LineTo(xc-3,yc-round(pi*my/4));
MoveTo(xc+3,yc+round(pi*my/4));
LineTo(xc-3,yc+round(pi*my/4));
textout(xc-30,yc-round(pi*my/4),"pi/2");
textout(xc-30,yc+round(pi*my/4),"-pi/2");
MoveTo(xc+3,yc-round(pi*my/2));
LineTo(xc-3,yc-round(pi*my/2));
MoveTo(xc+3,yc+round(pi*my/2));
LineTo(xc-3,yc+round(pi*my/2));
textout(xc-30,yc-round(pi*my/2),"pi");
textout(xc-30,yc+round(pi*my/2),"-pi");
x:=-1;
while x<=1 do
begin
y:=arccos(x);
pixels[xc+round(x*mx),yc-round(y*my/2)]:=clBlack;
x:=x+0.0001;
end;
end;
end;
end.
Как написать один обработчик событий для кнопок Btn1-8?
Понятно, что их эти кнопки нужно выделить, в инспекторе объектов нажать на ОнКлик и там через сендер делать. Только что ,куда и как писать...незнаю, знаю, что после построения осей. А в остальном...очень жду помощи.
Заранее спасибо!
← →
RWolf © (2013-05-28 19:00) [1]Присвоить в инспекторе для btn1 один tag, для btn2 другой и т.д.
В обработчике:
case (Sender as TComponent).tag of
0: y:=arcsin(x);
1: y:=arccos(x);
...
end;
← →
DanilTraum (2013-05-28 19:55) [2]А можно по подробнее, куда что вписать?
← →
Jeer © (2013-05-28 23:15) [3]>А можно по подробнее, куда что вписать?
В зачетную книжку - неуд.
← →
DanilTraum (2013-05-29 05:03) [4]
procedure TForm1.btn1Click(Sender: TObject);
begin
xc:=img1.Width div 2;
yc:= img1.Height div 2;
w:=xc*2;
h:=yc*2;
mx:=(w-80)/2;
my:=(h-80)/pi;
with img1.Canvas do
begin
Brush.Color:=clWhite;
Pen.Color:=clBlack;
MoveTo(0,yc);
LineTo(w,yc);
MoveTo(xc,0);
LineTo(xc,h);
textout(w-20,yc-20,"X");
textout(xc+10,5,"Y");
textout(xc+10,yc+10,"0");
for i:=1 to 10 do
if (Sender as TBitBtn).Name = "btn1" then
begin
MoveTo(xc+round(i*mx/5),yc-3);
LineTo(xc+round(i*mx/5),yc+3);
MoveTo(xc-round(i*mx/5),yc-3);
LineTo(xc-round(i*mx/5),yc+3);
textout(xc+round(i*mx/5),yc+5,FloattostrF(i/5,ffFixed,4,1));
textout(xc-round(i*mx/5),yc+5,FloattostrF(-i/5,ffFixed,4,1));
end;
MoveTo(xc+3,yc-round(pi*my/4));
LineTo(xc-3,yc-round(pi*my/4));
MoveTo(xc+3,yc+round(pi*my/4));
LineTo(xc-3,yc+round(pi*my/4));
textout(xc-30,yc-round(pi*my/4),"pi/2");
textout(xc-30,yc+round(pi*my/4),"-pi/2");
MoveTo(xc+3,yc-round(pi*my/2));
LineTo(xc-3,yc-round(pi*my/2));
MoveTo(xc+3,yc+round(pi*my/2));
LineTo(xc-3,yc+round(pi*my/2));
textout(xc-30,yc-round(pi*my/2),"pi");
textout(xc-30,yc+round(pi*my/2),"-pi");
x:=-1;
while x<=1 do
begin
y:=arcsin(x);
pixels[xc+round(x*mx),yc-round(y*my/2)]:=clBlack;
x:=x+0.001;
end;
if (Sender as TBitBtn).Name = "btn2" then
begin
MoveTo(xc+round(i*mx/5),yc-3);
LineTo(xc+round(i*mx/5),yc+3);
MoveTo(xc-round(i*mx/5),yc-3);
LineTo(xc-round(i*mx/5),yc+3);
textout(xc+round(i*mx/5),yc+5,FloattostrF(i/5,ffFixed,4,1));
textout(xc-round(i*mx/5),yc+5,FloattostrF(-i/5,ffFixed,4,1));
end;
MoveTo(xc+3,yc-round(pi*my/4));
LineTo(xc-3,yc-round(pi*my/4));
MoveTo(xc+3,yc+round(pi*my/4));
LineTo(xc-3,yc+round(pi*my/4));
textout(xc-30,yc-round(pi*my/4),"pi/2");
textout(xc-30,yc+round(pi*my/4),"-pi/2");
MoveTo(xc+3,yc-round(pi*my/2));
LineTo(xc-3,yc-round(pi*my/2));
MoveTo(xc+3,yc+round(pi*my/2));
LineTo(xc-3,yc+round(pi*my/2));
textout(xc-30,yc-round(pi*my/2),"pi");
textout(xc-30,yc+round(pi*my/2),"-pi");
x:=-1;
while x<=1 do
begin
y:=arccos(x);
pixels[xc+round(x*mx),yc-round(y*my/2)]:=clBlack;
x:=x+0.0001;
end;
end;
end;
теперь при нажатии одной из кнопки рисуются оба графика
← →
DanilTraum (2013-05-29 07:11) [5]Проблема решена, спасибо
← →
Kilkennycat © (2013-05-30 22:27) [6]нихрена не решена, во-первых, сказали же, что таг использовать надо, удобнее это, а во-вторых, какой смысл было делать один обработчик для двух кнопок, если в нем идет дубликат кода?!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2014.03.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.002 c