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

总之,我希望我可以从我的 Form 访问 AfterScroll 事件。我可以从我的表单连接 DataModule 上的 Afterscroll 事件吗?我认为这应该是可能的,但我不记得该怎么做。提前致谢。

最佳答案

您在 DataModule 中放置了一个事件属性:

private
FOnAfterScroll : TNotifyEvent;
public
property OnAfterScroll   : TNotifyEvent read FOnAfterScroll write FOnAfterScroll;

然后在 DataModule 的 AfterScroll 过程中调用该事件:
If Assigned(FOnAfterScroll) then FOnAfterScroll(Self);

通知:
声明事件处理程序
procedure HandleAfterScroll(Sender : TObject);

然后你为 DataModule 的 OnAfterScroll 分配一个过程



另一种方法是从 DataModule 发送自定义 Windows 消息并在表单中响应该消息。

关于delphi - 从另一个表单访问 DataModule 上的事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/906853/

10-11 18:26