动态创建对象的关键如下:
1. 一定要先声明一个相应类的对象名称, 可以在任何位置声明, 根据需要而定
2. 创建时调用该类的 create 方法并给出相应参数(一般为Owner)
3. 创建后要付给必要的属性,特别是定位属性
4. 一定要指定它的 parent, 否则你看不到该对象
5. 在程序结束前一定要调用它的 free 方法释放它
6. 要想动态创建的对象执行某一个动作, 可以预先写一个相应的方法或事件, 对象
创建或赋值相应的事件给该对象
7. 如果类似的对象较多, 可以创建一个动态的对象组(此论坛已经讨论过)
SUNSET 的例子有错误, 程序关闭前没有释放新建对象, 不可用.
下面是一个完整的例子:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
Button1: TButton;
Edit1: TEdit;
public
{ Public declarations }
procedure ButtonClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ButtonClick(Sender: TObject);
begin
Edit1.Text:=IntToStr(StrToInt(Edit1.Text)+1);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1:=TButton.create(self);
with Button1 do
begin
top:=20;
Left:=20;
width:=100;
Caption:='&Click Here';
OnClick:=ButtonClick;
parent:=self;
end;
Edit1:=TEdit.create(self);
with Edit1 do
begin
top:=Button1.Top+Button1.Height+5;
Left:=20;
width:=100;
Text:='0';
parent:=self;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Button1.free;
Edit1.free;
end;
end.