如何让一个可视化控件的OnClose事件去处理另一个过程,但又能同时处理用户定义的OnClose事件(100分)

  • 主题发起人 主题发起人 scloudy
  • 开始时间 开始时间
S

scloudy

Unregistered / Unconfirmed
GUEST, unregistred user!
我正在编写一个控件,该控件要修改到原来的OnClose事件,使它既能处理用户定义的OnClose事件,
又要在后台处理另一个Procedure,我该怎样去重载这个OnClick事件呢?

望各位大侠多多帮忙,小弟将感激不尽!
 
>>既能处理用户定义的OnClose事件,又要在后台处理另一个Procedure
同时?
 
需要重载这个控件吗
在ONCLOSEQUERY里干不就行了吗
 
>使它既能处理用户定义的OnClose事件,
>又要在后台处理另一个Procedure
同时吗?不是同时吧?
 
首先创建一个进程,
然后让该进程做其中之一,
另一个不用说了
 
是先后执行还是同时,如果是同时我也没办法。
 
忘了告诉各位:
我这两个事件不要求同时触发,可以有先后.
 
1. 既然你自己做的控件, 有必要用事件方式实现某项功能吗? 完全可以override产生
事件的那个方法嘛
2. 如果一定要这么做也简单, 不过有一点技巧, 用个变量保存原事件. 然后将其替换成
你的事件方法, 在你的时间方法里调用原事件就可以了. 例如
TTest = class(TPanel)
private
FOldOnClickEvent: TNotifyEvent;
protected
procedure Loaded; override;
procedure MyOnClickEvent(Sender: TObject);
public
constructor Create(AOwner: TComponent); override;
end;


procedure TTest.Create(AOwner: TComponent);
begin
inherited;
OnClick := MyOnClickEvent;
FOldOnClickEvent := nil;
end;

procedure TTest.Loaded;
begin
Inherited;
FOldClickEvent := OnClick;
OnClick := MyOnClickEvent;
end;

procedure TTest.MyOnClickEvent(Sender: TObject);
begin
if Assigned(FOldClickEvent) then
FOldClickEvent(Sender);
....... // 你的事件处理代码
end;
 
我写完才发想我写的eYes都写,为避免抄袭之嫌赶紧把贴子删了。奇怪干才怎么没看到,看来
下回一定得看清贴子,免的浪费大家的信箱:)
 
接受答案了.
 
后退
顶部