一般方案:    设置新控件的Tag属性的值,如1、2、3等等。    在响应时间中(例如为TButton1.OnClick):    if (sender is TButton) then    
    case (sender as TButton).Tag of
      0: ;//do you stuff..
      1: ;
    end;

解决方案 »

  1.   

        这里的TButton1是否已经存在?如果我要在一个空窗口中(没有任何控件)创建一个TButton,如何捕获它的Onclick事件(我都不知道在什么地方添加代码)
      

  2.   

    具体方法:
      第一步:设置变量 X,Y,i :Integer;
      第二步:定义一个创建过程:
      procedure TForm1.CreateButton(X,Y,i:Integer);
        begin
          Tmp:=TButton.Create(Application);
          with Tmp do
            begin
            Parent:=Form1;
            Left:=X;
            Top:=Y;
            Height:=28;
            Width:=28;
            name:='Button'+IntToStr(i);
            Tag:=i;
          OnClick:=ButtonOnClick;
       end;
      end;
      第三步:定义 OnClick 事件:
      procedure TForm1.ButtonOnClick(Sender: TObject);
      var Click:TButton;
      begin
       if (Sender is TButton) then
          case (sender as TButton).Tag of
            0: ;//do you stuff..
            1: ;
          end;
       end;
      第三步:用循环调用 CreateButton 事件,注意改变 X,Y,I 的值。
      

  3.   

    动态控件的事件问题:
        事件处理程序是窗体的一个方法,要自行静态定义好,控件动态产生后,
    要将这个方法赋值给控件的事件属性,如:
        Button15.OnClick:=Form1.ButtonClick;   
    定义事件方法的最简单办法是:先在窗体上添加一个这样的控件,双击它的事件
    属性,写上代码或一定先加上个注释,再删除刚添加的控件,这个事件方法就被
    保留下来了,在个事件方法中,不要直接访问产生事件的控件名,要间接地用它
    的参数Sender访问到产生事件的控件对象;