![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание одного обработчика для всех BitBtn
DanilTraum © (2013-05-28 18:24:00)Всем доброго времени суток!
Есть программа, в которой при нажатии на определенную кнопку происходит построение графиков соответственно...
Текст программы:
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?
Понятно, что их эти кнопки нужно выделить, в инспекторе объектов нажать на ОнКлик и там через сендер делать. Только что ,куда и как писать...незнаю, знаю, что после построения осей. А в остальном...очень жду помощи.
Заранее спасибо!
Kilkennycat (2013-05-30 22:27:00) [1]нихрена не решена, во-первых, сказали же, что таг использовать надо, удобнее это, а во-вторых, какой смысл было делать один обработчик для двух кнопок, если в нем идет дубликат кода?!
DanilTraum (2013-05-29 07:11:00) [2]Проблема решена, спасибо
DanilTraum (2013-05-29 05:03:00) [3]
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;
теперь при нажатии одной из кнопки рисуются оба графика
Jeer (2013-05-28 23:15:00) [4]>А можно по подробнее, куда что вписать?
В зачетную книжку - неуд.
DanilTraum (2013-05-28 19:55:00) [5]А можно по подробнее, куда что вписать?
RWolf (2013-05-28 19:00:00) [6]Присвоить в инспекторе для btn1 один tag, для btn2 другой и т.д.
В обработчике:
case (Sender as TComponent).tag of
0: y:=arcsin(x);
1: y:=arccos(x);
...
end;