線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1701
推到 Plurk!
推到 Facebook!

請問TWebBrowser如何刪除

尚未結案
GiGi
一般會員


發表:17
回覆:21
積分:7
註冊:2002-10-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-08 05:42:05 IP:61.59.xxx.xxx 未訂閱
可以自動產生TWebBrowser 但是刪除時 卻有錯誤訊息 用的刪除方法有 .destory .free 以上兩項方法都會產生錯誤訊息 Project tncar2.exe raised exeception class EAccessViolation with message 'Access violation at address 772A8C5E in module 'SHLWAPI.dll'. Read of address 00000018'.Process stopped. Use Step or Run to Continue. 煩請解惑
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-08 08:37:26 IP:218.16.xxx.xxx 未訂閱
通當自動 Create 的東東都是自動刪除的,手動 Create 的東東都是手動刪除的 你若手動刪除自動 Create 的東西,到它自動刪除時便會 AV (AccessViolation, 不是用來看的那種)了。
GiGi
一般會員


發表:17
回覆:21
積分:7
註冊:2002-10-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-08 10:16:16 IP:211.21.xxx.xxx 未訂閱
web.create(self); . . . . web是個自定webbrowser物件 請問我該如合刪除web呢 (對不起了 問詳細點) 謝謝了
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-08 10:45:30 IP:218.16.xxx.xxx 未訂閱
你自己Create 的你自己 Free 應沒問題 亦即是問題出再其他地方 (但到 Free 時才引發錯誤) 那你應貼由 Create 到 Free 的 Code 才能看到問題出在那裡 有可能是你 Free 了 TWebBrowser 內它自動 Free 的子物件,所以到你叫它Free而它去Free它的子物件時出錯
GiGi
一般會員


發表:17
回覆:21
積分:7
註冊:2002-10-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-08 13:31:37 IP:211.21.xxx.xxx 未訂閱
procedure TForm1.anasubdata( att1,att2,att3 : string); var subadd:string; begin web:=TWebBrowser.Create(self); web.Top:=130*(totalrun mod 5) 20; web.Left:=75*(totalrun div 5) 20; web.Width:=75; web.Height:=75; web.Align :=alNone; web.Visible:=true; TOleControl(web).Name:='gigi' inttostr(totalrun); TOleControl(web).Parent :=form1; totalrun:=totalrun 1; web.OnDocumentComplete:=WebBrowserDocumentComplete; subadd:=''; if att3='T' then subadd:='http://www.tncar.com.tw/store/post/Show_Cardata.asp?Carno=' att1 '&Storeno=' att2 else subadd:='http://www.tncar.com.tw/store/post/Show_Cardata.asp?code=' att1; web.Navigate(subadd); end; procedure TForm1.WebBrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin (sender as TWebBrowser).Free; end; 就是(sender as TWebBrowser).Free;這一行執行時出錯的 錯誤訊息就是上面的訊息 麻煩大大解惑 感激不進
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-08 14:33:56 IP:61.155.xxx.xxx 未訂閱
//修改如下:    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, OleCtrls, SHDocVw, StdCtrls;    type   TForm1 = class(TForm)     WebBrowser: TWebBrowser;     Button1: TButton;     Button2: TButton;     procedure anasubdata( att1,att2,att3 : string);     procedure WebBrowserDocumentComplete(Sender: TObject;       const pDisp: IDispatch; var URL: OleVariant);     procedure Button1Click(Sender: TObject);   private     { Private declarations }   public     { Public declarations }   end;    var   Form1: TForm1;   totalrun:integer=5;   //定义   web:TWebBrowser; implementation    {$R *.dfm}    procedure TForm1.anasubdata(att1,att2,att3 : string); var subadd:string;    begin web:=TWebBrowser.Create(self); web.Top:=130*(totalrun mod 5)+20; web.Left:=75*(totalrun div 5)+20; web.Width:=75; web.Height:=75; web.Align :=alNone; web.Visible:=true; TOleControl(web).Name:='gigi'+inttostr(totalrun); TOleControl(web).Parent :=form1; totalrun:=totalrun+1; web.OnDocumentComplete:=WebBrowserDocumentComplete; subadd:=''; if att3='T' then subadd:='http://www.tncar.com.tw/store/post/Show_Cardata.asp?Carno='+att1+'&Storeno='+att2 else subadd:='http://www.tncar.com.tw/store/post/Show_Cardata.asp?code='+att1; web.Navigate(subadd);    end;    procedure TForm1.WebBrowserDocumentComplete(Sender: TObject;   const pDisp: IDispatch; var URL: OleVariant); begin IF WEB<> NIL THEN ( web as TWebBrowser).Free; end;    procedure TForm1.Button1Click(Sender: TObject); begin anasubdata('12','13','T'); end;    end.    供参考!!!    风花雪月 e梦情缘
------
风花雪月 e梦情缘
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-08 14:54:50 IP:218.16.xxx.xxx 未訂閱
From Help file Write an OnDocumentComplete event handler to take specific action when a frame or document is fully loaded into the Web browser .For a document without frames, this event occurs once when the document finishes loading. On a document containing multiple frames, this event occurs once for each frame. When the multiple-frame document finishes loading, the Web browser fires the event one final time. 若果你的網頁是有 Frame 的 OnDocumentComplete 會被呼叫數次,頭一次你便 Free 了但程序未完繼續運作時一讀 web 便 AV 了。 可試試 : procedure TForm1.WebBrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin if TWebBrowser(sender).ReadyState = READYSTATE_COMPLETE then TWebBrowser(Sender).Free; end; 不過你這樣設定當網頁一下載完成便立即關閉,是使用者不用看的嗎 ?
GiGi
一般會員


發表:17
回覆:21
積分:7
註冊:2002-10-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-08 15:20:24 IP:211.21.xxx.xxx 未訂閱
每次回應的DocumentComplete的sender都是不同的 所以把他free了 會有錯誤嗎 以上兩位大大的範例也有相同的問題 錯誤訊息也都我第一次所post一樣 第一個物件可以刪除 但是刪除第二個就會產生錯誤了 或許樓上的大大是對的 但是依然會有錯誤耶 請大大們再幫幫我吧 感激不盡
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-08 16:06:17 IP:218.16.xxx.xxx 未訂閱
TWebBrowser 元件小弟也不是很熟,看來你是想自動到網頁上抓資料罷,可否考慮不用不繼 Create Free 而重開 WebBrowser 只改變 Link 呢? 站長大大有個抓資料的大作你可作參考 : http://delphi.ktop.com.tw/topic.php?topic_id=21505
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-08 17:36:50 IP:61.155.xxx.xxx 未訂閱
//上此POST的代码,是动态创建多个。 我试验过多次了,很好用的。 这次是就是你想要的方法:    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, OleCtrls, SHDocVw, StdCtrls, Mask, DBCtrls; type   TForm1 = class(TForm)     Button1: TButton;     procedure anasubdata( att1,att2,att3 : string);     procedure Button1Click(Sender: TObject);   private     { Private declarations }   public     { Public declarations }   end; var   Form1: TForm1;   totalrun:integer=5;   //定义   web:TWebBrowser; implementation    {$R *.dfm}    procedure TForm1.anasubdata(att1,att2,att3 : string); var subadd:string;    begin web:=TWebBrowser.Create(self); web.Top:=130*(totalrun mod 5)+20; web.Left:=75*(totalrun div 5)+20; web.Width:=75; web.Height:=75; web.Align :=alNone; web.Visible:=true; TOleControl(web).Name:='gigi'+inttostr(totalrun); TOleControl(web).Parent :=form1; totalrun:=totalrun+1; //去掉 //web.OnDocumentComplete:=WebBrowserDocumentComplete; subadd:=''; if att3='T' then subadd:=att1 else subadd:=att2; web.Navigate(subadd); end; procedure TForm1.Button1Click(Sender: TObject); begin //单击时发生 IF WEB<> NIL THEN ( web as TWebBrowser).Free; anasubdata('HTTP://WWW.YAHOO.COM','HTTP://CN.YAHOO.COM','T'); end; end. 风花雪月 e梦情缘
------
风花雪月 e梦情缘
GiGi
一般會員


發表:17
回覆:21
積分:7
註冊:2002-10-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-05-16 01:47:39 IP:211.74.xxx.xxx 未訂閱
謝謝各位先進 我的問題解決了 主要是在ondocumentcomplete裡面執行free或者destory 就會產生av錯誤了 所以只要在ondocumentcomplete外 執行就好了 謝謝諸位先進
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-04-26 13:52:42 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-05-01 13:07:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!