怎么能这样定义
var
  temp:Tbutton;
begin
  temp:=Tbutton.Create (self);
  temp.parent:=form1;
  temp.Caption :='aaa';
  temp.Visible :=true;
  temp.onclick:=aa; 
end;procedure TForm1.aa(Sender: TObject);
begin
  showmessage('clicked');
end;

解决方案 »

  1.   

    //没有这样的语法!请参考如下代码
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Temp: TButton absolute Sender;
    begin
      ShowMessage(Temp.Caption);
    end;
      

  2.   

    这当然不行了,不知道你想干什么,说说你的目的好了。
    哦,我猜一下,动态生成按钮的onclick事件;
    如 button1.onclick := MyOnClick;
    是想在myonclick里用这个按钮吧,把按钮声明为全局变量好了,或者直接用sender。
      

  3.   

    这是动态生成按钮的一段代码。
    with TButton.Create(Self) do
      begin
        parent:=Self;
        Name:='name'
        OnClick:=Button1Click;//自定义的过程//
        SetBounds(10,10,Width,Height);//按钮的大小//
        Caption:='自己定义';
      end;
    end;
      

  4.   

    直接var Temp : TButton,sender没有这个用法,它是一个Delphi传递过来的参数,除此之外和AA,bb没有什么区别
      

  5.   

    我知道了,谢谢各位的提示。
    procedure TForm1.FormCreate(Sender: TObject);
    var I:Integer;
    begin
    for i:=1 to 6 do
    begin
      CheckFlag[i]:=false;
      MyCheckBox[i]:=TBitBtn.Create(self);
      with MyCheckBox[i] do
      begin
        Parent:=Panel1;
        left:=2;
        top:=2+(i-1)*25;
        width:=96;
        Height:=25;
        Caption:='asdf'+inttostr(i);
        onclick:= MenuClick;
        end;
    end;
    end;procedure TForm1.MenuClick(Sender: TObject);
    var Temp :TBitBtn;
    begin
    Temp:= Sender;
    if temp.Glyph... then
    //因为Sender 不能引用TBitBtn的很多属性,所以定义了Temp;
      begin  end;
    end;
      

  6.   

    if Sender is .. then Temp:= Sender;