Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.03.16;
Скачать: CL | DM;

Вниз

Создание одного обработчика для всех 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.006 c
2-1369898267
x86
2013-05-30 11:17
2014.03.16
XML DOM


15-1380573003
Юрий
2013-10-01 00:30
2014.03.16
С днем рождения ! 1 октября 2013 вторник


15-1380117316
JohnKorsh
2013-09-25 17:55
2014.03.16
Порты COM по BlueTooth


15-1380038174
Игорь Шевченко
2013-09-24 19:56
2014.03.16
Рома aka Kerk, поздравляю со званием!


2-1369340105
Ponchik
2013-05-24 00:15
2014.03.16
Сортировка по убыванию StringGrid