我做了一个控件,控件里动态创建了一个 FPanel;在控件的 onCreate 事件里设置
 FPanel:=TPanel.Create(nil);在控件的 onDestroy 事件里设置  if Assigned(FPanel)     then
  FreeAndNil(FPanel);结果控件所在窗体关闭的时候就报错。
原因是  FreeAndNil(FPanel); 这句话导致的。我就纳闷:
这样控制好了,系统好像不应该报错吧:  if Assigned(FPanel)     then
  FreeAndNil(FPanel);因为 如果能够确认  Assigned(FPanel) =true   
那么就必然可以执行     FreeAndNil(FPanel);难道这种写法存在危险?真不知道怎样写才安全。