假设你的组件属性是A
在SetA(Value:Txxx)过程中这样写:
begin
if FA<>Value then
begin
FA:=Value;
if Assigned(Value) then
Value.FreeNotification(Self);
end;
end;
也就是说Value本身在释放时应该通知你的组件
你的组件收到消息后这样写:
procedure TMyComponent.Notification(AComponent:TComponent;Operation:TOperation);
begin
inherited Notification(AComponent,Operation);
if (Operation=opRemove) then
begin
if AComponent=FA then
SetA(Nil);
end;
end;
即如果释放的是属性A对应的组件,则把A设置为Nil