如何使webbrowser里的link点击后,不调用IE,而是在webbrowser里直接显示!(100分)

  • 主题发起人 主题发起人 iopiop
  • 开始时间 开始时间
I

iopiop

Unregistered / Unconfirmed
GUEST, unregistred user!
如何使webbrowser里的link点击后,不调用IE,而是在webbrowser里直接显示!
 
? 会这样吗? 就是直接显示呀???
 
WebBrowser1.Navigate('http://www.nba.com',
EmptyParam, EmptyParam, EmptyParam, EmptyParam);
或用自带的Internet HTML控件
 
在BeforeNavigate2事件里处理一下就可以了.主要你分析得足够,肯定没有问题.

procedure TDirMailForm.HtmlViewerBeforeNavigate2(Sender: TObject;
const pDisp: IDispatch
var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant
var Cancel: WordBool);
var i : integer;
em, sub : String;
begin
if pos('mailto:', Lowercase(url)) < 0 then
begin
ShellExecute(handle,nil,pchar(url),nil,nil,sw_shownormal);
Cancel := True;
end;
end;
 
cytown: 如果link的taget是新窗口,就会打开IE.


 
procedure TForm1.webbrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch
var Cancel: WordBool);
var
NewApp: TForm1;
begin
NewApp := TForm1.Create(Owner);
NewApp.Visible := true;
ppdisp := NewApp.webbrowser1.Application_;
end;
 
deve老兄的方法我试过了,OK.
 
我在C++ BUILDER5.0里试过,我的方法是在newwindow2事件中进行设置。
*ppdisp=cppwebbrowser1->ControlInterface则新的链接将在cppwebbrowser1中打开,还可以将newwindow2中的cancel属性设为true则在当前webbrowser中打开新的链接,但设置cancel的方法有时候不好使,比如超链接是在java脚本中给出时就不能打开。delphi中的TWebBrowser我没有用过,但C++BUILDER与DELPHI差别不是太大!
 
在Delphi5中:
ppdisp:=w2.controlinterface;
 
procedure TmainForm.WB_mainNewWindow2(Sender: TObject;
var ppDisp: IDispatch
var Cancel: WordBool);
begin
ppdisp:=wb_child.DefaultDispatch;
end;

 
接受答案了.
 
后退
顶部