Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1380573003
Юрий
2013-10-01 00:30
2014.03.16
С днем рождения ! 1 октября 2013 вторник


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


15-1380391129
электроник
2013-09-28 21:58
2014.03.16
ps2 keyboard as usb-hid


15-1380519516
Els
2013-09-30 09:38
2014.03.16
Роскомнадзор


11-1250348579
Dy1
2009-08-15 19:02
2014.03.16
Obj и IsForm





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский