较难的问题:怎样给一个动态创建的按钮添加事件?·

baifu 2005-04-06 02:30:50
我在一个类里面有几个Button控件,在类创建的时候,这些button也创建,但不知如果给它们添加单击事件?请高手们指点指点!
...全文
198 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
herman~~ 2005-05-01
  • 打赏
  • 举报
回复
同意搂上的
pilicat 2005-04-30
  • 打赏
  • 举报
回复
用Free方法就行了!

另外,最好用img[i]的name属性来调用。
c97164 2005-04-30
  • 打赏
  • 举报
回复
我的问题通过九转三折有了点眉目,但是我的单击事件是要删除这个控件,我的代码总是报错,虽然能把控件删除。
img[i].Destroy;
总是报内存错,img[i]是一个TImage的数组. 请问会是什么原因呢?
c97164 2005-04-30
  • 打赏
  • 举报
回复
请问楼上的,我也碰到这个问题,请问你的MyClick是如何定义的啊??我就定义成过程不对。报错如下:
Incompatible types: 'TNotifyEvent' and 'procedure, untyped pointer or untyped parameter'

请楼上指教
pengxuan 2005-04-06
  • 打赏
  • 举报
回复
下面代码实现动态增加按钮,及释放动态生成的按钮及各按钮事件的实现
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
Button: TButton;
begin
for I := 0 to 8 do
begin
Button:=TButton.Create(Self);
Button.Parent:=Form1;
button.Top:=80+(i-2)*50;
Button.Left:=50;
Button.Width:=280;
Button.Height:=50;
button.Flat:=True;
Button.Caption:=Table1.FieldByName('SINGNAME').AsString;
Table1.Next;
Button.Tag := 1;//用来辨识动态建立的Button组件
Button.Visible:=True;
Button.OnClick := MyClick;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
I: Integer;
begin
for I := ComponentCount-1 downto 0 do
begin
if (Components[I] is TButton) then
begin
if (Components[I] as TButton).Tag = 1 then
begin
//(Components[I] as TButton).Free;
Components[I].Free;
end;
end;
end;
end;

procedure TForm1.MyClick(Sender: TObject);
begin
showmessage((Form1.ActiveControl as TButton).Caption);
if (Form1.ActiveControl as TButton).Caption = 第一个Button的Caption then
执行Button1的代码
if (Form1.ActiveControl as TButton).Caption = 第二个Button的Caption then
执行Button2的代码
.......
end;
梅青松 2005-04-06
  • 打赏
  • 举报
回复
这个问题至少问了几十次了,搜索一下的话到处都是
何鲁青 2005-04-06
  • 打赏
  • 举报
回复
接分...
Kshape 2005-04-06
  • 打赏
  • 举报
回复
http://search.csdn.net/Expert/topic/55/55880.xml?temp=.943432
Kshape 2005-04-06
  • 打赏
  • 举报
回复
举个例子
先写事件过程
procedure ButtonClick(Sender: TObject);
begin
end;
然后直接赋值 XXX.OnClick := ButtonClick;
gxgyj 2005-04-06
  • 打赏
  • 举报
回复
^_^
gxgyj 2005-04-06
  • 打赏
  • 举报
回复
jf
baifu 2005-04-06
  • 打赏
  • 举报
回复
我知道怎么解决了,TButton有个OnClick属性,将函数名字赋给它即可。哈哈哈哈

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧