Delphi制作数据感知控件之浮想联翩(3)
2008-04-09 04:28:02来源:互联网 阅读 ()
实现了上述代码,这样数据才真正的与控件关联起来,要个性化处理数据就要添加DataChange过程的代码了。
那么Value.FreeNotification(Self)代码是什么意思呢?请大家想一想:我们的组件需要和DataSource控件和DataSet控件相组合才能实现数据库数据的读写,那么当我们删除其中一个时,如果其他两个控件不知道,那么是不是会出现异常呢?答案是肯定的。
那么我们怎样才能做到通知其他组件呢?Yes, Value.FreeNotification(Self)就是做这个工作的!FreeNotification(self)将会把我们的组件置入其通知对象列表中,被撤消时,它会依次调用通知对象列表中所有对象的Notification方法,我们只需要在组件中重载它就行:
protected
{ Protected declarations }
procedure Notification(AComponent: TComponent;Operation: TOperation);override;
代码实现如下:
procedure TMyDataBaseEdit.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) and (FDataLink <> nil) and
(AComponent = DataSource) then DataSource := nil;
end;
这样,当关联的参考控件被删除时,控件就会得到消息,来处理事件,防止异常的发生,否则将会导致Delphi开发环境的不稳定甚至死机,切记!
同时,不要忘了重载Destroy函数:
destructor TMyDataBaseEdit.Destroy;
begin
inherited;
FDataLink.Free;
FDataLink := nil;
end;
确保使用完之后销毁
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:动态数组介绍----Delphi
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
