高手 请教:动态创建的webbrowser控件如何释放? ( 积分: 100 )

  • 主题发起人 主题发起人 sunde11
  • 开始时间 开始时间
S

sunde11

Unregistered / Unconfirmed
GUEST, unregistred user!
我在PageControl1中动态创建了newtabsheet,然后在newtabsheet里面又创建了newbrowser,这样来显示网页,代码如下:
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
.........
newtabsheet:=TTabSheet.Create(nil);
newtabsheet.PageControl:=pagecontrol1;
newbrowser:=twebbrowser.Create(nil);
newtabsheet.InsertControl(newbrowser);
.........
但是当我双击某个tab页面时,要求关闭该页面,代码如下:

procedure TForm1.PageControl1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbLeft) and (ssDouble in Shift) then
begin
pagecontrol1.ActivePage.Free;
end;
end;
程序执行时出错:Access violation at address 00000384 .Read of address 00000384
不知道问题是否出在这里:
请教:我在释放ActivePage的时候,如何释放ActivePage中动态创建的newbrowser?
 
procedure TForm1.PageControl1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
i:integer;
begin
if (Button = mbLeft) and (ssDouble in Shift) then
begin
with pagecontrol1.ActivePage do
begin
for i:=controlcount-1 downto 0 do
if control is twebbrowser then
twebbrowser(control).free;
Free;
end;
end;
end;
 
to hs-kill:加上之后提示:Underclared identifier :'Control'
改成
for i:=ComponentCount-1 downto 0 do
if Components is twebbrowser then
twebbrowser(Components).free;
之后
程序执行时还是出错:Access violation at address 00000384 .Read of address 00000384
 
哦 应该是Controls,白天在外面手边没delphi

在哪句出的内存错误?
还有,你把释放的代码写到什么事件里了?
下面是我的测试程序,没报错

procedure TForm1.Button1Click(Sender: TObject);
var
web:TWebBrowser;
ts:TTabSheet;
i:integer;
begin
for i:=0 to 3 do
begin
ts:=TTabSheet.Create(self);
ts.PageControl:=PageControl1;
web:=TWebBrowser.Create(ts);
web.Align:=alclient;
twincontrol(web).Parent:=ts;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i,j:integer;
ts:TTabSheet;
begin
for i:=PageControl1.PageCount-1 downto 0 do
begin
ts:=PageControl1.Pages;
for j:=ts.ControlCount-1 downto 0 do
if ts.Controls[j] is TWebBrowser then
TWebBrowser(ts.Controls[j]).Free;
ts.Free;
end;
end;
 
好的,我看一下,到时给分,谢谢。
 
指定Owner即可。。。
 
我操,这个世界没有天理了~~~~~ MD,老虎不发威,当我是病猫, 先骂人的倒有理了 我可是从来不主动得罪人的 谁要是欺负人,那就不客气了 明天把这个工具开个源,叫大家都来用用 请问你们有什么拿的出手的?自己写的东西? 说出来叫大爷我长长见识? 别不会是一群耍嘴皮子的废物吧?
 
我操,这个世界没有天理了~~~~~ MD,老虎不发威,当我是病猫, 先骂人的倒有理了 我可是从来不主动得罪人的 谁要是欺负人,那就不客气了 明天把这个工具开个源,叫大家都来用用 请问你们有什么拿的出手的?自己写的东西? 说出来叫大爷我长长见识? 别不会是一群耍嘴皮子的废物吧? 需要的请关注我的 blog http://hi.baidu.com/earthsearch
 
多人接受答案了。
 
后退
顶部