...public
  Destructor Destroy;override;
...Destructor TMyComboBox.Destroy;
begin
  Items.Clear;!!!!该句会导致异常,说是MyComboBox1没有父窗口
  inherited;
end;
如何在TMyComboBox销毁时清空Items内容?

解决方案 »

  1.   

    覆盖Create方法,并在其中给自身赋一个父组件;
    constructor Create(AOwner: TComponent; AParent: TWinControl);reintroduce;
    begin
      inherited Create(AOwner);
      Self.Parent := AParent;
    end;以后这样创建TMyComboBox:
    var
      cBox: TMyComboBox;
    begin
      cBox := TMyComboBox.Create(NIL, Form1) //同事赋一个显示组件
    end;
    这样的话,在Destroy的时候可以保证实例有父窗口。
    其实,都销毁了,为什么还要清空那??
      

  2.   

    我只是举个例子.实际上是在ActiveChange事件处理的.要判断ActiveChange事件是因为数据源连接建立还是程序退出数据源销毁而触发的.如果是数据源建立连接就要Items.clear.主要是如何判断的问题