全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1484
推到 Plurk!
推到 Facebook!

如何將動態宣告的TCppWebBrowser設進PageControl的sheet中呢?

答題得分者是:RedSnow
haman
中階會員


發表:46
回覆:137
積分:56
註冊:2005-03-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-19 22:24:46 IP:211.76.xxx.xxx 未訂閱
爬了一會的文,不知道是不會設關鍵字還是怎樣?就是找不到如何設TCppWebBrowser的文@@" 看過站上的文,知道將物件加入sheet中時,需要將物件的parent設為該sheet 這點我在memo上試是ok的, 可是在TCppWebBrowser上卻失敗了,因為..."型態不合"    在key code的地方parent有兩個,一個是TWinControl *,一個是_di_IDispatch 如圖: 但選了TWinControl *的parent卻跑出了 [C++ Error] Unit1.cpp(168): E2031 Cannot cast from '_di_IDispatch' to 'TWinControl *' 這個錯誤,如圖: 強制轉換也沒用,查help卻又沒看到TWinControl *的parent的屬性 請問TCppWebBrowser的parent要底要怎麼設呢? ps.直接拉元件的話是可以的,如圖: 發表人 - haman 於 2005/09/19 22:32:11
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-19 23:48:53 IP:59.115.xxx.xxx 未訂閱
haman 您好:    我也寫過類似的多頁籤瀏覽器,但是卻未發生您所描述的問題,請將您建立新頁面的整段程式以及與該段程式有用到的相關宣告貼上來,這樣子比較便於討論及找出問題所在。 7 天天敲鍵盤 v 時時按滑鼠 8
haman
中階會員


發表:46
回覆:137
積分:56
註冊:2005-03-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-20 00:47:02 IP:211.76.xxx.xxx 未訂閱
下面是建立頁面的片段,其中PageName(String),FileName(String),CreatMode(bool),OpenMode(bool)是宣當在unit1.h public中的
void __fastcall TForm1::Button3Click(TObject *Sender)
{
        Form3->Edit1->Text = "";
        Form3->RGroup2->Enabled = false;
        Form3->RGroup1->ItemIndex = 0;
        PageName = "";
        FileName = "";
        Form3->ShowModal();
        if(PageName != "")
        {
                TTabSheet *NewSheet = new TTabSheet(Pages);
                NewSheet->PageControl = Pages;
                NewSheet->Caption = PageName;
                if(CreatMode)             //NEW TXT
                {
                        TMemo *Memos = MemoCreat(NewSheet);
                        Memos->Lines->SaveToFile(FileName);
                }
                else
                if(OpenMode)
                {
                        String Htm = FileName.SubString(FileName.Pos(".") 1,3);
                        if(Htm == "txt")    //OPEN TXT
                        {
                                TMemo *Memos = MemoCreat(NewSheet);
                                Memos->Lines->LoadFromFile(FileName);
                        }
                        else                //OPEN HTM
                        {
                                TCppWebBrowser *Browser = new TCppWebBrowser(NewSheet);
                                Browser->Parent = NewSheet;
                                Browser->Navigate(Variant(FileName));
                        }
                }
         }
}
memocreat:
TMemo* __fastcall TForm1::MemoCreat(TTabSheet *Sheet)
{
        TMemo *NewMemo = new TMemo(Sheet);
        NewMemo->Visible = true;
        NewMemo->Parent = Sheet;
        return NewMemo;
}
Form3只是用來設定PageName(String),FileName(String),CreatMode(bool),OpenMode(bool)這4個變數的,在這個問題上似乎沒有影響, 不過我還是一併貼上
void __fastcall TForm3::Button1Click(TObject *Sender)
{
        if(Edit1->Text != "")
        {
                Form1->PageName = Edit1->Text;
                switch(RGroup1->ItemIndex)
                {
                  case 0:
                        Form1->CreatMode = true;
                        if(SaveDialog->Execute())
                                Form1->FileName = SaveDialog->FileName;
                        else
                        {
                                Form1->FileName = "";
                                ShowMessage("請選擇存檔路徑");
                        }
                        break;
                  case 1:
                        Form1->CreatMode = false;
                        if(RGroup2->ItemIndex == 1)
                                Form1->FileName = InputBox("請輸入網址","若您的檔案已存在於電腦中,請按取消","");
                        else
                        {
                                if(OpenDialog->Execute())
                                        Form1->FileName = OpenDialog->FileName;
                                else
                                {
                                        Form1->FileName = "";
                                        ShowMessage("請選擇一個檔案");
                                }
                        }
                        break;
                }
        }
        else
        {
                ShowMessage("請輸入Note名稱");
                Edit1->SetFocus();
        }
        Form3->Close();
}
麻煩RedSnow大大了,感恩^^
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-20 16:17:12 IP:59.115.xxx.xxx 未訂閱
haman 您好:    將那一行設定 Parent 的敘述改成下列這個樣子試試看:
Browser->ParentWindow = NewSheet->Handle;
7 天天敲鍵盤 v 時時按滑鼠 8
haman
中階會員


發表:46
回覆:137
積分:56
註冊:2005-03-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-20 17:54:31 IP:211.76.xxx.xxx 未訂閱
咦?有效!! ㄏㄏ,真是太感謝RedSnow大大了, 原來Browser->ParentWindow是要設handle哦 難怪下午不管怎麼設都會跑到左上角@@"
haman
中階會員


發表:46
回覆:137
積分:56
註冊:2005-03-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-20 18:24:15 IP:211.76.xxx.xxx 未訂閱
不過這樣一來,browser的大小似乎就不能用Browser->Align = alClient的方式改,必需要直接指定。
系統時間:2024-04-28 19:43:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!