在PageControl中,动态创建了tablesheet,同时在tablesheet上动态创建了Webbrowser,完成工作后双击关闭tablesheet。但此时动态创建的Webbrowser好像并没有同时被释放,从任务管理器中看占用的资源并没有释放。请问该如何写才能释放掉?或者说,能不能在关闭tablesheet的时候,同时释放掉上面的Webbrowser?创建代码如下:procedure Tfrm_main.NewWeb(url,id:string);
begin
try
  s:=TTabsheet.Create(self);
  s.PageControl:=Pagecontrol1;
  s.Caption:='第 '+id+' 个';
  p:=TPanel.Create(self);
  p.Parent:=Pagecontrol1.Pages[s.PageIndex];
  p.Align:=alclient;
  w:=TWebbrowser.Create(self);
  try
  w.OnStatusTextChange:= mywebshow;
  Twincontrol(w).Parent:=self.PageControl1.Pages[s.PageIndex];
  Twincontrol(w).Align:=alclient;
  w.Navigate(url);
  finally
   // s.Free;
   // p.Free;
   // w.free;
   //如果直接在这里释放w,则这个procedure工作就不正常
  end;
exceptend;
end;双击关闭的代码:procedure Tfrm_main.PageControl1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Assigned(TPageControl(Sender).ActivePage) and (ssDouble in Shift) and (Button=mbLeft) then
  TPageControl(Sender).ActivePage.Free;
end;

解决方案 »

  1.   

    你怎么知道没有释放1.释放需要有一定的过程,不一定立刻就能看到效果
    2.你可以循环tablesheet上的component,然后free
      

  2.   

    你有設定webbrowser的parent為相關的page,此page釋放,webbrowser也應該會被釋放才對。看到的未必是真的。另外,既然你設定了parent為page,為何create時指定為窗體呢?
    最好指定為page:w:=TWebbrowser.Create(PageControl1.Pages[s.PageIndex]);