關於CppWebBrowser->LocationName傳回值的問題 |
答題得分者是:andychang1690
|
qubeley2004
一般會員 發表:52 回覆:71 積分:24 註冊:2004-07-13 發送簡訊給我 |
當我在開啟新視窗的時候
pPage[i] = new TTabSheet(Form1->PageControl1);
pPage[i]->PageControl = Form1->PageControl1;
CppWeb[i]=new TFrame2(pPage[i]);
CppWeb[i]->Parent=pPage[i];
CppWeb[i]->Align=alClient;
CppWeb[i]->CppWebBrowser1->Navigate(WideString(tempurl));
pPage[i]->Caption = CppWeb[i]->CppWebBrowser1->LocationName;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
結果這個pPage[i]Caption是空白的值,
我把他移到上方也是不行 可是在 void __fastcall TForm1::PageControl1Change(TObject *Sender)
{
Form1->cboURL->Text=CppWeb[PageControl1->ActivePageIndex]->CppWebBrowser1->LocationURL;
pPage[PageControl1->ActivePageIndex]->Caption=CppWeb[PageControl1->ActivePageIndex]->CppWebBrowser1->LocationName;
} 這個時候的pPage[]就會出現..
此問題LocationURL也是相同... 請問問什麼在開視窗的時候他傳回的居然是空值??而在切換頁面的時候就可以
得到呢??
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
引言: 當我在開啟新視窗的時候 pPage[i] = new TTabSheet(Form1->PageControl1); pPage[i]->PageControl = Form1->PageControl1; CppWeb[i]=new TFrame2(pPage[i]); CppWeb[i]->Parent=pPage[i]; CppWeb[i]->Align=alClient; CppWeb[i]->CppWebBrowser1->Navigate(WideString(tempurl)); pPage[i]->Caption = CppWeb[i]->CppWebBrowser1->LocationName; 因為CppWebBrowser1尚未完成,所以LocationName是NULL值 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 結果這個pPage[i]Caption是空白的值, 我把他移到上方也是不行 可是在 void __fastcall TForm1::PageControl1Change(TObject *Sender) { Form1->cboURL->Text=CppWeb[PageControl1->ActivePageIndex]->CppWebBrowser1->LocationURL; pPage[PageControl1->ActivePageIndex]->Caption=CppWeb[PageControl1->ActivePageIndex]->CppWebBrowser1->LocationName; } 這個時候的pPage[]就會出現.. 此問題LocationURL也是相同... 請問問什麼在開視窗的時候他傳回的居然是空值??而在切換頁面的時候就可以 得到呢?? qubeley2004: 要顯示LocationName於pPage[PageControl1->ActivePageIndex]->Caption上 我們來玩玩另一種方式。 其實VCL的事件我們可以將它另外導引出來處理。 我Post我的作法請你參考!完全不用動到Fram裡的CppWebBrowser1事件處理。 Unit1.h private: // User declarations int iSelect; // 現在的Page void __fastcall MyTitlChange(TObject *Sender, BSTR URL); Unit1.cpp 開啟新視窗的時候 多加下面這行 CppWeb[i]->CppWebBrowser1->OnTitleChange=MyTitlChange; void __fastcall TForm1::MyTitlChange(TObject *Sender, BSTR URL) { pPage[iSelect]->Caption = URL; // URL==CppWebBrowser1->LocationName } 如此你根本不會去自己處理,因為CppWebBrowser1它為會自動幫你完成 你可以舉一反三來處理你的一些問題! 請參考!Andy Chang
------
Andy Chang |
qubeley2004
一般會員 發表:52 回覆:71 積分:24 註冊:2004-07-13 發送簡訊給我 |
Andy Chang大~ 我想請問個白吃問題... 就是CppWeb[i]->CppWebBrowser1->OnTitleChange=MyTitlChange; 他會說沒有定義MyTitlChange; 雖然我有照您的方法在h黨加上了那些 請問這是為什麼...對了,我知道我的一些基本能力像是這樣的觀念都沒有很好 請問要看什麼書會講說類似這樣的觀念呢??以前的c用書好像到了bcb就有點 不太夠了的感覺..還是因為我沒看熟的關係呢?? 謝謝您的幫忙,我以為程式跑到那行之後就會立刻處理了 因為我曾經在pPage[i]->Caption = CppWeb[i]->CppWebBrowser1->LocationName
這個上面加上迴圈等待有值再往下作
結果就是當機....
我想是不是他的一個執行是以一個函式為主呢??這樣的觀念有錯誤嗎?
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
引言: Andy Chang大~ 我想請問個白吃問題... 就是CppWeb[i]->CppWebBrowser1->OnTitleChange=MyTitlChange; 他會說沒有定義MyTitlChange; 雖然我有照您的方法在h黨加上了那些 請問這是為什麼...對了,我知道我的一些基本能力像是這樣的觀念都沒有很好 請問要看什麼書會講說類似這樣的觀念呢??以前的c用書好像到了bcb就有點 不太夠了的感覺..還是因為我沒看熟的關係呢?? 謝謝您的幫忙,我以為程式跑到那行之後就會立刻處理了 因為我曾經在pPage[i]->Caption = CppWeb[i]->CppWebBrowser1->LocationName 這個上面加上迴圈等待有值再往下作 結果就是當機.... 我想是不是他的一個執行是以一個函式為主呢??這樣的觀念有錯誤嗎? 沒有定義沒有定義MyTitlChange;-->>不懂 .h裡有宣告 private: // User declarations void __fastcall MyTitlChange(TObject *Sender, BSTR URL); .cpp是否有定義 void __fastcall TForm1::MyTitlChange(TObject *Sender, BSTR URL) { pPage[iSelect]->Caption = URL; // URL==CppWebBrowser1->LocationName } 宣告新增視窗 for (int i=0; i < Max; i ) { pPage[i] = new TTabSheet(PageControl1); pPage[i]->PageControl = NULL; // PageControl1; CppWeb[i]=new TFrame2(pPage[i]); CppWeb[i]->Parent=pPage[i]; // 指定 Parent 才會顯示 CppWeb[i]->Align=alClient; CppWeb[i]->CppWebBrowser->OnTitleChange=MyTitlChange; } qubeley2004確定你沒打錯字?Andy Chang
------
Andy Chang |
qubeley2004
一般會員 發表:52 回覆:71 積分:24 註冊:2004-07-13 發送簡訊給我 |
引言:是的..就是在complier沒有過..說是沒有定義MyTitlChange private: // User declarations void __fastcall MyTitlChange(TObject *Sender, BSTR URL); void __fastcall TForm1::MyTitlChange(TObject *Sender, BSTR URL) { pPage[PageControl1->ActivePageIndex]->Caption = URL; // URL==CppWebBrowser1->LocationName } void __fastcall TFrame2::CppWebBrowser1NewWindow2(TObject *Sender, LPDISPATCH *ppDisp, VARIANT_BOOL *Cancel) { *Cancel =TOLEBOOL(true);//不讓他開 pPage[i] = new TTabSheet(Form1->PageControl1); pPage[i]->PageControl = Form1->PageControl1; CppWeb[i]=new TFrame2(pPage[i]); CppWeb[i]->Parent=pPage[i]; // 指定 Parent 才會顯示 CppWeb[i]->Align=alClient; CppWeb[i]->CppWebBrowser1->Navigate(WideString(tempurl)); // pPage[i]->Caption = CppWeb[i]->CppWebBrowser1->LocationName; CppWeb[i]->CppWebBrowser1->OnTitleChange=MyTitlChange; i ; } 這是我在裡面弄得程式碼,我是直接複製貼上 因該不會出錯呀引言: Andy Chang大~ 我想請問個白吃問題... 就是CppWeb[i]->CppWebBrowser1->OnTitleChange=MyTitlChange; 他會說沒有定義MyTitlChange; 雖然我有照您的方法在h黨加上了那些 請問這是為什麼...對了,我知道我的一些基本能力像是這樣的觀念都沒有很好 請問要看什麼書會講說類似這樣的觀念呢??以前的c用書好像到了bcb就有點 不太夠了的感覺..還是因為我沒看熟的關係呢?? 謝謝您的幫忙,我以為程式跑到那行之後就會立刻處理了 因為我曾經在pPage[i]->Caption = CppWeb[i]->CppWebBrowser1->LocationName 這個上面加上迴圈等待有值再往下作 結果就是當機.... 我想是不是他的一個執行是以一個函式為主呢??這樣的觀念有錯誤嗎?沒有定義沒有定義MyTitlChange;-->>不懂 .h裡有宣告 private: // User declarations void __fastcall MyTitlChange(TObject *Sender, BSTR URL); .cpp是否有定義 void __fastcall TForm1::MyTitlChange(TObject *Sender, BSTR URL) { pPage[iSelect]->Caption = URL; // URL==CppWebBrowser1->LocationName } 宣告新增視窗 for (int i=0; i < Max; i ) { pPage[i] = new TTabSheet(PageControl1); pPage[i]->PageControl = NULL; // PageControl1; CppWeb[i]=new TFrame2(pPage[i]); CppWeb[i]->Parent=pPage[i]; // 指定 Parent 才會顯示 CppWeb[i]->Align=alClient; CppWeb[i]->CppWebBrowser->OnTitleChange=MyTitlChange; } qubeley2004確定你沒打錯字?Andy Chang |
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
好辛苦!
一、TFrame2 include Form1
二、CppWeb[i]->CppWebBrowser1->OnTitleChange=MyTitlChange;
改成CppWeb[i]->CppWebBrowser1->OnTitleChange=Form1->MyTitlChange;
或者將MyTitlChange改成放置於Frame2上。
private: // User declarations
void __fastcall MyTitlChange(TObject *Sender, BSTR URL); void __fastcall TFrame2::MyTitlChange(TObject *Sender, BSTR URL)
{
pPage[PageControl1->ActivePageIndex]->Caption = URL;
// URL==CppWebBrowser1->LocationName
}
將Form1移至Frame2上 Andy Chang
------
Andy Chang |
qubeley2004
一般會員 發表:52 回覆:71 積分:24 註冊:2004-07-13 發送簡訊給我 |
引言: 好辛苦! 一、TFrame2 include Form1 二、CppWeb[i]->CppWebBrowser1->OnTitleChange=MyTitlChange; 改成CppWeb[i]->CppWebBrowser1->OnTitleChange=Form1->MyTitlChange; 或者將MyTitlChange改成放置於Frame2上。 private: // User declarations void __fastcall MyTitlChange(TObject *Sender, BSTR URL); void __fastcall TFrame2::MyTitlChange(TObject *Sender, BSTR URL) { pPage[PageControl1->ActivePageIndex]->Caption = URL; // URL==CppWebBrowser1->LocationName } 將Form1移至Frame2上 Andy Chang原來如此,受教了~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |