救救小弟我吧!(200分)

  • 主题发起人 主题发起人 jericho3164
  • 开始时间 开始时间
J

jericho3164

Unregistered / Unconfirmed
GUEST, unregistred user!
我在写浏览器,我为了实现屏蔽黑名单的功能,而这样做:
procedure TForm1.EmbeddedWB1WindowClosing(Sender: TObject;IsChildWindow: WordBool; var Cancel: WordBool);
begin
//if something is true then do
(TControl((Sender as TEmbeddedWB)).Parent as TTabSheet).PageControl:=nil;
end;

这样做是在判断访问的网址是黑名单中的后, 就自动释放掉那个窗口。可是这个办法在98下会出现“未指定的错误”,在2000/XP下能正常关闭窗口,WinMe没有试过。不知道有什么办法?
 
(TControl((Sender as TEmbeddedWB)).Parent as TTabSheet).PageControl
//////// //////////////// /////////

首先如此多的类型转换是否成立?
还有 parent 是否存在?
TTabSheet 是否有 PageControl
应该逐层判断!
 
怎么判断呢?您能否举个例子!
 
i: integer;

i:=(TControl((Sender as TEmbeddedWB)).Parent as TTabSheet).TabIndex;
PageControl1.Pages.Destroy;
 
[:)][:)][:D][:D]
{动态创见的对象没有释放,内存出现泻漏!}

加一条CLOSE FORM 前加一条 FREE 就可以搞定!

 
To luckywzy能否详细点?
 
你在98下,关闭程序后出现错误提示,提示信息是不是必须重新启动,才能消除?
我不知道你在程序中,动态创建了什么对象,你在下面事件中加一句 "动态对象.FREE"


procedure TForm1.EmbeddedWB1WindowClosing(Sender: TObject;IsChildWindow: WordBool; var Cancel: WordBool);
begin
//if something is true then do
(TControl((Sender as TEmbeddedWB)).Parent as TTabSheet).PageControl:=nil;
动态对象.FREE;

end;
 
To luckywzy,程序不会因为错误而重新启动!
 
我的意思是,98要重新启动,错误提示才会消失
 
TControl((Sender as TEmbeddedWB)).Parent as TTabSheet).PageControl.free;
TControl((Sender as TEmbeddedWB)).Parent as TTabSheet).PageControl:=nil;
 
To 卡色 Free方法不行,出的错比nil还要多!
To luckywzy,系统无须重启,只是有一个错误对话框,点击可消失!
 
多人接受答案了。
 
后退
顶部