2011-05-21 89 views
3

我有一个ADOStoredProc在我的表单上。它不是可视化的,而是代码中的。通常,如果组件是可视化的,则处理事件非常容易。只需双击所需事件即可。但是,我怎么跟code.I've做声明的过程:德尔福组件分配事件

procedure SP_SearchAfterScroll(DataSet:TDataSet) 

现在该如何分配SP_Search(这是ADOStoredProc)AfterScroll事件处理属性来我上面写的程序。我相信你会回答它。所以先谢谢了。

回答

11

当SP_Search是TAdoStoredProc并具有通过OnAfterScroll属性,所有你需要做的是:

SP_Search.OnAfterScroll := SP_SearchAfterScroll; 

我假设你使用SP_SearchAfterScroll正确的签名。也就是说,该OnAfterScroll酒店有型的样子:

TScrollEvent = procedure(DataSet: TDataSet) of object; 

如果OnAfterScroll酒店,从这个不同的类型,你需要确保你的SP_SearchAfterScroll过程中该类型的参数相匹配。

编辑

在评论Mikayil问

SP_Search.AfterScroll := SP_SearchAfterScroll(SPSearch)'的 编译器抱怨说不相容 类型TNotifyEvent和程序。但是当我写SP_Search.AfterScroll := SP_SearchAfterScroll的时候 有效。什么是 的区别?

我没有得到一轮回答这个并在平均时间米奇解释非常好,所以(容易)备查我,包括他的解释在这里:

SP_Search.AfterScroll :=该代码 分配函数来处理该事件 火灾时 - 你是不是在 “指定时间”作出 调用SP_SearchAfterScroll只是分配一个值 一个变量,让你不及格 parame之三。调用 时需要参数 - 当事件触发,然后 调用者将为参数指定 正确的值。当你通过参数 时,编译器会假定你是 调用函数,而不是分配 它,所以你得到不兼容类型 错误。当你简单地分配没有参数的 函数时, 编译器理解你正在分配, 不调用函数。

+0

谢谢Marjan,那是我的工作。但我想知道一件事。当我编写SP_Search.AfterScroll:= SP_SearchAfterScroll(SPSearch)时,编译器会抱怨说不兼容的类型TNotifyEvent和过程。但是,当我写SP_Search.AfterScroll:= SP_SearchAfterScroll它的作品。有什么不同? – 2011-05-21 06:41:12

+1

SP_Search在内部调用事件时传递数据集 – 2011-05-21 06:50:11

+0

好的,谢谢Chris。 – 2011-05-21 06:54:21