永发信息网

为动态控件添加事件 delphi

答案:3  悬赏:30  手机版
解决时间 2021-11-13 08:24
为动态控件添加事件 delphi
最佳答案
MyButtonClick过程需要属于某个对象,才可以;即MyButtonClick需要定义在某个对象内部,且要符合Procedure (Sender:TObject) 规范;然后再赋值给MyButton1.OnClick。
例如:
================================================================
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure Button1Click2(Sender: TObject);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Button1Click2(Sender: TObject);
begin
//
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
button1.on .OnClick:= Button1Click2;
end;

end.追问就我写的那个测试程序来看,应该怎样调整,因为窗体也是动态生成的。追答你可以继承TForm,创建个TForm子类,比如 TBaseForm,然后在TBaseForm中定义一个MyButtonClick,然后:
MyForm1:=TBaseForm.Create(Application);
...
MyButton1.OnClick:=TBaseForm(MyForm1).MyButtonClick;

应该就可以了。
...
全部回答
简单测试通过,自己稍微改下

program Project1;

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,

Unit1 in 'Unit1.pas' {Form1};
type lForm = class(TForm)
public
Procedure MyButtonClick(Sender:TObject);
end;
{$R *.res}
var
MyButton1:TButton;
mForm: lForm;

Procedure lForm.MyButtonClick(Sender:TObject);
begin
ShowMessage('自定义事件');
end;

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
MyButton1:=TButton.Create(Application);
MyButton1.Parent:=Form1;
mForm:= lForm.CreateNew(nil);
MyButton1.OnClick:= mform.MyButtonClick;//
Application.Run;
end.

 事件方法必须是类实例的方法.

type
   TEventHandlers = class { 建一个虚拟类}
       procedure MyButtonClick(Sender:TObject);
   end;
 
...
var 
  EvHandler:TEventHandlers;
 
implementation
 
{方法实现}
procedure TEventHandlers.MyButtonClick(Sender:TObject); 
begin 
      ShowMessage('自定义事件');
end;
 
 
 
{使用}
MyButton1.OnClick:=EvHandler.MyButtonClick;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
身为云南本地人,出去外面好还是留在云南发展
为什么《驭兽斋》上写《兽王》后传?与《兽王
我是个外地人,最近面试的武汉巨丰融泰投资,
屈臣氏(HA楚州金地广场店)地址在什么地方,想
天才麻将少女有没有宫永咲VS宫永照是哪集
8.4+3✖️8.4+7怎么简便运算
洛宁到万荣多少公里
茉莉什么时候开???
生存还是毁灭,这是一个值得考虑的问 题;默
1+7-4=6改其中一个数()+()-()=()
吸入驱蚊水会对身体不好吗?
Iphone6s和ipone6sp在续航和拍照差距有多大?
饥荒为什么我杀不了远古材料编织魔
有关以“名人的故事”
如果国内北方和南方打起来谁最开心???
推荐资讯
我想把E盘删除了重新分配一下,结果把E盘和F
房屋坼迁赔偿问题
绿豆芽喜欢听音乐吗?
哑铃站着推举还是坐着推举哪个效果好啊!
iphone隐形监控软件
有在读教育学的学长学姐吗
生子汽车中介地址有知道的么?有点事想过去!
迷宫之魈 有歌吗
奢莲美容美体养生会馆地址好找么,我有些事要
春天牌遥控器清码了咋办?
砂纸用的磨料都有哪些?
妈妈身高157,体重65公斤,肚子上肉比较多,应该
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?