如何给控件添加事件?(50分)

  • 主题发起人 主题发起人 icet
  • 开始时间 开始时间
I

icet

Unregistered / Unconfirmed
GUEST, unregistred user!
对不起,这个问题好象比较弱智.但事实我就是不会.
比如说某个控件没有click事件,我却要用到这么一个事件,
怎么办?(最好具体一点,谢谢.).
 
可以拦截鼠标点击的消息,然后在消息处理中触发个事件
 
万一我的不是click事件,而是其它的事件呢?
 
TExample = class
private
FMyEvent : TNotifyEvent;
publisched
property OnMyEvent : TNotifyEvent read FMyEvent write FMyEvent;
//这里是为了让用户在对象观察器中添加事件
然后在你需要进行处理的时候,按如下处理:
if Assigned(FMyEvent) then FMyEvent(self,...)

如果在某一消息出现时,要对用户的事件做出反应,可以先自己拦截消息,然后在
消息处理中加入如上语句。
如果要在某一过程中,响应用户的事件,也可以按这样处理。
while ... do begin
// process
if Assigned(FMyEvent) then FMyEvent(self,...)
end;
 
看一下TControl的WMLButtonUp(私有)就知道别人是怎么做的了。good luck
 
1、选择适当的父类派生子类,将父类中Protected的事件属性在子类中Published出来。
对于一般通用的事件如OnClick,OnDbClick等可以这样做。
2、如zcy所说的,先定义你的事件过程类型(如TNodifyEvent,实际上是指向事件过程的
指针),在类中声明一个该类型的字段,声明一个直接访问该字段的事件属性,然后
就是在适当的时机触发该事件(调用该事件过程)。自定义或父类中没有的事件都可
以这么添加。
 
多人接受答案了。
 
后退
顶部