procedure test; begin showmessage('d'); end; var b1:tbutton; begin b1:=tbutton.create(nil); b1.onclick:=test; //b1.free; end;
procedure test; var mybutton:Tbutton;//先定义类 begin mybutton:=Tbutton.create(self);//动态生成按钮 mybutton.parent:=form1; mybutton.Name:='name1'; .... end;
将事件负值:如流星所说: b1.onclick:=test;
如果控件事件有相似性,可以这样 ChangeSkinPopItems:array[0..5] of TMenuItem; //换肤菜单 procedure ChangeSkinPopMenuHandler(Sender:TObject); **************** procedure TMain.ChangeSkinPopMenuHandler(Sender:TObject); begin with Sender as TMenuItem do begin //做你想做的 end; end; **************** //动态生成菜单, for ChangeSkinPopi:=0 to SkinList.Count-1 do begin ChangeSkinPopItems[ChangeSkinPopi]:=TMenuItem.Create(Self); ChangeSkinPopMenu.Items.Add(ChangeSkinPopItems[ChangeSkinPopi]); ChangeSkinPopItems[ChangeSkinPopi].Caption:=SkinList.Strings[ChangeSkinPopi]; ChangeSkinPopItems[ChangeSkinPopi].OnClick:=ChangeSkinPopMenuHandler; //重要的一句 end;
begin
showmessage('d');
end;
var b1:tbutton;
begin
b1:=tbutton.create(nil);
b1.onclick:=test;
//b1.free;
end;
var
mybutton:Tbutton;//先定义类
begin
mybutton:=Tbutton.create(self);//动态生成按钮
mybutton.parent:=form1;
mybutton.Name:='name1';
....
end;
b1.onclick:=test;
ChangeSkinPopItems:array[0..5] of TMenuItem; //换肤菜单
procedure ChangeSkinPopMenuHandler(Sender:TObject);
****************
procedure TMain.ChangeSkinPopMenuHandler(Sender:TObject);
begin
with Sender as TMenuItem do
begin
//做你想做的
end;
end;
****************
//动态生成菜单,
for ChangeSkinPopi:=0 to SkinList.Count-1 do
begin
ChangeSkinPopItems[ChangeSkinPopi]:=TMenuItem.Create(Self);
ChangeSkinPopMenu.Items.Add(ChangeSkinPopItems[ChangeSkinPopi]);
ChangeSkinPopItems[ChangeSkinPopi].Caption:=SkinList.Strings[ChangeSkinPopi];
ChangeSkinPopItems[ChangeSkinPopi].OnClick:=ChangeSkinPopMenuHandler; //重要的一句
end;
Var MyObject :T物件;... MyObject := T物件.Create(self);
try
.....
使用MyObject
.....
finally
FreeAndNil(MyObject);
end;
注意:编写动态控件的事件,参数的个数和类型必须相对应。
如下OnClick事件,test过程后必须有(Sender:TObject),调用时可以不用参数。其它方法也是一件。
procedure TForm1.FormCreate(Sender: TObject);
var butoon:tbutton;
begin
butoon:=tbutton.create(nil);
butoon.Parent:=self;
butoon.onclick:=test;
end;procedure TForm1.test(Sender: TObject);
begin
showmessage('Test OK!');
end;