Delphi制作数据感知控件之浮想联翩(3)

2008-04-09 04:28:02来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

实现了上述代码,这样数据才真正的与控件关联起来,要个性化处理数据就要添加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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:把图标存储在SHELL32.DLL

下一篇:动态数组介绍----Delphi