tsaikunhua
一般會員
發表:5 回覆:3 積分:1 註冊:2003-05-22
發送簡訊給我
|
void __fastcall TForm1::CppWebBrowser1BeforeNavigate2(TObject *Sender,
LPDISPATCH pDisp, TVariant *URL, TVariant *Flags,
TVariant *TargetFrameName, TVariant *PostData, TVariant
*Headers,TOLEBOOL *Cancel)
{
((TTabSheet*)(dynamic_cast (Sender)->Parent))
->Caption = VarToStr(URL);
}
void __fastcall TForm1::CppWebBrowser1DocumentComplete(TObject
*Sender, LPDISPATCH pDisp, TVariant *URL)
{
Variant Doc = CppWebBrowser1->Document;
Variant title = Doc.OlePropertyGet("title"); ((TTabSheet*)(dynamic_cast(Sender)->Parent))
->Caption = String(title);
dynamic_cast(Sender)->LocationName;
}
void __fastcall TForm1::CppWebBrowser1NewWindow2(TObject *Sender,
LPDISPATCH *ppDisp, TOLEBOOL *Cancel)
{
TTabSheet *newtab = new TTabSheet(PageControl4);
TCppWebBrowser *newweb = new TCppWebBrowser(newtab); newtab->PageControl = PageControl4;
newtab->Caption = "PageControl1";
newweb->ParentWindow = newtab->Handle;
dynamic_cast(newweb)->Parent = newtab ;
newweb->Align = alClient;
newweb->OnNewWindow2 = CppWebBrowser1->OnNewWindow2 ;
newweb->OnBeforeNavigate2 = CppWebBrowser1->OnBeforeNavigate2;
newweb->OnDocumentComplete = CppWebBrowser1->OnDocumentComplete;
*ppDisp = newweb->DefaultDispatch; } 請問各位阿...我寫一個類似KKman的應用程式,一開始我已經預設Form裡面會有
一Pagecontrol且有一Page,page中有一CppWebBrowser(程式碼如上述),接下來
執行時,如果有新視窗跳出,則會新增一page並也新增一CppWebBrowser...
但是我再執行程式時,假設已經新增一個新的Page及Browser,如果我關掉一開始
的CppWebBrowser1,則我在對新增的Browser做控制時便會發生錯誤情形,不曉得
為什麼會如此呢...這種情況可以解決嗎??
if ((PageControl4->PageCount) > 1)
{
delete PageControl4->Pages[PageControl4->ActivePageIndex];
}
這是關掉某各Page的程式碼
|
RaynorPao
版主
發表:139 回覆:3622 積分:7025 註冊:2002-08-12
發送簡訊給我
|
引言:
void __fastcall TForm1::CppWebBrowser1BeforeNavigate2(TObject *Sender,
LPDISPATCH pDisp, TVariant *URL, TVariant *Flags,
TVariant *TargetFrameName, TVariant *PostData, TVariant
*Headers,TOLEBOOL *Cancel)
{
((TTabSheet*)(dynamic_cast (Sender)->Parent))
->Caption = VarToStr(URL);
}
void __fastcall TForm1::CppWebBrowser1DocumentComplete(TObject
*Sender, LPDISPATCH pDisp, TVariant *URL)
{
Variant Doc = CppWebBrowser1->Document;
Variant title = Doc.OlePropertyGet("title"); ((TTabSheet*)(dynamic_cast(Sender)->Parent))
->Caption = String(title);
dynamic_cast(Sender)->LocationName;
}
void __fastcall TForm1::CppWebBrowser1NewWindow2(TObject *Sender,
LPDISPATCH *ppDisp, TOLEBOOL *Cancel)
{
TTabSheet *newtab = new TTabSheet(PageControl4);
TCppWebBrowser *newweb = new TCppWebBrowser(newtab); newtab->PageControl = PageControl4;
newtab->Caption = "PageControl1";
newweb->ParentWindow = newtab->Handle;
dynamic_cast(newweb)->Parent = newtab ;
newweb->Align = alClient;
newweb->OnNewWindow2 = CppWebBrowser1->OnNewWindow2 ;
newweb->OnBeforeNavigate2 = CppWebBrowser1->OnBeforeNavigate2;
newweb->OnDocumentComplete = CppWebBrowser1->OnDocumentComplete;
*ppDisp = newweb->DefaultDispatch; } 請問各位阿...我寫一個類似KKman的應用程式,一開始我已經預設Form裡面會有
一Pagecontrol且有一Page,page中有一CppWebBrowser(程式碼如上述),接下來
執行時,如果有新視窗跳出,則會新增一page並也新增一CppWebBrowser...
但是我再執行程式時,假設已經新增一個新的Page及Browser,如果我關掉一開始
的CppWebBrowser1,則我在對新增的Browser做控制時便會發生錯誤情形,不曉得
為什麼會如此呢...這種情況可以解決嗎??
if ((PageControl4->PageCount) > 1)
{
delete PageControl4->Pages[PageControl4->ActivePageIndex];
}
這是關掉某各Page的程式碼
tsaikunhua 你好:
(1)我並沒有仔細看你的程式碼,不過,小弟我對你希望完成的目標有一些建議
(2)建議你的系統架構應該要做一些變更,這樣子~~事情會變得比較容易,那就
是利用 TFrame 來達成目的
(3)在 BCB 6.0 的開發環境裡面,按 File/New/Frame 就會新增一個 Frame1,
然後在這個 Frame1 上拉一個 CppWebBrowser1,最後再把 CppWebBrowser1
的相關 event procedure 寫好就可以了
(4)接下來在你的 Main Form(也許是 Form1) 中,只需要動態新增 Frame1 然
後貼到 TabSheet 裡面就可以了
(5)也就是說,在你的主程式中必須 maintain 所有的 TabSheet 及 Frame1
-- Enjoy Researching & Developing --
------ -- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
|