从另一个表单访问DataModule上的事件

RR-*_*-NL 3 delphi event-handling datamodule

在Delphi 2009中,我有一个带有MyProcedure过程的表单,该过程写入表单上的标签.表单使用带有ClientDataSet的DataModule.当触发ClientDataSet的AfterScroll事件时,应执行MyProcedure.为了避免循环引用,更重要的是,因为我希望DataModule可以重用,所以DataModule不应该引用这个特定的Form.

简而言之,我希望我可以从我的表单访问AfterScroll事件.我可以从表单中挂接DataModule上的Afterscroll事件吗?我认为它应该是可能的,但我不记得该怎么做了.提前致谢.

Mih*_*ela 6

您在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消息并在表单中响应该消息.