我在FormCreate中创建了10个按钮,然后我想让每个按钮可以有各自的OnClick事件,最好是在一个事件代码中做到可以处理所有按钮的OnClick事件(注:按钮是动态产生的,但有多少事件要处理是预先定好的,只不过没有这个按钮的话,预定的事件就不会发生)-我的设想是通过判断CardBtn的Caption属性处理。procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
cardBtn: Array of TButton;
begin
SetLength(cardBtn,10);
For I:=Low(cardBtn) to High(cardBtn) do
begin
cardBtn[I]:=TSeSkinButton.Create(self);
cardBtn[I].Parent:=Form1; cardBtn[I].Left:=12+I*91;
cardBtn[I].Top:=0;
cardBtn[I].width:=91;
cardBtn[I].height:=26; //真正的Caption是从一个配置文件中读取出来的
cardBtn[I].caption:='卡片'+IntToStr(I);
end;
end;
解决方案 »
- 请问在delphi中用idhttp如何实现自动登录并解析返回的html
- 我在TEdit控件的onkeypress中写按下enter键响应,怎么没反应呢?请高手指点
- 请问怎样两个窗体用一个adoquery?
- 如何得到当前的目录~~~
- IdFTPServer在有客户连接的情况下,如何中断服务关闭服务器?
- 请教程序启动慢的问题!
- 怎样让dbgrid里的某一列下拉显示指定数据,每一行对应的下拉内容都不同哦??????
- 小小(ihihonline)的个人网站的网址市多少,请告诉我
- 关于ThemeEnginer的问题,请教各位了:)
- 输入拼音首字母得到汉字
- 点击其他控件时,怎么去掉StringGird上选中格蓝色
- 请问如何调用事件
procedure TForm1.DispatchClick(Sender: TObject);
begin
if TButton(Sender).Caption = 'button1' then ShowMessage('button1')
else if TButton(Sender).Caption = 'button2' then ShowMessage('button2');
end;
在formcreate时指定事件,形如
procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
cardBtn: Array of TButton;
begin
SetLength(cardBtn,10);
For I:=Low(cardBtn) to High(cardBtn) do
begin
cardBtn[I]:=TButton.Create(self);
cardBtn[I].Parent:=Form1; cardBtn[I].Left:=12+I*91;
cardBtn[I].Top:=0;
cardBtn[I].width:=91;
cardBtn[I].height:=26; //真正的Caption是从一个配置文件中读取出来的
cardBtn[I].caption:= 'button'+IntToStr(I);
//加这条语句,指派响应onclick的事件
cardBtn[I].OnClick := form1.DispatchClick;
end;
end;
判断是哪个控件可用Sender
if (Sender as TSeSkinButton).Caption=xxx then
如:
if sender is Tbutton then
case TControl(sender).Tag of
1:
2:
3:
4:
................
end;
或者通过按钮NAME最后的的数字位为依据也可