设以下两个组件:TA=class(TComponent)
...end;TB=class(TComponent)
private
FB:TA;
published
property A:TA read FA write FA;
end;将这两个组件放到Form1上后为A1,B1将B1.A在Inspector中设为B1.A=A1,这时将A1从Form1从删除,再点击B1则出现错误!这是因为B1.A=A1,而A1被删除了,B1.A就指向一个nil指针!怎么解决这个问题?
...end;TB=class(TComponent)
private
FB:TA;
published
property A:TA read FA write FA;
end;将这两个组件放到Form1上后为A1,B1将B1.A在Inspector中设为B1.A=A1,这时将A1从Form1从删除,再点击B1则出现错误!这是因为B1.A=A1,而A1被删除了,B1.A就指向一个nil指针!怎么解决这个问题?
解决方案 »
- 求助,时间段查询的问题!!
- 如果指定画图程序打开一个tif类型的文件?
- 请问,拖拉文件问题
- 网页源文件里面用了iframe,但是iframe里面嵌套的页的代码没有包含在webbrowser的document里面,如何获取?iframe的嵌套也是用xml写出来的,
- 将*.exe转换为*.jpg
- 如何让DBGRID的其中一列为只读(注意,不是记录集的字段只读)
- 用过RAVE的朋友请来座座
- 急!怎样实现按下按钮后打开保存文件路径设置的对话框?
- 如何实现通过点击treeview中不同节点显示不同的程序界面?
- 如何准确计算两个datetimepicker相差的时间
- 直接写 insert into 语句的值中有' 怎么 插入oracle 表
- 如何读取特定字符串所在的行?
下面就简单了,在TB.OnTABeforeDestory中加入一行:A:=nil;搞定!这样做就可将B1中引用了A1的属性B1.A在A1被删除前得到一个通知,收到该通知后就将B1.A设为nil,Delphi的Inspector就不会找到一个指错了地方的B1.A了!靠!就没有更简单的方法吗?能不能自动完成这个功能?大家想办法呀!有100分呀!要不我自个儿得了!
private
FB:TA;
protected
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
published
property A:TA read FA write FA;
end;procedure TB.Notification(AComponent: TComponent; Operation: TOperation);
begin
if (Operation = opRemove) and (AComponent = A) then
A := nil;
end;