文章通过动态创建Panel控件为例,说明如何在Delphi下动态创建控件,并绑定事件。
下面是具体代码
//动态创建控件,并绑定事件
procedure TfAddSaleDetail.attachSpeedButton(speedButtonCaption:string;left,top:integer);
var
SpeedButtonTemp:TPanel ;
begin
//以Panel 模拟按钮
SpeedButtonTemp:=TPanel.Create(nil) ;//此处重要
//设置控件的显示位置以及长度和宽度,此处必须
SpeedButtonTemp.Top :=top;
SpeedButtonTemp.left:=left;
SpeedButtonTemp.Width:=ButtonWidth;
SpeedButtonTemp.Height:=ButtonHeight;
SpeedButtonTemp.BevelInner:=bvSpace;
SpeedButtonTemp.BevelOuter:=bvRaised;
SpeedButtonTemp.Color := clInfoBk;
SpeedButtonTemp.font.Color:=clBlack;
SpeedButtonTemp.Font.Size :=13;
SpeedButtonTemp.Caption :=speedButtonCaption ;
SpeedButtonTemp.PopupMenu :=self.PopupMenu1;
SpeedButtonTemp.Name:=SpeedButton+speedButtonCaption;
SpeedButtonTemp.Parent:=ScrollBox1;//设置动态控件的容器
SpeedButtonTemp.onclick :=myclick; //添加控件onclick事件
SpeedButtonTemp.OnDblClick:=SpeedButtonDblClick; //添加控件OnDblClick事件
end;
//自定义myClick事件方法,并说明 sender 用法
procedure TfAddSaleDetail.myClick(Sender:TObject);
begin
//showmessage(ok);
with Sender as TPanel do
begin
color:=clTeal;
font.Color:=clWhite;
Font.Style:=[fsbold];
end;
end;