J
june_8824086
Unregistered / Unconfirmed
GUEST, unregistred user!
跪求3年解不开的难题:某非空事件,动态增加动作后实现新旧2个动作 (如Button的onClick为显示’OK‘, 动态加入显示’Bye‘字串,点击button即显示’ok‘也显示’Bye‘)。(300)<br />困扰了几年的一个问题。 某一事件已指定动作, 运行时需要此事件再多做1个动作。但此时是动态指定。即对该事件重新定义。要求既执行本身已有的动作,又执行新指定的动作正常形式: 某窗体有N个Button。每个Button各司其职。我想在每个Button点击时改变状态为disenable,以标识此Button已经执行过。(假如有此业务) 可能的代码 for I := to Componets.count - 1 do if Components is TButton then if not assgined(TButton(Components).onClick) then TButton(Components).onClick := 某定义Click else TButton(Components).onClick := (本身Click + 某定义Click)// 实现方法??? 最简形式:主窗体上只有一个Button, onClick事件默认执行showmessage('ok');,想动态设定该Button在点击时除了执行原有功能即显示"OK"外,再显示”Bye"。(显示顺序无要求) 简单代码,加强表述:unit Unit1;interfaceuses Forms, Dialogs, Controls, Classes, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); public procedure btnClick(Sender: TObject); end;var Form1: TForm1;implementationprocedure TForm1.btnClick(Sender: TObject);begin ShowMessage('Bye');end;procedure TForm1.Button1Click(Sender: TObject);begin ShowMessage('OK');end;procedure TForm1.FormCreate(Sender: TObject);begin// 期望集成前后两个功能// Button1.OnClick := Button1.OnClick + btnClick; // Button1.OnClick := ? // 求实现方法end;end.