RR-*_*-NL 3 delphi event-handling datamodule
在Delphi 2009中,我有一个带有MyProcedure过程的表单,该过程写入表单上的标签.表单使用带有ClientDataSet的DataModule.当触发ClientDataSet的AfterScroll事件时,应执行MyProcedure.为了避免循环引用,更重要的是,因为我希望DataModule可以重用,所以DataModule不应该引用这个特定的Form.
简而言之,我希望我可以从我的表单访问AfterScroll事件.我可以从表单中挂接DataModule上的Afterscroll事件吗?我认为它应该是可能的,但我不记得该怎么做了.提前致谢.
您在DataModule中放置了一个事件属性:
private
FOnAfterScroll : TNotifyEvent;
public
property OnAfterScroll : TNotifyEvent read FOnAfterScroll write FOnAfterScroll;
Run Code Online (Sandbox Code Playgroud)
然后,您在DataModule中的AfterScroll过程中调用该事件:
If Assigned(FOnAfterScroll) then FOnAfterScroll(Self);
Run Code Online (Sandbox Code Playgroud)
在Form中:声明事件处理程序
procedure HandleAfterScroll(Sender : TObject);
Run Code Online (Sandbox Code Playgroud)
然后为DataModule的OnAfterScroll分配一个过程
Datamodule1.OnAfterScroll:= MyHandleAfterScroll;
另一种方法是从DataModule发送自定义Windows消息并在表单中响应该消息.