procedure Tcutbarcode.FormCreate(Sender: TObject);
var bt:Tbutton;
var lefts,i:Integer;
begin
  lefts := 100;
  for i:=0 to 4 do
  begin
    bt := Tbutton.Create(self);
    bt.Parent := self;
    bt.Left := lefts;
    lefts := lefts + bt.Width ;
    bt.Caption := inttostr(i);
    bt.OnClick := clickbt;
  end;
end;procedure Tcutbarcode.clickbt(Sender:TObject);
begin
//这里如何知道是那个按钮所产生的事件
end;

解决方案 »

  1.   

    sender就是点击的按钮,按一楼的转一下就可以了
      

  2.   

    Tbutton(Sender).caption  通用代码
    也可以设置一下tag属性
    做个标记
      

  3.   

    嗯,用caption可以,用tag也可以。动态生成控件的时候bt.tag:= i;procedure Tcutbarcode.clickbt(Sender:TObject);
    begin
    //这里如何知道是那个按钮所产生的事件
        case TButton(Sender).tag of 
           0:{};
           1:{};
        ......
    end;
      

  4.   

    没看明白呀>>>>>>>>>>>
      

  5.   

    (Sender:TObject);
    是定义了一个对象而已
      

  6.   

    with sender as tbutton do
    begin
       showmessage(caption);
    end;
      

  7.   

    Sender可以看做是操作对象的引用
      

  8.   

    这样动态生成按钮,clickbt事件是实现相同操作吧
      

  9.   

    恩,用sender参数,这是在事件发生时vcl框架传递的