代码看不明白。大虾帮忙。

莫鸣 2009-12-26 10:06:33
我看有一句的代码声明着:

public
oldnewrecord: TDataSetNotifyEvent ;
.....

procedure Donewrecord(dataset:Tdataset);
var
i :integer;
begin
if (oldnewrecord) then oldnewrecord(dataset);
.....
end;


那在db单元里面:
type TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;这个 TDataSetNotifyEvent 是什么类型,做什么用的呢?大虾分析分析。多谢
...全文
122 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
莫鸣 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 harryfin 的回复:]
这种类型叫做对象指针类型

这个类型,VCL中主要用来作为数据集控件中的通知事件用。
[/Quote]
为数据集控件中的通知事件用,这个在哪里?
sanguomi 2009-12-26
  • 打赏
  • 举报
回复
方法指针作为类的数据域类型
haitao 2009-12-26
  • 打赏
  • 举报
回复
Donewrecord是一个自定义的处理新记录的事件
它的执行过程:先找有没有原来的 新记录的事件,有则先执行原来的 新记录的事件
Harryfin 2009-12-26
  • 打赏
  • 举报
回复
不好意思,“对象指针”改为“方法指针”
Harryfin 2009-12-26
  • 打赏
  • 举报
回复
这种类型叫做对象指针类型

这个类型,VCL中主要用来作为数据集控件中的通知事件用。
chhrsas 2009-12-26
  • 打赏
  • 举报
回复
在 db 单元定义这么一个事件的结构,
type TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;
同时定义一个 TDataSetNotifyEvent 类型的属性
如 property DataSetNotifyEvent : TDataSetNotifyEvent read FDataSetNotifyEvent write SetDataSetNotifyEvent;
在引用db的单元中,注册上这个事件,这样,在db 中 执行 if (oldnewrecord) then oldnewrecord(dataset);
时,就相当 在 引用 db 的单元中 执行相关过程。
chhrsas 2009-12-26
  • 打赏
  • 举报
回复
自定义的结构。
看这样子,应该是写了个事件。
莫鸣 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 harryfin 的回复:]
to #7

DataSet不是有一堆BeforePost、AfterPost之类的事件么,它们的类型就是TDataSetNotifyEvent
[/Quote]

哦,多谢,我再看看了。
Harryfin 2009-12-26
  • 打赏
  • 举报
回复
to #7

DataSet不是有一堆BeforePost、AfterPost之类的事件么,它们的类型就是TDataSetNotifyEvent
qkhhxkj102 2009-12-26
  • 打赏
  • 举报
回复
不好意思打错字了

以前看到过,就像C里的函数指针吧
qkhhxkj102 2009-12-26
  • 打赏
  • 举报
回复
以后看到过,就像C里的函数指针吧

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧