procedure TForm1.Button1Click(Sender: TObject);
var but:TButton;
begin
  but:=tbutton.Create(form1);
  but.Left:=10;
  but.top:=10;
  but.Parent:=form1;
end;

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var myButton:TButton;
    begin
      myButton:=TButton.Create(self);
      myButton.Parent:=self;
      myButton.Left:=20;
      myButton.top:=50;
      myButton.height:=22;
      myButton.width:=60;
      myButton.caption:='汉字';
      myButton.onClick:=自定义方法;
    end; 
      

  2.   

    还有一点就是
    but.onlcick:=myClickEventHandlerFunction;
      

  3.   

    何动态生成控件?下面以动态生成一个按钮为例:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      btn:TButton;
    begin
      btn:=TButton.Create(Self);
      btn.Parent:=Self;
      btn.Top:=100;
      btn.Left:=100;
      btn.Width:=80;
      btn.Height:=30;
      btn.Caption:='New';
    end;
    首先要声明一个TButton的变量,然后再调用Create过程,接着设置
    它的一些属性就行了,其中最重要的是Parent属性,如果不设置,
    将无法显示。如果动态生成的控件是不可视的,则不需Parent属性。
    如果是在编写控件时要动态生成控件,则情况又稍有不同,Parent
    是TWinControl类型,在上例中,btn的Parent设为Self,这个Self指的
    是Form1,而TForm是TWinControl的子孙类,因此是正确的,如果
    你编写的控件并不是继承自TWinControl类,则不能将要动态生成
    的控件的Parent属性设为Self,可以(我没有用“必须”这个词)设
    成Self.Parent,但还有一点要注意的是,给Parent属性赋值并不能在
    控件的Create过程中实现,因为此时控件的Parent还没有被赋值,所
    应该在控件的Loaded过程中实现。