怎么在我写的组件里监听其他组件的事件? ( 积分: 100 )

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

shansheng

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么在我写的组件里监听其他组件的事件?
如:
TMapNavigation = class(TComponent)
private
FCurrentMainMapZoom: Double;
FMainMap: TMap;
FNavigationMap: TMap;
published
property MainMap: TMap read FMainMap write SetMainMap;

用户设置了MainMap后,我想组件在MainMap发生了chang事件后,组件能知道。
使用了一下代码后可以知道,但是他自身的onchang事件就不执行了。
MainMap.OnMapViewChanged := MainMapViewChanged;
怎么能使他本身的Onchang时间能执行,并且在他执行onchang事件时,组件的MainMapViewChanged函数也能执行。
 
怎么在我写的组件里监听其他组件的事件?
如:
TMapNavigation = class(TComponent)
private
FCurrentMainMapZoom: Double;
FMainMap: TMap;
FNavigationMap: TMap;
published
property MainMap: TMap read FMainMap write SetMainMap;

用户设置了MainMap后,我想组件在MainMap发生了chang事件后,组件能知道。
使用了一下代码后可以知道,但是他自身的onchang事件就不执行了。
MainMap.OnMapViewChanged := MainMapViewChanged;
怎么能使他本身的Onchang时间能执行,并且在他执行onchang事件时,组件的MainMapViewChanged函数也能执行。
 
MainMap.OnMapViewChanged := MainMapViewChanged;
==============
先把MainMap的OnMapViewChanged 事件句柄保存起来,再赋值。

在你定制的OnMapViewChanged事件中,先调用你自己的代码,再调用那个保存起来的事件句柄。
 
你的意思我看懂了,只是不知道具体怎么写代码,能麻烦给写几句具体的吗
是不是象这样:
FOldMapViewChanged := MainMap.OnMapViewChanged;
MainMap.OnMapViewChanged := MainMapViewChanged;

MainMapViewChanged的实现最后加一句
if Assigned(FOldMapViewChanged) then FOldMapViewChanged

如果是那么FOldMapViewChanged 是变量吗,该怎么定义呢
 
FOldMapViewChanged:Tnotifyevent;
 
好啊,迷糊,就这样就分了我50分走。。。。/dao
 
后退
顶部