难以解决!!!组件关联的问题???(50分)

  • 主题发起人 主题发起人 心碎了才懂
  • 开始时间 开始时间

心碎了才懂

Unregistered / Unconfirmed
GUEST, unregistred user!
[?]我写了一个控件(运行时不可见),有两个主要的属性:DataSet和Active,在DataSet属性指向的DataSet组件存在的时候Active属性才能设置为true,否则提示应先设置DataSet属性。但是问题出现了——当DataSet和Active都设置好的以后,再删除窗体上的DataSet组件,IDE报错:“access violation at address 00000000. read of address 00000000.”
而且我写的控件的DataSet属性也消失了,变成了另外的我未定义的属性(不固定是哪一个)!我的控件继承自TComponent。
怎么解决这个问题?哪位高手给个提示,我一点儿思路都没有!
 
难道真的没人会吗???????[:(]
 
procedure Notification
要重载这个,具体查资料吧
 
重载控件的Notification方法。如果是那个控件释放了,把相应的属性置成nil即可。
 
类似这样的处理
procedure TWK_CustomControl.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited;
if (Operation = opRemove) and (AComponent = FView) then //如果被删除的DATASET
FView := nil;//设置指向DATASET的私有变量为空
if (Operation = opRemove) and (AComponent = FLeftRuler) then
FLeftRuler := nil;
if (Operation = opRemove) and (AComponent = FTopRuler) then
FTopRuler := nil;
end;
 
你搜索一下source目录下的所有pas的Notification,
看看就明白了
 
没想到写一个简单的控件涉及到这么多的问题,还有一个问题是关于组件状态以及loaded方法的,已经在yeskert1的帮助下解决了!有一个感觉,越深入的了解一件事物,才能越了解它的博大精深!当匪夷所思[?]变成由衷感叹[^]的时候,那么你在化牛的路上又前进了一步!——“化牛”可参考“化蝶”
 
后退
顶部