其pas文件如下:
unit Observer;interfaceuses
  Windows, Messages, SysUtils, Classes, Controls,ComCtrls;type
  TObserver = class(TWinControl)
  private
    { Private declarations }
    FTreeView : TTreeView;
    FOnChange:TNotifyEvent;
    FEnabled:Boolean;
    procedure SetItem(const Value: string);
    function GetItem: string;
  protected
    { Protected declarations }
    procedure Change;
  public
    { Public declarations }
    constructor Create(AOwner:TComponent);override;
    destructor Destroy();override;
  published
    { Published declarations }
    property OnChange:TNotifyEvent read FOnChange write FOnChange;
    property Enable:Boolean read FEnabled write FEnabled default True;
    property TreeViewItem:string read GetItem write SetItem;
  end;procedure Register;implementationprocedure Register;
begin
  RegisterComponents('DDG', [TObserver]);
end;{ TObserver }procedure TObserver.Change;
begin
  if Assigned(FOnChange) then
    FOnChange(self);
end;constructor TObserver.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Align := alClient;
  Enable:=True;
  Visible := True;  //if csDesigning in ComponentState then
  //begin
    FTreeView := TTreeView.Create(AOwner);
    FTreeView.Parent := self;    FTreeView.Align := alClient;
    FTreeView.Enabled :=True;
    FTreeView.Visible := True;
  //end;end;destructor TObserver.Destroy;
begin
  FTreeView.Free;
  inherited Destroy;
end;function TObserver.GetItem: string;
begin
  result :='';
end;procedure TObserver.SetItem(const Value: string);
begin
  FTreeView.Items.Add(nil,Value);
end;end.可是在使用是出现了奇怪的问题:
就是把该组件添加到程序后,每次在对窗体进行View as Form和View as Text切换后,总回产生一个新的TreeView对象,请各位指教。