PageControl 和PageControl1 創建動態頁面
可是關閉就出現問題
只要釋放當前頁面多次就會出錯 求高手指導啊
uj5u.com熱心網友回復:
if PageControl1.ActivePage.Caption <>'首頁' thenPageControl1.ActivePage.Free;
判斷創建頁標題 當標題不等于首頁就釋放創建頁
但是多次點擊頁面 就會出錯 有高手解決沒
uj5u.com熱心網友回復:
if PageControl1.ActivePage.Caption <>'首頁' thenPageControl1.ActivePage.Free;
以上代碼在哪里寫的?另外,TabSheet釋放的時候,是否還有其他什么代碼?
uj5u.com熱心網友回復:
能加QQ嘛 我說不好 要不所有代碼都復制上來uj5u.com熱心網友回復:
PageControl1釋放后Webbrowser動態創建的無法真真正關閉uj5u.com熱心網友回復:
你把這塊相關的代碼抽取出來,發到郵箱:[email protected],我抽空幫你看下。
uj5u.com熱心網友回復:
好人啊!
uj5u.com熱心網友回復:
已經給大神全部發過去了Webbrowser 動態的是不是沒辦法關閉啊 關閉了還有聲音uj5u.com熱心網友回復:
一、定義一個頁面的型別type
TTabSheetEx = class(TTabSheet)
private
EWB: TEmbeddedWB; // TEmbeddedWB
CanBack: Boolean; // Back 鍵 是否可用
CanForward: Boolean; // Forward鍵 是否可用
CanStop: Boolean; // Stop 鍵 是否可用
end;
二、動態創建一個頁面
procedure TMainForm.AddSheetEx(URLStr,sName:String;K:integer); // k=1 加入 OnDownloadComplete事件
var TabSheetEx: TTabSheetEx;
begin
Try
iFlag := iFlag+1;
SetLength(TabSheetExList, iFlag+1);
TabSheetEx := TTabSheetEx.Create(PageControl1);
TabSheetExList[iFlag]:=TabSheetEx;
PageControl1.ActivePage := TabSheetEx;
with TabSheetEx do
begin
PageControl := PageControl1;
Tag:=iFlag;
Caption := sName;
EWB := TEmbeddedWB.Create(TabSheetEx);
TOleControl(TabSheetEx.EWB).Parent := TabSheetEx;
with EWB do
begin
Tag:=iFlag;
LoadSettings;
Align := alClient;
Visible := True;
OnStatusTextChange := StatusTextChangeEvent;
OnNewWindow2 := NewWindow2Event;
OnNewWindow3 := NewWindow3Event;
OnDownloadComplete := DownloadCompleteEvent;
OnCommandStateChange := CommandStateChangeEvent;
if k=1 then
OnDocumentComplete:=EmbeddedWB1DocumentComplete;
Go(URLStr);
end;
Show;
TabSheetEx.EWB.SetFocus;
end;
except
end;
end;
三、創建頁面
procedure TMainForm.LinksClick(Sender: TObject);
var sName:string;
begin
if (Sender as TToolButton).Hint = '' then Exit;
IEAddress1.Text := (Sender as TToolButton).Hint;
sName:= (Sender as TToolButton).Caption;
AddSheetEx(IEAddress1.Text,sName,0);
end;
四、洗掉(釋放頁面)
procedure TMainForm.StopClick(Sender: TObject);
var Tab:TTabSheetEx;
Web:TEmbeddedWB;
i: Integer;
begin
if PageControl1.ComponentCount<2 then Exit;
Try
Tab :=(PageControl1.ActivePage as TTabSheetEx);
TabSheetExList[Tab.Tag]:=nil;
Tab.Free;
PageControl1.ActivePage:=PageControl1.Pages[PageControl1.ComponentCount-1];
except
end;
end;
最后說明:
1、上述代碼自己的瀏覽器中使用,可動態創建,可指定洗掉頁面。
2、由于使用WebServer, 這是微軟的特點,即使釋放網頁,但網頁占用的記憶體并不釋放,所以多次打開頁面后戰勝記憶體很大。
3、如果要釋放記憶體,可以通過關閉本程式(執行緒),再重新打開本程式(指定網頁)。
uj5u.com熱心網友回復:
lyhoo163 大俠可以幫我遠程看看嘛 我可以充值購買積分多送你uj5u.com熱心網友回復:

樓主啊,你代碼寫得實在是亂啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86091.html
標籤:網絡通信/分布式開發
