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

關於CppWebBrowser->LocationName傳回值的問題

答題得分者是:andychang1690
qubeley2004
一般會員


發表:52
回覆:71
積分:24
註冊:2004-07-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-28 13:35:24 IP:211.76.xxx.xxx 未訂閱
當我在開啟新視窗的時候 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-28 14:19:08 IP:61.142.xxx.xxx 未訂閱
引言: 當我在開啟新視窗的時候 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-28 22:34:03 IP:211.76.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-28 22:50:47 IP:61.142.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-28 23:14:42 IP:211.76.xxx.xxx 未訂閱
引言:
引言: 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
是的..就是在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 ; } 這是我在裡面弄得程式碼,我是直接複製貼上 因該不會出錯呀
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-28 23:28:18 IP:61.142.xxx.xxx 未訂閱
好辛苦! 一、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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-28 23:44:23 IP:211.76.xxx.xxx 未訂閱
引言: 好辛苦! 一、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
原來如此,受教了~
系統時間:2024-11-25 16:31:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!