关于控件开发后,Delphi IDE 在删除该控件所引用的其他控件时,出错问题。 ( 积分: 100 )

  • 主题发起人 主题发起人 海上的飘风
  • 开始时间 开始时间

海上的飘风

Unregistered / Unconfirmed
GUEST, unregistred user!
在Delphi7中开发控件,代码类似如下:
TMyControl = Class(TComponent)
private
FDataSet : TDataSet;
published
Property DataSet : TDataSet read FDataSet write FDataSet;
end;

安装该控件后,在Delphi7中使用该控件MyControl1,
增加一个DataSet控件如TQuery控件Query1
将MyControl1的DataSet属性设置为Query1
这时如果先删除Query1则Delphi7 IDE会报错。

请问在控件中如何写代码才可以解决该问题。
 
不知道我把问题说清楚了没有。
请各位高手大虾指教。
 
怎么没有人回答呢?
 
参见TCustomLabel.SetFocusControl方法
procedure TCustomLabel.SetFocusControl(Value: TWinControl);
begin
FFocusControl := Value;
if Value <> nil then Value.FreeNotification(Self);
end;

TComponent.FreeNotification方法将两个组件联系起来了,在TComponent.Destroy里,Component会通知FFreeNotifies这个列表里的所有组件:我被释放了!
 
ysai :
你的回答是正确的,不过控件要重写(Override)Notification方法。
问题结束,不过有个遗憾,如果写的是一个普通的类,例如从TCollectionItem继承的
就没有办法。
 
接受答案了.
 
后退
顶部