來自:阿狗, 時間:2005-6-57:41:23, ID:3094647
這個問題也曾經(jīng)困擾過我一段時間啊!呵呵……
給你一個解決辦法,肯定能成功!
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel:WordBool);
begin
Cancel:=true;
WebBrowser1.Navigate (NewURL);
end;
其中的NewURL是你在網(wǎng)頁中點(diǎn)擊的鏈接,它的值在以下事件中取得:
procedure TForm1.WebBrowser1StatusTextChange(Sender: TObject;
const Text: WideString);
begin
NewURL :=text;
end;
這樣,當(dāng)你點(diǎn)擊網(wǎng)頁中的連接時,就在本窗口中打開.NewURL應(yīng)定義為全局變量.實(shí)現(xiàn)不了找我哦!
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/pucoov/archive/2006/02/04/591806.aspx
Delphi中始終用WebBrowser打開網(wǎng)頁
Delphi 2010-01-2613:38:17 閱讀172評論0 字號:大中小
| 要在同一個WebBrowser里顯示,可以這樣: 再放一個小的WebBrowser2,設(shè)置它在WebBrowser1下面(設(shè)置Visible為False好象無效), // 在WebBrowser1的OnNewWindow2事件中: procedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); begin ppDisp := WebBrowser2.Application; // 新的窗口先指向WebBrowser2 end; // 在WebBrowser2的OnBeforeNavigate2事件中: procedure TForm1.WebBrowser2BeforeNavigate2(Sender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName,PostData, Headers: OleVariant; var Cancel: WordBool); begin WebBrowser1.Navigate(string(URL)); // 再指回WebBrowser1 Cancel := True; end; 可以這樣,窗體中放置兩個PANEL,其中PANEL1中放WebBrowser1,PANEL2中放WebBrowser2,PANEL1和PANEL2、WebBrowser1和WebBrowser2的LEFT,TOP等所有屬性設(shè)為一樣。PANEL2的VISIBLE設(shè)為FALSE。然后添加代碼如下即可: procedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); begin ppDisp:=WebBrowser2.Application; panel1.Visible:=false; panel2.Visible:=true; end; procedure TForm1.WebBrowser2NewWindow2( Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); begin ppDisp:=WebBrowser1.Application; panel2.Visible:=false; panel1.Visible:=true 我只回答第一個問題,看你給多少分: 1 NewWindow2的在接口中定義的原形: procedure NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); 2 通過傳遞一個WebBrowser的控制借口給ppDisp可以讓新網(wǎng)頁在指定的Wb中瀏覽 ppDisp:=WebBrowser1.Browser.ControlInterface; 3 在剛才傳遞的WebBrowser的OnBeforeNavigate2事件中就可以獲得將要打開的 URL了! function SaveToStream(AStream: TStream): HRESULT; var IpStream: IPersistStreamInit; begin with browser1 do begin ![]() while ReadyState <>READYSTATE_COMPLETE do Forms.Application.ProcessMessages; if Assigned(Document) then begin IpStream := Document as IPersistStreamInit; Result := IpStream.save(TStreamAdapter.Create(AStream),TRUE); end else Result := S_FALSE; end; end; function Loadfromstream(AStream:TStream):hresult; begin with browser1 do begin if not Assigned(Document) then begin navigate2('about:blank',0,0,0,0); while readystate <>READYSTATE_COMPLETE do Forms.Application.ProcessMessages; end; AStream.seek(0, 0); Result := (Document asIPersistStreamInit).Load(TStreamadapter.Create(AStream)); end; end; |
愛華網(wǎng)




